From c3af7aa3add61e246e3d731903c22ffe76689d3d Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 23 Sep 2026 19:33:33 +0200 Subject: [PATCH 001/148] pkg --- interface/package.json | 12 +- interface/pnpm-lock.yaml | 663 ++++++++++++++++++++------------------- 2 files changed, 339 insertions(+), 336 deletions(-) diff --git a/interface/package.json b/interface/package.json index 8c0068b1a..6cc252a62 100644 --- a/interface/package.json +++ b/interface/package.json @@ -35,28 +35,28 @@ "react": "^19.3.0", "react-dom": "^19.3.0", "react-icons": "^5.7.0", - "react-router": "^8.3.1", + "react-router": "^8.4.0", "typesafe-i18n": "^5.27.1" }, "devDependencies": { "@eslint/js": "^10.0.1", "@preact/preset-vite": "^2.10.6", "@trivago/prettier-plugin-sort-imports": "^6.0.2", - "@types/node": "^26.5.1", + "@types/node": "^26.6.2", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", "concurrently": "^10.0.5", - "eslint": "^10.10.0", + "eslint": "^10.11.0", "eslint-config-prettier": "^10.1.8", "etag": "^1.8.1", "mime-types": "^3.0.2", - "prettier": "^3.9.6", + "prettier": "^3.9.8", "rollup-plugin-visualizer": "^7.1.1", "terser": "^5.51.2", "typescript": "^6.0.3", - "typescript-eslint": "^8.70.0", + "typescript-eslint": "^8.70.1", "vite": "^8.3.0", "vite-plugin-imagemin": "^0.6.1" }, - "packageManager": "pnpm@12.4.1" + "packageManager": "pnpm@12.6.0" } diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index c8dcbd889..3c2e56a47 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -7,153 +7,153 @@ importers: configDependencies: {} packageManagerDependencies: pnpm: - specifier: 12.4.1 - version: 12.4.1 + specifier: 12.6.0 + version: 12.6.0 packages: - '@pnpm/exe.android-arm64@12.4.1': - resolution: {integrity: sha512-/HwsqXMSmlOfgtV9+O0ratzjV6Vd/8n1hh4rGHpCGmDURvt52MwZxdbhyxP4K03ZfvgSDvotFPr8O+RzE5Eu8A==} + '@pnpm/exe.android-arm64@12.6.0': + resolution: {integrity: sha512-kviIHft9h02q+7N2In7tSL9T/HRUSGwYmU74YPtsWU5ee7vgqPyC0JT6RRX6miW+NxX1CvHgQxg69qq1qTLJYQ==} cpu: [arm64] os: [android] - '@pnpm/exe.android-x64@12.4.1': - resolution: {integrity: sha512-+l74Qb4c2YjOzNKHXJLg+1wr8xHM1ckkUhnU5KRUK9TJqiiczt6yeTZqqzHIlJ8i6pAoj5V0OJevDRwnQKLgrQ==} + '@pnpm/exe.android-x64@12.6.0': + resolution: {integrity: sha512-CT8aJKLq2mtZFE71pr4E5Z2xHL8uGnRGr+NclDqsXlVF4SVcQ2QAs14mWi0C8gjT4hbmi+Q0lJRRIkMAWfjjng==} cpu: [x64] os: [android] - '@pnpm/exe.darwin-arm64@12.4.1': - resolution: {integrity: sha512-6rkZkT3iGfaxknUdGHraqSWFvTa6N0ajAHluv9Ax0GRWs0sIcGNiFhDopv6xSZCsJZmG483aNS/b6UEDy3blfw==} + '@pnpm/exe.darwin-arm64@12.6.0': + resolution: {integrity: sha512-rafpVkjzugKBMxSvGQd5wK1x5eOTkD/+lcJIFHeQhvd+BJ8kDisOOvwhQDrpGd4vd2Fx+hhW0P2Ptt638OlhFg==} cpu: [arm64] os: [darwin] - '@pnpm/exe.darwin-x64@12.4.1': - resolution: {integrity: sha512-Vb1CHlR88HghC1qUxjxjs82zQSXnXacPD+btG2CmG8Q/hBU7Q0/b2YWJKSQqZXicunV5khFtfTlAwJddV9RkYA==} + '@pnpm/exe.darwin-x64@12.6.0': + resolution: {integrity: sha512-72Jpuv1m24gI8zUNcaylYpBWEhBzz1VPhnDIU2GYM2eRP+KsOqVLwV78i+JrihI39zY2NNXmaN4eAKX1inpaDQ==} cpu: [x64] os: [darwin] - '@pnpm/exe.freebsd-x64@12.4.1': - resolution: {integrity: sha512-iT3iHz3Nl0Sxxj7UPOtZ/aQ81AFsQhjoeWMAlPkSRO04gsgDGAXv3UYxOFaesMWsfNxaGn0A+CITbuCHFF66FA==} + '@pnpm/exe.freebsd-x64@12.6.0': + resolution: {integrity: sha512-LON4QgNy1w/XF4uySZIyC/5hEB0oGdelXsY9tSKqstER+2j2X2oHz67skD11RRd/HWFRtMr64shQZ4I9ZoZ0zg==} cpu: [x64] os: [freebsd] - '@pnpm/exe.linux-arm64-musl@12.4.1': - resolution: {integrity: sha512-aBooZfNXM5f+OGUgCAMFWpE/kAhsWfvmqIyMtHy6zl3aNxyInWrcY/Saln/UElzo7lZWMC0Yktroxd/2J26lNQ==} + '@pnpm/exe.linux-arm64-musl@12.6.0': + resolution: {integrity: sha512-BdDpX+DeaMUc5x6WNcE6FkmFy36NwrBbBvwsZU737Zt3u1fTY+iKFPchjEQNCM4rT6q6xvF2oN3ZwExGsJCkxQ==} cpu: [arm64] os: [linux] libc: [musl] - '@pnpm/exe.linux-arm64@12.4.1': - resolution: {integrity: sha512-TlOdacTTP09BgcMvwWBFRsu8VAjfwqwnslBj+XSq1JFM3ck4f3k+1O/747EuctxZxs3/o785b6Q3s7Pd92Ptsg==} + '@pnpm/exe.linux-arm64@12.6.0': + resolution: {integrity: sha512-8h2sNoIhHDpHDYqZZCh9PXr6krqW10btb0GHVGuw710muDHlFAHMtUG2ogmaHge6zJG1xgY4Y7mwX5g/LWvrYg==} cpu: [arm64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-ppc64@12.4.1': - resolution: {integrity: sha512-r/ab/MlIBo75oizUP5ITiziCCrnXz4SJwfErLQ+603AshB+Yq7xTMCoMtzTSCAMu6aaymIKkAFtZvd2J75Wq0w==} + '@pnpm/exe.linux-ppc64@12.6.0': + resolution: {integrity: sha512-ld6xgcEhFCFrsVsJhbmdmR714PnsEspO/Ij8w0/D7OSiz2hYGu3fZd5tKRxOI5m6H6Gl0/RRFAPncTHbsgXVjQ==} cpu: [ppc64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-riscv64@12.4.1': - resolution: {integrity: sha512-C/D1QWdKMiB8+wv/spl1rGITFUuqC+aI/fb6h8NB5sqxsOaGXeYc/g891oCuzggHn6SODk9p+I09hI76x/cMNw==} + '@pnpm/exe.linux-riscv64@12.6.0': + resolution: {integrity: sha512-HIbImydoC3J8NFt+8MXfhTCf5rO6NjCMyinSAHac0VmV8uCHw+kbQkyAzxV84rzz9ZOzmBOnj0b1N461UIYGsw==} cpu: [riscv64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-s390x@12.4.1': - resolution: {integrity: sha512-nxz5zD4yXt94uzbStDk0QTPKW+aE92hH1b5tFXK9ctB1HE9Xcq1vjTiA2LsZMFC6p4gdu5OwQeFqYNAVGa6QlA==} + '@pnpm/exe.linux-s390x@12.6.0': + resolution: {integrity: sha512-DjSqT7+BZ/lWcDHwNMuzsRVfyxUimh+D54Xw4tSWbdVVQhtWtNMUyI93LVnwCmsoEpar2gC3SFeAgywx37svKQ==} cpu: [s390x] os: [linux] libc: [glibc] - '@pnpm/exe.linux-x64-musl@12.4.1': - resolution: {integrity: sha512-5AwgFdGhVUg2kIweYGfxzSLEHiIG77PQhZAkXC3TwofQHsu1Wr+TrV5/rNX2PopFnHRzuE581zoB8F6Wle32yg==} + '@pnpm/exe.linux-x64-musl@12.6.0': + resolution: {integrity: sha512-31lKeGPmRE6xfV6I3VjaEGVFRei14pl/zgoFDK4w+UkbJqOuNl2Ht3O1GuqNIg3Gl14qTEb4kZRAYFHXifDx9A==} cpu: [x64] os: [linux] libc: [musl] - '@pnpm/exe.linux-x64@12.4.1': - resolution: {integrity: sha512-FJOZuuuQMhp0oLzBtcKkLXknBI92hfkmSnlKc47vfin4HrmfID5khY2lGekL9tCzk1cpR+HShEw/meFl+nHtzQ==} + '@pnpm/exe.linux-x64@12.6.0': + resolution: {integrity: sha512-qFWBneHJAJ73W4whtbaFOL1M/7DBC6ILHXuxc7ZPtEhfPuT1zeZiGrmKHoMAfJA+mcm6xhOFljqVTUS+00Jabw==} cpu: [x64] os: [linux] libc: [glibc] - '@pnpm/exe.win32-arm64@12.4.1': - resolution: {integrity: sha512-OO7eKBL9S+xk5hRy+JUUZSNJknGuGe3GEUffsrlC2LbqKF02g+VX1anGIzSbJDvkkdnpJhSlxF5AUz2JzJu2Jw==} + '@pnpm/exe.win32-arm64@12.6.0': + resolution: {integrity: sha512-OhfefXEEykZlslSUhR8PPRe6MVPV3Oink/dVfIecE5velpc7j80cZYsHlaDrtRDcm3TPwQHkaRW1SJ1efX9oFg==} cpu: [arm64] os: [win32] - '@pnpm/exe.win32-x64@12.4.1': - resolution: {integrity: sha512-x7gJHZgHo6hp354xCYA2NvoFzYJkHwovt2kVsUBK5EmXULLcP51JGMq09CX+5FRFJUZFKoXjLu3mZWmfP7o6PQ==} + '@pnpm/exe.win32-x64@12.6.0': + resolution: {integrity: sha512-L2tuyrD2+Imgxs3VK/ST/2L3xD6vDP0ktJQxM0TaGw7TbAQEMq+RMc8iK6Ew7Id579uzjJe8jSfJID2ZGsOHCA==} cpu: [x64] os: [win32] - pnpm@12.4.1: - resolution: {integrity: sha512-LoHjmdc/6DkNqyXgaqeIq3pZCCSNL1o3D4K0gRR6ano2e/gEj5pv22Rg8hpm8FQt7bi5TKLIcjWWdBkgsWVtTA==} + pnpm@12.6.0: + resolution: {integrity: sha512-PvaPlRyxEawgS0paFvCy3fDaVqluBBPoHYVdnwtV75JnFHCQKOHNAMQFwsX7e56OxNxGd3yAXQNzwvL/AP0g7A==} engines: {node: '>=18.*'} hasBin: true snapshots: - '@pnpm/exe.android-arm64@12.4.1': + '@pnpm/exe.android-arm64@12.6.0': optional: true - '@pnpm/exe.android-x64@12.4.1': + '@pnpm/exe.android-x64@12.6.0': optional: true - '@pnpm/exe.darwin-arm64@12.4.1': + '@pnpm/exe.darwin-arm64@12.6.0': optional: true - '@pnpm/exe.darwin-x64@12.4.1': + '@pnpm/exe.darwin-x64@12.6.0': optional: true - '@pnpm/exe.freebsd-x64@12.4.1': + '@pnpm/exe.freebsd-x64@12.6.0': optional: true - '@pnpm/exe.linux-arm64-musl@12.4.1': + '@pnpm/exe.linux-arm64-musl@12.6.0': optional: true - '@pnpm/exe.linux-arm64@12.4.1': + '@pnpm/exe.linux-arm64@12.6.0': optional: true - '@pnpm/exe.linux-ppc64@12.4.1': + '@pnpm/exe.linux-ppc64@12.6.0': optional: true - '@pnpm/exe.linux-riscv64@12.4.1': + '@pnpm/exe.linux-riscv64@12.6.0': optional: true - '@pnpm/exe.linux-s390x@12.4.1': + '@pnpm/exe.linux-s390x@12.6.0': optional: true - '@pnpm/exe.linux-x64-musl@12.4.1': + '@pnpm/exe.linux-x64-musl@12.6.0': optional: true - '@pnpm/exe.linux-x64@12.4.1': + '@pnpm/exe.linux-x64@12.6.0': optional: true - '@pnpm/exe.win32-arm64@12.4.1': + '@pnpm/exe.win32-arm64@12.6.0': optional: true - '@pnpm/exe.win32-x64@12.4.1': + '@pnpm/exe.win32-x64@12.6.0': optional: true - pnpm@12.4.1: + pnpm@12.6.0: optionalDependencies: - '@pnpm/exe.android-arm64': 12.4.1 - '@pnpm/exe.android-x64': 12.4.1 - '@pnpm/exe.darwin-arm64': 12.4.1 - '@pnpm/exe.darwin-x64': 12.4.1 - '@pnpm/exe.freebsd-x64': 12.4.1 - '@pnpm/exe.linux-arm64': 12.4.1 - '@pnpm/exe.linux-arm64-musl': 12.4.1 - '@pnpm/exe.linux-ppc64': 12.4.1 - '@pnpm/exe.linux-riscv64': 12.4.1 - '@pnpm/exe.linux-s390x': 12.4.1 - '@pnpm/exe.linux-x64': 12.4.1 - '@pnpm/exe.linux-x64-musl': 12.4.1 - '@pnpm/exe.win32-arm64': 12.4.1 - '@pnpm/exe.win32-x64': 12.4.1 + '@pnpm/exe.android-arm64': 12.6.0 + '@pnpm/exe.android-x64': 12.6.0 + '@pnpm/exe.darwin-arm64': 12.6.0 + '@pnpm/exe.darwin-x64': 12.6.0 + '@pnpm/exe.freebsd-x64': 12.6.0 + '@pnpm/exe.linux-arm64': 12.6.0 + '@pnpm/exe.linux-arm64-musl': 12.6.0 + '@pnpm/exe.linux-ppc64': 12.6.0 + '@pnpm/exe.linux-riscv64': 12.6.0 + '@pnpm/exe.linux-s390x': 12.6.0 + '@pnpm/exe.linux-x64': 12.6.0 + '@pnpm/exe.linux-x64-musl': 12.6.0 + '@pnpm/exe.win32-arm64': 12.6.0 + '@pnpm/exe.win32-x64': 12.6.0 --- lockfileVersion: '9.0' @@ -203,24 +203,24 @@ importers: specifier: ^5.7.0 version: 5.7.0(react@19.3.0) react-router: - specifier: ^8.3.1 - version: 8.3.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + specifier: ^8.4.0 + version: 8.4.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0) typesafe-i18n: specifier: ^5.27.1 version: 5.27.1(typescript@6.0.3) devDependencies: '@eslint/js': specifier: ^10.0.1 - version: 10.0.1(eslint@10.10.0(supports-color@10.2.2)) + version: 10.0.1(eslint@10.11.0(supports-color@10.2.2)) '@preact/preset-vite': specifier: ^2.10.6 - version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.0(@types/node@26.5.1)(terser@5.51.2)) + version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.0(@types/node@26.6.2)(terser@5.51.2)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 - version: 6.0.2(prettier@3.9.6)(supports-color@10.2.2) + version: 6.0.2(prettier@3.9.8)(supports-color@10.2.2) '@types/node': - specifier: ^26.5.1 - version: 26.5.1 + specifier: ^26.6.2 + version: 26.6.2 '@types/react': specifier: ^19.3.0 version: 19.3.0 @@ -231,11 +231,11 @@ importers: specifier: ^10.0.5 version: 10.0.5 eslint: - specifier: ^10.10.0 - version: 10.10.0(supports-color@10.2.2) + specifier: ^10.11.0 + version: 10.11.0(supports-color@10.2.2) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@10.10.0(supports-color@10.2.2)) + version: 10.1.8(eslint@10.11.0(supports-color@10.2.2)) etag: specifier: ^1.8.1 version: 1.8.1 @@ -243,11 +243,11 @@ importers: specifier: ^3.0.2 version: 3.0.2 prettier: - specifier: ^3.9.6 - version: 3.9.6 + specifier: ^3.9.8 + version: 3.9.8 rollup-plugin-visualizer: specifier: ^7.1.1 - version: 7.1.1(rolldown@1.2.8) + version: 7.1.1(rolldown@1.2.9) terser: specifier: ^5.51.2 version: 5.51.2 @@ -255,14 +255,14 @@ importers: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.70.0 - version: 8.70.0(eslint@10.10.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + specifier: ^8.70.1 + version: 8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) vite: specifier: ^8.3.0 - version: 8.3.0(@types/node@26.5.1)(terser@5.51.2) + version: 8.3.0(@types/node@26.6.2)(terser@5.51.2) vite-plugin-imagemin: specifier: ^0.6.1 - version: 0.6.1(supports-color@10.2.2)(vite@8.3.0(@types/node@26.5.1)(terser@5.51.2)) + version: 0.6.1(supports-color@10.2.2)(vite@8.3.0(@types/node@26.6.2)(terser@5.51.2)) packages: @@ -332,8 +332,8 @@ packages: resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.8': - resolution: {integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==} + '@babel/parser@7.29.9': + resolution: {integrity: sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==} engines: {node: '>=6.0.0'} hasBin: true @@ -627,8 +627,8 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@oxc-project/types@0.149.0': - resolution: {integrity: sha512-Efcc+iF0j3Bf67YjEqIqWXbX5XddXoK/Mw4K1/JuXwRCZ8N16VR7iT23nlCc9XrveFVh/E5Rqs2StT0V8v9LdA==} + '@oxc-project/types@0.150.0': + resolution: {integrity: sha512-rDS5/31E9HfPl/CIzGrn0DOlvBbXFseQ5URJ9sYMfstbKLD/c6Gm9vmRzRGDdAXyOIL4zmO37lc9RIwYqVruZw==} '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} @@ -658,98 +658,101 @@ packages: preact: ^10.4.0 || ^11.0.0-0 vite: '>=2.0.0' - '@rolldown/binding-android-arm-eabi@1.2.8': - resolution: {integrity: sha512-tN5aztYkKCte4i5SIrrz5yK/HMjEuCqCSCJa418jOV8tZ1cBY3YF2otxB1ktPxzsLA1BeTqwapK0bfjxNvHJVw==} + '@remix-run/route-pattern@0.22.1': + resolution: {integrity: sha512-czdGJWh09Lapvcqt7Vb09KlrU2PhRJ8xQaI+AItTuD9aDJ5MAgxnS38lnys6Ll+6RJEqPiaUqTwIQhVLwFvv+w==} + + '@rolldown/binding-android-arm-eabi@1.2.9': + resolution: {integrity: sha512-tNISae1QEf/vkb3xkRcjV5SEdzPE97We5IVaa2Z8jSszQPZ8U60B/YCYpw4QI7VidYsBtKavczXf+DyDs9WGxw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@rolldown/binding-android-arm64@1.2.8': - resolution: {integrity: sha512-dIYTWl9XprMUiQFoc55KUyk/oS8SKYH3zFl0LTR7RT0Xj4hgSVyuJcroH8JUu8RcpF8fTB6E0aOwCkZoYPcDSQ==} + '@rolldown/binding-android-arm64@1.2.9': + resolution: {integrity: sha512-YC8YsI30o606GTZi0VyzYlsDKFP8W61i/QzayHDkLbNEz/IShqAmTa+hsJRj13xTHA0H+6fk4b2UmGn+Q/cMlg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.2.8': - resolution: {integrity: sha512-PCSDQGXD2IyTEFrcgPyBM8jJuGmrbCMuoIOXdbEGVemruKACXoLQJrb+A45Z0L5t1RQkdfJprAYPkikbh7dzdA==} + '@rolldown/binding-darwin-arm64@1.2.9': + resolution: {integrity: sha512-IwhlH3qK5urrY8hZiEgGkHKEFN901p/p2bjxCxJlr4GyNnF7wYpUvK+Y43uaRYuC4hpfjzbR3SJC3arX1jGvmw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.2.8': - resolution: {integrity: sha512-Uk7lRsGhPFHVX/sAUC6D5H9Ol30dFHd6iquokll2th3LpdJ3F5CzQB+7DHn0Ri2mG+U7k2zXiPHDrwZenXhwSA==} + '@rolldown/binding-darwin-x64@1.2.9': + resolution: {integrity: sha512-XxpJfVzFh+jilRxIXUqcfYAYcunIc/XEzIizsOL1fcJee5Sf7H3mH8WlLmfHfluz5amqR88QQo9izKtmMlavAw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.2.8': - resolution: {integrity: sha512-DjszaTEVogPqA5bYzsEeqDCQxbcp2fexQwKcRspYji2yzR68fCf+e4fx6kBSRDwX5/brZaHw/hWS9+A/+/w9sQ==} + '@rolldown/binding-freebsd-x64@1.2.9': + resolution: {integrity: sha512-kSfvhmgeWyfkbT3p/1s5vSgboogoah2zkm9fX2zjg2hHxSV7T4KhMWRUUaRk4OXNqoD3QAUeRqLcs1aZOK4U1g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.2.8': - resolution: {integrity: sha512-zmwa7FTmdzB6aaEEuuls18H6Ap5JmJPSoPTuXixeJZV6tG40SyLkApQtz1g8ptZtiEKqj9OM0oNLPh1AgvE31Q==} + '@rolldown/binding-linux-arm-gnueabihf@1.2.9': + resolution: {integrity: sha512-1RVzG17pxqbTfYLC352JlLt6kKLG+6Hr30n8DlIJqsnV5luUDd2Qdx9Ayw1Cabfyb1K9k0jXEZ7evxkRoT+uiw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.2.8': - resolution: {integrity: sha512-KdYQDPHwJVnbFwdTGMgxsI9SqblBlz6STGM+w1We/d5B8OWWidYH0MwkU/uA1wM5fIpO2MkOVxXrNzzuZhw9ew==} + '@rolldown/binding-linux-arm64-gnu@1.2.9': + resolution: {integrity: sha512-BXqPvZ2drqVD+/Z8UpKwcs4Mp7grM+eGFku4CAEKrEtcbAsUpzREphK1sogCRZGreVPiMkiiBtw0n3TPteuqvw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.2.8': - resolution: {integrity: sha512-jFJTifHnNPY+yzOoNZQfSIysrVyXzEQPhPnOUjmD1bcQGHH6s7c8cViKWar8YplQImE5N9JRqMCLrM2CdxOrZA==} + '@rolldown/binding-linux-arm64-musl@1.2.9': + resolution: {integrity: sha512-11vWvo8YDwLzukt27J3aYDWU+gg2P7J+ZOmiJ0hkF5BXZDW7pVya7r40MXDy6ya0i9KamoENSVKIugvJNgFXIA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.2.8': - resolution: {integrity: sha512-FhiOziBDWPBjbcmRzfLyIJnaP7AVMFXT7YCXPjXxj7wKU3vx24RjrCNN/zjvVa+N2vVoHJwCoUBvsrN/DG3zIA==} + '@rolldown/binding-linux-ppc64-gnu@1.2.9': + resolution: {integrity: sha512-a1tijMkdwsIARtc0F39ApURROkf3NwqinI6TOiSSWCTR7dT96dffNvMUtDHnq64wKNTIZOIlzKrFvvFUznJiyw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.2.8': - resolution: {integrity: sha512-WnHfADMzOV2Y55wlx1hzzQnar/wDt/VdvWSD99r18Mz9ylNieIGOkRx3UV21h7m/eJvjySYJkO26VvGNFkwsIQ==} + '@rolldown/binding-linux-s390x-gnu@1.2.9': + resolution: {integrity: sha512-x6SQNdAvv4c3hWqTMaWuawzMX9myaCs/yEmlGsxJzkdClnHW7FbrjQuSiRDhuSYzEYoEMhsaJy9qHG/XNemJPQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.2.8': - resolution: {integrity: sha512-H9tRr5ibfXFVLxbPOseVewewFpl28zcEdjRDt2FTUZU7odxP0gEv1ki4/kGmcGOh78oRwZuuQllGLZ9zTJp84g==} + '@rolldown/binding-linux-x64-gnu@1.2.9': + resolution: {integrity: sha512-9s0AZ8BFK5/n7B/TBoa2yJE3gI3KURrbXcPBlsAsvjU4VeJKgE90y1YtNxyEUIcHPQkg6/yfF3qihUrcM/Kf0Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.2.8': - resolution: {integrity: sha512-UefiqfM3D6IVNlZ8tSGs9+Ejjud2T+oxO0IHADU45Y+lyEjD2dVFyZHbkfX0LUb5Zugo/oIv1eCO/KVYhgYJYA==} + '@rolldown/binding-linux-x64-musl@1.2.9': + resolution: {integrity: sha512-P7VWAmV+WdJluH7ovnRGoiv2i8To7GAZ+kGzfGup635cyL7SyYl3lSUaA3Gp5THf0n/Co5EyEqb2zbqq+nMOHQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.2.8': - resolution: {integrity: sha512-637Ke4kWSy6rp9cxQ9gMOXlxPgIw/c1beASV4M//3+9I4uwBVOOl74G+e3zyU3u19U7RkRl/HuewixZ/Z6+Rjg==} + '@rolldown/binding-openharmony-arm64@1.2.9': + resolution: {integrity: sha512-1qixtsE4BK8h+yS3BfmZ09UhA7O/N4IACva6YBr7EBvCJraByTuRcgOTaiA62Tm0vey3UcKXLOaoGHtYmNGEVg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-win32-arm64-msvc@1.2.8': - resolution: {integrity: sha512-xWBkPOF1Q9k/Gv1nQXnVdLxKu74jXppuOM4Z3mnypVUJJJwLsMl7hNJGRAUJoG8A5MgOI1ACKM+wBFxSJzKy4A==} + '@rolldown/binding-win32-arm64-msvc@1.2.9': + resolution: {integrity: sha512-ok8IQjcEPs1AKZfuEUznVBrJw+gK4soq+bx8b1X2XoMqVClarc1q5JDmVtWXY1xfr6ZuHTAsPXHTgTrqKTZeww==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.2.8': - resolution: {integrity: sha512-uz2ZvfgXbxqNwijjjbxrnvALwpyODDcgc1T1N8N3rf/DXKQmaFwmB4LX4yyjggpwN2obdQLb2rgirX5ffCWYng==} + '@rolldown/binding-win32-x64-msvc@1.2.9': + resolution: {integrity: sha512-Ip2mXoU0hM0boq3Rf+ekuT653OROSo6aSYcPT1VHE4q52KvyxgFkQgrgb/IEsxOuvQ2fZZbs8khJAyCEPM24/g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -836,12 +839,11 @@ packages: '@types/keyv@3.1.4': resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} - '@types/minimatch@6.0.0': - 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/minimatch@5.1.2': + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - '@types/node@26.5.1': - resolution: {integrity: sha512-CzNm2FezW4VR/LjG6yUdiEgLE/rAQ9Slj5gCu/C2VrdcW7I0ahNZ8DRbHT7zOZ6r3ONgd/bsQIeSaoDGrd1C6g==} + '@types/node@26.6.2': + resolution: {integrity: sha512-X1P21scMv4zGKLYqjdGjaKa7COa0RKVYYZZN/NfvLQ1JegxFhdhpZG/Lyn8AXx6CDUavKAd11v6BvfpkDByK8g==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -868,63 +870,63 @@ packages: '@types/svgo@2.6.4': resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==} - '@typescript-eslint/eslint-plugin@8.70.0': - resolution: {integrity: sha512-/v8HZt6RlyIZxB3ntehELOcUcfxKPVGWXnQdJuHRmzrqgF8nQypcC/oxGW+Ot4VGKDq81XugPKxx0n5PBtf9PA==} + '@typescript-eslint/eslint-plugin@8.70.1': + resolution: {integrity: sha512-nDNrUQ/4ruSNYbu749TRY7cfrzPtoLHEXSNBI8aaNY32LlZCajixqRf3FqcKC4p5Cam4VOHYx/t+i5+nKXvrqA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.70.0 + '@typescript-eslint/parser': ^8.70.1 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.70.0': - resolution: {integrity: sha512-zYvrmj9Yxd63UGaXw+kdt6A0F0s0qveJyuatIM77bYC2DE4pgmg7a50u8LR7PRtXd0x+h+Tl3eXabGm06SWd3Q==} + '@typescript-eslint/parser@8.70.1': + resolution: {integrity: sha512-nO974WLllwhSFWQXnMLj6nDGa8f0khKEz1JzpPJ1u7Vm/4X1X6ZHajpoknU4bb41vJyMB0HHVyS2GqdhWfIXZw==} 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.70.0': - resolution: {integrity: sha512-hFHbTNqhU9G+2eKFXCBVb1tjFT/LceiJ4+HfLO4pTpDI0KHi6iajpcFFkaSQ9gXmCh7n82A0PthaayEdN6mspQ==} + '@typescript-eslint/project-service@8.70.1': + resolution: {integrity: sha512-62xOgboPfwc3/IgPSX/W6oQR3ZbF04194FPGUGH8HL8iLFHbt/456/8Ph1wLNUgVF+s94FlHoipBsz+v7+LMnA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.70.0': - resolution: {integrity: sha512-8nP3Kwh5hlgZ4FicGvmznAmJe8UL4sdU8tLukrPaMuQmDuk4Y8xYfzu/aYZW4xT2JCgc7H/TpDI5cGlxcWJSqQ==} + '@typescript-eslint/scope-manager@8.70.1': + resolution: {integrity: sha512-Pa0EeSeAusQc1WbjQMac+YfenewYTBu0KjgYvkUKwhXaHUKbFog23Dm/rp0DX/6tyYOQ3Xl1a+3EcFNZynGHCw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.70.0': - resolution: {integrity: sha512-adnkeeNq9Sq1sUf4+FRVc0KdgYghzsgFpZSQVZVvY0LCuUuN0FnQgyGzCJeC4fW1cdXseBAjU2EOqUIjbNcZUw==} + '@typescript-eslint/tsconfig-utils@8.70.1': + resolution: {integrity: sha512-jumze1fPI+sDOaM2TWGQdn39PDxTr7TZGeuyLkAbNyx2vtMT3uRnVKChN0hfht5V2TugphJzF6bYXvBcE09qqg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.70.0': - resolution: {integrity: sha512-NUMKIhYVaVIVLnRL9CRt+VVcuLgSHUCpXn4/+K8wql+vdInUzvx8BjUO1oJ7cG9shjFJKtF8F8Hh2kCh3/KBVw==} + '@typescript-eslint/type-utils@8.70.1': + resolution: {integrity: sha512-7zKTnyvaVWqzLZHPFQtX1hVHqgkMC+WebPWakNCSyrQVbIP1AM0L0TlBZtACldIRb6PptI8Odk+jyZ5kP3B1VA==} 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.70.0': - resolution: {integrity: sha512-asTOIYhDg4zdzOScCyaytrsV3cR6B4ecPQlXw/dJIm7J/MZTtCtfVII9JD8Geh4jTCrK/Xe6cg5UevoleMcoJQ==} + '@typescript-eslint/types@8.70.1': + resolution: {integrity: sha512-Dm1ypdhhrGCTyyehxElhgJ6kgk8MVCv5qXdoOVqPr1uqk42jX8KjrZqhROvdShczA8qrDoYiOWn1ykWlx2k81Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.70.0': - resolution: {integrity: sha512-d9NmHMPEKQ7QCLLm1jI3zmoQBwT5KwFYjXBJ9ymZfKCUU+5rmTRykKAFvH5Qn/ZCds3CEAFS9OC9M/jkl0X2bA==} + '@typescript-eslint/typescript-estree@8.70.1': + resolution: {integrity: sha512-TU8PwyGN0PQJUcE96mw8eCQ44SmxGdQlJmlWakHaHQ15eIuuvye5yNtmh/i6oS88jzXVQB71xdNkbkB/fMwL0g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.70.0': - resolution: {integrity: sha512-oZmtKJz/4fufZ2p3+Cn3ijEojcdfR+1zYDH2xKYrEly0dR/Q/1xUPRCOlKGxod78nWlU2UnDe09GZ3TaknBFGA==} + '@typescript-eslint/utils@8.70.1': + resolution: {integrity: sha512-Esgul8MsnKnRLdYU2Eb2cRV9bS5HJYtKj1ByJnOzzG2M58DGdSUQ1jUuILxipqcpB2h9WLrbD5GijIWUjX/Tqw==} 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.70.0': - resolution: {integrity: sha512-BoC8PiO4Hkdo0TVJh9Ntxr5MxPDI7/oFsrygN5ADelFSeXG/qgNuucIGA+L5Z6JpPTE/uRfcTWtscjbUaufepQ==} + '@typescript-eslint/visitor-keys@8.70.1': + resolution: {integrity: sha512-Vwj9lUIW5Xq3wQ9w6gv3R86g1hMK8f2zNOdGTAgeXUMMXFK78G9ruCjjqutHMNJc0+CH7LYRnHeUB9IT8wFmcw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} acorn-jsx@5.3.2: @@ -1002,8 +1004,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.11.23: - resolution: {integrity: sha512-le521dGVfxM7yRX0EikCoSz+rOK+hHzdDt/E7mG1jOJB/6WAAUuwVroLwaB7ApaUsz5Q0kFlDXLSA9MheUIfRQ==} + baseline-browser-mapping@2.11.25: + resolution: {integrity: sha512-gMmEShwwq7FJqMwvfRwvCl00v4kN+KOfJqXn+f4nrufak5gNHJOksd/60Dvjuz7sI8Y5WiSFBa8FEYr+zoyqCw==} engines: {node: '>=6.0.0'} hasBin: true @@ -1033,22 +1035,22 @@ packages: boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - brace-expansion@1.1.18: - resolution: {integrity: sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==} + brace-expansion@1.1.21: + resolution: {integrity: sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==} - brace-expansion@2.1.4: - resolution: {integrity: sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==} + brace-expansion@2.1.7: + resolution: {integrity: sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==} - brace-expansion@5.0.9: - resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==} + brace-expansion@5.0.12: + resolution: {integrity: sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==} engines: {node: 20 || >=22} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.28.9: - resolution: {integrity: sha512-EWazOblFYUvlGZcfGhPUPmYh3nikUxBVb+y9MJun5f3hBi812X+8MSQTujLBtgK3cf51fJWbWfOjyeO954d+Eg==} + browserslist@4.29.0: + resolution: {integrity: sha512-3GSvyjvDI4Dur1Meg2BekJquu5uF+9R9a1+5M1Mde192eZoXbeXjzgOsgqPS2V8D5wrrip0gR5Hf/GhWQ9ZzaA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -1336,8 +1338,8 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.427: - resolution: {integrity: sha512-n14zb3FdsChZ2BNobqNHAJMcP3ifFv4paox2LvCrfVAQcqGiSURgbJl+PfMpHVCNFkStnNc+RRVtPBTVW5PDgw==} + electron-to-chromium@1.5.434: + resolution: {integrity: sha512-7EeFW9OLf1NN9NKQP9xdOE/XKqjxv7JDPP6AEAkHli11+Fae1OaLoNuAf13hQv1PPNtuES0pLQSPk2+fS3s8ww==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -1522,8 +1524,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.10.0: - resolution: {integrity: sha512-NPXn6r5zl4uET1DAVPaOwzX3rut4c0wcmw3dWJAfOsTM5+TogXo0DDjz8pwm/hL8cyVNpHqeK4JpN0NjnyFFNw==} + eslint@10.11.0: + resolution: {integrity: sha512-P7a6UEEqb9G95MYAtqkmsTbVXIYyzIfl6NGOIJk162PaahFxFyeGcrlXYFSiagECg4sEm8IseJdZBKR3rx6MsQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -1724,8 +1726,8 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-east-asian-width@1.6.0: - resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} + get-east-asian-width@1.7.0: + resolution: {integrity: sha512-XjH1AECxf0giL2V1aU8vKyRR2ppRUb5c0EvT7zuJTokQ74bNo52zOtghqdWIqrhUD79fo3x0WfKZdOqxF6LG1Q==} engines: {node: '>=18'} get-intrinsic@1.3.0: @@ -1867,8 +1869,8 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - ignore@7.0.9: - resolution: {integrity: sha512-brTTsvFRt5C1gGHtPst/281UjPD5t9fBqbgoMPlVWy11ZLTPfu7HxK4ZYqO9H7o/yC9rSTCI85EaQ4OoY12qYw==} + ignore@7.0.10: + resolution: {integrity: sha512-HpbUakT7xp5miBUywCHf36ZEuAJNklBJDDsGpUIjMzOSmM8ELSfA9Sa/QDPeNeqeoN31u+UTCkL4klCOVvRm4Q==} engines: {node: '>= 4'} imagemin-gifsicle@7.0.0: @@ -1940,8 +1942,8 @@ packages: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - is-core-module@2.16.2: - resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} + is-core-module@2.17.0: + resolution: {integrity: sha512-J/vG0zBCbIKOQFfufSwyXdMrsohyJIUNkrnmo6WZGzoM7tr/lsbfW5b2BvisL6zsyMzK9UxV9L6c7AoFbyXHOA==} engines: {node: '>= 0.4'} is-cwebp-readable@3.0.0: @@ -2316,8 +2318,8 @@ packages: node-html-parser@6.1.13: resolution: {integrity: sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==} - node-releases@2.0.55: - resolution: {integrity: sha512-mIrE/Cw9y+9Au6dS5vDKDhQza9YvG6w+ZrS6X+ZzA7yFW/soAeaups4Qzn1bL6g5FVy8WtP79+0j82oPIbqRjQ==} + node-releases@2.0.56: + resolution: {integrity: sha512-x0InOIyzgdk+eyaWaRJFH5snEtiImgBgblZ2CyPrLmqqcuMQkEvcDPHbzqbD8eDsSeJbVOjn+crzyzHaM4D+/A==} engines: {node: '>=18'} normalize-package-data@2.5.0: @@ -2353,8 +2355,8 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} - open@11.0.3: - resolution: {integrity: sha512-b3souUgU0VaAvMmzA4+9cRgrOgMdE0vc9H9VhQ0FYnjjcyZ8R/f9DiwMU9V8rl+vjf05On9UJhbgb06fsTs87Q==} + open@11.0.4: + resolution: {integrity: sha512-++Zlftm0kVLPmzC06t6epuWmcRMDbI4z5P3NNX979WA/k23+NtSOynEGzsVfZwguKw2mi5umVgnBlJQMwRz4Pg==} engines: {node: '>=20'} optionator@0.9.4: @@ -2553,8 +2555,8 @@ packages: resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} engines: {node: '>=4'} - prettier@3.9.6: - resolution: {integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==} + prettier@3.9.8: + resolution: {integrity: sha512-WRFq3Wn3WId7LLROfMLdH7xaFr2jR62wU8nLO6rQUOLOxNZUviyJQs1M0iIhLexSFy+L+w0ch66wtoO2jRjG0A==} engines: {node: '>=14'} hasBin: true @@ -2607,8 +2609,8 @@ packages: react-is@19.3.0: resolution: {integrity: sha512-UpMYezM4v5/18F28aC66AEsjXIgE02kyEMH6yLdgLXu/UTfa1Ntwck/nNLrbqJsEXW7gPb0coNO9FQse9WTovA==} - react-router@8.3.1: - resolution: {integrity: sha512-TEOpiO2g0TJHEOJeRVv4amUFun9v1npCKszvcquNvzETUtJ8udV86ah5eFoHT7g26bsBvT6EiIhqulR8eDF++A==} + react-router@8.4.0: + resolution: {integrity: sha512-JtydAkBvU9UTEe5qNC+POhu+ZBNM7rlKY2IegwXc7Idj7xfRG16x5RZrw3mju+XlqBxfvb2ky9P3jUp9WyWC1g==} engines: {node: '>=22.22.0'} peerDependencies: react: '>=19.2.7' @@ -2684,8 +2686,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rolldown@1.2.8: - resolution: {integrity: sha512-Z67nTmhZe7anqnM/EjI392w5i/ANUinjip7QYsOyN37oayduxt3ksdX0hf5OOamkAd53BiIHfbfSzfUmzKFQqQ==} + rolldown@1.2.9: + resolution: {integrity: sha512-hx/Pv0N1haXRb11qkfnK5MXB/iqr7i0yjWQqmO9uHqZpBgQSqzc8UsSnEpalsh+j1I8qQ2CkXAkJC8Br3dKSlg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -2828,8 +2830,8 @@ packages: spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - spdx-license-ids@3.0.23: - resolution: {integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==} + spdx-license-ids@3.0.24: + resolution: {integrity: sha512-cLS9TtWkIQFyLkJ3/5aFQAOHOSKTlOs/7WDut/XPSdjom1fJhUdkepeJAKXa9Y05+FabHd0sti+Et559vDtkpQ==} squeak@1.3.0: resolution: {integrity: sha512-YQL1ulInM+ev8nXX7vfXsCsDh6IqXlrremc1hzi77776BtpWgYJUMto3UM05GSAaGzJgWekszjoKDrVNB5XG+A==} @@ -2995,8 +2997,8 @@ packages: peerDependencies: typescript: '>=3.5.1' - typescript-eslint@8.70.0: - resolution: {integrity: sha512-P/W5cz70/cQAuKfY3xwQMWWTV7BvJ0mAQmi+9mBcsVPaBUpd6Ohpa+fECv9rBFrQcig86jAiNBFNWUqnTjr4pw==} + typescript-eslint@8.70.1: + resolution: {integrity: sha512-AcWG7KDjZ2THNXsgwttMaGmzVi0VFRlFYfqFHYQRbDpF3owuYbuiL8c7UUrd2k8s3PoSfIQrWfrGXfcElrWLYA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -3102,8 +3104,8 @@ packages: yaml: optional: true - which-typed-array@1.1.22: - resolution: {integrity: sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==} + which-typed-array@1.1.24: + resolution: {integrity: sha512-wk4Mf4pR5mRP7eYuuTBCIQ9d0ud2Fv2jRLQpfgnRjbOxAFHmjKFValgTpitVKzJJS8ajnYQV2Du1SZ8j6b/EUQ==} engines: {node: '>= 0.4'} which@1.3.1: @@ -3156,8 +3158,8 @@ packages: resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==} engines: {node: ^20.19.0 || ^22.12.0 || >=23} - yargs@18.1.0: - resolution: {integrity: sha512-2rAgRKu54VsHkqI0/tYkmluGXHD4KW7yZoycuqDQ15QOTnc2VVfy0nN/1eMhnQLO00A+dwtK20xuCnc1YGeUyg==} + yargs@18.2.0: + resolution: {integrity: sha512-9OpKOLeaoNFecEp7P6iYbzze/5CqWoH7N3SMs/6y1XF4nMvFMspEGZzJ6uFi9MmQwXhyzqYoSEKO3tvA3Z/o2w==} engines: {node: ^20.19.0 || ^22.12.0 || >=23} yauzl@2.10.0: @@ -3194,7 +3196,7 @@ snapshots: '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/helpers': 7.29.7 - '@babel/parser': 7.29.8 + '@babel/parser': 7.29.9 '@babel/template': 7.29.7 '@babel/traverse': 7.29.8(supports-color@10.2.2) '@babel/types': 7.29.8 @@ -3209,7 +3211,7 @@ snapshots: '@babel/generator@7.29.8': dependencies: - '@babel/parser': 7.29.8 + '@babel/parser': 7.29.9 '@babel/types': 7.29.8 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 @@ -3223,7 +3225,7 @@ snapshots: dependencies: '@babel/compat-data': 7.29.7 '@babel/helper-validator-option': 7.29.7 - browserslist: 4.28.9 + browserslist: 4.29.0 lru-cache: 5.1.1 semver: 6.3.1 @@ -3258,7 +3260,7 @@ snapshots: '@babel/template': 7.29.7 '@babel/types': 7.29.8 - '@babel/parser@7.29.8': + '@babel/parser@7.29.9': dependencies: '@babel/types': 7.29.8 @@ -3290,7 +3292,7 @@ snapshots: '@babel/template@7.29.7': dependencies: '@babel/code-frame': 7.29.7 - '@babel/parser': 7.29.8 + '@babel/parser': 7.29.9 '@babel/types': 7.29.8 '@babel/traverse@7.29.8(supports-color@10.2.2)': @@ -3298,7 +3300,7 @@ snapshots: '@babel/code-frame': 7.29.7 '@babel/generator': 7.29.8 '@babel/helper-globals': 7.29.7 - '@babel/parser': 7.29.8 + '@babel/parser': 7.29.9 '@babel/template': 7.29.7 '@babel/types': 7.29.8 debug: 4.4.3(supports-color@10.2.2) @@ -3408,9 +3410,9 @@ snapshots: '@esbuild/linux-loong64@0.14.54': optional: true - '@eslint-community/eslint-utils@4.10.1(eslint@10.10.0(supports-color@10.2.2))': + '@eslint-community/eslint-utils@4.10.1(eslint@10.11.0(supports-color@10.2.2))': dependencies: - eslint: 10.10.0(supports-color@10.2.2) + eslint: 10.11.0(supports-color@10.2.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} @@ -3431,9 +3433,9 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/js@10.0.1(eslint@10.10.0(supports-color@10.2.2))': + '@eslint/js@10.0.1(eslint@10.11.0(supports-color@10.2.2))': optionalDependencies: - eslint: 10.10.0(supports-color@10.2.2) + eslint: 10.11.0(supports-color@10.2.2) '@eslint/object-schema@3.0.5': {} @@ -3589,23 +3591,23 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.3 - '@oxc-project/types@0.149.0': {} + '@oxc-project/types@0.150.0': {} '@popperjs/core@2.11.8': {} - '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.0(@types/node@26.5.1)(terser@5.51.2))': + '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.0(@types/node@26.6.2)(terser@5.51.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@prefresh/vite': 2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.0(@types/node@26.5.1)(terser@5.51.2)) + '@prefresh/vite': 2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.0(@types/node@26.6.2)(terser@5.51.2)) '@rollup/pluginutils': 5.4.0 babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.7(supports-color@10.2.2)) debug: 4.4.3(supports-color@10.2.2) magic-string: 0.30.21 picocolors: 1.1.1 - vite: 8.3.0(@types/node@26.5.1)(terser@5.51.2) - vite-prerender-plugin: 0.5.13(vite@8.3.0(@types/node@26.5.1)(terser@5.51.2)) + vite: 8.3.0(@types/node@26.6.2)(terser@5.51.2) + vite-prerender-plugin: 0.5.13(vite@8.3.0(@types/node@26.6.2)(terser@5.51.2)) zimmerframe: 1.1.5 transitivePeerDependencies: - preact @@ -3622,7 +3624,7 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.0(@types/node@26.5.1)(terser@5.51.2))': + '@prefresh/vite@2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.0(@types/node@26.6.2)(terser@5.51.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@prefresh/babel-plugin': 0.5.4(@babel/core@7.29.7(supports-color@10.2.2)) @@ -3630,53 +3632,55 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 10.29.8 - vite: 8.3.0(@types/node@26.5.1)(terser@5.51.2) + vite: 8.3.0(@types/node@26.6.2)(terser@5.51.2) transitivePeerDependencies: - supports-color - '@rolldown/binding-android-arm-eabi@1.2.8': + '@remix-run/route-pattern@0.22.1': {} + + '@rolldown/binding-android-arm-eabi@1.2.9': optional: true - '@rolldown/binding-android-arm64@1.2.8': + '@rolldown/binding-android-arm64@1.2.9': optional: true - '@rolldown/binding-darwin-arm64@1.2.8': + '@rolldown/binding-darwin-arm64@1.2.9': optional: true - '@rolldown/binding-darwin-x64@1.2.8': + '@rolldown/binding-darwin-x64@1.2.9': optional: true - '@rolldown/binding-freebsd-x64@1.2.8': + '@rolldown/binding-freebsd-x64@1.2.9': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.2.8': + '@rolldown/binding-linux-arm-gnueabihf@1.2.9': optional: true - '@rolldown/binding-linux-arm64-gnu@1.2.8': + '@rolldown/binding-linux-arm64-gnu@1.2.9': optional: true - '@rolldown/binding-linux-arm64-musl@1.2.8': + '@rolldown/binding-linux-arm64-musl@1.2.9': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.2.8': + '@rolldown/binding-linux-ppc64-gnu@1.2.9': optional: true - '@rolldown/binding-linux-s390x-gnu@1.2.8': + '@rolldown/binding-linux-s390x-gnu@1.2.9': optional: true - '@rolldown/binding-linux-x64-gnu@1.2.8': + '@rolldown/binding-linux-x64-gnu@1.2.9': optional: true - '@rolldown/binding-linux-x64-musl@1.2.8': + '@rolldown/binding-linux-x64-musl@1.2.9': optional: true - '@rolldown/binding-openharmony-arm64@1.2.8': + '@rolldown/binding-openharmony-arm64@1.2.9': optional: true - '@rolldown/binding-win32-arm64-msvc@1.2.8': + '@rolldown/binding-win32-arm64-msvc@1.2.9': optional: true - '@rolldown/binding-win32-x64-msvc@1.2.8': + '@rolldown/binding-win32-x64-msvc@1.2.9': optional: true '@rolldown/pluginutils@1.0.1': {} @@ -3703,17 +3707,17 @@ snapshots: react-virtualized-auto-sizer: 1.0.26(react-dom@19.3.0(react@19.3.0))(react@19.3.0) react-window: 1.8.11(react-dom@19.3.0(react@19.3.0))(react@19.3.0) - '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.9.6)(supports-color@10.2.2)': + '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.9.8)(supports-color@10.2.2)': dependencies: '@babel/generator': 7.29.8 - '@babel/parser': 7.29.8 + '@babel/parser': 7.29.9 '@babel/traverse': 7.29.8(supports-color@10.2.2) '@babel/types': 7.29.8 javascript-natural-sort: 0.7.1 lodash-es: 4.18.1 minimatch: 9.0.9 parse-imports-exports: 0.2.4 - prettier: 3.9.6 + prettier: 3.9.8 transitivePeerDependencies: - supports-color @@ -3723,8 +3727,8 @@ snapshots: '@types/glob@7.2.0': dependencies: - '@types/minimatch': 6.0.0 - '@types/node': 26.5.1 + '@types/minimatch': 5.1.2 + '@types/node': 26.6.2 '@types/imagemin-gifsicle@7.0.4': dependencies: @@ -3753,19 +3757,17 @@ snapshots: '@types/imagemin@7.0.1': dependencies: - '@types/node': 26.5.1 + '@types/node': 26.6.2 '@types/json-schema@7.0.15': {} '@types/keyv@3.1.4': dependencies: - '@types/node': 26.5.1 + '@types/node': 26.6.2 - '@types/minimatch@6.0.0': - dependencies: - minimatch: 10.2.6 + '@types/minimatch@5.1.2': {} - '@types/node@26.5.1': + '@types/node@26.6.2': dependencies: undici-types: 8.9.0 @@ -3787,78 +3789,78 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 26.5.1 + '@types/node': 26.6.2 '@types/svgo@2.6.4': dependencies: - '@types/node': 26.5.1 + '@types/node': 26.6.2 - '@typescript-eslint/eslint-plugin@8.70.0(@typescript-eslint/parser@8.70.0(eslint@10.10.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.10.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.70.1(@typescript-eslint/parser@8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.70.0(eslint@10.10.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.70.0 - '@typescript-eslint/type-utils': 8.70.0(eslint@10.10.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/utils': 8.70.0(eslint@10.10.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.70.0 - eslint: 10.10.0(supports-color@10.2.2) - ignore: 7.0.9 + '@typescript-eslint/parser': 8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.70.1 + '@typescript-eslint/type-utils': 8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/utils': 8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.70.1 + eslint: 10.11.0(supports-color@10.2.2) + ignore: 7.0.10 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.70.0(eslint@10.10.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/parser@8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/scope-manager': 8.70.0 - '@typescript-eslint/types': 8.70.0 - '@typescript-eslint/typescript-estree': 8.70.0(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.70.0 + '@typescript-eslint/scope-manager': 8.70.1 + '@typescript-eslint/types': 8.70.1 + '@typescript-eslint/typescript-estree': 8.70.1(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.70.1 debug: 4.4.3(supports-color@10.2.2) - eslint: 10.10.0(supports-color@10.2.2) + eslint: 10.11.0(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.70.0(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/project-service@8.70.1(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.70.0(typescript@6.0.3) - '@typescript-eslint/types': 8.70.0 + '@typescript-eslint/tsconfig-utils': 8.70.1(typescript@6.0.3) + '@typescript-eslint/types': 8.70.1 debug: 4.4.3(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.70.0': + '@typescript-eslint/scope-manager@8.70.1': dependencies: - '@typescript-eslint/types': 8.70.0 - '@typescript-eslint/visitor-keys': 8.70.0 + '@typescript-eslint/types': 8.70.1 + '@typescript-eslint/visitor-keys': 8.70.1 - '@typescript-eslint/tsconfig-utils@8.70.0(typescript@6.0.3)': + '@typescript-eslint/tsconfig-utils@8.70.1(typescript@6.0.3)': dependencies: typescript: 6.0.3 - '@typescript-eslint/type-utils@8.70.0(eslint@10.10.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/types': 8.70.0 - '@typescript-eslint/typescript-estree': 8.70.0(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/utils': 8.70.0(eslint@10.10.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/types': 8.70.1 + '@typescript-eslint/typescript-estree': 8.70.1(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/utils': 8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) debug: 4.4.3(supports-color@10.2.2) - eslint: 10.10.0(supports-color@10.2.2) + eslint: 10.11.0(supports-color@10.2.2) ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.70.0': {} + '@typescript-eslint/types@8.70.1': {} - '@typescript-eslint/typescript-estree@8.70.0(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/typescript-estree@8.70.1(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/project-service': 8.70.0(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.70.0(typescript@6.0.3) - '@typescript-eslint/types': 8.70.0 - '@typescript-eslint/visitor-keys': 8.70.0 + '@typescript-eslint/project-service': 8.70.1(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.70.1(typescript@6.0.3) + '@typescript-eslint/types': 8.70.1 + '@typescript-eslint/visitor-keys': 8.70.1 debug: 4.4.3(supports-color@10.2.2) minimatch: 10.2.6 semver: 7.8.5 @@ -3868,20 +3870,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.70.0(eslint@10.10.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/utils@8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@eslint-community/eslint-utils': 4.10.1(eslint@10.10.0(supports-color@10.2.2)) - '@typescript-eslint/scope-manager': 8.70.0 - '@typescript-eslint/types': 8.70.0 - '@typescript-eslint/typescript-estree': 8.70.0(supports-color@10.2.2)(typescript@6.0.3) - eslint: 10.10.0(supports-color@10.2.2) + '@eslint-community/eslint-utils': 4.10.1(eslint@10.11.0(supports-color@10.2.2)) + '@typescript-eslint/scope-manager': 8.70.1 + '@typescript-eslint/types': 8.70.1 + '@typescript-eslint/typescript-estree': 8.70.1(supports-color@10.2.2)(typescript@6.0.3) + eslint: 10.11.0(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.70.0': + '@typescript-eslint/visitor-keys@8.70.1': dependencies: - '@typescript-eslint/types': 8.70.0 + '@typescript-eslint/types': 8.70.1 eslint-visitor-keys: 5.0.1 acorn-jsx@5.3.2(acorn@8.18.0): @@ -3944,7 +3946,7 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.11.23: {} + baseline-browser-mapping@2.11.25: {} bin-build@3.0.0: dependencies: @@ -3986,16 +3988,16 @@ snapshots: boolbase@1.0.0: {} - brace-expansion@1.1.18: + brace-expansion@1.1.21: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.1.4: + brace-expansion@2.1.7: dependencies: balanced-match: 1.0.2 - brace-expansion@5.0.9: + brace-expansion@5.0.12: dependencies: balanced-match: 4.0.4 @@ -4003,13 +4005,13 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.28.9: + browserslist@4.29.0: dependencies: - baseline-browser-mapping: 2.11.23 + baseline-browser-mapping: 2.11.25 caniuse-lite: 1.0.30001810 - electron-to-chromium: 1.5.427 - node-releases: 2.0.55 - update-browserslist-db: 1.3.3(browserslist@4.28.9) + electron-to-chromium: 1.5.434 + node-releases: 2.0.56 + update-browserslist-db: 1.3.3(browserslist@4.29.0) buffer-alloc-unsafe@1.1.0: {} @@ -4372,7 +4374,7 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.427: {} + electron-to-chromium@1.5.434: {} emoji-regex@10.6.0: {} @@ -4486,9 +4488,9 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@10.1.8(eslint@10.10.0(supports-color@10.2.2)): + eslint-config-prettier@10.1.8(eslint@10.11.0(supports-color@10.2.2)): dependencies: - eslint: 10.10.0(supports-color@10.2.2) + eslint: 10.11.0(supports-color@10.2.2) eslint-scope@9.1.2: dependencies: @@ -4501,9 +4503,9 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.10.0(supports-color@10.2.2): + eslint@10.11.0(supports-color@10.2.2): dependencies: - '@eslint-community/eslint-utils': 4.10.1(eslint@10.10.0(supports-color@10.2.2)) + '@eslint-community/eslint-utils': 4.10.1(eslint@10.11.0(supports-color@10.2.2)) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.23.5(supports-color@10.2.2) '@eslint/config-helpers': 0.7.0 @@ -4740,7 +4742,7 @@ snapshots: get-caller-file@2.0.5: {} - get-east-asian-width@1.6.0: {} + get-east-asian-width@1.7.0: {} get-intrinsic@1.3.0: dependencies: @@ -4915,7 +4917,7 @@ snapshots: ignore@5.3.2: {} - ignore@7.0.9: {} + ignore@7.0.10: {} imagemin-gifsicle@7.0.0: dependencies: @@ -5001,7 +5003,7 @@ snapshots: is-callable@1.2.7: {} - is-core-module@2.16.2: + is-core-module@2.17.0: dependencies: hasown: 2.0.4 @@ -5053,7 +5055,7 @@ snapshots: is-typed-array@1.1.15: dependencies: - which-typed-array: 1.1.22 + which-typed-array: 1.1.24 is-utf8@0.2.1: {} @@ -5279,15 +5281,15 @@ snapshots: minimatch@10.2.6: dependencies: - brace-expansion: 5.0.9 + brace-expansion: 5.0.12 minimatch@3.1.5: dependencies: - brace-expansion: 1.1.18 + brace-expansion: 1.1.21 minimatch@9.0.9: dependencies: - brace-expansion: 2.1.4 + brace-expansion: 2.1.7 minimist@1.2.8: {} @@ -5309,7 +5311,7 @@ snapshots: css-select: 5.2.2 he: 1.2.0 - node-releases@2.0.55: {} + node-releases@2.0.56: {} normalize-package-data@2.5.0: dependencies: @@ -5351,7 +5353,7 @@ snapshots: dependencies: mimic-fn: 2.1.0 - open@11.0.3: + open@11.0.4: dependencies: default-browser: 5.5.1 define-lazy-prop: 3.0.0 @@ -5513,7 +5515,7 @@ snapshots: prepend-http@2.0.0: {} - prettier@3.9.6: {} + prettier@3.9.8: {} process-nextick-args@2.0.1: {} @@ -5561,8 +5563,9 @@ snapshots: react-is@19.3.0: {} - react-router@8.3.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0): + react-router@8.4.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0): dependencies: + '@remix-run/route-pattern': 0.22.1 cookie-es: 3.1.1 react: 19.3.0 optionalDependencies: @@ -5628,7 +5631,7 @@ snapshots: resolve@1.22.12: dependencies: es-errors: 1.3.0 - is-core-module: 2.16.2 + is-core-module: 2.17.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -5642,35 +5645,35 @@ snapshots: dependencies: glob: 7.2.3 - rolldown@1.2.8: + rolldown@1.2.9: dependencies: - '@oxc-project/types': 0.149.0 + '@oxc-project/types': 0.150.0 '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm-eabi': 1.2.8 - '@rolldown/binding-android-arm64': 1.2.8 - '@rolldown/binding-darwin-arm64': 1.2.8 - '@rolldown/binding-darwin-x64': 1.2.8 - '@rolldown/binding-freebsd-x64': 1.2.8 - '@rolldown/binding-linux-arm-gnueabihf': 1.2.8 - '@rolldown/binding-linux-arm64-gnu': 1.2.8 - '@rolldown/binding-linux-arm64-musl': 1.2.8 - '@rolldown/binding-linux-ppc64-gnu': 1.2.8 - '@rolldown/binding-linux-s390x-gnu': 1.2.8 - '@rolldown/binding-linux-x64-gnu': 1.2.8 - '@rolldown/binding-linux-x64-musl': 1.2.8 - '@rolldown/binding-openharmony-arm64': 1.2.8 - '@rolldown/binding-win32-arm64-msvc': 1.2.8 - '@rolldown/binding-win32-x64-msvc': 1.2.8 + '@rolldown/binding-android-arm-eabi': 1.2.9 + '@rolldown/binding-android-arm64': 1.2.9 + '@rolldown/binding-darwin-arm64': 1.2.9 + '@rolldown/binding-darwin-x64': 1.2.9 + '@rolldown/binding-freebsd-x64': 1.2.9 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.9 + '@rolldown/binding-linux-arm64-gnu': 1.2.9 + '@rolldown/binding-linux-arm64-musl': 1.2.9 + '@rolldown/binding-linux-ppc64-gnu': 1.2.9 + '@rolldown/binding-linux-s390x-gnu': 1.2.9 + '@rolldown/binding-linux-x64-gnu': 1.2.9 + '@rolldown/binding-linux-x64-musl': 1.2.9 + '@rolldown/binding-openharmony-arm64': 1.2.9 + '@rolldown/binding-win32-arm64-msvc': 1.2.9 + '@rolldown/binding-win32-x64-msvc': 1.2.9 - rollup-plugin-visualizer@7.1.1(rolldown@1.2.8): + rollup-plugin-visualizer@7.1.1(rolldown@1.2.9): dependencies: - open: 11.0.3 + open: 11.0.4 picomatch: 4.0.7 source-map: 0.8.0 - yargs: 18.1.0 + yargs: 18.2.0 optionalDependencies: - rolldown: 1.2.8 + rolldown: 1.2.9 run-applescript@7.1.0: {} @@ -5767,16 +5770,16 @@ snapshots: spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.23 + spdx-license-ids: 3.0.24 spdx-exceptions@2.5.0: {} spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.23 + spdx-license-ids: 3.0.24 - spdx-license-ids@3.0.23: {} + spdx-license-ids@3.0.24: {} squeak@1.3.0: dependencies: @@ -5793,12 +5796,12 @@ snapshots: string-width@7.2.0: dependencies: emoji-regex: 10.6.0 - get-east-asian-width: 1.6.0 + get-east-asian-width: 1.7.0 strip-ansi: 7.2.0 string-width@8.2.2: dependencies: - get-east-asian-width: 1.6.0 + get-east-asian-width: 1.7.0 strip-ansi: 7.2.0 string_decoder@1.1.1: @@ -5934,13 +5937,13 @@ snapshots: dependencies: typescript: 6.0.3 - typescript-eslint@8.70.0(eslint@10.10.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3): + typescript-eslint@8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.70.0(@typescript-eslint/parser@8.70.0(eslint@10.10.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.10.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/parser': 8.70.0(eslint@10.10.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.70.0(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/utils': 8.70.0(eslint@10.10.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - eslint: 10.10.0(supports-color@10.2.2) + '@typescript-eslint/eslint-plugin': 8.70.1(@typescript-eslint/parser@8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/parser': 8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.70.1(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/utils': 8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + eslint: 10.11.0(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -5956,9 +5959,9 @@ snapshots: universalify@2.0.1: {} - update-browserslist-db@1.3.3(browserslist@4.28.9): + update-browserslist-db@1.3.3(browserslist@4.29.0): dependencies: - browserslist: 4.28.9 + browserslist: 4.29.0 escalade: 3.2.0 picocolors: 1.1.1 @@ -5985,7 +5988,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-imagemin@0.6.1(supports-color@10.2.2)(vite@8.3.0(@types/node@26.5.1)(terser@5.51.2)): + vite-plugin-imagemin@0.6.1(supports-color@10.2.2)(vite@8.3.0(@types/node@26.6.2)(terser@5.51.2)): dependencies: '@types/imagemin': 7.0.1 '@types/imagemin-gifsicle': 7.0.4 @@ -6010,11 +6013,11 @@ snapshots: imagemin-webp: 6.1.0 jpegtran-bin: 6.0.1 pathe: 0.2.0 - vite: 8.3.0(@types/node@26.5.1)(terser@5.51.2) + vite: 8.3.0(@types/node@26.6.2)(terser@5.51.2) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.13(vite@8.3.0(@types/node@26.5.1)(terser@5.51.2)): + vite-prerender-plugin@0.5.13(vite@8.3.0(@types/node@26.6.2)(terser@5.51.2)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -6022,21 +6025,21 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0 - vite: 8.3.0(@types/node@26.5.1)(terser@5.51.2) + vite: 8.3.0(@types/node@26.6.2)(terser@5.51.2) - vite@8.3.0(@types/node@26.5.1)(terser@5.51.2): + vite@8.3.0(@types/node@26.6.2)(terser@5.51.2): dependencies: lightningcss: 1.33.0 picomatch: 4.0.7 postcss: 8.5.28 - rolldown: 1.2.8 + rolldown: 1.2.9 tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 26.5.1 + '@types/node': 26.6.2 fsevents: 2.3.3 terser: 5.51.2 - which-typed-array@1.1.22: + which-typed-array@1.1.24: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.9 @@ -6090,7 +6093,7 @@ snapshots: y18n: 5.0.8 yargs-parser: 22.0.0 - yargs@18.1.0: + yargs@18.2.0: dependencies: cliui: 9.0.1 escalade: 3.2.0 -- 2.54.0 From 44cb96a2c47b3088067f63b1d5b274a73678078b Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 24 Sep 2026 08:41:41 +0200 Subject: [PATCH 002/148] pkg --- interface/pnpm-lock.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index 3c2e56a47..92999998f 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -1338,8 +1338,8 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.434: - resolution: {integrity: sha512-7EeFW9OLf1NN9NKQP9xdOE/XKqjxv7JDPP6AEAkHli11+Fae1OaLoNuAf13hQv1PPNtuES0pLQSPk2+fS3s8ww==} + electron-to-chromium@1.5.437: + resolution: {integrity: sha512-1z60R0Nb+kYPnGUrQ6PvMjTVINDGMfqQZ/mI5FJIHvTotlA6noI+YJWakbjaFM+qhLXg9WnK3RUeYSO5ixSHJA==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -4009,7 +4009,7 @@ snapshots: dependencies: baseline-browser-mapping: 2.11.25 caniuse-lite: 1.0.30001810 - electron-to-chromium: 1.5.434 + electron-to-chromium: 1.5.437 node-releases: 2.0.56 update-browserslist-db: 1.3.3(browserslist@4.29.0) @@ -4374,7 +4374,7 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.434: {} + electron-to-chromium@1.5.437: {} emoji-regex@10.6.0: {} -- 2.54.0 From 40c4fdd2d1f2a9ad76efde0d8e4607d77ab9b1df Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 24 Sep 2026 11:28:14 +0200 Subject: [PATCH 003/148] move hardcoded consts to header files --- project-words.txt | 1 - src/ESP32React/UploadFileService.cpp | 2 +- src/core/analogsensor.h | 2 ++ src/core/emsdevice.cpp | 4 +-- src/core/emsdevice.h | 3 ++ src/core/emsesp.cpp | 4 +-- src/core/emsesp.h | 2 ++ src/core/httpClient.cpp | 6 ++-- src/core/httpClient.h | 8 +++++ src/core/mqtt.cpp | 2 +- src/core/mqtt.h | 5 +-- src/core/system.cpp | 46 ++++++++++++---------------- src/core/system.h | 15 +++++++++ src/core/telegram.cpp | 2 +- src/core/telegram.h | 3 ++ src/web/WebLogService.cpp | 4 +-- src/web/WebLogService.h | 5 +++ 17 files changed, 72 insertions(+), 42 deletions(-) diff --git a/project-words.txt b/project-words.txt index 0e8f7a52e..1a2a9624e 100644 --- a/project-words.txt +++ b/project-words.txt @@ -786,7 +786,6 @@ negcond negheat nein nennvolumentstrom -neopixel netcmp netflowtemp netif diff --git a/src/ESP32React/UploadFileService.cpp b/src/ESP32React/UploadFileService.cpp index a10266192..e9fa36ed4 100644 --- a/src/ESP32React/UploadFileService.cpp +++ b/src/ESP32React/UploadFileService.cpp @@ -71,7 +71,7 @@ void UploadFileService::handleUpload(AsyncWebServerRequest * request, const Stri _is_filesystem = true; _md5[0] = '\0'; // clear any stale md5 so Update.end() doesn't compare against it _md5_applied = false; - } else if ((extension == "bin") && (filesize > 1000000)) { + } else if ((extension == "bin") && (filesize >= emsesp::System::MIN_FIRMWARE_SIZE)) { _is_firmware = true; } else if (extension == "json") { _md5[0] = '\0'; // clear md5 diff --git a/src/core/analogsensor.h b/src/core/analogsensor.h index e44e48b7d..b0020e7b9 100644 --- a/src/core/analogsensor.h +++ b/src/core/analogsensor.h @@ -189,8 +189,10 @@ class AnalogSensor { static constexpr double T25 = 298.15; static constexpr double R0 = 100000; static constexpr double Rt = 60000; + static constexpr uint32_t NTC_VREF_MV = 3300; // NTC voltage divider supply (in mV) - 3.3 V static constexpr uint8_t MAX_SENSORS = 20; static constexpr uint32_t MEASURE_ANALOG_INTERVAL = 500; + static constexpr uint32_t FREQ_ZERO_TIMEOUT_US = 10000000; // report 0 Hz if no edge arrives for this long (in us) - 10 seconds static uuid::log::Logger logger_; void remove_ha_topic(const int8_t type, const uint8_t id) const; diff --git a/src/core/emsdevice.cpp b/src/core/emsdevice.cpp index 43d9a4ed3..dc4ecdd2c 100644 --- a/src/core/emsdevice.cpp +++ b/src/core/emsdevice.cpp @@ -2281,8 +2281,8 @@ bool EMSdevice::handle_telegram(const std::shared_ptr & telegram EMSESP::logger().debug("This telegram (%s) is not recognized by the EMS bus", tf.telegram_type_name_); #endif // removing fetch after start causes issue: https://github.com/emsesp/EMS-ESP32/issues/1420 - // continue retry the first 5 minutes, then disable (added 15.3.2024) - if (uuid::get_uptime_sec() > 600) { + // continue retrying for a while after boot, then disable (added 15.3.2024) + if (uuid::get_uptime_sec() > FETCH_RETRY_DURATION_SEC) { tf.fetch_ = false; } return false; diff --git a/src/core/emsdevice.h b/src/core/emsdevice.h index fa21a8744..8b8c640fe 100644 --- a/src/core/emsdevice.h +++ b/src/core/emsdevice.h @@ -441,6 +441,9 @@ class EMSdevice { static constexpr uint8_t EMS_DEVICES_MAX_TELEGRAMS = 20; + // keep fetching telegrams the bus master doesn't recognise for this long after boot, then give up (in seconds) - 10 minutes + static constexpr uint32_t FETCH_RETRY_DURATION_SEC = 600; + // static device IDs static constexpr uint8_t EMS_DEVICE_ID_BOILER = 0x08; // fixed device_id for Master Boiler/UBA static constexpr uint8_t EMS_DEVICE_ID_HS1 = 0x70; // fixed device_id for 1st. Cascade Boiler/UBA diff --git a/src/core/emsesp.cpp b/src/core/emsesp.cpp index e0d5eb3d5..c4767f9ac 100644 --- a/src/core/emsesp.cpp +++ b/src/core/emsesp.cpp @@ -1978,12 +1978,12 @@ void EMSESP::loop() { } } - // reset status after 5 Minutes + // reset status after a timeout if (EMSESP::system_.systemStatus() != SYSTEM_STATUS::SYSTEM_STATUS_NORMAL) { static uint32_t starttime = 0; if (starttime == 0) { starttime = uuid::get_uptime_ms(); - } else if (uuid::get_uptime_ms() - starttime > 300000) { + } else if (uuid::get_uptime_ms() - starttime > SYSTEM_STATUS_RESET_TIMEOUT) { starttime = 0; EMSESP::system_.systemStatus(SYSTEM_STATUS::SYSTEM_STATUS_NORMAL); } diff --git a/src/core/emsesp.h b/src/core/emsesp.h index 3111395ff..06382ba85 100644 --- a/src/core/emsesp.h +++ b/src/core/emsesp.h @@ -291,6 +291,8 @@ class EMSESP { static constexpr uint32_t EMS_FETCH_FREQUENCY = 60000; // check every minute static constexpr uint8_t EMS_WAIT_KM_TIMEOUT = 60; // wait one minute + static constexpr uint32_t SYSTEM_STATUS_RESET_TIMEOUT = 300000; // return a non-normal system status to normal after this (in ms) - 5 minutes + struct Device_record { uint8_t product_id; EMSdevice::DeviceType device_type; diff --git a/src/core/httpClient.cpp b/src/core/httpClient.cpp index b46fe85ab..29f00eba8 100644 --- a/src/core/httpClient.cpp +++ b/src/core/httpClient.cpp @@ -66,13 +66,13 @@ int HttpClient::request(std::string url, const std::string & method, const std:: ssl_client->setInsecure(); // Notes: with root CA we should set here: ssl_client->setCACert(rootCACert); // 1 KB RX buffer is fine for small JSON-style endpoints used by the scheduler/shunting-yard but it is NOT enough for servers that send full-size TLS records (>1 KB) - ssl_client->setBufferSizes(16384, 1024); - ssl_client->setSessionTimeout(120); // Set the timeout in seconds (>=120 seconds) + ssl_client->setBufferSizes(TLS_RX_BUFFER_SIZE, TLS_TX_BUFFER_SIZE); + ssl_client->setSessionTimeout(TLS_SESSION_TIMEOUT_S); } // WiFiClient is NetworkClient, which declares no setTimeout() of its own - calling it binds to // Stream::setTimeout() and only affects readBytes(), leaving the socket on the core's 3s default basic_client->setConnectionTimeout(CONNECT_TIMEOUT_MS); - ssl_client->setTimeout(5); // seconds, drives BearSSL only - unused on the plain HTTP path + ssl_client->setTimeout(TLS_READ_TIMEOUT_S); // drives BearSSL only - unused on the plain HTTP path ssl_client->setClient(basic_client, is_https); // enableSSL = false for plain HTTP const uint16_t port = is_https ? 443 : 80; diff --git a/src/core/httpClient.h b/src/core/httpClient.h index fe30167ab..9dd5423f9 100644 --- a/src/core/httpClient.h +++ b/src/core/httpClient.h @@ -29,6 +29,14 @@ class HttpClient { public: static int request(std::string url, const std::string & method, const std::string & value, JsonObjectConst headers, std::string & result); + // ESP_SSLClient (BearSSL) settings, shared by every TLS client in the project. + // The RX buffer must hold one full TLS record: servers such as GitHub's CDN send up-to-16 KB + // records and don't negotiate max_fragment_length, so a smaller buffer can't decode the body + static constexpr size_t TLS_RX_BUFFER_SIZE = 16384; + static constexpr size_t TLS_TX_BUFFER_SIZE = 1024; + static constexpr uint32_t TLS_SESSION_TIMEOUT_S = 120; // in seconds, the library minimum + static constexpr uint32_t TLS_READ_TIMEOUT_S = 5; // in seconds, not ms like the socket timeouts + private: static constexpr uint32_t CONNECT_TIMEOUT_MS = 5000; // TCP connect, the core defaults to 3s static constexpr uint32_t FIRST_BYTE_TIMEOUT_MS = 8000; // how long the server may take to start replying diff --git a/src/core/mqtt.cpp b/src/core/mqtt.cpp index c58952318..25223c9d4 100644 --- a/src/core/mqtt.cpp +++ b/src/core/mqtt.cpp @@ -643,7 +643,7 @@ bool Mqtt::queue_message(const uint8_t operation, const std::string & topic, con // check free mem #ifndef EMSESP_STANDALONE // if (ESP.getFreeHeap() < 60 * 1024 || ESP.getMaxAllocHeap() < 40 * 1024) { - if (heap_caps_get_free_size(MALLOC_CAP_8BIT) < 60 * 1024) { // checks free Heap+PSRAM + if (heap_caps_get_free_size(MALLOC_CAP_8BIT) < MQTT_MIN_FREE_HEAP) { // checks free Heap+PSRAM if (operation == Operation::PUBLISH) { mqtt_message_id_++; mqtt_publish_fails_++; diff --git a/src/core/mqtt.h b/src/core/mqtt.h index 81d1aed7f..5e8266030 100644 --- a/src/core/mqtt.h +++ b/src/core/mqtt.h @@ -61,9 +61,10 @@ class Mqtt { enum Operation : uint8_t { PUBLISH, SUBSCRIBE, UNSUBSCRIBE }; enum NestedFormat : uint8_t { NESTED = 1, SINGLE }; - static constexpr uint8_t MQTT_TOPIC_MAX_SIZE = 128; // fixed, not a user setting anymore + static constexpr uint8_t MQTT_TOPIC_MAX_SIZE = 128; // fixed, not a user setting anymore static constexpr uint16_t MQTT_QUEUE_MAX_SIZE = 300; - static constexpr uint32_t MQTT_DISCONNECT_TIMEOUT = 1000; // max ms to flush a graceful disconnect on non-PSRAM boards + static constexpr uint32_t MQTT_DISCONNECT_TIMEOUT = 1000; // max ms to flush a graceful disconnect on non-PSRAM boards + static constexpr uint32_t MQTT_MIN_FREE_HEAP = 60 * 1024; // don't queue any MQTT message below this much free heap+PSRAM (in bytes) - 60 KB static void on_connect(); static void on_disconnect(espMqttClientTypes::DisconnectReason reason); diff --git a/src/core/system.cpp b/src/core/system.cpp index 8ffdede52..a2860bfc3 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -33,6 +33,7 @@ #include "firmwareVersion.h" #include "shuntingYard.h" // for compute() used by the message and sendmail commands +#include "httpClient.h" // for the shared TLS client settings #if defined(EMSESP_TEST) #include "../test/test.h" @@ -218,7 +219,7 @@ bool System::command_sendmail(const char * value, const int8_t) { ESP_SSLClient * ssl_client = nullptr; SMTPClient * smtp = nullptr; - basic_client->setTimeout(5000); + basic_client->setTimeout(SMTP_TIMEOUT_MS); const bool implicit_ssl = (security == EMAIL_SECURITY::SSL); const bool start_tls = (security == EMAIL_SECURITY::STARTTLS); @@ -229,8 +230,8 @@ bool System::command_sendmail(const char * value, const int8_t) { } else { ssl_client = new ESP_SSLClient; ssl_client->setInsecure(); - ssl_client->setBufferSizes(16384, 1024); - ssl_client->setTimeout(5); + ssl_client->setBufferSizes(HttpClient::TLS_RX_BUFFER_SIZE, HttpClient::TLS_TX_BUFFER_SIZE); + ssl_client->setTimeout(HttpClient::TLS_READ_TIMEOUT_S); // enableSSL is baked in at setClient() — true only for implicit SSL (port 465) ssl_client->setClient(basic_client, implicit_ssl); if (start_tls) { @@ -3093,8 +3094,7 @@ void System::ntp_connected(bool b) { // get NTP status bool System::ntp_connected() { - // timeout 2 hours, ntp sync is normally every hour. - if ((uuid::get_uptime_sec() - ntp_last_check_ > 7201) && ntp_connected_) { + if ((uuid::get_uptime_sec() - ntp_last_check_ > NTP_TIMEOUT_SEC) && ntp_connected_) { ntp_connected(false); } @@ -3200,19 +3200,13 @@ bool System::uploadFirmwareURL(const char * url) { if (is_https) { ssl_client.setInsecure(); // no CA validation, matches the rest of the project - // BearSSL needs a receive buffer large enough to hold one full TLS record. - // GitHub's release-assets CDN sends standard up-to-16 KB records and does NOT - // negotiate max_fragment_length, so a small (e.g. 1 KB) RX buffer makes the - // body unreadable (headers still fit one small record, hence Content-Length - // looks fine, but the first body record cannot be decoded). 16384 + overhead - // is the safe value the library itself uses by default; we go a bit smaller - // to be friendlier to 4 MB / no-PSRAM boards while still big enough for any - // record the CDN actually sends in practice. - ssl_client.setBufferSizes(16384, 1024); - ssl_client.setSessionTimeout(120); + // a small (e.g. 1 KB) RX buffer makes the body unreadable: the headers still fit one small + // record, hence Content-Length looks fine, but the first body record cannot be decoded + ssl_client.setBufferSizes(HttpClient::TLS_RX_BUFFER_SIZE, HttpClient::TLS_TX_BUFFER_SIZE); + ssl_client.setSessionTimeout(HttpClient::TLS_SESSION_TIMEOUT_S); } - basic_client.setTimeout(15000); // socket-level read timeout - ssl_client.setTimeout(15); // Stream::readBytes timeout used by Update + basic_client.setTimeout(FIRMWARE_UPLOAD_READ_TIMEOUT_S * 1000); // socket-level read timeout, in ms + ssl_client.setTimeout(FIRMWARE_UPLOAD_READ_TIMEOUT_S); // Stream::readBytes timeout used by Update ssl_client.setClient(&basic_client, is_https); // enableSSL = false for plain HTTP const uint16_t port = is_https ? 443 : 80; @@ -3248,9 +3242,9 @@ bool System::uploadFirmwareURL(const char * url) { ssl_client.println("Connection: close"); ssl_client.print("\r\n"); - // wait for the first byte (up to 8s, matching the previous HTTP timeout) + // wait for the first byte (matching the previous HTTP timeout) uint32_t ms = millis(); - while (ssl_client.connected() && !ssl_client.available() && millis() - ms < 8000) { + while (ssl_client.connected() && !ssl_client.available() && millis() - ms < FIRMWARE_UPLOAD_RESPONSE_TIMEOUT) { delay(1); } @@ -3326,7 +3320,7 @@ bool System::uploadFirmwareURL(const char * url) { // wait for the first byte of the body so the read loop sees real data // (headers and body may arrive in separate TLS records) uint32_t body_wait = millis(); - while (ssl_client.connected() && !ssl_client.available() && millis() - body_wait < 8000) { + while (ssl_client.connected() && !ssl_client.available() && millis() - body_wait < FIRMWARE_UPLOAD_RESPONSE_TIMEOUT) { delay(1); } if (!ssl_client.available()) { @@ -3341,7 +3335,7 @@ bool System::uploadFirmwareURL(const char * url) { } // check we have a valid size - if (firmware_size < 1677721) { // 1.6MB or greater is required + if (firmware_size < (int)MIN_FIRMWARE_SIZE) { LOG_ERROR("Firmware upload failed - invalid size"); return false; // error } @@ -3360,9 +3354,7 @@ bool System::uploadFirmwareURL(const char * url) { EMSESP::system_.systemStatus(SYSTEM_STATUS::SYSTEM_STATUS_UPLOADING); // explicit chunked read loop instead of Update.writeStream(): - constexpr size_t CHUNK_SIZE = 1024; - constexpr uint32_t READ_TIMEOUT_MS = 30000; // overall stall timeout per chunk - uint8_t buf[CHUNK_SIZE]; + uint8_t buf[FIRMWARE_UPLOAD_CHUNK_SIZE]; size_t total_read = 0; bool magic_ok = false; int last_pct = -1; @@ -3386,7 +3378,7 @@ bool System::uploadFirmwareURL(const char * url) { if (!ssl_client.connected()) { break; } - if (millis() - wait_start > READ_TIMEOUT_MS) { + if (millis() - wait_start > FIRMWARE_UPLOAD_STALL_TIMEOUT) { break; } // also bail out promptly if a cancel arrives mid-stall @@ -3407,8 +3399,8 @@ bool System::uploadFirmwareURL(const char * url) { } size_t want = (size_t)firmware_size - total_read; - if (want > CHUNK_SIZE) { - want = CHUNK_SIZE; + if (want > FIRMWARE_UPLOAD_CHUNK_SIZE) { + want = FIRMWARE_UPLOAD_CHUNK_SIZE; } size_t n = stream->readBytes(buf, want); diff --git a/src/core/system.h b/src/core/system.h index 64f2d1254..056275afc 100644 --- a/src/core/system.h +++ b/src/core/system.h @@ -370,6 +370,9 @@ class System { static constexpr uint8_t HEALTHCHECK_NO_NETWORK = (1 << 1); // 2 static constexpr uint8_t HEALTHCHECK_RESET = (1 << 7); // 128 + // smallest .bin accepted as a firmware image, for both URL and web uploads - 1.6 MB + static constexpr size_t MIN_FIRMWARE_SIZE = 1677721; + private: static uuid::log::Logger logger_; @@ -402,6 +405,18 @@ class System { static constexpr uint32_t SYSTEM_CHECK_FREQUENCY = 5000; // do a system check every 5 seconds #endif + // NTP syncs about every hour, so allow one missed sync before treating it as lost (in seconds) - 2 hours + static constexpr uint32_t NTP_TIMEOUT_SEC = 7201; + + // email + static constexpr uint32_t SMTP_TIMEOUT_MS = 5000; // socket read timeout (in ms) - 5 seconds + + // firmware upload from URL + static constexpr uint32_t FIRMWARE_UPLOAD_RESPONSE_TIMEOUT = 8000; // max wait for the first byte of the response headers/body (in ms) - 8 seconds + static constexpr uint32_t FIRMWARE_UPLOAD_READ_TIMEOUT_S = 15; // socket and Stream::readBytes timeout used by Update (in seconds) + static constexpr uint32_t FIRMWARE_UPLOAD_STALL_TIMEOUT = 30000; // abort if no data arrives for a chunk (in ms) - 30 seconds + static constexpr size_t FIRMWARE_UPLOAD_CHUNK_SIZE = 1024; // read buffer, on the stack + #ifndef EMSESP_STANDALONE static uuid::syslog::SyslogService syslog_; #endif diff --git a/src/core/telegram.cpp b/src/core/telegram.cpp index 73294d8c9..23dfc0efe 100644 --- a/src/core/telegram.cpp +++ b/src/core/telegram.cpp @@ -286,7 +286,7 @@ void TxService::send_poll() const { uint8_t TxService::get_send_id() { static uint32_t count = 0; if (!tx_telegrams_.empty() && tx_telegrams_.front().telegram_->src != ems_bus_id()) { - if (++count > 500) { // after 500 polls (~3-10 sec) there will be no master poll for this id + if (++count > MAX_POLLS_WITHOUT_MASTER) { tx_telegrams_.pop_front(); count = 0; return tx_telegrams_.empty() ? ems_bus_id() : tx_telegrams_.front().telegram_->src; diff --git a/src/core/telegram.h b/src/core/telegram.h index db8595fc0..7ebe90f07 100644 --- a/src/core/telegram.h +++ b/src/core/telegram.h @@ -440,6 +440,9 @@ class TxService : public EMSbus { static constexpr uint8_t MAXIMUM_TX_RETRIES = 3; static constexpr uint32_t POST_SEND_DELAY = 2000; + // drop a queued Tx telegram sent from another id if the master hasn't polled that id after this many polls (~3-10 seconds) + static constexpr uint32_t MAX_POLLS_WITHOUT_MASTER = 500; + private: std::deque> tx_telegrams_; // the Tx queue diff --git a/src/web/WebLogService.cpp b/src/web/WebLogService.cpp index 7b2cce9c0..007ce3c70 100644 --- a/src/web/WebLogService.cpp +++ b/src/web/WebLogService.cpp @@ -76,9 +76,9 @@ void WebLogService::operator<<(std::shared_ptr message) { limit_log_messages_ = maximum_log_messages_; } else { uint32_t maxAlloc = ESP.getMaxAllocHeap(); - if (limit_log_messages_ > 5 && maxAlloc < (50 * 1024)) { // 50k + if (limit_log_messages_ > 5 && maxAlloc < LOG_HEAP_LOW) { --limit_log_messages_; - } else if (limit_log_messages_ < maximum_log_messages_ && maxAlloc > (60 * 1024)) { // 60k + } else if (limit_log_messages_ < maximum_log_messages_ && maxAlloc > LOG_HEAP_HIGH) { ++limit_log_messages_; } } diff --git a/src/web/WebLogService.h b/src/web/WebLogService.h index 330a3ed0a..42fa884f1 100644 --- a/src/web/WebLogService.h +++ b/src/web/WebLogService.h @@ -43,6 +43,11 @@ class WebLogService : public uuid::log::Handler { virtual void operator<<(std::shared_ptr message); private: + // on boards without PSRAM, shrink the log buffer below LOW and grow it again above HIGH (max alloc heap, in bytes). + // The gap between them stops the limit flapping around a single threshold + static constexpr uint32_t LOG_HEAP_LOW = 50 * 1024; // 50 KB + static constexpr uint32_t LOG_HEAP_HIGH = 60 * 1024; // 60 KB + AsyncEventSource events_; class QueuedLogMessage { -- 2.54.0 From eddc443d72e8d8c94674e629f12745fb08af4da1 Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 24 Sep 2026 11:29:14 +0200 Subject: [PATCH 004/148] replacement for rgbLedWrite() to support new v6 of the WS2812B driver --- lib_standalone/Arduino.cpp | 2 - lib_standalone/Arduino.h | 2 - src/core/analogsensor.cpp | 10 ++-- src/core/led.cpp | 111 ++++++++++++++++++++++++++++++++++++- src/core/led.h | 24 ++++++++ src/emsesp_version.h | 2 +- 6 files changed, 140 insertions(+), 11 deletions(-) diff --git a/lib_standalone/Arduino.cpp b/lib_standalone/Arduino.cpp index 3932cce76..1faf07175 100644 --- a/lib_standalone/Arduino.cpp +++ b/lib_standalone/Arduino.cpp @@ -148,7 +148,5 @@ double ledcSetup(uint8_t chan, double freq, uint8_t bit_num) { void ledcAttachPin(uint8_t pin, uint8_t chan) {}; void ledcAttach(uint8_t pin, uint8_t chan, uint8_t bit_num) {}; void ledcWrite(uint8_t chan, uint32_t duty) {}; -void neopixelWrite(uint8_t pin, uint8_t red_val, uint8_t green_val, uint8_t blue_val) {}; -void rgbLedWrite(uint8_t pin, uint8_t red_val, uint8_t green_val, uint8_t blue_val) {}; #endif \ No newline at end of file diff --git a/lib_standalone/Arduino.h b/lib_standalone/Arduino.h index e1f19c0fe..e01080ee8 100644 --- a/lib_standalone/Arduino.h +++ b/lib_standalone/Arduino.h @@ -83,8 +83,6 @@ double ledcSetup(uint8_t chan, double freq, uint8_t bit_num); void ledcAttachPin(uint8_t pin, uint8_t chan); void ledcAttach(uint8_t pin, uint8_t chan, uint8_t bit_num); void ledcWrite(uint8_t chan, uint32_t duty); -void neopixelWrite(uint8_t pin, uint8_t red_val, uint8_t green_val, uint8_t blue_val); -void rgbLedWrite(uint8_t pin, uint8_t red_val, uint8_t green_val, uint8_t blue_val); inline int rtc_get_reset_reason(int cpu_no) { return 0; diff --git a/src/core/analogsensor.cpp b/src/core/analogsensor.cpp index ce7537140..c38286615 100644 --- a/src/core/analogsensor.cpp +++ b/src/core/analogsensor.cpp @@ -307,7 +307,7 @@ void AnalogSensor::reload(bool get_nvs) { uint8_t r = v / 10000; uint8_t g = (v - r * 10000) / 100; uint8_t b = v % 100; - rgbLedWrite(sensor.gpio(), 2 * r, 2 * g, 2 * b); + rgb_led::write(sensor.gpio(), 2 * r, 2 * g, 2 * b); LOG_DEBUG("RGB set to %d, %d, %d", r, g, b); } else if (sensor.type() == AnalogType::DIGITAL_OUT) { LOG_DEBUG("Digital Write on GPIO %02d", sensor.gpio()); @@ -405,8 +405,8 @@ void AnalogSensor::measure() { sensor.sum_ = (sensor.sum_ * 15 + a * 16) / 16; sensor.analog_ = sensor.sum_ / 16; } - if (sensor.analog_ > 0 && sensor.analog_ < 3300 && (sensor.last_reading_ + 1 < sensor.analog_ || sensor.last_reading_ > sensor.analog_ + 1)) { - sensor.set_value(sensor.offset() + 1 / (1 / T25 + log((double)sensor.analog_ / (3300 - sensor.analog_) * (Rt / R0)) / Beta) + if (sensor.analog_ > 0 && sensor.analog_ < NTC_VREF_MV && (sensor.last_reading_ + 1 < sensor.analog_ || sensor.last_reading_ > sensor.analog_ + 1)) { + sensor.set_value(sensor.offset() + 1 / (1 / T25 + log((double)sensor.analog_ / (NTC_VREF_MV - sensor.analog_) * (Rt / R0)) / Beta) - T0); // Temperature in Celsius sensor.last_reading_ = sensor.analog_; sensorreads_++; @@ -424,7 +424,7 @@ void AnalogSensor::measure() { edgecnt[index] = 0; portEXIT_CRITICAL_ISR(&mux); sensor.set_value(sensor.factor() * 1000000.0 / t); - } else if (micros() - edge[index] > 10000000ul && sensor.value() > 0) { + } else if (micros() - edge[index] > FREQ_ZERO_TIMEOUT_US && sensor.value() > 0) { sensor.set_value(0); } if (sensor.value() != oldval) { @@ -999,7 +999,7 @@ bool AnalogSensor::command_setvalue(const char * value, const int8_t gpio) { uint8_t r = v / 10000; uint8_t g = (v - r * 10000) / 100; uint8_t b = v % 100; - rgbLedWrite(sensor.gpio(), 2 * r, 2 * g, 2 * b); + rgb_led::write(sensor.gpio(), 2 * r, 2 * g, 2 * b); LOG_DEBUG("RGB set to %d, %d, %d", r, g, b); } else if (sensor.type() == AnalogType::PULSE) { uint8_t v = val; diff --git a/src/core/led.cpp b/src/core/led.cpp index 958ac9ac3..f6c708e8c 100644 --- a/src/core/led.cpp +++ b/src/core/led.cpp @@ -19,8 +19,117 @@ #include "led.h" #include "emsesp.h" +#ifndef EMSESP_STANDALONE +#include +#endif + namespace emsesp { +namespace rgb_led { + +#ifndef EMSESP_STANDALONE + +namespace { + +// durations in 100 ns ticks +constexpr uint16_t T0H = 3; // 300 ns +constexpr uint16_t T0L = 9; // 900 ns +constexpr uint16_t T1H = 8; // 800 ns +constexpr uint16_t T1L = 6; // 600 ns + +constexpr uint32_t RMT_FREQ_HZ = 10000000; // 10 MHz +constexpr uint32_t RESET_US = 300; +constexpr uint8_t NO_PIN = 0xFF; +constexpr uint8_t MAX_PINS = 2; // status LED + an RGB analog sensor; the ESP32-C3 only has 2 RMT TX channels + +struct Channel { + uint8_t pin = NO_PIN; + uint32_t last_tx_us = 0; +}; + +Channel channels[MAX_PINS]; + +Channel * init(uint8_t pin) { + Channel * free_slot = nullptr; + for (auto & ch : channels) { + if (ch.pin == pin) { + return &ch; + } + if (!free_slot && ch.pin == NO_PIN) { + free_slot = &ch; + } + } + + if (!free_slot) { + // all slots in use: release the oldest one + free_slot = &channels[0]; + end(free_slot->pin); + } + + if (!rmtInit(pin, RMT_TX_MODE, RMT_MEM_NUM_BLOCKS_1, RMT_FREQ_HZ)) { + return nullptr; + } + free_slot->pin = pin; + free_slot->last_tx_us = micros() - RESET_US; // no wait on first write + return free_slot; +} + +} // namespace + +bool write(uint8_t pin, uint8_t red, uint8_t green, uint8_t blue, Order order) { + Channel * ch = init(pin); + if (!ch) { + return false; + } + + // enforce the latch/reset gap since the previous frame (V6 needs > 280 us) + const uint32_t elapsed = micros() - ch->last_tx_us; + if (elapsed < RESET_US) { + delayMicroseconds(RESET_US - elapsed); + } + + const uint8_t bytes[3] = {order == Order::GRB ? green : red, order == Order::GRB ? red : green, blue}; + + rmt_data_t frame[24]; + for (uint8_t i = 0; i < 24; i++) { + const bool one = bytes[i >> 3] & (0x80 >> (i & 7)); + frame[i].level0 = 1; + frame[i].duration0 = one ? T1H : T0H; + frame[i].level1 = 0; + frame[i].duration1 = one ? T1L : T0L; + } + + const bool ok = rmtWrite(pin, frame, 24, RMT_WAIT_FOR_EVER); + ch->last_tx_us = micros(); + return ok; +} + +void end(uint8_t pin) { + for (auto & ch : channels) { + if (ch.pin == pin && pin != NO_PIN) { + rmtDeinit(pin); + ch.pin = NO_PIN; + } + } +} + +#else + +bool write(uint8_t, uint8_t, uint8_t, uint8_t, Order) { + return true; +} + +void end(uint8_t) { +} + +#endif + +bool off(uint8_t pin) { + return write(pin, 0, 0, 0); +} + +} // namespace rgb_led + uuid::log::Logger LED::logger_{F_(led), uuid::log::Facility::KERN}; // initialise the LED, fetching the settings from the WebSettingsService @@ -189,7 +298,7 @@ void LED::set_led(Color color) { const uint8_t blue = rgb_table[idx][2]; if (led_type_) { - rgbLedWrite(led_gpio_, red, green, blue); + rgb_led::write(led_gpio_, red, green, blue); } else { digitalWrite(led_gpio_, (red == 0 && green == 0 && blue == 0) || color == Color::OFF ? !LED_ON : LED_ON); } diff --git a/src/core/led.h b/src/core/led.h index 3c4502d26..f12f8bba2 100644 --- a/src/core/led.h +++ b/src/core/led.h @@ -24,6 +24,30 @@ namespace emsesp { +// WS2812B driver replacing arduino-esp32's rgbLedWrite()/neopixelWrite(), which hard-code +// T0H = 400 ns, T1L = 400 ns and have no reset gap. The WS2812B-2020-V6 needs T0H 220-380 ns, +// T1L 580-1000 ns and a reset > 280 us, otherwise it misreads 0-bits as 1-bits (washed-out white). +// Timings used (10 MHz RMT clock, 1 tick = 100 ns) fit both the original WS2812B and the V6: +// +// sent old WS2812B WS2812B-2020-V6 +// T0H 300 ns 250-550 ns 220-380 ns +// T0L 900 ns 700-1000 ns 580-1000 ns +// T1H 800 ns 650-950 ns 580-1000 ns +// T1L 600 ns 300-600 ns 580-1000 ns +// Reset >300 us >50 us >280 us +// +// Do not mix with rgbLedWrite()/neopixelWrite() on the same pin, as both claim the pin's RMT channel. +namespace rgb_led { + +enum class Order : uint8_t { GRB, RGB }; // WS2812B is GRB + +// Blocks ~30 us for the transmit, plus up to the reset gap if called again right after the previous update +bool write(uint8_t pin, uint8_t red, uint8_t green, uint8_t blue, Order order = Order::GRB); +bool off(uint8_t pin); +void end(uint8_t pin); // release the pin's RMT channel, e.g. before reusing the pin for something else + +} // namespace rgb_led + class LED { public: enum Color : uint8_t { diff --git a/src/emsesp_version.h b/src/emsesp_version.h index 7d790a329..dd02903f5 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.9.0-dev.13" +#define EMSESP_APP_VERSION "3.9.0-dev.14" -- 2.54.0 From 100edcefe2f7220ed193bcbf9a510aeedaf58d77 Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 24 Sep 2026 17:21:41 +0200 Subject: [PATCH 005/148] optimize LED and fix some edge cases --- src/core/led.cpp | 133 +++++++++++++++----------------------- src/core/led.h | 32 ++++----- src/core/system.cpp | 25 ++++--- test/test_api/api_test.sh | 95 ++++++++++++++++++--------- 4 files changed, 150 insertions(+), 135 deletions(-) diff --git a/src/core/led.cpp b/src/core/led.cpp index f6c708e8c..e05756215 100644 --- a/src/core/led.cpp +++ b/src/core/led.cpp @@ -37,6 +37,10 @@ constexpr uint16_t T0L = 9; // 900 ns constexpr uint16_t T1H = 8; // 800 ns constexpr uint16_t T1L = 6; // 600 ns +// rmt_data_t.val layout: duration0:15, level0:1, duration1:15, level1:1 (high then low) +constexpr uint32_t SYMBOL_0 = T0H | (1UL << 15) | (static_cast(T0L) << 16); +constexpr uint32_t SYMBOL_1 = T1H | (1UL << 15) | (static_cast(T1L) << 16); + constexpr uint32_t RMT_FREQ_HZ = 10000000; // 10 MHz constexpr uint32_t RESET_US = 300; constexpr uint8_t NO_PIN = 0xFF; @@ -61,8 +65,14 @@ Channel * init(uint8_t pin) { } if (!free_slot) { - // all slots in use: release the oldest one - free_slot = &channels[0]; + // all slots in use: release the least recently written one + const uint32_t now = micros(); + free_slot = &channels[0]; + for (auto & ch : channels) { + if (now - ch.last_tx_us > now - free_slot->last_tx_us) { + free_slot = &ch; + } + } end(free_slot->pin); } @@ -92,11 +102,7 @@ bool write(uint8_t pin, uint8_t red, uint8_t green, uint8_t blue, Order order) { rmt_data_t frame[24]; for (uint8_t i = 0; i < 24; i++) { - const bool one = bytes[i >> 3] & (0x80 >> (i & 7)); - frame[i].level0 = 1; - frame[i].duration0 = one ? T1H : T0H; - frame[i].level1 = 0; - frame[i].duration1 = one ? T1L : T0L; + frame[i].val = (bytes[i >> 3] & (0x80 >> (i & 7))) ? SYMBOL_1 : SYMBOL_0; } const bool ok = rmtWrite(pin, frame, 24, RMT_WAIT_FOR_EVER); @@ -124,10 +130,6 @@ void end(uint8_t) { #endif -bool off(uint8_t pin) { - return write(pin, 0, 0, 0); -} - } // namespace rgb_led uuid::log::Logger LED::logger_{F_(led), uuid::log::Facility::KERN}; @@ -135,12 +137,21 @@ uuid::log::Logger LED::logger_{F_(led), uuid::log::Facility::KERN}; // initialise the LED, fetching the settings from the WebSettingsService // set the LED to on or off when in normal operating mode void LED::init() { + // settings may have changed: turn off and release the previous pin + if (led_gpio_) { + set_led(Color::OFF); + if (led_type_) { + rgb_led::end(led_gpio_); + } + } + // copy the application settings EMSESP::webSettingsService.read([&](WebSettings & settings) { led_gpio_ = settings.led_gpio; led_type_ = settings.led_type; hide_led_ = settings.hide_led; }); + last_color_ = COLOR_UNSET; if (!led_gpio_) { // 0 means disabled LOG_INFO("LED disabled"); @@ -183,10 +194,6 @@ bool LED::loop(uint8_t healthcheck, bool button_busy) { // check the system health. // Set the sequence accordingly, only if the healthcheck is not 0 and has changed if (healthcheck != previous_healthcheck_) { - color_steps_[0] = Color::OFF; - color_steps_[1] = Color::OFF; - color_steps_[2] = Color::OFF; - // if the healthcheck is 0, i.e. system is healthy, reset the LED if (healthcheck == 0) { reset_led(); @@ -194,25 +201,12 @@ bool LED::loop(uint8_t healthcheck, bool button_busy) { // 1 flash (blue) is the EMS bus is not connected // 2 flashes (red, red) if the network (wifi or ethernet) is not connected // 3 flashes (red, red, blue) is both the bus and the network are not connected - bool no_network = (healthcheck & System::HEALTHCHECK_NO_NETWORK) == System::HEALTHCHECK_NO_NETWORK; - bool no_bus = (healthcheck & System::HEALTHCHECK_NO_BUS) == System::HEALTHCHECK_NO_BUS; + const bool no_network = (healthcheck & System::HEALTHCHECK_NO_NETWORK) == System::HEALTHCHECK_NO_NETWORK; + const bool no_bus = (healthcheck & System::HEALTHCHECK_NO_BUS) == System::HEALTHCHECK_NO_BUS; - // set step 1 - if (no_network) { - color_steps_[0] = Color::RED; // red, no network - } else if (no_bus) { - color_steps_[0] = Color::BLUE; // blue, no bus - } - - // set step 2 - if (no_network) { - color_steps_[1] = Color::RED; // red, no network - } - - // set step 3 - if (no_network && no_bus) { - color_steps_[2] = Color::BLUE; // blue, no network and no bus - } + color_steps_[0] = no_network ? Color::RED : (no_bus ? Color::BLUE : Color::OFF); + color_steps_[1] = no_network ? Color::RED : Color::OFF; + color_steps_[2] = (no_network && no_bus) ? Color::BLUE : Color::OFF; } previous_healthcheck_ = healthcheck; // must be set after reset_led(), which invalidates it @@ -235,9 +229,7 @@ bool LED::loop(uint8_t healthcheck, bool button_busy) { void LED::reset_led() { is_user_led_blink_ = false; set_led(hide_led_ ? Color::OFF : Color::GREEN); // Green - color_steps_[0] = Color::OFF; - color_steps_[1] = Color::OFF; - color_steps_[2] = Color::OFF; + color_steps_[0] = color_steps_[1] = color_steps_[2] = Color::OFF; // invalidate the last health state so the sequence is rebuilt on the next check, // needed because the color steps above have been cleared @@ -272,9 +264,10 @@ void LED::led_fast_flash() { // set LED on/off or RGB color // ignores whether the LED is hidden or not (if hide_led_ is set) void LED::set_led(Color color) { - if (!led_gpio_) { + if (!led_gpio_ || color == last_color_) { return; } + last_color_ = color; // RGB lookup table indexed by Color enum (must match enum order in led.h) static constexpr uint8_t B = RGB_LED_BRIGHTNESS; @@ -290,28 +283,26 @@ void LED::set_led(Color color) { {0, B, B}, // CYAN {H, 0, H} // PINK }; + static_assert(sizeof(rgb_table) / sizeof(rgb_table[0]) == Color::PINK + 1, "rgb_table must match the Color enum"); - const uint8_t color_idx = static_cast(color); - const uint8_t idx = (color_idx < sizeof(rgb_table) / sizeof(rgb_table[0])) ? color_idx : static_cast(Color::OFF); - const uint8_t red = rgb_table[idx][0]; - const uint8_t green = rgb_table[idx][1]; - const uint8_t blue = rgb_table[idx][2]; + const uint8_t * rgb = rgb_table[color]; if (led_type_) { - rgb_led::write(led_gpio_, red, green, blue); + rgb_led::write(led_gpio_, rgb[0], rgb[1], rgb[2]); } else { - digitalWrite(led_gpio_, (red == 0 && green == 0 && blue == 0) || color == Color::OFF ? !LED_ON : LED_ON); + digitalWrite(led_gpio_, color == Color::OFF ? !LED_ON : LED_ON); } } // set LED custom routine // For example: /api/system/led?data=red:blink1 // For older non-RGB models, the colour would default to just being on. -bool LED::set_custom_led_routine(std::string color, std::string pattern) { +bool LED::set_custom_led_routine(const std::string & color, const std::string & pattern) { static constexpr struct { const char * name; Color value; } color_map[] = { + {"", Color::OFF}, {"off", Color::OFF}, {"on", Color::ON}, {"white", Color::ON}, @@ -337,35 +328,33 @@ bool LED::set_custom_led_routine(std::string color, std::string pattern) { return false; } - // reset the color steps - color_steps_[0] = Color::OFF; - color_steps_[1] = Color::OFF; - color_steps_[2] = Color::OFF; + // build the steps locally so an unrecognized pattern leaves the current sequence untouched + Color steps[3] = {Color::OFF, Color::OFF, Color::OFF}; // blink patterns if (pattern == "blink1") { - color_steps_[0] = color_type; + steps[0] = color_type; } else if (pattern == "blink2") { - color_steps_[0] = color_type; - color_steps_[1] = color_type; + steps[0] = steps[1] = color_type; } else if (pattern == "blink3") { - color_steps_[0] = color_type; - color_steps_[1] = color_type; - color_steps_[2] = color_type; + steps[0] = steps[1] = steps[2] = color_type; // special patterns, ignores the user color } else if (pattern == "rgb") { - color_steps_[0] = Color::RED; - color_steps_[1] = Color::GREEN; - color_steps_[2] = Color::BLUE; + steps[0] = Color::RED; + steps[1] = Color::GREEN; + steps[2] = Color::BLUE; } else if (pattern == "cpc") { - color_steps_[0] = Color::CYAN; - color_steps_[1] = Color::PINK; - color_steps_[2] = Color::CYAN; + steps[0] = Color::CYAN; + steps[1] = Color::PINK; + steps[2] = Color::CYAN; } else { return false; // pattern not recognized } + color_steps_[0] = steps[0]; + color_steps_[1] = steps[1]; + color_steps_[2] = steps[2]; is_user_led_blink_ = true; // user routine is active // when this is called we want the sequence_led to restart immediately and skip the long pause @@ -395,7 +384,7 @@ void LED::sequence_led() { if (++led_flash_step_ == 8) { // finished first iteration, reset the whole sequence, turn off LED - led_long_timer_ = uuid::get_uptime(); + led_long_timer_ = current_time; led_flash_step_ = 0; set_led(Color::OFF); // turn off the LED @@ -407,24 +396,8 @@ void LED::sequence_led() { return; } - if (led_flash_step_ % 2) { - // handle the three step events (on odd numbers 3,5,7 etc). see if we need to set a LED color - switch (led_flash_step_) { - case 3: // first flash - set_led(color_steps_[0]); - break; - case 5: // second flash - set_led(color_steps_[1]); - break; - case 7: // third flash - set_led(color_steps_[2]); - break; - default: - break; - } - } else { - set_led(Color::OFF); // turn off on even number count, to make it flash - } + // odd steps 3, 5 and 7 show the three configured colors, even steps turn the LED off to make it flash + set_led(led_flash_step_ % 2 ? color_steps_[(led_flash_step_ - 3) / 2] : Color::OFF); } } diff --git a/src/core/led.h b/src/core/led.h index f12f8bba2..ba9a2d6ed 100644 --- a/src/core/led.h +++ b/src/core/led.h @@ -43,7 +43,6 @@ enum class Order : uint8_t { GRB, RGB }; // WS2812B is GRB // Blocks ~30 us for the transmit, plus up to the reset gap if called again right after the previous update bool write(uint8_t pin, uint8_t red, uint8_t green, uint8_t blue, Order order = Order::GRB); -bool off(uint8_t pin); void end(uint8_t pin); // release the pin's RMT channel, e.g. before reusing the pin for something else } // namespace rgb_led @@ -66,7 +65,7 @@ class LED { bool loop(uint8_t healthcheck, bool button_busy); void start_led_fast_flash(uint8_t duration); // duration in seconds - bool set_custom_led_routine(std::string color, std::string pattern); + bool set_custom_led_routine(const std::string & color, const std::string & pattern); private: static uuid::log::Logger logger_; @@ -83,28 +82,31 @@ class LED { static constexpr uint32_t LED_FLASH_INTERVAL_MS = 100; // LED toggle period during factory-reset flash static constexpr uint8_t RGB_LED_BRIGHTNESS = 20; // 255 is max brightness static constexpr uint8_t LED_ON = HIGH; // LED on + static constexpr Color COLOR_UNSET = static_cast(0xFF); // forces the next set_led() to write + + // led_fast_flash() state + uint32_t led_flash_start_time_ = 0; + uint32_t led_flash_duration_ = 0; + uint32_t last_toggle_time_ = 0; + + // sequence_led() state + uint32_t led_long_timer_ = 1; // 1 will kick it off immediately + uint32_t led_short_timer_ = 0; // local copies of the application settings uint8_t led_gpio_ = 0; uint8_t led_type_ = 0; bool hide_led_ = false; - bool led_fast_flash_timer_ = false; - uint32_t led_flash_start_time_ = 0; - uint32_t led_flash_duration_ = 0; + bool led_fast_flash_timer_ = false; + bool led_flash_state_ = false; - // led_flash() state - bool led_flash_state_ = false; - uint32_t last_toggle_time_ = 0; + bool last_button_busy_ = false; + uint8_t led_flash_step_ = 0; // 0 means we're not in the short flash timer - // sequence_led() state - bool last_button_busy_ = false; - uint32_t led_long_timer_ = 1; // 1 will kick it off immediately - uint32_t led_short_timer_ = 0; - uint8_t led_flash_step_ = 0; // 0 means we're not in the short flash timer - - // set_led_routine() state + // set_custom_led_routine() and healthcheck state Color color_steps_[3] = {Color::OFF, Color::OFF, Color::OFF}; + Color last_color_ = COLOR_UNSET; // last color written, to skip redundant writes // if true, the user has requested a custom LED blink, this always has preference over the button or showing the system health bool is_user_led_blink_ = false; diff --git a/src/core/system.cpp b/src/core/system.cpp index a2860bfc3..0283bb220 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -2924,11 +2924,13 @@ bool System::load_board_profile(std::vector & data, const std::string & // https://github.com/emsesp/EMS-ESP32/issues/3063 // /api//system/led command that takes an argument in the form [color]:[pattern] // color is red, green, blue, yellow, white +// color is optional // pattern is // blink1 for 1 time // blink2 for 2 times // blink3 for 3 times // rgb for RGB +// cpc for CPC // For example: /api/system/led?data=red:blink1 // For older non-RGB models, the colour would default to just being on. bool System::command_led(const char * value, const int8_t) { @@ -2937,16 +2939,19 @@ bool System::command_led(const char * value, const int8_t) { } std::string arg = value; - if (arg.find(':') == std::string::npos) { - LOG_ERROR("LED command must be in the form [color]:[pattern]"); - return false; // not in the form [color]:[pattern] + std::string color; + std::string pattern; + auto sep = arg.find(':'); + if (sep == std::string::npos) { + pattern = arg; // no color given, only a pattern + } else { + color = arg.substr(0, sep); + pattern = arg.substr(sep + 1); } - std::string color = arg.substr(0, arg.find(':')); - std::string pattern = arg.substr(arg.find(':') + 1); // set and validate the color and pattern if (!EMSESP::led_.set_custom_led_routine(color, pattern)) { - LOG_ERROR("Invalid color or pattern."); + LOG_ERROR("Invalid color or pattern"); return false; } @@ -3207,7 +3212,7 @@ bool System::uploadFirmwareURL(const char * url) { } basic_client.setTimeout(FIRMWARE_UPLOAD_READ_TIMEOUT_S * 1000); // socket-level read timeout, in ms ssl_client.setTimeout(FIRMWARE_UPLOAD_READ_TIMEOUT_S); // Stream::readBytes timeout used by Update - ssl_client.setClient(&basic_client, is_https); // enableSSL = false for plain HTTP + ssl_client.setClient(&basic_client, is_https); // enableSSL = false for plain HTTP const uint16_t port = is_https ? 443 : 80; String url_remain = saved_url.substring(scheme_len); @@ -3355,9 +3360,9 @@ bool System::uploadFirmwareURL(const char * url) { // explicit chunked read loop instead of Update.writeStream(): uint8_t buf[FIRMWARE_UPLOAD_CHUNK_SIZE]; - size_t total_read = 0; - bool magic_ok = false; - int last_pct = -1; + size_t total_read = 0; + bool magic_ok = false; + int last_pct = -1; while (total_read < (size_t)firmware_size) { // a cancel is signalled by the WebUI dropping the status below UPLOADING (back to NORMAL) diff --git a/test/test_api/api_test.sh b/test/test_api/api_test.sh index 839de5b04..4040f78cc 100755 --- a/test/test_api/api_test.sh +++ b/test/test_api/api_test.sh @@ -1,53 +1,88 @@ -#!/bin/sh - +#!/usr/bin/env bash # # Command line test for the API # -emsesp_url="http://ems-esp.local" +emsesp_url="http://ems-espT.local" # get the token from the Security page. This is the token for the admin user, unless changed it'll always be the same emsesp_token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiYWRtaW4iOnRydWV9.2bHpWya2C7Q12WjNUBD6_7N3RCD7CMl-EGhyQVzFdDg" # This example will get the system info, via a GET request -curl -X GET ${emsesp_url}/api/system/info -echo "\n" +test0() { + curl -X GET ${emsesp_url}/api/system/info +} # This example will execute a read command on product ID 8 and type ID 1 -curl -X POST \ - -H "Authorization: Bearer ${emsesp_token}" \ - -H "Content-Type: application/json" \ - -d '{"data":"8 1"}' \ - ${emsesp_url}/api/system/read - -echo "\n" +test1() { + curl -X POST \ + -H "Authorization: Bearer ${emsesp_token}" \ + -H "Content-Type: application/json" \ + -d '{"data":"8 1"}' \ + ${emsesp_url}/api/system/read +} # This example will use the message command to get the locale (en) -curl -X POST \ - -H "Authorization: Bearer ${emsesp_token}" \ - -H "Content-Type: application/json" \ - -d '{"value":"system/settings/locale"}' \ - ${emsesp_url}/api/system/message - -echo "\n" +test2() { + curl -X POST \ + -H "Authorization: Bearer ${emsesp_token}" \ + -H "Content-Type: application/json" \ + -d '{"value":"system/settings/locale"}' \ + ${emsesp_url}/api/system/message +} # This example will export all values to a json file, including custom entities, sensors and schedules -curl -X POST \ - -H "Authorization: Bearer ${emsesp_token}" \ - -H "Content-Type: application/json" \ - -d '{"action":"export", "param":"allvalues"}' \ - ${emsesp_url}/rest/action - -echo "\n" +test3() { + curl -X POST \ + -H "Authorization: Bearer ${emsesp_token}" \ + -H "Content-Type: application/json" \ + -d '{"action":"export", "param":"allvalues"}' \ + ${emsesp_url}/rest/action +} # Get all versions -curl -X POST \ +test4() { + curl -X POST \ -H "Authorization: Bearer ${emsesp_token}" \ -H "Content-Type: application/json" \ - -d '{"action":"getVersions"}' \ - ${emsesp_url}/rest/action + -d '{"action":"getVersions"}' \ + ${emsesp_url}/rest/action +} + +# led tests +test5() { + curl -X POST \ + -H "Authorization: Bearer ${emsesp_token}" \ + -H "Content-Type: application/json" \ + -d '{"data":"red:blink1"}' \ + ${emsesp_url}/api/system/led +} + +test6() { + curl -X POST \ + -H "Authorization: Bearer ${emsesp_token}" \ + -H "Content-Type: application/json" \ + -d '{"data":"rgb"}' \ + ${emsesp_url}/api/system/led +} + +# Create a list of test function names to run +tests_to_run=( + # test0 + # test1 + # test2 + # test3 + # test4 + test5 + test6 +) + +for test_func in "${tests_to_run[@]}"; do + echo "Running $test_func..." + $test_func + echo "" +done -echo "\n" # This example is how to call a service in Home Assistant via the API # Which can be added to an EMS-EPS schedule -- 2.54.0 From 1d2b916935f7402a223ca666f0d99a8a50673cfe Mon Sep 17 00:00:00 2001 From: Bingo2023 Date: Thu, 24 Sep 2026 16:24:07 +0200 Subject: [PATCH 006/148] add heatpump pool on/off, pool active, MP100 shunt setpoint and pool pump Tested with a heatpump (0x08) and MP100 pool module (0x11), custom entities compared against RC300 operation and a power meter on the circulation pump. - boiler `poolon` (0x48A offset 0), writable, RC300 writes 01/00 - boiler `hppoolon` (0x488 offset 0 bit 6), pool heating actually active - pool `poolshuntset` (0x5C4 offset 0, heatpump -> MP100), shunt setpoint; `poolshunt` follows within ~2 min - pool `poolpump` (0x5BA offset 4), 0 = running, 2 = off. This byte is only in MP100 -> heatpump telegrams, so the pool module now also handles telegrams it sends to other devices - simulator: `test pool` Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_013YrkDbvxEv3ZMS7SPSKCGd --- CHANGELOG_LATEST.md | 1 + src/core/emsesp.cpp | 4 +++- src/core/locale_translations.h | 5 ++++- src/devices/boiler.cpp | 18 +++++++++++++++++- src/devices/boiler.h | 6 ++++-- src/devices/pool.cpp | 16 ++++++++++++++++ src/devices/pool.h | 3 +++ src/test/test.cpp | 17 +++++++++++++++++ 8 files changed, 65 insertions(+), 5 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 7f7a5762c..e6dc410ba 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -19,6 +19,7 @@ This release is based on the latest Espressif/Arduino core version 3. It brings - `show system` reports the Ethernet status on boards with a PHY, so a failed initialisation or a link that never came up is visible instead of Ethernet being omitted completely. Also shows the loop task's lowest free stack, to help diagnose reboots - new Application Setting "Automatically check for firmware updates", off by default. When enabled EMS-ESP asks emsesp.org for the latest version once a day on its own, otherwise it only asks when the WebUI wants to show it, so an unattended system never contacts emsesp.org - Automatically check and convert older 3.8.x filesystem to the new 3.9.0 format +- heatpump pool: `poolon` (switch, 0x48A), `hppoolon` (pool heating active, 0x488), MP100 `poolshuntset` (0x5C4) and `poolpump` (0x5BA) ## Fixed diff --git a/src/core/emsesp.cpp b/src/core/emsesp.cpp index e0d5eb3d5..4b0f797bd 100644 --- a/src/core/emsesp.cpp +++ b/src/core/emsesp.cpp @@ -1210,7 +1210,9 @@ bool EMSESP::process_telegram(const std::shared_ptr & telegram) // check all conditions in one loop for (const auto & emsdevice : emsdevices) { if ((emsdevice->is_device_id(telegram->src) && (telegram->dest == 0 || telegram->dest == EMSbus::ems_bus_id() || telegram->dest == 0x10)) - || (emsdevice->is_device_id(telegram->dest) && telegram->src != EMSbus::ems_bus_id())) { + || (emsdevice->is_device_id(telegram->dest) && telegram->src != EMSbus::ems_bus_id()) + // the MP100 sends its full status only to the heatpump + || (emsdevice->device_type() == EMSdevice::DeviceType::POOL && emsdevice->is_device_id(telegram->src))) { found_device = emsdevice.get(); if (emsdevice->handle_telegram(telegram)) { telegram_found = true; diff --git a/src/core/locale_translations.h b/src/core/locale_translations.h index e21435991..14a25bd0c 100644 --- a/src/core/locale_translations.h +++ b/src/core/locale_translations.h @@ -470,7 +470,7 @@ MAKE_TRANSLATION(coolingOn, "coolingon", "cooling on", "Kühlung an", "koelbedri // MAKE_TRANSLATION(hpHeatingOn, "hpheatingon", "hp heating", "WP Heizen", "WP verwarmingsbedrijf", "VP Uppvärmning", "pompa ciepła, ogrzewanie", "vp oppvarmning", "hp ısınıyor", "riscaldamento pompa calore", "vykurovanie hp", "topení hp") // MAKE_TRANSLATION(hpCoolingOn, "hpcoolingon", "hp cooling", "WP Kühlen", "WP koelbedrijf", "VP Kyla", "pompa ciepła, chłodzenie", "vp kjøling", "hp soğuyor", "raffreddamento pompa calore", "chladenie hp", "chlazení hp") // MAKE_TRANSLATION(hpWwOn, "hpdhwon", "hp", "WP", "WP", "VP Varmvatten", "pompa ciepła", "vp", "pompe à chaleur", "hp", "pompa calore", "hp", "hp") -// MAKE_TRANSLATION(hpPoolOn, "hppoolon", "hp pool", "WP Pool", "WP zwembadbedrijf", "VP Pool", "pompa ciepła, podgrzewanie basenu", "vp basseng", "tuzlu su pompası hızı", "pompa calore piscina", "hp bazén", "hp bazén") +MAKE_TRANSLATION(hpPoolOn, "hppoolon", "hp pool", "WP Pool", "WP zwembadbedrijf", "VP Pool", "pompa ciepła, podgrzewanie basenu", "vp basseng", "tuzlu su pompası hızı", "pompa calore piscina", "hp bazén", "hp bazén") MAKE_TRANSLATION(hpBrinePumpSpd, "hpbrinepumpspd", "brine pump speed", "Solepumpendrehzahl", "Snelheid pekelpomp", "Hastighet Brine-pump", "wysterowanie pompy glikolu", "hastighet brine-pumpe", "vitesse pompe à saumure", "ısı pompası hızı", "velocità pompa sbrinamento", "rýchlosť čerpadla soľanky", "rychlost čerpadla solanky") MAKE_TRANSLATION(hpCompSpd, "hpcompspd", "compressor speed", "Kompressordrehzahl", "Snelheid compressor", "Kompressorhastighet", "wysterowanie sprężarki", "kompressorhastighet", "vitesse du compresseur", "sirkülasyon pompası hızı", "velocità compressore", "rýchlosť kompresora", "rychlost kompresoru") MAKE_TRANSLATION(hpCircSpd, "hpcircspd", "circulation pump speed", "Zirkulationspumpendrehzahl", "Snelheid circulatiepomp", "Hastighet Cirkulationspump", "wysterowanie pompy obiegu grzewczego", "hastighet sirkulationspumpe", "vitesse pompe à circulation", "evaporatör tuzlu su giişi", "velocità pompa circolazione", "otáčky obehového čerpadla", "rychlost oběhového čerpadla") @@ -856,10 +856,13 @@ MAKE_TRANSLATION(mixerSetTime, "valvesettime", "time to set valve", "Zeit zum ei MAKE_TRANSLATION(setDiffPress, "setdiffpress", "set differential pressure", "Pumpensolldruck", "", "Tryckskillnad", "różnica ciśnień", "", "", "", "", "nastaviť diferenčný tlak", "nastavení rozdílového tlaku") // mixer pool +MAKE_TRANSLATION(poolOn, "poolon", "pool on", "Pool ein") MAKE_TRANSLATION(poolSetTemp, "poolsettemp", "pool set temperature", "Sollwert Pooltemperatur", "Streeftemperatuur zwembad", "Pool Temperatur Börvärde", "zadana temperatura basenu", "valgt temp basseng", "température consigne piscine", "hedef havuz sıcaklığı", "temperatura nominale piscina", "nastavená teplota bazéna", "cílová teplota bazénu") MAKE_TRANSLATION(poolTemp, "pooltemp", "pool temperature", "Pooltemperatur", "Zwembadtemperatuur", "Pooltemperatur", "temperatura basenu", "bassengtemperatur", "température piscine", "havuz sıcaklığı", "temperatura piscina", "teplota bazéna", "teplota bazénu") MAKE_TRANSLATION(poolShuntStatus, "poolshuntstatus", "pool shunt status opening/closing", "Poolventil öffnen/schließen", "Zwembadklep status openen/sluiten", "Pool Shunt-status öppen/stängd", "status bocznika basenu", "bassengshunt-status åpen/stengt", "état shunt piscine ouvert/fermé", "havuz şant durumu açılıyor/kapanıyor", "aprire/chiudere valvola regolazione piscina", "stav bazénového bočníka otváranie/zatváranie", "stav šoupátka bazénu (otevírání/zavírání)") MAKE_TRANSLATION(poolShunt, "poolshunt", "pool shunt open/close (0% = pool / 100% = heat)", "Poolventil Öffnung", "Mengklep zwembad stand", "Pool Shunt Öppen/Stängd", "bocznik basenu (0% = basen / 100% = grzanie)", "bassengshunt åpen/stengt (0% = basseng / 100% = varme)", "ouverture/fermeture shunt piscine (0% = piscine / 100% = chaleur).", "havuz şant açık/kapalı (0% = havuz / 100% = ısıtma)", "valvola regolazione piscina (0% = piscina / 100% = caldo)", "pohyb bazéna otvoriť/zatvoriť (0 % = bazén / 100 % = teplo)", "šoupátko bazénu (0% = bazén / 100% = vytápění)") +MAKE_TRANSLATION(poolShuntSet, "poolshuntset", "pool shunt setpoint (0% = pool / 100% = heat)", "Poolventil Sollstellung") +MAKE_TRANSLATION(poolPump, "poolpump", "pool circulation pump", "Pool Umwälzpumpe") MAKE_TRANSLATION(hydrTemp, "hydrTemp", "hydraulic header temperature", "Verteilertemperatur", "Temperatuur open verdeler", "Fördelartemperatur", "temperatura kolektora hydraulicznego", "Fordelertemperatur", "température collecteur hydraulique", "hidrolik başlık sıcaklığı", "temperatura del collettore", "teplota hydraulickej hlavice", "teplota hydraulické hlavice") // solar diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 3674fe671..5e45f8ffb 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -632,7 +632,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const // register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpHeatingOn_, DeviceValueType::BOOL, FL_(hpHeatingOn), DeviceValueUOM::NONE); // register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpCoolingOn_, DeviceValueType::BOOL, FL_(hpCoolingOn), DeviceValueUOM::NONE); // register_device_value(DeviceValueTAG::TAG_DHW1, &hpWwOn_, DeviceValueType::BOOL, FL_(hpWwOn), DeviceValueUOM::NONE); - // register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpPoolOn_, DeviceValueType::BOOL, FL_(hpPoolOn), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpPoolOn_, DeviceValueType::BOOL, FL_(hpPoolOn), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpBrinePumpSpd_, DeviceValueType::UINT8, FL_(hpBrinePumpSpd), DeviceValueUOM::PERCENT); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpSwitchValve_, DeviceValueType::BOOL, FL_(hpSwitchValve), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpCompSpd_, DeviceValueType::UINT8, FL_(hpCompSpd), DeviceValueUOM::PERCENT); @@ -666,6 +666,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpPh1_, DeviceValueType::INT16, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(hpPh1), DeviceValueUOM::DEGREES); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpTa4_, DeviceValueType::INT16, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(hpTa4), DeviceValueUOM::DEGREES); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpTw1_, DeviceValueType::INT16, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(hpTw1), DeviceValueUOM::DEGREES); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &poolOn_, DeviceValueType::BOOL, FL_(poolOn), DeviceValueUOM::NONE, MAKE_CF_CB(set_pool_on)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &poolSetTemp_, DeviceValueType::UINT8, @@ -1815,7 +1816,9 @@ void Boiler::process_HpTemperatures(const std::shared_ptr & tele // Heatpump pool unit - type 0x48A // 08 00 FF 00 03 8A 01 4C 01 0C 00 00 0A 00 1E 00 00 01 00 04 4A 00 +// RC300 switches the pool: 10 08 FF 00 03 8A 01 (on) / 00 (off) void Boiler::process_HpPool(const std::shared_ptr & telegram) { + has_update(telegram, poolOn_, 0); has_update(telegram, poolSetTemp_, 1); } @@ -2164,8 +2167,11 @@ void Boiler::process_HpSilentMode(const std::shared_ptr & telegr } // Boiler(0x08) -B-> All(0x00), ?(0x0488), data: 8E 00 00 00 00 00 01 03 +// byte 0 bit 6 is set while the heatpump is actually heating the pool +// (switches together with 0x5C4 and MP100 0x5BA offset 2) void Boiler::process_HpValve(const std::shared_ptr & telegram) { // has_bitupdate(telegram, auxHeaterStatus_, 0, 2); + has_bitupdate(telegram, hpPoolOn_, 0, 6); has_update(telegram, auxHeatMixValve_, 7); has_update(telegram, pc1Rate_, 13); // percent } @@ -3161,6 +3167,16 @@ bool Boiler::set_pool_temp(const char * value, const int8_t id) { return true; } +// Switch the pool on/off 0x48A, same as RC300 +bool Boiler::set_pool_on(const char * value, const int8_t id) { + bool v; + if (!Helpers::value2bool(value, v)) { + return false; + } + write_command(0x48A, 0, v ? 0x01 : 0x00, 0x48A); + return true; +} + bool Boiler::set_emergency_temp(const char * value, const int8_t id) { int v; if (!Helpers::value2temperature(value, v)) { diff --git a/src/devices/boiler.h b/src/devices/boiler.h index def09a99c..f30d19c74 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -213,7 +213,7 @@ class Boiler : public EMSdevice { // uint8_t hpHeatingOn_; // uint8_t hpCoolingOn_; // uint8_t hpWwOn_; - // uint8_t hpPoolOn_; + uint8_t hpPoolOn_; int16_t hpTc0_; int16_t hpTc1_; int16_t hpTc3_; @@ -253,7 +253,8 @@ class Boiler : public EMSdevice { uint8_t hpTargetSpd_; // Pool unit - int8_t poolSetTemp_; + uint8_t poolOn_; + int8_t poolSetTemp_; // Inputs struct { @@ -465,6 +466,7 @@ class Boiler : public EMSdevice { bool set_ww_hyst_on(const char * value, const int8_t id); bool set_ww_hyst_off(const char * value, const int8_t id); bool set_pool_temp(const char * value, const int8_t id); + bool set_pool_on(const char * value, const int8_t id); bool set_emergency_temp(const char * value, const int8_t id); bool set_emergency_ops(const char * value, const int8_t id); diff --git a/src/devices/pool.cpp b/src/devices/pool.cpp index ecc37d303..5d70f7ce1 100644 --- a/src/devices/pool.cpp +++ b/src/devices/pool.cpp @@ -28,6 +28,7 @@ Pool::Pool(uint8_t device_type, uint8_t device_id, uint8_t product_id, const cha : EMSdevice(device_type, device_id, product_id, version, name, flags, brand) { // Pool module register_telegram_type(0x5BA, "HpPoolStatus", true, MAKE_PF_CB(process_HpPoolStatus), 4); + register_telegram_type(0x5C4, "HpPoolShunt", false, MAKE_PF_CB(process_HpPoolShunt)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &poolTemp_, DeviceValueType::INT16, @@ -36,10 +37,19 @@ Pool::Pool(uint8_t device_type, uint8_t device_id, uint8_t product_id, const cha DeviceValueUOM::DEGREES); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &poolShuntStatus_, DeviceValueType::ENUM, FL_(enum_shunt), FL_(poolShuntStatus), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &poolShunt_, DeviceValueType::UINT8, FL_(poolShunt), DeviceValueUOM::PERCENT); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &poolShuntSet_, DeviceValueType::UINT8, FL_(poolShuntSet), DeviceValueUOM::PERCENT); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &poolPump_, DeviceValueType::BOOL, FL_(poolPump), DeviceValueUOM::NONE); } // Mixer MP100 for pools - 0x5BA +// MP100(0x11) -> Boiler(0x08): 11 08 FF 00 04 BA 01 45 02 00 02 +// offset 4 (pool circulation pump, 0 = running, 2 = off) is only in the telegram to the boiler, +// the answer to a read request is one byte shorter void Pool::process_HpPoolStatus(const std::shared_ptr & telegram) { + uint8_t pump = EMS_VALUE_UINT8_NOTSET; + if (telegram->read_value(pump, 4)) { + has_update(poolPump_, pump == 0 ? EMS_VALUE_BOOL_ON : EMS_VALUE_BOOL_OFF); + } has_update(telegram, poolTemp_, 0); has_update(telegram, poolShunt_, 3); // 0-100% how much is the shunt open? telegram->read_value(poolShuntStatus__, 2); @@ -47,4 +57,10 @@ void Pool::process_HpPoolStatus(const std::shared_ptr & telegram has_update(poolShuntStatus_, pss); } +// Boiler(0x08) -> MP100(0x11), 0x5C4: 08 11 FF 00 04 C4 64 +// shunt setpoint from the heatpump, 0% = pool / 100% = heat, poolshunt follows within ~2 min +void Pool::process_HpPoolShunt(const std::shared_ptr & telegram) { + has_update(telegram, poolShuntSet_, 0); +} + } // namespace emsesp diff --git a/src/devices/pool.h b/src/devices/pool.h index b2cf42699..5bbc4de7d 100644 --- a/src/devices/pool.h +++ b/src/devices/pool.h @@ -31,12 +31,15 @@ class Pool : public EMSdevice { static uuid::log::Logger logger_; void process_HpPoolStatus(const std::shared_ptr & telegram); + void process_HpPoolShunt(const std::shared_ptr & telegram); private: // MP100 pool int16_t poolTemp_; uint8_t poolShuntStatus_; uint8_t poolShunt_; + uint8_t poolShuntSet_; + uint8_t poolPump_; uint8_t poolShuntStatus__ = EMS_VALUE_UINT8_NOTSET; // temp value }; diff --git a/src/test/test.cpp b/src/test/test.cpp index 9e18264f0..fed31cf00 100644 --- a/src/test/test.cpp +++ b/src/test/test.cpp @@ -959,6 +959,23 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd, const ok = true; } + if (command == "pool") { + shell.printfln("Testing heatpump with MP100 pool module..."); + add_device(0x08, 172); // heatpump + add_device(0x11, 204); // MP100 + // RC300 switches pool on, 40.0 C + uart_telegram({0x10, 0x08, 0xFF, 0x00, 0x03, 0x8A, 0x01}); + uart_telegram({0x08, 0x00, 0xFF, 0x00, 0x03, 0x8A, 0x01, 0x50, 0x01, 0x0C, 0x00, 0x00, 0x0A, 0x00, 0x1E, 0x00, 0x00, 0x01, 0x00, 0x04}); + // HPValve, byte 0 bit 6 = pool heating active + uart_telegram({0x08, 0x00, 0xFF, 0x00, 0x03, 0x88, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00}); + // heatpump -> MP100 shunt setpoint 0% + uart_telegram({0x08, 0x11, 0xFF, 0x00, 0x04, 0xC4, 0x00}); + // MP100 -> heatpump: 32.5 C, shunt 45%, pump running + uart_telegram({0x11, 0x08, 0xFF, 0x00, 0x04, 0xBA, 0x01, 0x45, 0x02, 0x2D, 0x00}); + shell.invoke_command("show values"); + ok = true; + } + if (command == "healthcheck") { // n=1 = EMSESP::system_.HEALTHCHECK_NO_BUS // n=2 = EMSESP::system_.HEALTHCHECK_NO_NETWORK -- 2.54.0 From 09e8ef540373cababf62e119e52edbf6a879c479 Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 24 Sep 2026 17:29:06 +0200 Subject: [PATCH 007/148] pkg update --- interface/package.json | 2 +- interface/pnpm-lock.yaml | 174 +++++++++++++++++++-------------------- mock-api/package.json | 2 +- mock-api/pnpm-lock.yaml | 16 ++-- project-words.txt | 1 + 5 files changed, 98 insertions(+), 97 deletions(-) diff --git a/interface/package.json b/interface/package.json index 6cc252a62..967f99404 100644 --- a/interface/package.json +++ b/interface/package.json @@ -50,7 +50,7 @@ "eslint-config-prettier": "^10.1.8", "etag": "^1.8.1", "mime-types": "^3.0.2", - "prettier": "^3.9.8", + "prettier": "^3.9.9", "rollup-plugin-visualizer": "^7.1.1", "terser": "^5.51.2", "typescript": "^6.0.3", diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index 3c2e56a47..acd7c818d 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -217,7 +217,7 @@ importers: version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.0(@types/node@26.6.2)(terser@5.51.2)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 - version: 6.0.2(prettier@3.9.8)(supports-color@10.2.2) + version: 6.0.2(prettier@3.9.9)(supports-color@10.2.2) '@types/node': specifier: ^26.6.2 version: 26.6.2 @@ -243,11 +243,11 @@ importers: specifier: ^3.0.2 version: 3.0.2 prettier: - specifier: ^3.9.8 - version: 3.9.8 + specifier: ^3.9.9 + version: 3.9.9 rollup-plugin-visualizer: specifier: ^7.1.1 - version: 7.1.1(rolldown@1.2.9) + version: 7.1.1(rolldown@1.2.10) terser: specifier: ^5.51.2 version: 5.51.2 @@ -627,8 +627,8 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@oxc-project/types@0.150.0': - resolution: {integrity: sha512-rDS5/31E9HfPl/CIzGrn0DOlvBbXFseQ5URJ9sYMfstbKLD/c6Gm9vmRzRGDdAXyOIL4zmO37lc9RIwYqVruZw==} + '@oxc-project/types@0.151.0': + resolution: {integrity: sha512-J1yXrIlNDZVzE3ada310xeAw7nH8yCAyLPuUIsjKatFPmfn5bS1oW+cM+QsGOtVWd5nhSpbwZWx/rue+r5Z+PA==} '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} @@ -661,98 +661,98 @@ packages: '@remix-run/route-pattern@0.22.1': resolution: {integrity: sha512-czdGJWh09Lapvcqt7Vb09KlrU2PhRJ8xQaI+AItTuD9aDJ5MAgxnS38lnys6Ll+6RJEqPiaUqTwIQhVLwFvv+w==} - '@rolldown/binding-android-arm-eabi@1.2.9': - resolution: {integrity: sha512-tNISae1QEf/vkb3xkRcjV5SEdzPE97We5IVaa2Z8jSszQPZ8U60B/YCYpw4QI7VidYsBtKavczXf+DyDs9WGxw==} + '@rolldown/binding-android-arm-eabi@1.2.10': + resolution: {integrity: sha512-bp9svZb+QurZeh+8H4BhrZkifEB0YBNvTVzNSJnJQkj4NrRwmQoDUCGP0vSN7PbvLeM7l1tK6GXL8mrTiH2myg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@rolldown/binding-android-arm64@1.2.9': - resolution: {integrity: sha512-YC8YsI30o606GTZi0VyzYlsDKFP8W61i/QzayHDkLbNEz/IShqAmTa+hsJRj13xTHA0H+6fk4b2UmGn+Q/cMlg==} + '@rolldown/binding-android-arm64@1.2.10': + resolution: {integrity: sha512-wm6Dld3RXUAZ/gRWKyUy+4W1B5CB5UeFaOzsSWJWEdxZXHH8rCYiZ5dGe6oJmhsunAPWzL7FZV+VtvmN5Ye2eA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.2.9': - resolution: {integrity: sha512-IwhlH3qK5urrY8hZiEgGkHKEFN901p/p2bjxCxJlr4GyNnF7wYpUvK+Y43uaRYuC4hpfjzbR3SJC3arX1jGvmw==} + '@rolldown/binding-darwin-arm64@1.2.10': + resolution: {integrity: sha512-UbEfXq/AqGNgRTV3ik+X/iR6mUxu2QdYAadwRxJWquUGnW6gDqdP1FtLtFXRow7RJx0ssRwi80XAPr4r+4DtsA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.2.9': - resolution: {integrity: sha512-XxpJfVzFh+jilRxIXUqcfYAYcunIc/XEzIizsOL1fcJee5Sf7H3mH8WlLmfHfluz5amqR88QQo9izKtmMlavAw==} + '@rolldown/binding-darwin-x64@1.2.10': + resolution: {integrity: sha512-7f5h17q5KZVx/ji1vb8OTq31ch1O2I7K8NPIr44GkyWTApXMIsmhWqZfgpOH10xeauqghDAvGlZktasCkcF6Eg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.2.9': - resolution: {integrity: sha512-kSfvhmgeWyfkbT3p/1s5vSgboogoah2zkm9fX2zjg2hHxSV7T4KhMWRUUaRk4OXNqoD3QAUeRqLcs1aZOK4U1g==} + '@rolldown/binding-freebsd-x64@1.2.10': + resolution: {integrity: sha512-ynOk/eEYhC6ZB2xCGvKrEOwE58oBy9LnrAqtkrDF9Fz1VTaNdGZTsV0VarJdhPwb+sOJTGjCLwcuyRJZ1dnMcQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.2.9': - resolution: {integrity: sha512-1RVzG17pxqbTfYLC352JlLt6kKLG+6Hr30n8DlIJqsnV5luUDd2Qdx9Ayw1Cabfyb1K9k0jXEZ7evxkRoT+uiw==} + '@rolldown/binding-linux-arm-gnueabihf@1.2.10': + resolution: {integrity: sha512-ERrAs185meZZhGan7a4l3RiiJK1ArSDlHdST++uvSxe+FDbR4TwUPahT/cbZJvaG6fIpDpF78surN+tX708Y4Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.2.9': - resolution: {integrity: sha512-BXqPvZ2drqVD+/Z8UpKwcs4Mp7grM+eGFku4CAEKrEtcbAsUpzREphK1sogCRZGreVPiMkiiBtw0n3TPteuqvw==} + '@rolldown/binding-linux-arm64-gnu@1.2.10': + resolution: {integrity: sha512-KN7OHKD0J3jy1UzBwZWPxpwhODf9IARUIJcrH+yLYKOcmegZ8luEUM38lDP1bDVj40yP6PsSzCqOJF76vljFnQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.2.9': - resolution: {integrity: sha512-11vWvo8YDwLzukt27J3aYDWU+gg2P7J+ZOmiJ0hkF5BXZDW7pVya7r40MXDy6ya0i9KamoENSVKIugvJNgFXIA==} + '@rolldown/binding-linux-arm64-musl@1.2.10': + resolution: {integrity: sha512-8l9wP8O+wa8zD6iw6egSfzVtu7oZVfH3hlUsMM4MwbLMhxleqeoXbZzjddyK3YyNlwLhqznq3tF7PkNJ8T/V2w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.2.9': - resolution: {integrity: sha512-a1tijMkdwsIARtc0F39ApURROkf3NwqinI6TOiSSWCTR7dT96dffNvMUtDHnq64wKNTIZOIlzKrFvvFUznJiyw==} + '@rolldown/binding-linux-ppc64-gnu@1.2.10': + resolution: {integrity: sha512-SeXNKeQzA5kLhz/J0CH6ZP0/HJ3v1xm/0YbiYpE0kK7emfRC2OIGGIaE14xzkISEGv2aYuUSpiLiU5Gbq+OI0A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.2.9': - resolution: {integrity: sha512-x6SQNdAvv4c3hWqTMaWuawzMX9myaCs/yEmlGsxJzkdClnHW7FbrjQuSiRDhuSYzEYoEMhsaJy9qHG/XNemJPQ==} + '@rolldown/binding-linux-s390x-gnu@1.2.10': + resolution: {integrity: sha512-mtht0nR+y8/hart4175Ll15w7lY8dg7CtQ+j2FDNTsDRspOWTK/2V3l0aj9sIj7XmvqxT8Yli/wq22e7feTTWg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.2.9': - resolution: {integrity: sha512-9s0AZ8BFK5/n7B/TBoa2yJE3gI3KURrbXcPBlsAsvjU4VeJKgE90y1YtNxyEUIcHPQkg6/yfF3qihUrcM/Kf0Q==} + '@rolldown/binding-linux-x64-gnu@1.2.10': + resolution: {integrity: sha512-FSM94nGd55NYo48usCyM/nHfUKRnqc9+b0vJNuKV0oCCpIp/OGims7rO1Nv/DkFkt0S/s2rxsJ2kkS8J3HcpeA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.2.9': - resolution: {integrity: sha512-P7VWAmV+WdJluH7ovnRGoiv2i8To7GAZ+kGzfGup635cyL7SyYl3lSUaA3Gp5THf0n/Co5EyEqb2zbqq+nMOHQ==} + '@rolldown/binding-linux-x64-musl@1.2.10': + resolution: {integrity: sha512-C3YxNB16myRLs7o+B+6PnQ6jBsdIS4+AE4Ah8glVGhDpEv9AOvxhZ/1duAb4B0UGczEK/lBbccksd8VI+p6zfw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.2.9': - resolution: {integrity: sha512-1qixtsE4BK8h+yS3BfmZ09UhA7O/N4IACva6YBr7EBvCJraByTuRcgOTaiA62Tm0vey3UcKXLOaoGHtYmNGEVg==} + '@rolldown/binding-openharmony-arm64@1.2.10': + resolution: {integrity: sha512-571TlE/F1eeTjjdjYAMMMPs1Mfv3MtX6s3+ZKVU6HiUjZ5Njc6c/qzNy/8K3zALTZnaw3JQVYrHxvNfjm43KAg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-win32-arm64-msvc@1.2.9': - resolution: {integrity: sha512-ok8IQjcEPs1AKZfuEUznVBrJw+gK4soq+bx8b1X2XoMqVClarc1q5JDmVtWXY1xfr6ZuHTAsPXHTgTrqKTZeww==} + '@rolldown/binding-win32-arm64-msvc@1.2.10': + resolution: {integrity: sha512-QXW+ZWaiqs2c7Fi++D/SsW07LTPcUrncxcskJGfGNBoaLik1IU6fJymz4HsqwEO0u5Iq11yTO0B/mc4cPk7jrQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.2.9': - resolution: {integrity: sha512-Ip2mXoU0hM0boq3Rf+ekuT653OROSo6aSYcPT1VHE4q52KvyxgFkQgrgb/IEsxOuvQ2fZZbs8khJAyCEPM24/g==} + '@rolldown/binding-win32-x64-msvc@1.2.10': + resolution: {integrity: sha512-5FQFGgah17YeMtG1Yd5a+rMxQpTksyNXxRtKz06FVTaQw3RKYUJQbUoKk0/5jrXBpDo+7makNP7UHA2LQyH64A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -1338,8 +1338,8 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.434: - resolution: {integrity: sha512-7EeFW9OLf1NN9NKQP9xdOE/XKqjxv7JDPP6AEAkHli11+Fae1OaLoNuAf13hQv1PPNtuES0pLQSPk2+fS3s8ww==} + electron-to-chromium@1.5.438: + resolution: {integrity: sha512-AN9xMU1hJiT65LkCUPL1DZm5TCbOPb2Qsm5pYwFLEXp6/qj9SdT4yMiqs7Qqstwvkn1zF7l36SRGt+s6XcJ0FA==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -2318,8 +2318,8 @@ packages: node-html-parser@6.1.13: resolution: {integrity: sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==} - node-releases@2.0.56: - resolution: {integrity: sha512-x0InOIyzgdk+eyaWaRJFH5snEtiImgBgblZ2CyPrLmqqcuMQkEvcDPHbzqbD8eDsSeJbVOjn+crzyzHaM4D+/A==} + node-releases@2.0.57: + resolution: {integrity: sha512-kQK9LGGFiHtrWiNhZtA7Qbw17AQz+dmsEKODRIVTXA9+e5MS/2gZEBhYJt13GrAz5/IOZKddH/0Z3TP/Zgo+yw==} engines: {node: '>=18'} normalize-package-data@2.5.0: @@ -2555,8 +2555,8 @@ packages: resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} engines: {node: '>=4'} - prettier@3.9.8: - resolution: {integrity: sha512-WRFq3Wn3WId7LLROfMLdH7xaFr2jR62wU8nLO6rQUOLOxNZUviyJQs1M0iIhLexSFy+L+w0ch66wtoO2jRjG0A==} + prettier@3.9.9: + resolution: {integrity: sha512-Z/CJHIkdujO/OtN7nXUii0Rf3VT5SRuhjBA82Xvu2XhBUgX3nhP67T0LHceBdQLex7OOFGTox+Q5Yg8Jk2Qivg==} engines: {node: '>=14'} hasBin: true @@ -2686,8 +2686,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rolldown@1.2.9: - resolution: {integrity: sha512-hx/Pv0N1haXRb11qkfnK5MXB/iqr7i0yjWQqmO9uHqZpBgQSqzc8UsSnEpalsh+j1I8qQ2CkXAkJC8Br3dKSlg==} + rolldown@1.2.10: + resolution: {integrity: sha512-OxkA08pSryMK7B3XiFA09B4OJ1xJMPgIYCBMY2xchzpqgBGsV1o0DetPAE+Sl3N3L4oCPiEzmHVSOj7iR04Zog==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -3591,7 +3591,7 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.3 - '@oxc-project/types@0.150.0': {} + '@oxc-project/types@0.151.0': {} '@popperjs/core@2.11.8': {} @@ -3638,49 +3638,49 @@ snapshots: '@remix-run/route-pattern@0.22.1': {} - '@rolldown/binding-android-arm-eabi@1.2.9': + '@rolldown/binding-android-arm-eabi@1.2.10': optional: true - '@rolldown/binding-android-arm64@1.2.9': + '@rolldown/binding-android-arm64@1.2.10': optional: true - '@rolldown/binding-darwin-arm64@1.2.9': + '@rolldown/binding-darwin-arm64@1.2.10': optional: true - '@rolldown/binding-darwin-x64@1.2.9': + '@rolldown/binding-darwin-x64@1.2.10': optional: true - '@rolldown/binding-freebsd-x64@1.2.9': + '@rolldown/binding-freebsd-x64@1.2.10': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.2.9': + '@rolldown/binding-linux-arm-gnueabihf@1.2.10': optional: true - '@rolldown/binding-linux-arm64-gnu@1.2.9': + '@rolldown/binding-linux-arm64-gnu@1.2.10': optional: true - '@rolldown/binding-linux-arm64-musl@1.2.9': + '@rolldown/binding-linux-arm64-musl@1.2.10': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.2.9': + '@rolldown/binding-linux-ppc64-gnu@1.2.10': optional: true - '@rolldown/binding-linux-s390x-gnu@1.2.9': + '@rolldown/binding-linux-s390x-gnu@1.2.10': optional: true - '@rolldown/binding-linux-x64-gnu@1.2.9': + '@rolldown/binding-linux-x64-gnu@1.2.10': optional: true - '@rolldown/binding-linux-x64-musl@1.2.9': + '@rolldown/binding-linux-x64-musl@1.2.10': optional: true - '@rolldown/binding-openharmony-arm64@1.2.9': + '@rolldown/binding-openharmony-arm64@1.2.10': optional: true - '@rolldown/binding-win32-arm64-msvc@1.2.9': + '@rolldown/binding-win32-arm64-msvc@1.2.10': optional: true - '@rolldown/binding-win32-x64-msvc@1.2.9': + '@rolldown/binding-win32-x64-msvc@1.2.10': optional: true '@rolldown/pluginutils@1.0.1': {} @@ -3707,7 +3707,7 @@ snapshots: react-virtualized-auto-sizer: 1.0.26(react-dom@19.3.0(react@19.3.0))(react@19.3.0) react-window: 1.8.11(react-dom@19.3.0(react@19.3.0))(react@19.3.0) - '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.9.8)(supports-color@10.2.2)': + '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.9.9)(supports-color@10.2.2)': dependencies: '@babel/generator': 7.29.8 '@babel/parser': 7.29.9 @@ -3717,7 +3717,7 @@ snapshots: lodash-es: 4.18.1 minimatch: 9.0.9 parse-imports-exports: 0.2.4 - prettier: 3.9.8 + prettier: 3.9.9 transitivePeerDependencies: - supports-color @@ -4009,8 +4009,8 @@ snapshots: dependencies: baseline-browser-mapping: 2.11.25 caniuse-lite: 1.0.30001810 - electron-to-chromium: 1.5.434 - node-releases: 2.0.56 + electron-to-chromium: 1.5.438 + node-releases: 2.0.57 update-browserslist-db: 1.3.3(browserslist@4.29.0) buffer-alloc-unsafe@1.1.0: {} @@ -4374,7 +4374,7 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.434: {} + electron-to-chromium@1.5.438: {} emoji-regex@10.6.0: {} @@ -5311,7 +5311,7 @@ snapshots: css-select: 5.2.2 he: 1.2.0 - node-releases@2.0.56: {} + node-releases@2.0.57: {} normalize-package-data@2.5.0: dependencies: @@ -5515,7 +5515,7 @@ snapshots: prepend-http@2.0.0: {} - prettier@3.9.8: {} + prettier@3.9.9: {} process-nextick-args@2.0.1: {} @@ -5645,35 +5645,35 @@ snapshots: dependencies: glob: 7.2.3 - rolldown@1.2.9: + rolldown@1.2.10: dependencies: - '@oxc-project/types': 0.150.0 + '@oxc-project/types': 0.151.0 '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm-eabi': 1.2.9 - '@rolldown/binding-android-arm64': 1.2.9 - '@rolldown/binding-darwin-arm64': 1.2.9 - '@rolldown/binding-darwin-x64': 1.2.9 - '@rolldown/binding-freebsd-x64': 1.2.9 - '@rolldown/binding-linux-arm-gnueabihf': 1.2.9 - '@rolldown/binding-linux-arm64-gnu': 1.2.9 - '@rolldown/binding-linux-arm64-musl': 1.2.9 - '@rolldown/binding-linux-ppc64-gnu': 1.2.9 - '@rolldown/binding-linux-s390x-gnu': 1.2.9 - '@rolldown/binding-linux-x64-gnu': 1.2.9 - '@rolldown/binding-linux-x64-musl': 1.2.9 - '@rolldown/binding-openharmony-arm64': 1.2.9 - '@rolldown/binding-win32-arm64-msvc': 1.2.9 - '@rolldown/binding-win32-x64-msvc': 1.2.9 + '@rolldown/binding-android-arm-eabi': 1.2.10 + '@rolldown/binding-android-arm64': 1.2.10 + '@rolldown/binding-darwin-arm64': 1.2.10 + '@rolldown/binding-darwin-x64': 1.2.10 + '@rolldown/binding-freebsd-x64': 1.2.10 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.10 + '@rolldown/binding-linux-arm64-gnu': 1.2.10 + '@rolldown/binding-linux-arm64-musl': 1.2.10 + '@rolldown/binding-linux-ppc64-gnu': 1.2.10 + '@rolldown/binding-linux-s390x-gnu': 1.2.10 + '@rolldown/binding-linux-x64-gnu': 1.2.10 + '@rolldown/binding-linux-x64-musl': 1.2.10 + '@rolldown/binding-openharmony-arm64': 1.2.10 + '@rolldown/binding-win32-arm64-msvc': 1.2.10 + '@rolldown/binding-win32-x64-msvc': 1.2.10 - rollup-plugin-visualizer@7.1.1(rolldown@1.2.9): + rollup-plugin-visualizer@7.1.1(rolldown@1.2.10): dependencies: open: 11.0.4 picomatch: 4.0.7 source-map: 0.8.0 yargs: 18.2.0 optionalDependencies: - rolldown: 1.2.9 + rolldown: 1.2.10 run-applescript@7.1.0: {} @@ -6032,7 +6032,7 @@ snapshots: lightningcss: 1.33.0 picomatch: 4.0.7 postcss: 8.5.28 - rolldown: 1.2.9 + rolldown: 1.2.10 tinyglobby: 0.2.17 optionalDependencies: '@types/node': 26.6.2 diff --git a/mock-api/package.json b/mock-api/package.json index ec99d5d92..ffc836250 100644 --- a/mock-api/package.json +++ b/mock-api/package.json @@ -15,7 +15,7 @@ }, "devDependencies": { "@trivago/prettier-plugin-sort-imports": "^6.0.2", - "prettier": "^3.9.8" + "prettier": "^3.9.9" }, "packageManager": "pnpm@12.6.0" } diff --git a/mock-api/pnpm-lock.yaml b/mock-api/pnpm-lock.yaml index 016e5a7de..80e7ed185 100644 --- a/mock-api/pnpm-lock.yaml +++ b/mock-api/pnpm-lock.yaml @@ -175,10 +175,10 @@ importers: devDependencies: '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 - version: 6.0.2(prettier@3.9.8) + version: 6.0.2(prettier@3.9.9) prettier: - specifier: ^3.9.8 - version: 3.9.8 + specifier: ^3.9.9 + version: 3.9.9 packages: @@ -303,8 +303,8 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - prettier@3.9.8: - resolution: {integrity: sha512-WRFq3Wn3WId7LLROfMLdH7xaFr2jR62wU8nLO6rQUOLOxNZUviyJQs1M0iIhLexSFy+L+w0ch66wtoO2jRjG0A==} + prettier@3.9.9: + resolution: {integrity: sha512-Z/CJHIkdujO/OtN7nXUii0Rf3VT5SRuhjBA82Xvu2XhBUgX3nhP67T0LHceBdQLex7OOFGTox+Q5Yg8Jk2Qivg==} engines: {node: '>=14'} hasBin: true @@ -373,7 +373,7 @@ snapshots: '@msgpack/msgpack@3.1.3': {} - '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.9.8)': + '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.9.9)': dependencies: '@babel/generator': 7.29.8 '@babel/parser': 7.29.9 @@ -383,7 +383,7 @@ snapshots: lodash-es: 4.18.1 minimatch: 9.0.9 parse-imports-exports: 0.2.4 - prettier: 3.9.8 + prettier: 3.9.9 transitivePeerDependencies: - supports-color @@ -421,4 +421,4 @@ snapshots: picocolors@1.1.1: {} - prettier@3.9.8: {} + prettier@3.9.9: {} diff --git a/project-words.txt b/project-words.txt index 1a2a9624e..15da3c6be 100644 --- a/project-words.txt +++ b/project-words.txt @@ -1351,3 +1351,4 @@ zyxwvutsrqponmlkjihgfedcba öffnen česky živanović +neopixel \ No newline at end of file -- 2.54.0 From f05105861edc7887e8f48ea79ae5a007f3510884 Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 24 Sep 2026 18:43:02 +0200 Subject: [PATCH 008/148] update doc --- CHANGELOG.md | 18 ++++++++++++++++++ CHANGELOG_LATEST.md | 3 ++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c832fb2c..d86d0c8c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,24 @@ 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.6] 24 September 2026 + +## Added + +- own rgb_led library supporting WS2812B V5 and the newer V6 RGB LEDs + +## [3.8.5] 22 September 2026 + +## Added + +- Change webUI message when upgrading to a major version of the firmware, in preparation for the upcoming 3.9.0 release. + +## [3.8.4] 4 August 2026 + +## Fixed + +- Allow auto-download and install of firmware versions which are smaller to allow update to the latest 3.9.0-development version. + ## [3.8.3] 1 August 2026 ## Added diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 7f7a5762c..00c9a1e54 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -18,7 +18,7 @@ This release is based on the latest Espressif/Arduino core version 3. It brings - remove HA config for excluded entities [#3229](https://github.com/emsesp/EMS-ESP32/issues/3229) - `show system` reports the Ethernet status on boards with a PHY, so a failed initialisation or a link that never came up is visible instead of Ethernet being omitted completely. Also shows the loop task's lowest free stack, to help diagnose reboots - new Application Setting "Automatically check for firmware updates", off by default. When enabled EMS-ESP asks emsesp.org for the latest version once a day on its own, otherwise it only asks when the WebUI wants to show it, so an unattended system never contacts emsesp.org -- Automatically check and convert older 3.8.x filesystem to the new 3.9.0 format +- automatically check and convert older 3.8.x filesystem to the new 3.9.0 format ## Fixed @@ -56,4 +56,5 @@ This release is based on the latest Espressif/Arduino core version 3. It brings - multiple optimization in network, power down WiFi when Ethernet and WiFi nosleep is instant when selected [#3213](https://github.com/emsesp/EMS-ESP32/pull/3213) - TLS buffers (~17KB per HTTPS request) are taken from PSRAM on boards that have it, instead of fragmenting the internal heap - failed versions.json fetches back off from 5 up to 160 minutes instead of retrying every 5 minutes, as each attempt blocks the main loop for as long as the DNS, connect and read timeouts allow +- optimized the LED library to support WS2812B V5 and the newer V6 RGB LEDs -- 2.54.0 From 8b1de52f55039b64ca07759ba524835c7903306b Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 24 Sep 2026 22:12:19 +0200 Subject: [PATCH 009/148] fix possible lost pointers, could cause a crash --- src/core/analogsensor.cpp | 9 +++++---- src/core/command.cpp | 14 ++++---------- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/src/core/analogsensor.cpp b/src/core/analogsensor.cpp index c38286615..5f474fa30 100644 --- a/src/core/analogsensor.cpp +++ b/src/core/analogsensor.cpp @@ -144,8 +144,8 @@ void AnalogSensor::reload(bool get_nvs) { // load the list of analog sensors from the customization service // and store them locally and then activate them EMSESP::webCustomizationService.read([&](WebCustomization & settings) { - auto it = sensors_.begin(); - for (auto & sensor_ : sensors_) { + for (auto it = sensors_.begin(); it != sensors_.end();) { + auto & sensor_ = *it; // update existing sensors bool found = false; for (const auto & sensor : settings.analogCustomizations) { // search customlist @@ -170,9 +170,10 @@ void AnalogSensor::reload(bool get_nvs) { } } if (!found) { - sensors_.erase(it); + it = sensors_.erase(it); + } else { + ++it; } - it++; } // add new sensors from list diff --git a/src/core/command.cpp b/src/core/command.cpp index 7f106f107..f33044b7a 100644 --- a/src/core/command.cpp +++ b/src/core/command.cpp @@ -542,16 +542,10 @@ Command::CmdFunction * Command::find_command(const uint8_t device_type, const ui } void Command::erase_device_commands(const uint8_t device_type) { - if (cmdfunctions_.empty()) { - return; - } - auto it = cmdfunctions_.end(); - do { - int i = it - cmdfunctions_.begin(); - if (cmdfunctions_[i].device_type_ == device_type) { - cmdfunctions_.erase(it); - } - } while (it-- > cmdfunctions_.begin()); + cmdfunctions_.erase(std::remove_if(cmdfunctions_.begin(), + cmdfunctions_.end(), + [device_type](const CmdFunction & cf) { return cf.device_type_ == device_type; }), + cmdfunctions_.end()); } void Command::erase_command(const uint8_t device_type, const char * cmd, uint8_t flag) { -- 2.54.0 From 446738f0d96499abc5a51abc21bff3414161a0ec Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 24 Sep 2026 22:20:26 +0200 Subject: [PATCH 010/148] remove condition, now handled in erase_command --- src/core/analogsensor.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/core/analogsensor.cpp b/src/core/analogsensor.cpp index 5f474fa30..b91f4772f 100644 --- a/src/core/analogsensor.cpp +++ b/src/core/analogsensor.cpp @@ -534,11 +534,7 @@ bool AnalogSensor::update(uint8_t gpio, const char * org_name, double offset, do bool found_sensor = false; EMSESP::webCustomizationService.update([&](WebCustomization & settings) { for (auto & AnalogCustomization : settings.analogCustomizations) { - if (AnalogCustomization.type == AnalogType::COUNTER - || (AnalogCustomization.type >= AnalogType::DIGITAL_OUT && AnalogCustomization.type <= AnalogType::PWM_2) - || AnalogCustomization.type == AnalogType::RGB || AnalogCustomization.type == AnalogType::PULSE) { - Command::erase_command(EMSdevice::DeviceType::ANALOGSENSOR, AnalogCustomization.name); - } + Command::erase_command(EMSdevice::DeviceType::ANALOGSENSOR, AnalogCustomization.name); if (AnalogCustomization.gpio == gpio) { found_sensor = true; // found the record // see if it's marked for deletion -- 2.54.0 From b7a174ddeaf45a9bc33a9fb7c694189452eed9c3 Mon Sep 17 00:00:00 2001 From: proddy Date: Fri, 25 Sep 2026 08:44:42 +0200 Subject: [PATCH 011/148] #3196 --- CHANGELOG_LATEST.md | 1 + docs/Modbus-Entity-Registers.md | 156 +++++++++++++++++--------------- docs/dump_entities.csv | 156 +++++++++++++++++--------------- docs/dump_telegrams.csv | 10 +- src/core/locale_translations.h | 8 +- src/devices/heatpump.cpp | 103 ++++++++++++++------- src/devices/heatpump.h | 8 +- src/emsesp_version.h | 2 +- 8 files changed, 257 insertions(+), 187 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 00c9a1e54..b7c7f30e7 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -19,6 +19,7 @@ This release is based on the latest Espressif/Arduino core version 3. It brings - `show system` reports the Ethernet status on boards with a PHY, so a failed initialisation or a link that never came up is visible instead of Ethernet being omitted completely. Also shows the loop task's lowest free stack, to help diagnose reboots - new Application Setting "Automatically check for firmware updates", off by default. When enabled EMS-ESP asks emsesp.org for the latest version once a day on its own, otherwise it only asks when the WebUI wants to show it, so an unattended system never contacts emsesp.org - automatically check and convert older 3.8.x filesystem to the new 3.9.0 format +- new device entities for Heat Pump: `hpPumpFlow`, `hpCompSpdER1`, `hpSpeedSetpoint`, `smartGridMode` ## Fixed diff --git a/docs/Modbus-Entity-Registers.md b/docs/Modbus-Entity-Registers.md index 16c84a41c..7fef0a051 100644 --- a/docs/Modbus-Entity-Registers.md +++ b/docs/Modbus-Entity-Registers.md @@ -8024,44 +8024,48 @@ int8 | hpactivity | compressor activity | enum | | false | DEVICE_DATA | 16 | 1 | 1 | | hppower | compressor power output | uint16 | W | false | DEVICE_DATA | 17 | 1 | 1 | | hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 18 | 1 | 1 | -| hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 19 | 1 | 1 | -| lownoisemode | low noise mode | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +| hppumpflow | volume flow | uint16 | l/h | false | DEVICE_DATA | 19 | 1 | 1/10 | +| hpcompspder1 | compressor speed ER1 | uint8 | % | false | DEVICE_DATA | 20 | 1 | 1 | +| hpSpeedSetpoint | speed setpoint | uint8 | % | false | DEVICE_DATA | 21 | 1 | 1 | +| smartgridmode | smart grid mode | uint8 | | false | DEVICE_DATA | 22 | 1 | 1 | +| hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 23 | 1 | 1 | +| lownoisemode | low noise mode | enum | | true | DEVICE_DATA | 24 | 1 | 1 | uint8 -| lownoisestart | low noise starttime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 21 | 1 | 1 | +| lownoisestart | low noise starttime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 25 | 1 | 1 | uint8 -| lownoisestop | low noise stoptime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 22 | 1 | 1 | +| lownoisestop | low noise stoptime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 26 | 1 | 1 | | dhw.hybriddhw | hybrid DHW | enum | | true | DHW | 0 | 1 | 1 | uint8 -| energypricegas | energy price gas | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 23 | 1 | 1 | +| energypricegas | energy price gas | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 27 | 1 | 1 | uint8 -| energypriceel | energy price electric | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 24 | 1 | 1 | +| energypriceel | energy price electric | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 28 | 1 | 1 | uint8 -| energyfeedpv | feed in PV | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 25 | 1 | 1 | +| energyfeedpv | feed in PV | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 29 | 1 | 1 | int8 -| switchovertemp | outside switchover temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 26 | 1 | 1 | -| airpurgemode | air purge mode | boolean | | true | DEVICE_DATA | 27 | 1 | 1 | +| switchovertemp | outside switchover temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 30 | 1 | 1 | +| airpurgemode | air purge mode | boolean | | true | DEVICE_DATA | 31 | 1 | 1 | uint8 -| heatpumpoutput | heatpump output | uint8 (>=0<=0) | % | true | DEVICE_DATA | 28 | 1 | 1 | -| coolingcircuit | cooling circuit | boolean | | true | DEVICE_DATA | 29 | 1 | 1 | +| heatpumpoutput | heatpump output | uint8 (>=0<=0) | % | true | DEVICE_DATA | 32 | 1 | 1 | +| coolingcircuit | cooling circuit | boolean | | true | DEVICE_DATA | 33 | 1 | 1 | uint8 -| compstartmod | compressor start modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 30 | 1 | 1 | -| heatdrainpan | heat drain pan | boolean | | true | DEVICE_DATA | 31 | 1 | 1 | -| heatcable | heating cable | boolean | | true | DEVICE_DATA | 32 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 33 | 2 | 1/100 | +| compstartmod | compressor start modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 34 | 1 | 1 | +| heatdrainpan | heat drain pan | boolean | | true | DEVICE_DATA | 35 | 1 | 1 | +| heatcable | heating cable | boolean | | true | DEVICE_DATA | 36 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 37 | 2 | 1/100 | | dhw.nrg | energy | uint24 | kWh | false | DHW | 1 | 2 | 1/100 | -| nrgheat | energy heating | uint24 | kWh | false | DEVICE_DATA | 35 | 2 | 1/100 | -| metertotal | meter total | uint24 | kWh | false | DEVICE_DATA | 37 | 2 | 1/100 | -| metercomp | meter compressor | uint24 | kWh | false | DEVICE_DATA | 39 | 2 | 1/100 | -| metereheat | meter e-heater | uint24 | kWh | false | DEVICE_DATA | 41 | 2 | 1/100 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 43 | 2 | 1/100 | +| nrgheat | energy heating | uint24 | kWh | false | DEVICE_DATA | 39 | 2 | 1/100 | +| metertotal | meter total | uint24 | kWh | false | DEVICE_DATA | 41 | 2 | 1/100 | +| metercomp | meter compressor | uint24 | kWh | false | DEVICE_DATA | 43 | 2 | 1/100 | +| metereheat | meter e-heater | uint24 | kWh | false | DEVICE_DATA | 45 | 2 | 1/100 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 47 | 2 | 1/100 | | dhw.meter | meter | uint24 | kWh | false | DHW | 3 | 2 | 1/100 | -| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 45 | 2 | 1 | +| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 49 | 2 | 1 | | dhw.startshp | starts hp | uint24 | | false | DHW | 5 | 2 | 1 | -| fuelheat | fuel consumption heating | uint32 | kWh | false | DEVICE_DATA | 47 | 2 | 1/10 | +| fuelheat | fuel consumption heating | uint32 | kWh | false | DEVICE_DATA | 51 | 2 | 1/10 | | dhw.fueldhw | fuel consumption | uint32 | kWh | false | DHW | 7 | 2 | 1/10 | -| elheat | el. consumption heating | uint32 | kWh | false | DEVICE_DATA | 49 | 2 | 1/10 | +| elheat | el. consumption heating | uint32 | kWh | false | DEVICE_DATA | 53 | 2 | 1/10 | | dhw.eldhw | el. consumption | uint32 | kWh | false | DHW | 9 | 2 | 1/10 | -| elgenheat | el. generation heating | uint32 | kWh | false | DEVICE_DATA | 51 | 2 | 1/10 | +| elgenheat | el. generation heating | uint32 | kWh | false | DEVICE_DATA | 55 | 2 | 1/10 | | dhw.elgendhw | el generation | uint32 | kWh | false | DHW | 11 | 2 | 1/10 | ### Hybrid Manager HM200 @@ -8087,44 +8091,48 @@ uint8 | hpactivity | compressor activity | enum | | false | DEVICE_DATA | 16 | 1 | 1 | | hppower | compressor power output | uint16 | W | false | DEVICE_DATA | 17 | 1 | 1 | | hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 18 | 1 | 1 | -| hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 19 | 1 | 1 | -| lownoisemode | low noise mode | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +| hppumpflow | volume flow | uint16 | l/h | false | DEVICE_DATA | 19 | 1 | 1/10 | +| hpcompspder1 | compressor speed ER1 | uint8 | % | false | DEVICE_DATA | 20 | 1 | 1 | +| hpSpeedSetpoint | speed setpoint | uint8 | % | false | DEVICE_DATA | 21 | 1 | 1 | +| smartgridmode | smart grid mode | uint8 | | false | DEVICE_DATA | 22 | 1 | 1 | +| hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 23 | 1 | 1 | +| lownoisemode | low noise mode | enum | | true | DEVICE_DATA | 24 | 1 | 1 | uint8 -| lownoisestart | low noise starttime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 21 | 1 | 1 | +| lownoisestart | low noise starttime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 25 | 1 | 1 | uint8 -| lownoisestop | low noise stoptime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 22 | 1 | 1 | +| lownoisestop | low noise stoptime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 26 | 1 | 1 | | dhw.hybriddhw | hybrid DHW | enum | | true | DHW | 0 | 1 | 1 | uint8 -| energypricegas | energy price gas | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 23 | 1 | 1 | +| energypricegas | energy price gas | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 27 | 1 | 1 | uint8 -| energypriceel | energy price electric | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 24 | 1 | 1 | +| energypriceel | energy price electric | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 28 | 1 | 1 | uint8 -| energyfeedpv | feed in PV | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 25 | 1 | 1 | +| energyfeedpv | feed in PV | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 29 | 1 | 1 | int8 -| switchovertemp | outside switchover temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 26 | 1 | 1 | -| airpurgemode | air purge mode | boolean | | true | DEVICE_DATA | 27 | 1 | 1 | +| switchovertemp | outside switchover temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 30 | 1 | 1 | +| airpurgemode | air purge mode | boolean | | true | DEVICE_DATA | 31 | 1 | 1 | uint8 -| heatpumpoutput | heatpump output | uint8 (>=0<=0) | % | true | DEVICE_DATA | 28 | 1 | 1 | -| coolingcircuit | cooling circuit | boolean | | true | DEVICE_DATA | 29 | 1 | 1 | +| heatpumpoutput | heatpump output | uint8 (>=0<=0) | % | true | DEVICE_DATA | 32 | 1 | 1 | +| coolingcircuit | cooling circuit | boolean | | true | DEVICE_DATA | 33 | 1 | 1 | uint8 -| compstartmod | compressor start modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 30 | 1 | 1 | -| heatdrainpan | heat drain pan | boolean | | true | DEVICE_DATA | 31 | 1 | 1 | -| heatcable | heating cable | boolean | | true | DEVICE_DATA | 32 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 33 | 2 | 1/100 | +| compstartmod | compressor start modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 34 | 1 | 1 | +| heatdrainpan | heat drain pan | boolean | | true | DEVICE_DATA | 35 | 1 | 1 | +| heatcable | heating cable | boolean | | true | DEVICE_DATA | 36 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 37 | 2 | 1/100 | | dhw.nrg | energy | uint24 | kWh | false | DHW | 1 | 2 | 1/100 | -| nrgheat | energy heating | uint24 | kWh | false | DEVICE_DATA | 35 | 2 | 1/100 | -| metertotal | meter total | uint24 | kWh | false | DEVICE_DATA | 37 | 2 | 1/100 | -| metercomp | meter compressor | uint24 | kWh | false | DEVICE_DATA | 39 | 2 | 1/100 | -| metereheat | meter e-heater | uint24 | kWh | false | DEVICE_DATA | 41 | 2 | 1/100 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 43 | 2 | 1/100 | +| nrgheat | energy heating | uint24 | kWh | false | DEVICE_DATA | 39 | 2 | 1/100 | +| metertotal | meter total | uint24 | kWh | false | DEVICE_DATA | 41 | 2 | 1/100 | +| metercomp | meter compressor | uint24 | kWh | false | DEVICE_DATA | 43 | 2 | 1/100 | +| metereheat | meter e-heater | uint24 | kWh | false | DEVICE_DATA | 45 | 2 | 1/100 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 47 | 2 | 1/100 | | dhw.meter | meter | uint24 | kWh | false | DHW | 3 | 2 | 1/100 | -| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 45 | 2 | 1 | +| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 49 | 2 | 1 | | dhw.startshp | starts hp | uint24 | | false | DHW | 5 | 2 | 1 | -| fuelheat | fuel consumption heating | uint32 | kWh | false | DEVICE_DATA | 47 | 2 | 1/10 | +| fuelheat | fuel consumption heating | uint32 | kWh | false | DEVICE_DATA | 51 | 2 | 1/10 | | dhw.fueldhw | fuel consumption | uint32 | kWh | false | DHW | 7 | 2 | 1/10 | -| elheat | el. consumption heating | uint32 | kWh | false | DEVICE_DATA | 49 | 2 | 1/10 | +| elheat | el. consumption heating | uint32 | kWh | false | DEVICE_DATA | 53 | 2 | 1/10 | | dhw.eldhw | el. consumption | uint32 | kWh | false | DHW | 9 | 2 | 1/10 | -| elgenheat | el. generation heating | uint32 | kWh | false | DEVICE_DATA | 51 | 2 | 1/10 | +| elgenheat | el. generation heating | uint32 | kWh | false | DEVICE_DATA | 55 | 2 | 1/10 | | dhw.elgendhw | el generation | uint32 | kWh | false | DHW | 11 | 2 | 1/10 | ### CSH5800iG @@ -8150,44 +8158,48 @@ uint8 | hpactivity | compressor activity | enum | | false | DEVICE_DATA | 16 | 1 | 1 | | hppower | compressor power output | uint16 | W | false | DEVICE_DATA | 17 | 1 | 1 | | hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 18 | 1 | 1 | -| hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 19 | 1 | 1 | -| lownoisemode | low noise mode | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +| hppumpflow | volume flow | uint16 | l/h | false | DEVICE_DATA | 19 | 1 | 1/10 | +| hpcompspder1 | compressor speed ER1 | uint8 | % | false | DEVICE_DATA | 20 | 1 | 1 | +| hpSpeedSetpoint | speed setpoint | uint8 | % | false | DEVICE_DATA | 21 | 1 | 1 | +| smartgridmode | smart grid mode | uint8 | | false | DEVICE_DATA | 22 | 1 | 1 | +| hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 23 | 1 | 1 | +| lownoisemode | low noise mode | enum | | true | DEVICE_DATA | 24 | 1 | 1 | uint8 -| lownoisestart | low noise starttime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 21 | 1 | 1 | +| lownoisestart | low noise starttime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 25 | 1 | 1 | uint8 -| lownoisestop | low noise stoptime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 22 | 1 | 1 | +| lownoisestop | low noise stoptime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 26 | 1 | 1 | | dhw.hybriddhw | hybrid DHW | enum | | true | DHW | 0 | 1 | 1 | uint8 -| energypricegas | energy price gas | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 23 | 1 | 1 | +| energypricegas | energy price gas | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 27 | 1 | 1 | uint8 -| energypriceel | energy price electric | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 24 | 1 | 1 | +| energypriceel | energy price electric | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 28 | 1 | 1 | uint8 -| energyfeedpv | feed in PV | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 25 | 1 | 1 | +| energyfeedpv | feed in PV | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 29 | 1 | 1 | int8 -| switchovertemp | outside switchover temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 26 | 1 | 1 | -| airpurgemode | air purge mode | boolean | | true | DEVICE_DATA | 27 | 1 | 1 | +| switchovertemp | outside switchover temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 30 | 1 | 1 | +| airpurgemode | air purge mode | boolean | | true | DEVICE_DATA | 31 | 1 | 1 | uint8 -| heatpumpoutput | heatpump output | uint8 (>=0<=0) | % | true | DEVICE_DATA | 28 | 1 | 1 | -| coolingcircuit | cooling circuit | boolean | | true | DEVICE_DATA | 29 | 1 | 1 | +| heatpumpoutput | heatpump output | uint8 (>=0<=0) | % | true | DEVICE_DATA | 32 | 1 | 1 | +| coolingcircuit | cooling circuit | boolean | | true | DEVICE_DATA | 33 | 1 | 1 | uint8 -| compstartmod | compressor start modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 30 | 1 | 1 | -| heatdrainpan | heat drain pan | boolean | | true | DEVICE_DATA | 31 | 1 | 1 | -| heatcable | heating cable | boolean | | true | DEVICE_DATA | 32 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 33 | 2 | 1/100 | +| compstartmod | compressor start modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 34 | 1 | 1 | +| heatdrainpan | heat drain pan | boolean | | true | DEVICE_DATA | 35 | 1 | 1 | +| heatcable | heating cable | boolean | | true | DEVICE_DATA | 36 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 37 | 2 | 1/100 | | dhw.nrg | energy | uint24 | kWh | false | DHW | 1 | 2 | 1/100 | -| nrgheat | energy heating | uint24 | kWh | false | DEVICE_DATA | 35 | 2 | 1/100 | -| metertotal | meter total | uint24 | kWh | false | DEVICE_DATA | 37 | 2 | 1/100 | -| metercomp | meter compressor | uint24 | kWh | false | DEVICE_DATA | 39 | 2 | 1/100 | -| metereheat | meter e-heater | uint24 | kWh | false | DEVICE_DATA | 41 | 2 | 1/100 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 43 | 2 | 1/100 | +| nrgheat | energy heating | uint24 | kWh | false | DEVICE_DATA | 39 | 2 | 1/100 | +| metertotal | meter total | uint24 | kWh | false | DEVICE_DATA | 41 | 2 | 1/100 | +| metercomp | meter compressor | uint24 | kWh | false | DEVICE_DATA | 43 | 2 | 1/100 | +| metereheat | meter e-heater | uint24 | kWh | false | DEVICE_DATA | 45 | 2 | 1/100 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 47 | 2 | 1/100 | | dhw.meter | meter | uint24 | kWh | false | DHW | 3 | 2 | 1/100 | -| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 45 | 2 | 1 | +| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 49 | 2 | 1 | | dhw.startshp | starts hp | uint24 | | false | DHW | 5 | 2 | 1 | -| fuelheat | fuel consumption heating | uint32 | kWh | false | DEVICE_DATA | 47 | 2 | 1/10 | +| fuelheat | fuel consumption heating | uint32 | kWh | false | DEVICE_DATA | 51 | 2 | 1/10 | | dhw.fueldhw | fuel consumption | uint32 | kWh | false | DHW | 7 | 2 | 1/10 | -| elheat | el. consumption heating | uint32 | kWh | false | DEVICE_DATA | 49 | 2 | 1/10 | +| elheat | el. consumption heating | uint32 | kWh | false | DEVICE_DATA | 53 | 2 | 1/10 | | dhw.eldhw | el. consumption | uint32 | kWh | false | DHW | 9 | 2 | 1/10 | -| elgenheat | el. generation heating | uint32 | kWh | false | DEVICE_DATA | 51 | 2 | 1/10 | +| elgenheat | el. generation heating | uint32 | kWh | false | DEVICE_DATA | 55 | 2 | 1/10 | | dhw.elgendhw | el generation | uint32 | kWh | false | DHW | 11 | 2 | 1/10 | ## Devices of type \_switch diff --git a/docs/dump_entities.csv b/docs/dump_entities.csv index 59c3ed53f..cc0601e50 100644 --- a/docs/dump_entities.csv +++ b/docs/dump_entities.csv @@ -5767,36 +5767,40 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "HP Module",heatpump,252,hpactivity,compressor activity,enum [off\|heating\|hot water\|defrost\|compressor alarm], ,false,sensor.heatpump_compressor_activity,sensor.heatpump_hpactivity,10,0,1,16,1 "HP Module",heatpump,252,hppower,compressor power output,uint16,W,false,sensor.heatpump_compressor_power_output,sensor.heatpump_hppower,10,0,1,17,1 "HP Module",heatpump,252,hpcurrpower,compressor current power,uint16,W,false,sensor.heatpump_compressor_current_power,sensor.heatpump_hpcurrpower,10,0,1,18,1 -"HP Module",heatpump,252,hybridstrategy,hybrid control strategy,enum [cost optimized\|co2 optimized\|outside temperature alt.\|outside temperature parallel\|heatpump preferred\|boiler only] (>=0<=0), ,true,select.heatpump_hybrid_control_strategy,select.heatpump_hybridstrategy,10,0,1,19,1 -"HP Module",heatpump,252,lownoisemode,low noise mode,enum [off\|reduced output\|switch off hp\|perm. reduced] (>=0<=0), ,true,select.heatpump_low_noise_mode,select.heatpump_lownoisemode,10,0,1,20,1 -"HP Module",heatpump,252,lownoisestart,low noise starttime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_starttime,number.heatpump_lownoisestart,10,0,1,21,1 -"HP Module",heatpump,252,lownoisestop,low noise stoptime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_stoptime,number.heatpump_lownoisestop,10,0,1,22,1 +"HP Module",heatpump,252,hppumpflow,volume flow,uint16,l/h,false,sensor.heatpump_volume_flow,sensor.heatpump_hppumpflow,10,0,1/10,19,1 +"HP Module",heatpump,252,hpcompspder1,compressor speed ER1,uint8,%,false,sensor.heatpump_compressor_speed_ER1,sensor.heatpump_hpcompspder1,10,0,1,20,1 +"HP Module",heatpump,252,hpSpeedSetpoint,speed setpoint,uint8,%,false,sensor.heatpump_speed_setpoint,sensor.heatpump_hpSpeedSetpoint,10,0,1,21,1 +"HP Module",heatpump,252,smartgridmode,smart grid mode,uint8, ,false,sensor.heatpump_smart_grid_mode,sensor.heatpump_smartgridmode,10,0,1,22,1 +"HP Module",heatpump,252,hybridstrategy,hybrid control strategy,enum [cost optimized\|co2 optimized\|outside temperature alt.\|outside temperature parallel\|heatpump preferred\|boiler only] (>=0<=0), ,true,select.heatpump_hybrid_control_strategy,select.heatpump_hybridstrategy,10,0,1,23,1 +"HP Module",heatpump,252,lownoisemode,low noise mode,enum [off\|reduced output\|switch off hp\|perm. reduced] (>=0<=0), ,true,select.heatpump_low_noise_mode,select.heatpump_lownoisemode,10,0,1,24,1 +"HP Module",heatpump,252,lownoisestart,low noise starttime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_starttime,number.heatpump_lownoisestart,10,0,1,25,1 +"HP Module",heatpump,252,lownoisestop,low noise stoptime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_stoptime,number.heatpump_lownoisestop,10,0,1,26,1 "HP Module",heatpump,252,dhw.hybriddhw,hybrid DHW,enum [eco\|high comfort] (>=0<=0), ,true,select.heatpump_dhw_hybrid_DHW,select.heatpump_dhw_hybriddhw,10,9,1,0,1 -"HP Module",heatpump,252,energypricegas,energy price gas,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_gas,number.heatpump_energypricegas,10,0,1,23,1 -"HP Module",heatpump,252,energypriceel,energy price electric,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_electric,number.heatpump_energypriceel,10,0,1,24,1 -"HP Module",heatpump,252,energyfeedpv,feed in PV,uint8 (>=0<=0),ct/kWh,true,number.heatpump_feed_in_PV,number.heatpump_energyfeedpv,10,0,1,25,1 -"HP Module",heatpump,252,switchovertemp,outside switchover temperature,int8 (>=0<=0),C,true,number.heatpump_outside_switchover_temperature,number.heatpump_switchovertemp,10,0,1,26,1 -"HP Module",heatpump,252,airpurgemode,air purge mode,boolean (>=0<=0), ,true,switch.heatpump_air_purge_mode,switch.heatpump_airpurgemode,10,0,1,27,1 -"HP Module",heatpump,252,heatpumpoutput,heatpump output,uint8 (>=0<=0),%,true,number.heatpump_heatpump_output,number.heatpump_heatpumpoutput,10,0,1,28,1 -"HP Module",heatpump,252,coolingcircuit,cooling circuit,boolean (>=0<=0), ,true,switch.heatpump_cooling_circuit,switch.heatpump_coolingcircuit,10,0,1,29,1 -"HP Module",heatpump,252,compstartmod,compressor start modulation,uint8 (>=0<=0),%,true,number.heatpump_compressor_start_modulation,number.heatpump_compstartmod,10,0,1,30,1 -"HP Module",heatpump,252,heatdrainpan,heat drain pan,boolean (>=0<=0), ,true,switch.heatpump_heat_drain_pan,switch.heatpump_heatdrainpan,10,0,1,31,1 -"HP Module",heatpump,252,heatcable,heating cable,boolean (>=0<=0), ,true,switch.heatpump_heating_cable,switch.heatpump_heatcable,10,0,1,32,1 -"HP Module",heatpump,252,nrgtotal,total energy,uint24,kWh,false,sensor.heatpump_total_energy,sensor.heatpump_nrgtotal,10,0,1/100,33,2 +"HP Module",heatpump,252,energypricegas,energy price gas,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_gas,number.heatpump_energypricegas,10,0,1,27,1 +"HP Module",heatpump,252,energypriceel,energy price electric,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_electric,number.heatpump_energypriceel,10,0,1,28,1 +"HP Module",heatpump,252,energyfeedpv,feed in PV,uint8 (>=0<=0),ct/kWh,true,number.heatpump_feed_in_PV,number.heatpump_energyfeedpv,10,0,1,29,1 +"HP Module",heatpump,252,switchovertemp,outside switchover temperature,int8 (>=0<=0),C,true,number.heatpump_outside_switchover_temperature,number.heatpump_switchovertemp,10,0,1,30,1 +"HP Module",heatpump,252,airpurgemode,air purge mode,boolean (>=0<=0), ,true,switch.heatpump_air_purge_mode,switch.heatpump_airpurgemode,10,0,1,31,1 +"HP Module",heatpump,252,heatpumpoutput,heatpump output,uint8 (>=0<=0),%,true,number.heatpump_heatpump_output,number.heatpump_heatpumpoutput,10,0,1,32,1 +"HP Module",heatpump,252,coolingcircuit,cooling circuit,boolean (>=0<=0), ,true,switch.heatpump_cooling_circuit,switch.heatpump_coolingcircuit,10,0,1,33,1 +"HP Module",heatpump,252,compstartmod,compressor start modulation,uint8 (>=0<=0),%,true,number.heatpump_compressor_start_modulation,number.heatpump_compstartmod,10,0,1,34,1 +"HP Module",heatpump,252,heatdrainpan,heat drain pan,boolean (>=0<=0), ,true,switch.heatpump_heat_drain_pan,switch.heatpump_heatdrainpan,10,0,1,35,1 +"HP Module",heatpump,252,heatcable,heating cable,boolean (>=0<=0), ,true,switch.heatpump_heating_cable,switch.heatpump_heatcable,10,0,1,36,1 +"HP Module",heatpump,252,nrgtotal,total energy,uint24,kWh,false,sensor.heatpump_total_energy,sensor.heatpump_nrgtotal,10,0,1/100,37,2 "HP Module",heatpump,252,dhw.nrg,energy,uint24,kWh,false,sensor.heatpump_dhw_energy,sensor.heatpump_dhw_nrg,10,9,1/100,1,2 -"HP Module",heatpump,252,nrgheat,energy heating,uint24,kWh,false,sensor.heatpump_energy_heating,sensor.heatpump_nrgheat,10,0,1/100,35,2 -"HP Module",heatpump,252,metertotal,meter total,uint24,kWh,false,sensor.heatpump_meter_total,sensor.heatpump_metertotal,10,0,1/100,37,2 -"HP Module",heatpump,252,metercomp,meter compressor,uint24,kWh,false,sensor.heatpump_meter_compressor,sensor.heatpump_metercomp,10,0,1/100,39,2 -"HP Module",heatpump,252,metereheat,meter e-heater,uint24,kWh,false,sensor.heatpump_meter_e-heater,sensor.heatpump_metereheat,10,0,1/100,41,2 -"HP Module",heatpump,252,meterheat,meter heating,uint24,kWh,false,sensor.heatpump_meter_heating,sensor.heatpump_meterheat,10,0,1/100,43,2 +"HP Module",heatpump,252,nrgheat,energy heating,uint24,kWh,false,sensor.heatpump_energy_heating,sensor.heatpump_nrgheat,10,0,1/100,39,2 +"HP Module",heatpump,252,metertotal,meter total,uint24,kWh,false,sensor.heatpump_meter_total,sensor.heatpump_metertotal,10,0,1/100,41,2 +"HP Module",heatpump,252,metercomp,meter compressor,uint24,kWh,false,sensor.heatpump_meter_compressor,sensor.heatpump_metercomp,10,0,1/100,43,2 +"HP Module",heatpump,252,metereheat,meter e-heater,uint24,kWh,false,sensor.heatpump_meter_e-heater,sensor.heatpump_metereheat,10,0,1/100,45,2 +"HP Module",heatpump,252,meterheat,meter heating,uint24,kWh,false,sensor.heatpump_meter_heating,sensor.heatpump_meterheat,10,0,1/100,47,2 "HP Module",heatpump,252,dhw.meter,meter,uint24,kWh,false,sensor.heatpump_dhw_meter,sensor.heatpump_dhw_meter,10,9,1/100,3,2 -"HP Module",heatpump,252,heatingstarts,heating control starts,uint24, ,false,sensor.heatpump_heating_control_starts,sensor.heatpump_heatingstarts,10,0,1,45,2 +"HP Module",heatpump,252,heatingstarts,heating control starts,uint24, ,false,sensor.heatpump_heating_control_starts,sensor.heatpump_heatingstarts,10,0,1,49,2 "HP Module",heatpump,252,dhw.startshp,starts hp,uint24, ,false,sensor.heatpump_dhw_starts_hp,sensor.heatpump_dhw_startshp,10,9,1,5,2 -"HP Module",heatpump,252,fuelheat,fuel consumption heating,uint32,kWh,false,sensor.heatpump_fuel_consumption_heating,sensor.heatpump_fuelheat,10,0,1/10,47,2 +"HP Module",heatpump,252,fuelheat,fuel consumption heating,uint32,kWh,false,sensor.heatpump_fuel_consumption_heating,sensor.heatpump_fuelheat,10,0,1/10,51,2 "HP Module",heatpump,252,dhw.fueldhw,fuel consumption,uint32,kWh,false,sensor.heatpump_dhw_fuel_consumption,sensor.heatpump_dhw_fueldhw,10,9,1/10,7,2 -"HP Module",heatpump,252,elheat,el. consumption heating,uint32,kWh,false,sensor.heatpump_el._consumption_heating,sensor.heatpump_elheat,10,0,1/10,49,2 +"HP Module",heatpump,252,elheat,el. consumption heating,uint32,kWh,false,sensor.heatpump_el._consumption_heating,sensor.heatpump_elheat,10,0,1/10,53,2 "HP Module",heatpump,252,dhw.eldhw,el. consumption,uint32,kWh,false,sensor.heatpump_dhw_el._consumption,sensor.heatpump_dhw_eldhw,10,9,1/10,9,2 -"HP Module",heatpump,252,elgenheat,el. generation heating,uint32,kWh,false,sensor.heatpump_el._generation_heating,sensor.heatpump_elgenheat,10,0,1/10,51,2 +"HP Module",heatpump,252,elgenheat,el. generation heating,uint32,kWh,false,sensor.heatpump_el._generation_heating,sensor.heatpump_elgenheat,10,0,1/10,55,2 "HP Module",heatpump,252,dhw.elgendhw,el generation,uint32,kWh,false,sensor.heatpump_dhw_el_generation,sensor.heatpump_dhw_elgendhw,10,9,1/10,11,2 "Hybrid Manager HM200",heatpump,248,airhumidity,relative air humidity,uint8,%,false,sensor.heatpump_relative_air_humidity,sensor.heatpump_airhumidity,10,0,1,0,1 "Hybrid Manager HM200",heatpump,248,dewtemperature,dew point temperature,uint8,C,false,sensor.heatpump_dew_point_temperature,sensor.heatpump_dewtemperature,10,0,1,1,1 @@ -5817,36 +5821,40 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Hybrid Manager HM200",heatpump,248,hpactivity,compressor activity,enum [off\|heating\|hot water\|defrost\|compressor alarm], ,false,sensor.heatpump_compressor_activity,sensor.heatpump_hpactivity,10,0,1,16,1 "Hybrid Manager HM200",heatpump,248,hppower,compressor power output,uint16,W,false,sensor.heatpump_compressor_power_output,sensor.heatpump_hppower,10,0,1,17,1 "Hybrid Manager HM200",heatpump,248,hpcurrpower,compressor current power,uint16,W,false,sensor.heatpump_compressor_current_power,sensor.heatpump_hpcurrpower,10,0,1,18,1 -"Hybrid Manager HM200",heatpump,248,hybridstrategy,hybrid control strategy,enum [cost optimized\|co2 optimized\|outside temperature alt.\|outside temperature parallel\|heatpump preferred\|boiler only] (>=0<=0), ,true,select.heatpump_hybrid_control_strategy,select.heatpump_hybridstrategy,10,0,1,19,1 -"Hybrid Manager HM200",heatpump,248,lownoisemode,low noise mode,enum [off\|reduced output\|switch off hp\|perm. reduced] (>=0<=0), ,true,select.heatpump_low_noise_mode,select.heatpump_lownoisemode,10,0,1,20,1 -"Hybrid Manager HM200",heatpump,248,lownoisestart,low noise starttime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_starttime,number.heatpump_lownoisestart,10,0,1,21,1 -"Hybrid Manager HM200",heatpump,248,lownoisestop,low noise stoptime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_stoptime,number.heatpump_lownoisestop,10,0,1,22,1 +"Hybrid Manager HM200",heatpump,248,hppumpflow,volume flow,uint16,l/h,false,sensor.heatpump_volume_flow,sensor.heatpump_hppumpflow,10,0,1/10,19,1 +"Hybrid Manager HM200",heatpump,248,hpcompspder1,compressor speed ER1,uint8,%,false,sensor.heatpump_compressor_speed_ER1,sensor.heatpump_hpcompspder1,10,0,1,20,1 +"Hybrid Manager HM200",heatpump,248,hpSpeedSetpoint,speed setpoint,uint8,%,false,sensor.heatpump_speed_setpoint,sensor.heatpump_hpSpeedSetpoint,10,0,1,21,1 +"Hybrid Manager HM200",heatpump,248,smartgridmode,smart grid mode,uint8, ,false,sensor.heatpump_smart_grid_mode,sensor.heatpump_smartgridmode,10,0,1,22,1 +"Hybrid Manager HM200",heatpump,248,hybridstrategy,hybrid control strategy,enum [cost optimized\|co2 optimized\|outside temperature alt.\|outside temperature parallel\|heatpump preferred\|boiler only] (>=0<=0), ,true,select.heatpump_hybrid_control_strategy,select.heatpump_hybridstrategy,10,0,1,23,1 +"Hybrid Manager HM200",heatpump,248,lownoisemode,low noise mode,enum [off\|reduced output\|switch off hp\|perm. reduced] (>=0<=0), ,true,select.heatpump_low_noise_mode,select.heatpump_lownoisemode,10,0,1,24,1 +"Hybrid Manager HM200",heatpump,248,lownoisestart,low noise starttime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_starttime,number.heatpump_lownoisestart,10,0,1,25,1 +"Hybrid Manager HM200",heatpump,248,lownoisestop,low noise stoptime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_stoptime,number.heatpump_lownoisestop,10,0,1,26,1 "Hybrid Manager HM200",heatpump,248,dhw.hybriddhw,hybrid DHW,enum [eco\|high comfort] (>=0<=0), ,true,select.heatpump_dhw_hybrid_DHW,select.heatpump_dhw_hybriddhw,10,9,1,0,1 -"Hybrid Manager HM200",heatpump,248,energypricegas,energy price gas,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_gas,number.heatpump_energypricegas,10,0,1,23,1 -"Hybrid Manager HM200",heatpump,248,energypriceel,energy price electric,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_electric,number.heatpump_energypriceel,10,0,1,24,1 -"Hybrid Manager HM200",heatpump,248,energyfeedpv,feed in PV,uint8 (>=0<=0),ct/kWh,true,number.heatpump_feed_in_PV,number.heatpump_energyfeedpv,10,0,1,25,1 -"Hybrid Manager HM200",heatpump,248,switchovertemp,outside switchover temperature,int8 (>=0<=0),C,true,number.heatpump_outside_switchover_temperature,number.heatpump_switchovertemp,10,0,1,26,1 -"Hybrid Manager HM200",heatpump,248,airpurgemode,air purge mode,boolean (>=0<=0), ,true,switch.heatpump_air_purge_mode,switch.heatpump_airpurgemode,10,0,1,27,1 -"Hybrid Manager HM200",heatpump,248,heatpumpoutput,heatpump output,uint8 (>=0<=0),%,true,number.heatpump_heatpump_output,number.heatpump_heatpumpoutput,10,0,1,28,1 -"Hybrid Manager HM200",heatpump,248,coolingcircuit,cooling circuit,boolean (>=0<=0), ,true,switch.heatpump_cooling_circuit,switch.heatpump_coolingcircuit,10,0,1,29,1 -"Hybrid Manager HM200",heatpump,248,compstartmod,compressor start modulation,uint8 (>=0<=0),%,true,number.heatpump_compressor_start_modulation,number.heatpump_compstartmod,10,0,1,30,1 -"Hybrid Manager HM200",heatpump,248,heatdrainpan,heat drain pan,boolean (>=0<=0), ,true,switch.heatpump_heat_drain_pan,switch.heatpump_heatdrainpan,10,0,1,31,1 -"Hybrid Manager HM200",heatpump,248,heatcable,heating cable,boolean (>=0<=0), ,true,switch.heatpump_heating_cable,switch.heatpump_heatcable,10,0,1,32,1 -"Hybrid Manager HM200",heatpump,248,nrgtotal,total energy,uint24,kWh,false,sensor.heatpump_total_energy,sensor.heatpump_nrgtotal,10,0,1/100,33,2 +"Hybrid Manager HM200",heatpump,248,energypricegas,energy price gas,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_gas,number.heatpump_energypricegas,10,0,1,27,1 +"Hybrid Manager HM200",heatpump,248,energypriceel,energy price electric,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_electric,number.heatpump_energypriceel,10,0,1,28,1 +"Hybrid Manager HM200",heatpump,248,energyfeedpv,feed in PV,uint8 (>=0<=0),ct/kWh,true,number.heatpump_feed_in_PV,number.heatpump_energyfeedpv,10,0,1,29,1 +"Hybrid Manager HM200",heatpump,248,switchovertemp,outside switchover temperature,int8 (>=0<=0),C,true,number.heatpump_outside_switchover_temperature,number.heatpump_switchovertemp,10,0,1,30,1 +"Hybrid Manager HM200",heatpump,248,airpurgemode,air purge mode,boolean (>=0<=0), ,true,switch.heatpump_air_purge_mode,switch.heatpump_airpurgemode,10,0,1,31,1 +"Hybrid Manager HM200",heatpump,248,heatpumpoutput,heatpump output,uint8 (>=0<=0),%,true,number.heatpump_heatpump_output,number.heatpump_heatpumpoutput,10,0,1,32,1 +"Hybrid Manager HM200",heatpump,248,coolingcircuit,cooling circuit,boolean (>=0<=0), ,true,switch.heatpump_cooling_circuit,switch.heatpump_coolingcircuit,10,0,1,33,1 +"Hybrid Manager HM200",heatpump,248,compstartmod,compressor start modulation,uint8 (>=0<=0),%,true,number.heatpump_compressor_start_modulation,number.heatpump_compstartmod,10,0,1,34,1 +"Hybrid Manager HM200",heatpump,248,heatdrainpan,heat drain pan,boolean (>=0<=0), ,true,switch.heatpump_heat_drain_pan,switch.heatpump_heatdrainpan,10,0,1,35,1 +"Hybrid Manager HM200",heatpump,248,heatcable,heating cable,boolean (>=0<=0), ,true,switch.heatpump_heating_cable,switch.heatpump_heatcable,10,0,1,36,1 +"Hybrid Manager HM200",heatpump,248,nrgtotal,total energy,uint24,kWh,false,sensor.heatpump_total_energy,sensor.heatpump_nrgtotal,10,0,1/100,37,2 "Hybrid Manager HM200",heatpump,248,dhw.nrg,energy,uint24,kWh,false,sensor.heatpump_dhw_energy,sensor.heatpump_dhw_nrg,10,9,1/100,1,2 -"Hybrid Manager HM200",heatpump,248,nrgheat,energy heating,uint24,kWh,false,sensor.heatpump_energy_heating,sensor.heatpump_nrgheat,10,0,1/100,35,2 -"Hybrid Manager HM200",heatpump,248,metertotal,meter total,uint24,kWh,false,sensor.heatpump_meter_total,sensor.heatpump_metertotal,10,0,1/100,37,2 -"Hybrid Manager HM200",heatpump,248,metercomp,meter compressor,uint24,kWh,false,sensor.heatpump_meter_compressor,sensor.heatpump_metercomp,10,0,1/100,39,2 -"Hybrid Manager HM200",heatpump,248,metereheat,meter e-heater,uint24,kWh,false,sensor.heatpump_meter_e-heater,sensor.heatpump_metereheat,10,0,1/100,41,2 -"Hybrid Manager HM200",heatpump,248,meterheat,meter heating,uint24,kWh,false,sensor.heatpump_meter_heating,sensor.heatpump_meterheat,10,0,1/100,43,2 +"Hybrid Manager HM200",heatpump,248,nrgheat,energy heating,uint24,kWh,false,sensor.heatpump_energy_heating,sensor.heatpump_nrgheat,10,0,1/100,39,2 +"Hybrid Manager HM200",heatpump,248,metertotal,meter total,uint24,kWh,false,sensor.heatpump_meter_total,sensor.heatpump_metertotal,10,0,1/100,41,2 +"Hybrid Manager HM200",heatpump,248,metercomp,meter compressor,uint24,kWh,false,sensor.heatpump_meter_compressor,sensor.heatpump_metercomp,10,0,1/100,43,2 +"Hybrid Manager HM200",heatpump,248,metereheat,meter e-heater,uint24,kWh,false,sensor.heatpump_meter_e-heater,sensor.heatpump_metereheat,10,0,1/100,45,2 +"Hybrid Manager HM200",heatpump,248,meterheat,meter heating,uint24,kWh,false,sensor.heatpump_meter_heating,sensor.heatpump_meterheat,10,0,1/100,47,2 "Hybrid Manager HM200",heatpump,248,dhw.meter,meter,uint24,kWh,false,sensor.heatpump_dhw_meter,sensor.heatpump_dhw_meter,10,9,1/100,3,2 -"Hybrid Manager HM200",heatpump,248,heatingstarts,heating control starts,uint24, ,false,sensor.heatpump_heating_control_starts,sensor.heatpump_heatingstarts,10,0,1,45,2 +"Hybrid Manager HM200",heatpump,248,heatingstarts,heating control starts,uint24, ,false,sensor.heatpump_heating_control_starts,sensor.heatpump_heatingstarts,10,0,1,49,2 "Hybrid Manager HM200",heatpump,248,dhw.startshp,starts hp,uint24, ,false,sensor.heatpump_dhw_starts_hp,sensor.heatpump_dhw_startshp,10,9,1,5,2 -"Hybrid Manager HM200",heatpump,248,fuelheat,fuel consumption heating,uint32,kWh,false,sensor.heatpump_fuel_consumption_heating,sensor.heatpump_fuelheat,10,0,1/10,47,2 +"Hybrid Manager HM200",heatpump,248,fuelheat,fuel consumption heating,uint32,kWh,false,sensor.heatpump_fuel_consumption_heating,sensor.heatpump_fuelheat,10,0,1/10,51,2 "Hybrid Manager HM200",heatpump,248,dhw.fueldhw,fuel consumption,uint32,kWh,false,sensor.heatpump_dhw_fuel_consumption,sensor.heatpump_dhw_fueldhw,10,9,1/10,7,2 -"Hybrid Manager HM200",heatpump,248,elheat,el. consumption heating,uint32,kWh,false,sensor.heatpump_el._consumption_heating,sensor.heatpump_elheat,10,0,1/10,49,2 +"Hybrid Manager HM200",heatpump,248,elheat,el. consumption heating,uint32,kWh,false,sensor.heatpump_el._consumption_heating,sensor.heatpump_elheat,10,0,1/10,53,2 "Hybrid Manager HM200",heatpump,248,dhw.eldhw,el. consumption,uint32,kWh,false,sensor.heatpump_dhw_el._consumption,sensor.heatpump_dhw_eldhw,10,9,1/10,9,2 -"Hybrid Manager HM200",heatpump,248,elgenheat,el. generation heating,uint32,kWh,false,sensor.heatpump_el._generation_heating,sensor.heatpump_elgenheat,10,0,1/10,51,2 +"Hybrid Manager HM200",heatpump,248,elgenheat,el. generation heating,uint32,kWh,false,sensor.heatpump_el._generation_heating,sensor.heatpump_elgenheat,10,0,1/10,55,2 "Hybrid Manager HM200",heatpump,248,dhw.elgendhw,el generation,uint32,kWh,false,sensor.heatpump_dhw_el_generation,sensor.heatpump_dhw_elgendhw,10,9,1/10,11,2 "CSH5800iG",heatpump,16,airhumidity,relative air humidity,uint8,%,false,sensor.heatpump_relative_air_humidity,sensor.heatpump_airhumidity,10,0,1,0,1 "CSH5800iG",heatpump,16,dewtemperature,dew point temperature,uint8,C,false,sensor.heatpump_dew_point_temperature,sensor.heatpump_dewtemperature,10,0,1,1,1 @@ -5867,36 +5875,40 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CSH5800iG",heatpump,16,hpactivity,compressor activity,enum [off\|heating\|hot water\|defrost\|compressor alarm], ,false,sensor.heatpump_compressor_activity,sensor.heatpump_hpactivity,10,0,1,16,1 "CSH5800iG",heatpump,16,hppower,compressor power output,uint16,W,false,sensor.heatpump_compressor_power_output,sensor.heatpump_hppower,10,0,1,17,1 "CSH5800iG",heatpump,16,hpcurrpower,compressor current power,uint16,W,false,sensor.heatpump_compressor_current_power,sensor.heatpump_hpcurrpower,10,0,1,18,1 -"CSH5800iG",heatpump,16,hybridstrategy,hybrid control strategy,enum [cost optimized\|co2 optimized\|outside temperature alt.\|outside temperature parallel\|heatpump preferred\|boiler only] (>=0<=0), ,true,select.heatpump_hybrid_control_strategy,select.heatpump_hybridstrategy,10,0,1,19,1 -"CSH5800iG",heatpump,16,lownoisemode,low noise mode,enum [off\|reduced output\|switch off hp\|perm. reduced] (>=0<=0), ,true,select.heatpump_low_noise_mode,select.heatpump_lownoisemode,10,0,1,20,1 -"CSH5800iG",heatpump,16,lownoisestart,low noise starttime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_starttime,number.heatpump_lownoisestart,10,0,1,21,1 -"CSH5800iG",heatpump,16,lownoisestop,low noise stoptime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_stoptime,number.heatpump_lownoisestop,10,0,1,22,1 +"CSH5800iG",heatpump,16,hppumpflow,volume flow,uint16,l/h,false,sensor.heatpump_volume_flow,sensor.heatpump_hppumpflow,10,0,1/10,19,1 +"CSH5800iG",heatpump,16,hpcompspder1,compressor speed ER1,uint8,%,false,sensor.heatpump_compressor_speed_ER1,sensor.heatpump_hpcompspder1,10,0,1,20,1 +"CSH5800iG",heatpump,16,hpSpeedSetpoint,speed setpoint,uint8,%,false,sensor.heatpump_speed_setpoint,sensor.heatpump_hpSpeedSetpoint,10,0,1,21,1 +"CSH5800iG",heatpump,16,smartgridmode,smart grid mode,uint8, ,false,sensor.heatpump_smart_grid_mode,sensor.heatpump_smartgridmode,10,0,1,22,1 +"CSH5800iG",heatpump,16,hybridstrategy,hybrid control strategy,enum [cost optimized\|co2 optimized\|outside temperature alt.\|outside temperature parallel\|heatpump preferred\|boiler only] (>=0<=0), ,true,select.heatpump_hybrid_control_strategy,select.heatpump_hybridstrategy,10,0,1,23,1 +"CSH5800iG",heatpump,16,lownoisemode,low noise mode,enum [off\|reduced output\|switch off hp\|perm. reduced] (>=0<=0), ,true,select.heatpump_low_noise_mode,select.heatpump_lownoisemode,10,0,1,24,1 +"CSH5800iG",heatpump,16,lownoisestart,low noise starttime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_starttime,number.heatpump_lownoisestart,10,0,1,25,1 +"CSH5800iG",heatpump,16,lownoisestop,low noise stoptime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_stoptime,number.heatpump_lownoisestop,10,0,1,26,1 "CSH5800iG",heatpump,16,dhw.hybriddhw,hybrid DHW,enum [eco\|high comfort] (>=0<=0), ,true,select.heatpump_dhw_hybrid_DHW,select.heatpump_dhw_hybriddhw,10,9,1,0,1 -"CSH5800iG",heatpump,16,energypricegas,energy price gas,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_gas,number.heatpump_energypricegas,10,0,1,23,1 -"CSH5800iG",heatpump,16,energypriceel,energy price electric,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_electric,number.heatpump_energypriceel,10,0,1,24,1 -"CSH5800iG",heatpump,16,energyfeedpv,feed in PV,uint8 (>=0<=0),ct/kWh,true,number.heatpump_feed_in_PV,number.heatpump_energyfeedpv,10,0,1,25,1 -"CSH5800iG",heatpump,16,switchovertemp,outside switchover temperature,int8 (>=0<=0),C,true,number.heatpump_outside_switchover_temperature,number.heatpump_switchovertemp,10,0,1,26,1 -"CSH5800iG",heatpump,16,airpurgemode,air purge mode,boolean (>=0<=0), ,true,switch.heatpump_air_purge_mode,switch.heatpump_airpurgemode,10,0,1,27,1 -"CSH5800iG",heatpump,16,heatpumpoutput,heatpump output,uint8 (>=0<=0),%,true,number.heatpump_heatpump_output,number.heatpump_heatpumpoutput,10,0,1,28,1 -"CSH5800iG",heatpump,16,coolingcircuit,cooling circuit,boolean (>=0<=0), ,true,switch.heatpump_cooling_circuit,switch.heatpump_coolingcircuit,10,0,1,29,1 -"CSH5800iG",heatpump,16,compstartmod,compressor start modulation,uint8 (>=0<=0),%,true,number.heatpump_compressor_start_modulation,number.heatpump_compstartmod,10,0,1,30,1 -"CSH5800iG",heatpump,16,heatdrainpan,heat drain pan,boolean (>=0<=0), ,true,switch.heatpump_heat_drain_pan,switch.heatpump_heatdrainpan,10,0,1,31,1 -"CSH5800iG",heatpump,16,heatcable,heating cable,boolean (>=0<=0), ,true,switch.heatpump_heating_cable,switch.heatpump_heatcable,10,0,1,32,1 -"CSH5800iG",heatpump,16,nrgtotal,total energy,uint24,kWh,false,sensor.heatpump_total_energy,sensor.heatpump_nrgtotal,10,0,1/100,33,2 +"CSH5800iG",heatpump,16,energypricegas,energy price gas,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_gas,number.heatpump_energypricegas,10,0,1,27,1 +"CSH5800iG",heatpump,16,energypriceel,energy price electric,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_electric,number.heatpump_energypriceel,10,0,1,28,1 +"CSH5800iG",heatpump,16,energyfeedpv,feed in PV,uint8 (>=0<=0),ct/kWh,true,number.heatpump_feed_in_PV,number.heatpump_energyfeedpv,10,0,1,29,1 +"CSH5800iG",heatpump,16,switchovertemp,outside switchover temperature,int8 (>=0<=0),C,true,number.heatpump_outside_switchover_temperature,number.heatpump_switchovertemp,10,0,1,30,1 +"CSH5800iG",heatpump,16,airpurgemode,air purge mode,boolean (>=0<=0), ,true,switch.heatpump_air_purge_mode,switch.heatpump_airpurgemode,10,0,1,31,1 +"CSH5800iG",heatpump,16,heatpumpoutput,heatpump output,uint8 (>=0<=0),%,true,number.heatpump_heatpump_output,number.heatpump_heatpumpoutput,10,0,1,32,1 +"CSH5800iG",heatpump,16,coolingcircuit,cooling circuit,boolean (>=0<=0), ,true,switch.heatpump_cooling_circuit,switch.heatpump_coolingcircuit,10,0,1,33,1 +"CSH5800iG",heatpump,16,compstartmod,compressor start modulation,uint8 (>=0<=0),%,true,number.heatpump_compressor_start_modulation,number.heatpump_compstartmod,10,0,1,34,1 +"CSH5800iG",heatpump,16,heatdrainpan,heat drain pan,boolean (>=0<=0), ,true,switch.heatpump_heat_drain_pan,switch.heatpump_heatdrainpan,10,0,1,35,1 +"CSH5800iG",heatpump,16,heatcable,heating cable,boolean (>=0<=0), ,true,switch.heatpump_heating_cable,switch.heatpump_heatcable,10,0,1,36,1 +"CSH5800iG",heatpump,16,nrgtotal,total energy,uint24,kWh,false,sensor.heatpump_total_energy,sensor.heatpump_nrgtotal,10,0,1/100,37,2 "CSH5800iG",heatpump,16,dhw.nrg,energy,uint24,kWh,false,sensor.heatpump_dhw_energy,sensor.heatpump_dhw_nrg,10,9,1/100,1,2 -"CSH5800iG",heatpump,16,nrgheat,energy heating,uint24,kWh,false,sensor.heatpump_energy_heating,sensor.heatpump_nrgheat,10,0,1/100,35,2 -"CSH5800iG",heatpump,16,metertotal,meter total,uint24,kWh,false,sensor.heatpump_meter_total,sensor.heatpump_metertotal,10,0,1/100,37,2 -"CSH5800iG",heatpump,16,metercomp,meter compressor,uint24,kWh,false,sensor.heatpump_meter_compressor,sensor.heatpump_metercomp,10,0,1/100,39,2 -"CSH5800iG",heatpump,16,metereheat,meter e-heater,uint24,kWh,false,sensor.heatpump_meter_e-heater,sensor.heatpump_metereheat,10,0,1/100,41,2 -"CSH5800iG",heatpump,16,meterheat,meter heating,uint24,kWh,false,sensor.heatpump_meter_heating,sensor.heatpump_meterheat,10,0,1/100,43,2 +"CSH5800iG",heatpump,16,nrgheat,energy heating,uint24,kWh,false,sensor.heatpump_energy_heating,sensor.heatpump_nrgheat,10,0,1/100,39,2 +"CSH5800iG",heatpump,16,metertotal,meter total,uint24,kWh,false,sensor.heatpump_meter_total,sensor.heatpump_metertotal,10,0,1/100,41,2 +"CSH5800iG",heatpump,16,metercomp,meter compressor,uint24,kWh,false,sensor.heatpump_meter_compressor,sensor.heatpump_metercomp,10,0,1/100,43,2 +"CSH5800iG",heatpump,16,metereheat,meter e-heater,uint24,kWh,false,sensor.heatpump_meter_e-heater,sensor.heatpump_metereheat,10,0,1/100,45,2 +"CSH5800iG",heatpump,16,meterheat,meter heating,uint24,kWh,false,sensor.heatpump_meter_heating,sensor.heatpump_meterheat,10,0,1/100,47,2 "CSH5800iG",heatpump,16,dhw.meter,meter,uint24,kWh,false,sensor.heatpump_dhw_meter,sensor.heatpump_dhw_meter,10,9,1/100,3,2 -"CSH5800iG",heatpump,16,heatingstarts,heating control starts,uint24, ,false,sensor.heatpump_heating_control_starts,sensor.heatpump_heatingstarts,10,0,1,45,2 +"CSH5800iG",heatpump,16,heatingstarts,heating control starts,uint24, ,false,sensor.heatpump_heating_control_starts,sensor.heatpump_heatingstarts,10,0,1,49,2 "CSH5800iG",heatpump,16,dhw.startshp,starts hp,uint24, ,false,sensor.heatpump_dhw_starts_hp,sensor.heatpump_dhw_startshp,10,9,1,5,2 -"CSH5800iG",heatpump,16,fuelheat,fuel consumption heating,uint32,kWh,false,sensor.heatpump_fuel_consumption_heating,sensor.heatpump_fuelheat,10,0,1/10,47,2 +"CSH5800iG",heatpump,16,fuelheat,fuel consumption heating,uint32,kWh,false,sensor.heatpump_fuel_consumption_heating,sensor.heatpump_fuelheat,10,0,1/10,51,2 "CSH5800iG",heatpump,16,dhw.fueldhw,fuel consumption,uint32,kWh,false,sensor.heatpump_dhw_fuel_consumption,sensor.heatpump_dhw_fueldhw,10,9,1/10,7,2 -"CSH5800iG",heatpump,16,elheat,el. consumption heating,uint32,kWh,false,sensor.heatpump_el._consumption_heating,sensor.heatpump_elheat,10,0,1/10,49,2 +"CSH5800iG",heatpump,16,elheat,el. consumption heating,uint32,kWh,false,sensor.heatpump_el._consumption_heating,sensor.heatpump_elheat,10,0,1/10,53,2 "CSH5800iG",heatpump,16,dhw.eldhw,el. consumption,uint32,kWh,false,sensor.heatpump_dhw_el._consumption,sensor.heatpump_dhw_eldhw,10,9,1/10,9,2 -"CSH5800iG",heatpump,16,elgenheat,el. generation heating,uint32,kWh,false,sensor.heatpump_el._generation_heating,sensor.heatpump_elgenheat,10,0,1/10,51,2 +"CSH5800iG",heatpump,16,elgenheat,el. generation heating,uint32,kWh,false,sensor.heatpump_el._generation_heating,sensor.heatpump_elgenheat,10,0,1/10,55,2 "CSH5800iG",heatpump,16,dhw.elgendhw,el generation,uint32,kWh,false,sensor.heatpump_dhw_el_generation,sensor.heatpump_dhw_elgendhw,10,9,1/10,11,2 "WM10",switch,71,activated,activated,boolean, ,false,binary_sensor.switch_activated,binary_sensor.switch_activated,12,0,1,0,1 "WM10",switch,71,flowtemphc,flow temperature (TC1),uint16,C,false,sensor.switch_flow_temperature_(TC1),sensor.switch_flowtemphc,12,0,1/10,1,1 diff --git a/docs/dump_telegrams.csv b/docs/dump_telegrams.csv index 7a2652abf..5050e8fc0 100644 --- a/docs/dump_telegrams.csv +++ b/docs/dump_telegrams.csv @@ -29,7 +29,7 @@ telegram_type_id,name,is_fetched 0x3B,Energy, 0x3D,RC35Set, 0x3E,RC35Monitor, -0x3F,RC35Timer, +0x3F,RC30Timer, 0x40,RC30Temp, 0x41,RC30Monitor, 0x42,RC35Timer2, @@ -104,7 +104,7 @@ telegram_type_id,name,is_fetched 0x0292,HPMode,fetched 0x0293,HPMode,fetched 0x0294,HPMode,fetched -0x029B,RC300Curves,fetched +0x029B,RC300Curves, 0x029C,RC300Curves, 0x029D,RC300Curves, 0x029E,RC300Curves, @@ -112,10 +112,10 @@ telegram_type_id,name,is_fetched 0x02A0,RC300Curves, 0x02A1,RC300Curves, 0x02A2,RC300Curves, -0x02A5,RC300Monitor, +0x02A5,EasyMonitor, 0x02A6,RC300Monitor, 0x02A7,RC300Monitor, -0x02A8,RC300Monitor, +0x02A8,CRFMonitor, 0x02A9,RC300Monitor, 0x02AA,RC300Monitor, 0x02AB,RC300Monitor, @@ -232,4 +232,6 @@ telegram_type_id,name,is_fetched 0x099A,HPStarts, 0x099B,HPFlowTemp, 0x099C,HPComp, +0x099D,HPComp2, 0x09A0,HPTemperature, +0x09A8,HPVolume, diff --git a/src/core/locale_translations.h b/src/core/locale_translations.h index e21435991..ff57f7b87 100644 --- a/src/core/locale_translations.h +++ b/src/core/locale_translations.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 @@ -650,9 +650,13 @@ MAKE_TRANSLATION(powerReduction, "powerreduction", "power reduction", "Leistungs MAKE_TRANSLATION(fuelHeat, "fuelheat", "fuel consumption heating", "Verbrauch Heizen", "", "Bränsleförbrukning värme", "", "", "", "", "", "obmedzenie výkonu", "omezení výkonu") MAKE_TRANSLATION(fuelDhw, "fueldhw", "fuel consumption", "Verbrauch", "", "Bränsleförbrukning varmvatten", "", "", "", "", "", "spotreba paliva", "spotřeba paliva") MAKE_TRANSLATION(elHeat, "elheat", "el. consumption heating", "el. Verbrauch Heizen", "", "Elförbrukning värme", "", "", "", "", "", "el. spotreba kúrenie", "") -MAKE_TRANSLATION(elDhw, "eldhw", "el. consumption", "el. Verbrauch", "", "Elförbrukning varmvatten", "", "", "", "", "", "el. spotreba", "") +MAKE_TRANSLATION(elDhw, "eldhw", "el. consumption", "el. Verbrauch", "", "Elförbrukning varmvatten", "", "", "", "", "", "el. spotreba", "") MAKE_TRANSLATION(elGenHeat, "elgenheat", "el. generation heating", "el. Erzeugung Heizen", "", "Elgenerering värme", "", "", "", "", "", "el. generovanie kúrenia", "") MAKE_TRANSLATION(elGenDhw, "elgendhw", "el generation", "el. Erzeugung", "", "Elgenerering varmvatten", "", "", "", "", "", "el. generovanie", "") +MAKE_TRANSLATION(hpPumpFlow, "hppumpflow", "volume flow", "Volumenstrom", "", "Volumenstrom", "", "", "", "", "", "objemový průtok", "objemový průtok") +MAKE_TRANSLATION(hpCompSpdER1, "hpcompspder1", "compressor speed ER1", "Kompressordrehzahl ER1", "", "Kompressordrehzahl ER1", "", "", "", "", "", "otáčky kompresoru ER1", "otáčky kompresoru ER1") +MAKE_TRANSLATION(hpSpeedSetpoint, "hpSpeedSetpoint", "speed setpoint", "Geschwindigkeitsteller", "", "Geschwindigkeitsteller", "", "", "", "", "", "nastavená rychlost", "nastavená rychlost") +MAKE_TRANSLATION(smartGridMode, "smartgridmode", "smart grid mode", "Smart Grid Modus", "", "Smart Grid Modus", "", "", "", "", "", "smart grid modus", "smart grid modus") // HIU MAKE_TRANSLATION(netFlowTemp, "netflowtemp", "heat network flow temp", "Systemvorlauftemperatur", "Netto aanvoertemperatuur", "Temperatur fjärrvärmenät", "temp. zasilania sieci cieplnej", "", "", "ısıtma şebekesi akış derecesi", "temperatura di mandata della rete di riscaldamento", "teplota prívodu tepelnej siete", "teplota přívodu tepelné sítě") diff --git a/src/devices/heatpump.cpp b/src/devices/heatpump.cpp index db15b7df3..7d508bd39 100644 --- a/src/devices/heatpump.cpp +++ b/src/devices/heatpump.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 @@ -16,6 +16,30 @@ * along with this program. If not, see . */ +/* + + * Broadcast (0x099A), data: 05 00 00 00 00 00 00 37 00 00 1D 00 00 52 00 00 13 01 00 01 7C + * Broadcast (0x099B), data: 80 00 80 00 01 3C 01 38 80 00 80 00 80 00 01 37 00 00 00 00 64 + * Broadcast (0x099C), data: 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 76 00 00 + data: 00 2B 00 03 04 13 00 00 00 00 00 02 02 02 (offset 24) + * Broadcast (0x099D), data: 02 02 00 00 02 00 01 38 00 00 63 03 E8 00 00 00 00 + * Broadcast (0x099E), data: 03 + * Broadcast (0x099F), data 05 4E 20 00 00 00 00 02 00 01 34 00 00 3F 00 00 5C 00 01 DD 00 01 37 00 + data 00 3F 00 00 5D 00 00 57 00 02 23 00 01 3D 02 80 00 5A 01 86 01 68 00 00 C0 (offset 24) + data 00 00 00 00 (offset 49) + * Broadcast (0x09A0), data: 02 23 01 3E 01 39 00 5D 01 DE 01 38 00 40 00 5E 00 58 00 3F 01 34 00 02 + * Broadcast (0x09A2), data: 00 00 00 00 + * Broadcast (0x09A3), data: 01 01 01 00 0A 01 0A 00 00 00 00 00 00 01 01 00 00 (offset 2) + * Broadcast (0x09A4), data: 00 35 00 00 01 42 00 00 00 00 30 01 00 00 00 00 00 00 00 00 00 00 00 00 00 + data: 02 (offset 25) + * Broadcast (0x09A5), data: 00 00 00 00 00 00 00 00 0A 01 00 01 03 03 00 5A 00 00 00 00 00 00 00 00 14 + data: 00 00 00 (offset 25) + * Broadcast (0x09A6), data: 05 01 00 01 F4 1F 01 1F 01 01 03 00 3F 00 00 00 19 64 00 3C 00 01 01 19 + data: 02 EC 01 19 00 (offset 24) + * Broadcast (0x09A8), data: 01 18 01 00 01 17 00 06 00 00 86 06 00 2E 07 D0 00 00 00 45 00 04 + +*/ + #include "heatpump.h" namespace emsesp { @@ -26,8 +50,7 @@ Heatpump::Heatpump(uint8_t device_type, uint8_t device_id, uint8_t product_id, c : EMSdevice(device_type, device_id, product_id, version, name, flags, brand) { // telegram handlers // register_telegram_type(0x042B, "HP1", false, MAKE_PF_CB(process_HPMonitor1)); - register_telegram_type(0x047B, "HP2", false, MAKE_PF_CB(process_HPMonitor2)); - + register_telegram_type(0x47B, "HP2", false, MAKE_PF_CB(process_HPMonitor2)); register_telegram_type(0x998, "HPSettings", true, MAKE_PF_CB(process_HPSettings), 20); register_telegram_type(0x999, "HPFunctionTest", true, MAKE_PF_CB(process_HPFunctionTest), 11); register_telegram_type(0x9A0, "HPTemperature", false, MAKE_PF_CB(process_HPTemperature)); @@ -39,6 +62,9 @@ Heatpump::Heatpump(uint8_t device_type, uint8_t device_id, uint8_t product_id, c register_telegram_type(0x12E, "HPEnergy1", false, MAKE_PF_CB(process_HpEnergy1)); register_telegram_type(0x13B, "HPEnergy2", false, MAKE_PF_CB(process_HpEnergy2)); register_telegram_type(0x4AA, "HPPower", false, MAKE_PF_CB(process_HpPower)); + register_telegram_type(0x9A8, "HPVolume", false, MAKE_PF_CB(process_HPVolume)); + register_telegram_type(0x99D, "HPComp2", false, MAKE_PF_CB(process_HPComp2)); + register_telegram_type(0x4AA, "HPPower", false, MAKE_PF_CB(process_HpPower)); // device values register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &airHumidity_, DeviceValueType::UINT8, FL_(airHumidity), DeviceValueUOM::PERCENT); @@ -74,6 +100,17 @@ Heatpump::Heatpump(uint8_t device_type, uint8_t device_id, uint8_t product_id, c register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpPower_, DeviceValueType::UINT16, FL_(hpPower), DeviceValueUOM::W); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpCurrPower_, DeviceValueType::UINT16, FL_(hpCurrPower), DeviceValueUOM::W); + // https://github.com/emsesp/EMS-ESP32/issues/3196 + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &hpPumpFlow_, + DeviceValueType::UINT16, + DeviceValueNumOp::DV_NUMOP_DIV10, + FL_(hpPumpFlow), + DeviceValueUOM::LH); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpCompSpdER1_, DeviceValueType::UINT8, FL_(hpCompSpdER1), DeviceValueUOM::PERCENT); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpSpeedSetpoint_, DeviceValueType::UINT8, FL_(hpSpeedSetpoint), DeviceValueUOM::PERCENT); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &smartGridMode_, DeviceValueType::UINT8, FL_(smartGridMode), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &controlStrategy_, DeviceValueType::ENUM, @@ -220,16 +257,17 @@ void Heatpump::process_HPMonitor1(const std::shared_ptr & telegr // 0x09A0 // Heatpump(0x53) -> All(0x00), ?(0x09A0), data: 02 23 01 3E 01 39 00 5D 01 DE 01 38 00 40 00 5E 00 58 00 3F 01 34 00 02 void Heatpump::process_HPTemperature(const std::shared_ptr & telegram) { - has_update(telegram, hpTc3_, 2); // condenser temp. - has_update(telegram, hpTr1_, 8); // compressor temp. - has_update(telegram, hpTr3_, 10); // cond. temp. heating - has_update(telegram, hpTr4_, 12); // cond. temp. clg - has_update(telegram, hpTr5_, 14); // suction line temp. - has_update(telegram, hpTr6_, 0); // hot gas temp. - has_update(telegram, hpTl2_, 6); // inlet air temperature - has_update(telegram, hpTa4_, 16); // drain pan temp. - has_update(telegram, hpJr0_, 18); // low pressure sensor - has_update(telegram, hpJr1_, 20); // high pressure sensor + has_update(telegram, hpTc3_, 2); // condenser temp. + has_update(telegram, hpTr1_, 8); // compressor temp. + has_update(telegram, hpTr3_, 10); // cond. temp. heating + has_update(telegram, hpTr4_, 12); // cond. temp. clg + has_update(telegram, hpTr5_, 14); // suction line temp. + has_update(telegram, hpTr6_, 0); // hot gas temp. + has_update(telegram, hpTl2_, 6); // inlet air temperature + has_update(telegram, hpTa4_, 16); // drain pan temp. + has_update(telegram, hpJr0_, 18); // low pressure sensor + has_update(telegram, hpJr1_, 20); // high pressure sensor + has_update(telegram, hpCompSpdER1_, 22); // compressor speed ER1 } // 0x099B @@ -298,6 +336,7 @@ void Heatpump::process_HpStarts(const std::shared_ptr & telegram has_update(telegram, hpActivity_, 2); // https://github.com/emsesp/EMS-ESP32/issues/2883 has_update(telegram, heatStartsHp_, 11, 3); has_update(telegram, wwStartsHp_, 14, 3); + has_update(telegram, smartGridMode_, 17); // smart grid mode } // 0x0112E energy consumption @@ -320,28 +359,22 @@ void Heatpump::process_HpPower(const std::shared_ptr & telegram) has_update(telegram, hpCurrPower_, 0); } -/* - * Broadcast (0x099A), data: 05 00 00 00 00 00 00 37 00 00 1D 00 00 52 00 00 13 01 00 01 7C - * Broadcast (0x099B), data: 80 00 80 00 01 3C 01 38 80 00 80 00 80 00 01 37 00 00 00 00 64 - * Broadcast (0x099C), data: 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 76 00 00 - data: 00 2B 00 03 04 13 00 00 00 00 00 02 02 02 (offset 24) - * Broadcast (0x099D), data: 02 02 00 00 02 00 01 38 00 00 63 03 E8 00 00 00 00 - * Broadcast (0x099E), data: 03 - * Broadcast (0x099F), data 05 4E 20 00 00 00 00 02 00 01 34 00 00 3F 00 00 5C 00 01 DD 00 01 37 00 - data 00 3F 00 00 5D 00 00 57 00 02 23 00 01 3D 02 80 00 5A 01 86 01 68 00 00 C0 (offset 24) - data 00 00 00 00 (offset 49) - * Broadcast (0x09A0), data: 02 23 01 3E 01 39 00 5D 01 DE 01 38 00 40 00 5E 00 58 00 3F 01 34 00 02 - * Broadcast (0x09A2), data: 00 00 00 00 - * Broadcast (0x09A3), data: 01 01 01 00 0A 01 0A 00 00 00 00 00 00 01 01 00 00 (offset 2) - * Broadcast (0x09A4), data: 00 35 00 00 01 42 00 00 00 00 30 01 00 00 00 00 00 00 00 00 00 00 00 00 00 - data: 02 (offset 25) - * Broadcast (0x09A5), data: 00 00 00 00 00 00 00 00 0A 01 00 01 03 03 00 5A 00 00 00 00 00 00 00 00 14 - data: 00 00 00 (offset 25) - * Broadcast (0x09A6), data: 05 01 00 01 F4 1F 01 1F 01 01 03 00 3F 00 00 00 19 64 00 3C 00 01 01 19 - data: 02 EC 01 19 00 (offset 24) - * Broadcast (0x09A8), data: 01 18 01 00 01 17 00 06 00 00 86 06 00 2E 07 D0 00 00 00 45 00 04 - -*/ +// https://github.com/emsesp/EMS-ESP32/issues/3196 +// 0x09A8 HPVolume +// Broadcast (0x09A8), data: 01 18 01 00 01 17 00 06 00 00 86 06 00 2E 07 D0 00 00 00 45 00 04 +void Heatpump::process_HPVolume(const std::shared_ptr & telegram) { + has_update(telegram, hpPumpFlow_, 12); +} + +// 0x099D HPComp2 +// Broadcast (0x099D), data: 02 02 00 00 02 00 01 38 00 00 63 03 E8 00 00 00 00 +void Heatpump::process_HPComp2(const std::shared_ptr & telegram) { + has_update(telegram, hpSpeedSetpoint_, 8); +} + +// +// Setters +// bool Heatpump::set_controlStrategy(const char * value, const int8_t id) { uint8_t v; diff --git a/src/devices/heatpump.h b/src/devices/heatpump.h index bce29aaa1..8163facb1 100644 --- a/src/devices/heatpump.h +++ b/src/devices/heatpump.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 @@ -44,12 +44,16 @@ class Heatpump : public EMSdevice { uint8_t heatingPumpMod_; uint8_t hpCompSpd_; uint8_t hpActivity_; + uint8_t hpCompSpdER1_; // TODO: could be same as hpCompSpd_ ? uint16_t hpPower_; uint16_t hpCurrPower_; + uint16_t hpPumpFlow_; + uint8_t hpSpeedSetpoint_; // Function test uint8_t airPurgeMode_; + uint8_t smartGridMode_; uint8_t heatPumpOutput_; uint8_t coolingCircuit_; uint8_t compStartMod_; @@ -102,6 +106,8 @@ class Heatpump : public EMSdevice { void process_HpEnergy1(const std::shared_ptr & telegram); void process_HpEnergy2(const std::shared_ptr & telegram); void process_HpPower(const std::shared_ptr & telegram); + void process_HPVolume(const std::shared_ptr & telegram); + void process_HPComp2(const std::shared_ptr & telegram); bool set_controlStrategy(const char * value, const int8_t id); bool set_lowNoiseMode(const char * value, const int8_t id); diff --git a/src/emsesp_version.h b/src/emsesp_version.h index dd02903f5..a731a45b3 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.9.0-dev.14" +#define EMSESP_APP_VERSION "3.9.0-dev.15" -- 2.54.0 From fb8edfb6a71156754bbe5f77a22d2cbb7d339c5e Mon Sep 17 00:00:00 2001 From: proddy Date: Fri, 25 Sep 2026 08:44:57 +0200 Subject: [PATCH 012/148] change year 2025 to 2026 --- lib_standalone/ModuleLibrary.cpp | 2 +- lib_standalone/ModuleLibrary.h | 2 +- lib_standalone/emsuart_standalone.cpp | 2 +- lib_standalone/emsuart_standalone.h | 2 +- src/core/ModuleLibrary.cpp | 2 +- src/core/ModuleLibrary.h | 2 +- src/core/analogsensor.h | 2 +- src/core/command.cpp | 2 +- src/core/command.h | 2 +- src/core/console.cpp | 2 +- src/core/console.h | 2 +- src/core/default_settings.h | 2 +- src/core/device_library.h | 2 +- src/core/emsdevice.cpp | 2 +- src/core/emsdevice.h | 2 +- src/core/emsdevicevalue.cpp | 2 +- src/core/emsdevicevalue.h | 2 +- src/core/emsesp.cpp | 2 +- src/core/emsesp.h | 2 +- src/core/emsesp_common.h | 2 +- src/core/emsfactory.h | 2 +- src/core/helpers.cpp | 2 +- src/core/helpers.h | 2 +- src/core/led.cpp | 2 +- src/core/led.h | 8 ++--- src/core/littlefs_compat.cpp | 2 +- src/core/littlefs_compat.h | 2 +- src/core/locale_common.h | 2 +- src/core/main.cpp | 2 +- src/core/modbus_entity_parameters.hpp | 52 ++++++++++++++------------- src/core/mqtt.cpp | 2 +- src/core/mqtt.h | 4 +-- src/core/network.cpp | 2 +- src/core/network.h | 2 +- src/core/psram_async_json_response.h | 2 +- src/core/psram_json_allocator.h | 2 +- src/core/roomcontrol.cpp | 2 +- src/core/roomcontrol.h | 2 +- src/core/shower.cpp | 2 +- src/core/shower.h | 2 +- src/core/system.cpp | 2 +- src/core/system.h | 2 +- src/core/telegram.cpp | 2 +- src/core/telegram.h | 2 +- src/core/temperaturesensor.cpp | 2 +- src/core/temperaturesensor.h | 2 +- src/devices/alert.cpp | 2 +- src/devices/alert.h | 2 +- src/devices/boiler.cpp | 2 +- src/devices/boiler.h | 2 +- src/devices/connect.cpp | 2 +- src/devices/connect.h | 2 +- src/devices/controller.cpp | 2 +- src/devices/controller.h | 2 +- src/devices/extension.cpp | 2 +- src/devices/extension.h | 2 +- src/devices/gateway.cpp | 2 +- src/devices/gateway.h | 2 +- src/devices/generic.cpp | 2 +- src/devices/generic.h | 2 +- src/devices/heatsource.cpp | 2 +- src/devices/heatsource.h | 2 +- src/devices/mixer.cpp | 2 +- src/devices/mixer.h | 2 +- src/devices/solar.cpp | 2 +- src/devices/solar.h | 2 +- src/devices/switch.cpp | 2 +- src/devices/switch.h | 2 +- src/devices/thermostat.cpp | 2 +- src/devices/thermostat.h | 2 +- src/devices/ventilation.cpp | 2 +- src/devices/ventilation.h | 2 +- src/test/test.h | 2 +- src/uart/emsuart_esp32.cpp | 2 +- src/uart/emsuart_esp32.h | 2 +- src/web/WebAPIService.cpp | 2 +- src/web/WebAPIService.h | 2 +- src/web/WebActivityService.cpp | 2 +- src/web/WebActivityService.h | 2 +- src/web/WebCommandService.cpp | 2 +- src/web/WebCommandService.h | 2 +- src/web/WebCustomEntityService.cpp | 2 +- src/web/WebCustomEntityService.h | 2 +- src/web/WebCustomizationService.cpp | 2 +- src/web/WebCustomizationService.h | 2 +- src/web/WebDataService.cpp | 2 +- src/web/WebDataService.h | 2 +- src/web/WebLogService.cpp | 2 +- src/web/WebLogService.h | 2 +- src/web/WebModulesService.cpp | 2 +- src/web/WebModulesService.h | 2 +- src/web/WebSchedulerService.cpp | 2 +- src/web/WebSchedulerService.h | 2 +- src/web/WebSettingsService.cpp | 2 +- src/web/WebSettingsService.h | 2 +- src/web/WebStatusService.cpp | 2 +- test/test_api/test_api.cpp | 2 +- 97 files changed, 128 insertions(+), 124 deletions(-) diff --git a/lib_standalone/ModuleLibrary.cpp b/lib_standalone/ModuleLibrary.cpp index 1d0bff0ea..b3c66d345 100644 --- a/lib_standalone/ModuleLibrary.cpp +++ b/lib_standalone/ModuleLibrary.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/lib_standalone/ModuleLibrary.h b/lib_standalone/ModuleLibrary.h index e9d410a4d..491e15c6d 100644 --- a/lib_standalone/ModuleLibrary.h +++ b/lib_standalone/ModuleLibrary.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/lib_standalone/emsuart_standalone.cpp b/lib_standalone/emsuart_standalone.cpp index b10fededc..69efa149f 100644 --- a/lib_standalone/emsuart_standalone.cpp +++ b/lib_standalone/emsuart_standalone.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/lib_standalone/emsuart_standalone.h b/lib_standalone/emsuart_standalone.h index 2d576ae6b..e0d5b6643 100644 --- a/lib_standalone/emsuart_standalone.h +++ b/lib_standalone/emsuart_standalone.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/ModuleLibrary.cpp b/src/core/ModuleLibrary.cpp index 1d0bff0ea..b3c66d345 100644 --- a/src/core/ModuleLibrary.cpp +++ b/src/core/ModuleLibrary.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/ModuleLibrary.h b/src/core/ModuleLibrary.h index e9d410a4d..491e15c6d 100644 --- a/src/core/ModuleLibrary.h +++ b/src/core/ModuleLibrary.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/analogsensor.h b/src/core/analogsensor.h index b0020e7b9..ce3909953 100644 --- a/src/core/analogsensor.h +++ b/src/core/analogsensor.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/command.cpp b/src/core/command.cpp index f33044b7a..ff142b726 100644 --- a/src/core/command.cpp +++ b/src/core/command.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/command.h b/src/core/command.h index b135a59db..efc8ed6a4 100644 --- a/src/core/command.h +++ b/src/core/command.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/console.cpp b/src/core/console.cpp index 60ca00a20..da3ef8815 100644 --- a/src/core/console.cpp +++ b/src/core/console.cpp @@ -1,7 +1,7 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/console.h b/src/core/console.h index caee763ff..717bae23f 100644 --- a/src/core/console.h +++ b/src/core/console.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/default_settings.h b/src/core/default_settings.h index b423413db..fea89c2fc 100644 --- a/src/core/default_settings.h +++ b/src/core/default_settings.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/device_library.h b/src/core/device_library.h index ac108aa09..ac2229d09 100644 --- a/src/core/device_library.h +++ b/src/core/device_library.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/emsdevice.cpp b/src/core/emsdevice.cpp index dc4ecdd2c..3ca1a427a 100644 --- a/src/core/emsdevice.cpp +++ b/src/core/emsdevice.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/emsdevice.h b/src/core/emsdevice.h index 8b8c640fe..7b108c902 100644 --- a/src/core/emsdevice.h +++ b/src/core/emsdevice.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/emsdevicevalue.cpp b/src/core/emsdevicevalue.cpp index f1114135f..68ae0eaaa 100644 --- a/src/core/emsdevicevalue.cpp +++ b/src/core/emsdevicevalue.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/emsdevicevalue.h b/src/core/emsdevicevalue.h index dbc037e3e..11f534dba 100644 --- a/src/core/emsdevicevalue.h +++ b/src/core/emsdevicevalue.h @@ -1,7 +1,7 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/emsesp.cpp b/src/core/emsesp.cpp index c4767f9ac..6fecba8f9 100644 --- a/src/core/emsesp.cpp +++ b/src/core/emsesp.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/emsesp.h b/src/core/emsesp.h index 06382ba85..8d443bd03 100644 --- a/src/core/emsesp.h +++ b/src/core/emsesp.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/emsesp_common.h b/src/core/emsesp_common.h index 25955b184..dfd44be6e 100644 --- a/src/core/emsesp_common.h +++ b/src/core/emsesp_common.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/emsfactory.h b/src/core/emsfactory.h index 3be963be0..72da46200 100644 --- a/src/core/emsfactory.h +++ b/src/core/emsfactory.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/helpers.cpp b/src/core/helpers.cpp index 88d25bbe2..0faa6833a 100644 --- a/src/core/helpers.cpp +++ b/src/core/helpers.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/helpers.h b/src/core/helpers.h index cddc0c6a0..b74824526 100644 --- a/src/core/helpers.h +++ b/src/core/helpers.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/led.cpp b/src/core/led.cpp index e05756215..abf649756 100644 --- a/src/core/led.cpp +++ b/src/core/led.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/led.h b/src/core/led.h index ba9a2d6ed..8fd3f99c8 100644 --- a/src/core/led.h +++ b/src/core/led.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 @@ -79,9 +79,9 @@ class LED { static constexpr uint32_t HEALTHCHECK_LED_LONG_FAST_DURATION = 500; // 1/2 second between flash sequences static constexpr uint32_t HEALTHCHECK_LED_FLASH_DURATION = 150; // 150ms static constexpr uint32_t HEALTHCHECK_LED_FLASH_FAST_DURATION = 150; - static constexpr uint32_t LED_FLASH_INTERVAL_MS = 100; // LED toggle period during factory-reset flash - static constexpr uint8_t RGB_LED_BRIGHTNESS = 20; // 255 is max brightness - static constexpr uint8_t LED_ON = HIGH; // LED on + static constexpr uint32_t LED_FLASH_INTERVAL_MS = 100; // LED toggle period during factory-reset flash + static constexpr uint8_t RGB_LED_BRIGHTNESS = 20; // 255 is max brightness + static constexpr uint8_t LED_ON = HIGH; // LED on static constexpr Color COLOR_UNSET = static_cast(0xFF); // forces the next set_led() to write // led_fast_flash() state diff --git a/src/core/littlefs_compat.cpp b/src/core/littlefs_compat.cpp index 54985a53f..6a0b63071 100644 --- a/src/core/littlefs_compat.cpp +++ b/src/core/littlefs_compat.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/littlefs_compat.h b/src/core/littlefs_compat.h index 29df7ab03..69a08f0b1 100644 --- a/src/core/littlefs_compat.h +++ b/src/core/littlefs_compat.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/locale_common.h b/src/core/locale_common.h index 2974b708f..e3f4298b7 100644 --- a/src/core/locale_common.h +++ b/src/core/locale_common.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/main.cpp b/src/core/main.cpp index d6597b301..b7271ee31 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/modbus_entity_parameters.hpp b/src/core/modbus_entity_parameters.hpp index c32d0d947..e3fa4af6c 100644 --- a/src/core/modbus_entity_parameters.hpp +++ b/src/core/modbus_entity_parameters.hpp @@ -524,30 +524,34 @@ const std::initializer_list Modbus::modbus_register_ma REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(hpActivity), 16, 1), // hpactivity REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(hpPower), 17, 1), // hppower REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(hpCurrPower), 18, 1), // hpcurrpower - REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(hybridStrategy), 19, 1), // hybridstrategy - REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(lowNoiseMode), 20, 1), // lownoisemode - REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(lowNoiseStart), 21, 1), // lownoisestart - REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(lowNoiseStop), 22, 1), // lownoisestop - REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(energyPriceGas), 23, 1), // energypricegas - REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(energyPriceEl), 24, 1), // energypriceel - REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(energyPricePV), 25, 1), // energyfeedpv - REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(switchOverTemp), 26, 1), // switchovertemp - REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(airPurgeMode), 27, 1), // airpurgemode - REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(heatPumpOutput), 28, 1), // heatpumpoutput - REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(coolingCircuit), 29, 1), // coolingcircuit - REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(compStartMod), 30, 1), // compstartmod - REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(heatDrainPan), 31, 1), // heatdrainpan - REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(heatCable), 32, 1), // heatcable - REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(nrgTotal), 33, 2), // nrgtotal - REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(nrgHeat), 35, 2), // nrgheat - REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(meterTotal), 37, 2), // metertotal - REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(meterComp), 39, 2), // metercomp - REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(meterEHeat), 41, 2), // metereheat - REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(meterHeat), 43, 2), // meterheat - REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(heatingStarts), 45, 2), // heatingstarts - REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(fuelHeat), 47, 2), // fuelheat - REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(elHeat), 49, 2), // elheat - REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(elGenHeat), 51, 2), // elgenheat + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(hpPumpFlow), 19, 1), // hppumpflow + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(hpCompSpdER1), 20, 1), // hpcompspder1 + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(hpSpeedSetpoint), 21, 1), // hpSpeedSetpoint + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(smartGridMode), 22, 1), // smartgridmode + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(hybridStrategy), 23, 1), // hybridstrategy + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(lowNoiseMode), 24, 1), // lownoisemode + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(lowNoiseStart), 25, 1), // lownoisestart + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(lowNoiseStop), 26, 1), // lownoisestop + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(energyPriceGas), 27, 1), // energypricegas + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(energyPriceEl), 28, 1), // energypriceel + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(energyPricePV), 29, 1), // energyfeedpv + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(switchOverTemp), 30, 1), // switchovertemp + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(airPurgeMode), 31, 1), // airpurgemode + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(heatPumpOutput), 32, 1), // heatpumpoutput + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(coolingCircuit), 33, 1), // coolingcircuit + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(compStartMod), 34, 1), // compstartmod + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(heatDrainPan), 35, 1), // heatdrainpan + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(heatCable), 36, 1), // heatcable + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(nrgTotal), 37, 2), // nrgtotal + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(nrgHeat), 39, 2), // nrgheat + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(meterTotal), 41, 2), // metertotal + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(meterComp), 43, 2), // metercomp + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(meterEHeat), 45, 2), // metereheat + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(meterHeat), 47, 2), // meterheat + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(heatingStarts), 49, 2), // heatingstarts + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(fuelHeat), 51, 2), // fuelheat + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(elHeat), 53, 2), // elheat + REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(elGenHeat), 55, 2), // elgenheat REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DHW, FL_(hybridDHW), 0, 1), // hybriddhw REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DHW, FL_(nrgWw), 1, 2), // nrg REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DHW, FL_(meterWw), 3, 2), // meter diff --git a/src/core/mqtt.cpp b/src/core/mqtt.cpp index 25223c9d4..6ea9eb732 100644 --- a/src/core/mqtt.cpp +++ b/src/core/mqtt.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/mqtt.h b/src/core/mqtt.h index 5e8266030..a8d6503df 100644 --- a/src/core/mqtt.h +++ b/src/core/mqtt.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 @@ -61,7 +61,7 @@ class Mqtt { enum Operation : uint8_t { PUBLISH, SUBSCRIBE, UNSUBSCRIBE }; enum NestedFormat : uint8_t { NESTED = 1, SINGLE }; - static constexpr uint8_t MQTT_TOPIC_MAX_SIZE = 128; // fixed, not a user setting anymore + static constexpr uint8_t MQTT_TOPIC_MAX_SIZE = 128; // fixed, not a user setting anymore static constexpr uint16_t MQTT_QUEUE_MAX_SIZE = 300; static constexpr uint32_t MQTT_DISCONNECT_TIMEOUT = 1000; // max ms to flush a graceful disconnect on non-PSRAM boards static constexpr uint32_t MQTT_MIN_FREE_HEAP = 60 * 1024; // don't queue any MQTT message below this much free heap+PSRAM (in bytes) - 60 KB diff --git a/src/core/network.cpp b/src/core/network.cpp index f2e6e816f..235619916 100644 --- a/src/core/network.cpp +++ b/src/core/network.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/network.h b/src/core/network.h index a98e77357..6a9212102 100644 --- a/src/core/network.h +++ b/src/core/network.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/psram_async_json_response.h b/src/core/psram_async_json_response.h index ccd79b0c6..0d789bd54 100644 --- a/src/core/psram_async_json_response.h +++ b/src/core/psram_async_json_response.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/psram_json_allocator.h b/src/core/psram_json_allocator.h index 7469eaa91..a6b6a4b01 100644 --- a/src/core/psram_json_allocator.h +++ b/src/core/psram_json_allocator.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/roomcontrol.cpp b/src/core/roomcontrol.cpp index 91896c134..046f4154a 100644 --- a/src/core/roomcontrol.cpp +++ b/src/core/roomcontrol.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/roomcontrol.h b/src/core/roomcontrol.h index a64ec324c..e85f3b5c6 100644 --- a/src/core/roomcontrol.h +++ b/src/core/roomcontrol.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/shower.cpp b/src/core/shower.cpp index b12a961d9..3161cc46c 100644 --- a/src/core/shower.cpp +++ b/src/core/shower.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/shower.h b/src/core/shower.h index bc21cfcec..15a4b8264 100644 --- a/src/core/shower.h +++ b/src/core/shower.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/system.cpp b/src/core/system.cpp index 0283bb220..9fa085f59 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/system.h b/src/core/system.h index 056275afc..66b1c8fc0 100644 --- a/src/core/system.h +++ b/src/core/system.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/telegram.cpp b/src/core/telegram.cpp index 23dfc0efe..d1dafeea6 100644 --- a/src/core/telegram.cpp +++ b/src/core/telegram.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/telegram.h b/src/core/telegram.h index 7ebe90f07..a5472d945 100644 --- a/src/core/telegram.h +++ b/src/core/telegram.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/temperaturesensor.cpp b/src/core/temperaturesensor.cpp index aa812cf18..d7d124566 100644 --- a/src/core/temperaturesensor.cpp +++ b/src/core/temperaturesensor.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/core/temperaturesensor.h b/src/core/temperaturesensor.h index 1dd60f0d2..1b9ebe23a 100644 --- a/src/core/temperaturesensor.h +++ b/src/core/temperaturesensor.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/devices/alert.cpp b/src/devices/alert.cpp index 5d71579c6..d1556458d 100644 --- a/src/devices/alert.cpp +++ b/src/devices/alert.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/devices/alert.h b/src/devices/alert.h index 1d3cfa3fd..a260a2d22 100644 --- a/src/devices/alert.h +++ b/src/devices/alert.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 3674fe671..ba277416e 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/devices/boiler.h b/src/devices/boiler.h index def09a99c..52bd25d12 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/devices/connect.cpp b/src/devices/connect.cpp index 99a07a8c6..9628d54a0 100644 --- a/src/devices/connect.cpp +++ b/src/devices/connect.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/devices/connect.h b/src/devices/connect.h index 144e278b3..a952e9090 100644 --- a/src/devices/connect.h +++ b/src/devices/connect.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/devices/controller.cpp b/src/devices/controller.cpp index 5e782ae6f..1b2227bc0 100644 --- a/src/devices/controller.cpp +++ b/src/devices/controller.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/devices/controller.h b/src/devices/controller.h index 574591d6a..776dab271 100644 --- a/src/devices/controller.h +++ b/src/devices/controller.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/devices/extension.cpp b/src/devices/extension.cpp index 5e8907149..17b8bda67 100644 --- a/src/devices/extension.cpp +++ b/src/devices/extension.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/devices/extension.h b/src/devices/extension.h index 25de1f466..f4c4b4f0b 100644 --- a/src/devices/extension.h +++ b/src/devices/extension.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/devices/gateway.cpp b/src/devices/gateway.cpp index 2e00e66fd..4842e2349 100644 --- a/src/devices/gateway.cpp +++ b/src/devices/gateway.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/devices/gateway.h b/src/devices/gateway.h index e120e7ee6..56fbf7efe 100644 --- a/src/devices/gateway.h +++ b/src/devices/gateway.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/devices/generic.cpp b/src/devices/generic.cpp index c05bbed63..424412310 100644 --- a/src/devices/generic.cpp +++ b/src/devices/generic.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/devices/generic.h b/src/devices/generic.h index affedbd7e..17675cac0 100644 --- a/src/devices/generic.h +++ b/src/devices/generic.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/devices/heatsource.cpp b/src/devices/heatsource.cpp index ff0f772fe..77f558ca1 100644 --- a/src/devices/heatsource.cpp +++ b/src/devices/heatsource.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/devices/heatsource.h b/src/devices/heatsource.h index ed002e56b..b55282fd1 100644 --- a/src/devices/heatsource.h +++ b/src/devices/heatsource.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/devices/mixer.cpp b/src/devices/mixer.cpp index dc711a0d2..22ff972ac 100644 --- a/src/devices/mixer.cpp +++ b/src/devices/mixer.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/devices/mixer.h b/src/devices/mixer.h index ef9f834d9..80f9e3fc1 100644 --- a/src/devices/mixer.h +++ b/src/devices/mixer.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/devices/solar.cpp b/src/devices/solar.cpp index 715e27ef4..f2555dfab 100644 --- a/src/devices/solar.cpp +++ b/src/devices/solar.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/devices/solar.h b/src/devices/solar.h index a60484c73..34cac072c 100644 --- a/src/devices/solar.h +++ b/src/devices/solar.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/devices/switch.cpp b/src/devices/switch.cpp index 4a83a7feb..8f0bb77f1 100644 --- a/src/devices/switch.cpp +++ b/src/devices/switch.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/devices/switch.h b/src/devices/switch.h index 6851d7949..13e91de8c 100644 --- a/src/devices/switch.h +++ b/src/devices/switch.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index f5296a056..d2d4004ac 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index 736af1eb1..b80957998 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/devices/ventilation.cpp b/src/devices/ventilation.cpp index 2a2d00ad5..2dbff72e4 100644 --- a/src/devices/ventilation.cpp +++ b/src/devices/ventilation.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/devices/ventilation.h b/src/devices/ventilation.h index 7c31dc7b1..2b0b65ecd 100644 --- a/src/devices/ventilation.h +++ b/src/devices/ventilation.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/test/test.h b/src/test/test.h index 4d44962e8..995118a6f 100644 --- a/src/test/test.h +++ b/src/test/test.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/uart/emsuart_esp32.cpp b/src/uart/emsuart_esp32.cpp index a2000a149..74a9398cc 100644 --- a/src/uart/emsuart_esp32.cpp +++ b/src/uart/emsuart_esp32.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/uart/emsuart_esp32.h b/src/uart/emsuart_esp32.h index 816a216a4..f76e23af5 100644 --- a/src/uart/emsuart_esp32.h +++ b/src/uart/emsuart_esp32.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/web/WebAPIService.cpp b/src/web/WebAPIService.cpp index f9a4f654b..7b74b64a1 100644 --- a/src/web/WebAPIService.cpp +++ b/src/web/WebAPIService.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/web/WebAPIService.h b/src/web/WebAPIService.h index 7c71ac595..b2c65041a 100644 --- a/src/web/WebAPIService.h +++ b/src/web/WebAPIService.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/web/WebActivityService.cpp b/src/web/WebActivityService.cpp index bde0c1f53..09e12f5af 100644 --- a/src/web/WebActivityService.cpp +++ b/src/web/WebActivityService.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/web/WebActivityService.h b/src/web/WebActivityService.h index 224bd1fb4..8cc6658de 100644 --- a/src/web/WebActivityService.h +++ b/src/web/WebActivityService.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/web/WebCommandService.cpp b/src/web/WebCommandService.cpp index 646a56764..62b6610d5 100644 --- a/src/web/WebCommandService.cpp +++ b/src/web/WebCommandService.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/web/WebCommandService.h b/src/web/WebCommandService.h index c4a8cefc0..f35654aca 100644 --- a/src/web/WebCommandService.h +++ b/src/web/WebCommandService.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/web/WebCustomEntityService.cpp b/src/web/WebCustomEntityService.cpp index 4f9512fcb..227a28253 100644 --- a/src/web/WebCustomEntityService.cpp +++ b/src/web/WebCustomEntityService.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/web/WebCustomEntityService.h b/src/web/WebCustomEntityService.h index e93d963d4..ae111034d 100644 --- a/src/web/WebCustomEntityService.h +++ b/src/web/WebCustomEntityService.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/web/WebCustomizationService.cpp b/src/web/WebCustomizationService.cpp index daa02ae79..e06871920 100644 --- a/src/web/WebCustomizationService.cpp +++ b/src/web/WebCustomizationService.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/web/WebCustomizationService.h b/src/web/WebCustomizationService.h index e8aab9c0f..50e6fe640 100644 --- a/src/web/WebCustomizationService.h +++ b/src/web/WebCustomizationService.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/web/WebDataService.cpp b/src/web/WebDataService.cpp index 36c82814c..85d58858b 100644 --- a/src/web/WebDataService.cpp +++ b/src/web/WebDataService.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/web/WebDataService.h b/src/web/WebDataService.h index 99c55f28f..c4dca4539 100644 --- a/src/web/WebDataService.h +++ b/src/web/WebDataService.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/web/WebLogService.cpp b/src/web/WebLogService.cpp index 007ce3c70..d40d2f143 100644 --- a/src/web/WebLogService.cpp +++ b/src/web/WebLogService.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/web/WebLogService.h b/src/web/WebLogService.h index 42fa884f1..413a9f2ae 100644 --- a/src/web/WebLogService.h +++ b/src/web/WebLogService.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/web/WebModulesService.cpp b/src/web/WebModulesService.cpp index ce79750f8..78e866d56 100644 --- a/src/web/WebModulesService.cpp +++ b/src/web/WebModulesService.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/web/WebModulesService.h b/src/web/WebModulesService.h index 4fdc2302d..9ba06be85 100644 --- a/src/web/WebModulesService.h +++ b/src/web/WebModulesService.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/web/WebSchedulerService.cpp b/src/web/WebSchedulerService.cpp index f7dcc1e85..b6c2b7b13 100644 --- a/src/web/WebSchedulerService.cpp +++ b/src/web/WebSchedulerService.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/web/WebSchedulerService.h b/src/web/WebSchedulerService.h index 299ddd2fa..4e04b0e7b 100644 --- a/src/web/WebSchedulerService.h +++ b/src/web/WebSchedulerService.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/web/WebSettingsService.cpp b/src/web/WebSettingsService.cpp index 6787a7148..6a4e099f0 100644 --- a/src/web/WebSettingsService.cpp +++ b/src/web/WebSettingsService.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/web/WebSettingsService.h b/src/web/WebSettingsService.h index a042040ce..8a07552b3 100644 --- a/src/web/WebSettingsService.h +++ b/src/web/WebSettingsService.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/src/web/WebStatusService.cpp b/src/web/WebStatusService.cpp index 9c17e0296..642d84a52 100644 --- a/src/web/WebStatusService.cpp +++ b/src/web/WebStatusService.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 diff --git a/test/test_api/test_api.cpp b/test/test_api/test_api.cpp index ce1a62aef..f5a69080c 100644 --- a/test/test_api/test_api.cpp +++ b/test/test_api/test_api.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * 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 -- 2.54.0 From a2f8f35285180f976f61a91bc779eae11706f771 Mon Sep 17 00:00:00 2001 From: proddy Date: Fri, 25 Sep 2026 16:24:25 +0200 Subject: [PATCH 013/148] remove void last bit --- src/core/system.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/system.cpp b/src/core/system.cpp index 9fa085f59..3d24b4f61 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -3129,8 +3129,8 @@ String System::getBBQKeesGatewayDetails([[maybe_unused]] uint8_t detail) { } const char * mfg[] = {"unknown", "BBQKees Electronics", "", "", "", "", "", ""}; - const char * model[] = {"unknown", "S3", "E32V2", "E32V2.2", "S32", "E32", "", "", ""}; - const char * board[] = {"CUSTOM", "S32S3", "E32V2", "E32V2_2", "S32", "E32", "", "", ""}; + const char * model[] = {"unknown", "S3", "E32V2", "E32V2.2", "S32", "E32", "", ""}; + const char * board[] = {"CUSTOM", "S32S3", "E32V2", "E32V2_2", "S32", "E32", "", ""}; switch (detail) { case FUSE_VALUE::MFG: -- 2.54.0 From e5456293aae06a16033c0ec4bc27276d412f2ea0 Mon Sep 17 00:00:00 2001 From: proddy Date: Fri, 25 Sep 2026 16:24:48 +0200 Subject: [PATCH 014/148] #3196 - heatingpumpflow fix --- src/devices/heatpump.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/devices/heatpump.cpp b/src/devices/heatpump.cpp index 7d508bd39..6abe6918e 100644 --- a/src/devices/heatpump.cpp +++ b/src/devices/heatpump.cpp @@ -104,7 +104,7 @@ Heatpump::Heatpump(uint8_t device_type, uint8_t device_id, uint8_t product_id, c register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpPumpFlow_, DeviceValueType::UINT16, - DeviceValueNumOp::DV_NUMOP_DIV10, + DeviceValueNumOp::DV_NUMOP_MUL10, FL_(hpPumpFlow), DeviceValueUOM::LH); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpCompSpdER1_, DeviceValueType::UINT8, FL_(hpCompSpdER1), DeviceValueUOM::PERCENT); -- 2.54.0 From 8c496d8f771d60caf17113e7747f0286c82c1693 Mon Sep 17 00:00:00 2001 From: proddy <1230712+proddy@users.noreply.github.com> Date: Fri, 25 Sep 2026 14:42:39 +0000 Subject: [PATCH 015/148] chore: update generated files for v3.9.0-dev.15 --- docs/Modbus-Entity-Registers.md | 6 +++--- docs/dump_entities.csv | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/Modbus-Entity-Registers.md b/docs/Modbus-Entity-Registers.md index 7fef0a051..6609d7ebe 100644 --- a/docs/Modbus-Entity-Registers.md +++ b/docs/Modbus-Entity-Registers.md @@ -8024,7 +8024,7 @@ int8 | hpactivity | compressor activity | enum | | false | DEVICE_DATA | 16 | 1 | 1 | | hppower | compressor power output | uint16 | W | false | DEVICE_DATA | 17 | 1 | 1 | | hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 18 | 1 | 1 | -| hppumpflow | volume flow | uint16 | l/h | false | DEVICE_DATA | 19 | 1 | 1/10 | +| hppumpflow | volume flow | uint16 | l/h | false | DEVICE_DATA | 19 | 1 | 10 | | hpcompspder1 | compressor speed ER1 | uint8 | % | false | DEVICE_DATA | 20 | 1 | 1 | | hpSpeedSetpoint | speed setpoint | uint8 | % | false | DEVICE_DATA | 21 | 1 | 1 | | smartgridmode | smart grid mode | uint8 | | false | DEVICE_DATA | 22 | 1 | 1 | @@ -8091,7 +8091,7 @@ uint8 | hpactivity | compressor activity | enum | | false | DEVICE_DATA | 16 | 1 | 1 | | hppower | compressor power output | uint16 | W | false | DEVICE_DATA | 17 | 1 | 1 | | hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 18 | 1 | 1 | -| hppumpflow | volume flow | uint16 | l/h | false | DEVICE_DATA | 19 | 1 | 1/10 | +| hppumpflow | volume flow | uint16 | l/h | false | DEVICE_DATA | 19 | 1 | 10 | | hpcompspder1 | compressor speed ER1 | uint8 | % | false | DEVICE_DATA | 20 | 1 | 1 | | hpSpeedSetpoint | speed setpoint | uint8 | % | false | DEVICE_DATA | 21 | 1 | 1 | | smartgridmode | smart grid mode | uint8 | | false | DEVICE_DATA | 22 | 1 | 1 | @@ -8158,7 +8158,7 @@ uint8 | hpactivity | compressor activity | enum | | false | DEVICE_DATA | 16 | 1 | 1 | | hppower | compressor power output | uint16 | W | false | DEVICE_DATA | 17 | 1 | 1 | | hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 18 | 1 | 1 | -| hppumpflow | volume flow | uint16 | l/h | false | DEVICE_DATA | 19 | 1 | 1/10 | +| hppumpflow | volume flow | uint16 | l/h | false | DEVICE_DATA | 19 | 1 | 10 | | hpcompspder1 | compressor speed ER1 | uint8 | % | false | DEVICE_DATA | 20 | 1 | 1 | | hpSpeedSetpoint | speed setpoint | uint8 | % | false | DEVICE_DATA | 21 | 1 | 1 | | smartgridmode | smart grid mode | uint8 | | false | DEVICE_DATA | 22 | 1 | 1 | diff --git a/docs/dump_entities.csv b/docs/dump_entities.csv index cc0601e50..f564ad6d1 100644 --- a/docs/dump_entities.csv +++ b/docs/dump_entities.csv @@ -5767,7 +5767,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "HP Module",heatpump,252,hpactivity,compressor activity,enum [off\|heating\|hot water\|defrost\|compressor alarm], ,false,sensor.heatpump_compressor_activity,sensor.heatpump_hpactivity,10,0,1,16,1 "HP Module",heatpump,252,hppower,compressor power output,uint16,W,false,sensor.heatpump_compressor_power_output,sensor.heatpump_hppower,10,0,1,17,1 "HP Module",heatpump,252,hpcurrpower,compressor current power,uint16,W,false,sensor.heatpump_compressor_current_power,sensor.heatpump_hpcurrpower,10,0,1,18,1 -"HP Module",heatpump,252,hppumpflow,volume flow,uint16,l/h,false,sensor.heatpump_volume_flow,sensor.heatpump_hppumpflow,10,0,1/10,19,1 +"HP Module",heatpump,252,hppumpflow,volume flow,uint16,l/h,false,sensor.heatpump_volume_flow,sensor.heatpump_hppumpflow,10,0,10,19,1 "HP Module",heatpump,252,hpcompspder1,compressor speed ER1,uint8,%,false,sensor.heatpump_compressor_speed_ER1,sensor.heatpump_hpcompspder1,10,0,1,20,1 "HP Module",heatpump,252,hpSpeedSetpoint,speed setpoint,uint8,%,false,sensor.heatpump_speed_setpoint,sensor.heatpump_hpSpeedSetpoint,10,0,1,21,1 "HP Module",heatpump,252,smartgridmode,smart grid mode,uint8, ,false,sensor.heatpump_smart_grid_mode,sensor.heatpump_smartgridmode,10,0,1,22,1 @@ -5821,7 +5821,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Hybrid Manager HM200",heatpump,248,hpactivity,compressor activity,enum [off\|heating\|hot water\|defrost\|compressor alarm], ,false,sensor.heatpump_compressor_activity,sensor.heatpump_hpactivity,10,0,1,16,1 "Hybrid Manager HM200",heatpump,248,hppower,compressor power output,uint16,W,false,sensor.heatpump_compressor_power_output,sensor.heatpump_hppower,10,0,1,17,1 "Hybrid Manager HM200",heatpump,248,hpcurrpower,compressor current power,uint16,W,false,sensor.heatpump_compressor_current_power,sensor.heatpump_hpcurrpower,10,0,1,18,1 -"Hybrid Manager HM200",heatpump,248,hppumpflow,volume flow,uint16,l/h,false,sensor.heatpump_volume_flow,sensor.heatpump_hppumpflow,10,0,1/10,19,1 +"Hybrid Manager HM200",heatpump,248,hppumpflow,volume flow,uint16,l/h,false,sensor.heatpump_volume_flow,sensor.heatpump_hppumpflow,10,0,10,19,1 "Hybrid Manager HM200",heatpump,248,hpcompspder1,compressor speed ER1,uint8,%,false,sensor.heatpump_compressor_speed_ER1,sensor.heatpump_hpcompspder1,10,0,1,20,1 "Hybrid Manager HM200",heatpump,248,hpSpeedSetpoint,speed setpoint,uint8,%,false,sensor.heatpump_speed_setpoint,sensor.heatpump_hpSpeedSetpoint,10,0,1,21,1 "Hybrid Manager HM200",heatpump,248,smartgridmode,smart grid mode,uint8, ,false,sensor.heatpump_smart_grid_mode,sensor.heatpump_smartgridmode,10,0,1,22,1 @@ -5875,7 +5875,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CSH5800iG",heatpump,16,hpactivity,compressor activity,enum [off\|heating\|hot water\|defrost\|compressor alarm], ,false,sensor.heatpump_compressor_activity,sensor.heatpump_hpactivity,10,0,1,16,1 "CSH5800iG",heatpump,16,hppower,compressor power output,uint16,W,false,sensor.heatpump_compressor_power_output,sensor.heatpump_hppower,10,0,1,17,1 "CSH5800iG",heatpump,16,hpcurrpower,compressor current power,uint16,W,false,sensor.heatpump_compressor_current_power,sensor.heatpump_hpcurrpower,10,0,1,18,1 -"CSH5800iG",heatpump,16,hppumpflow,volume flow,uint16,l/h,false,sensor.heatpump_volume_flow,sensor.heatpump_hppumpflow,10,0,1/10,19,1 +"CSH5800iG",heatpump,16,hppumpflow,volume flow,uint16,l/h,false,sensor.heatpump_volume_flow,sensor.heatpump_hppumpflow,10,0,10,19,1 "CSH5800iG",heatpump,16,hpcompspder1,compressor speed ER1,uint8,%,false,sensor.heatpump_compressor_speed_ER1,sensor.heatpump_hpcompspder1,10,0,1,20,1 "CSH5800iG",heatpump,16,hpSpeedSetpoint,speed setpoint,uint8,%,false,sensor.heatpump_speed_setpoint,sensor.heatpump_hpSpeedSetpoint,10,0,1,21,1 "CSH5800iG",heatpump,16,smartgridmode,smart grid mode,uint8, ,false,sensor.heatpump_smart_grid_mode,sensor.heatpump_smartgridmode,10,0,1,22,1 -- 2.54.0 From 8cdd9f5d79ae9b4ec425413972f2250aac642099 Mon Sep 17 00:00:00 2001 From: Bingo2023 Date: Fri, 25 Sep 2026 18:29:02 +0200 Subject: [PATCH 016/148] rename pool translations to MP100 block, shorter names - block comment `// mixer pool` -> `// MP100 pool module`, hydrTemp moved to `// water` - `poolpump` -> `poolrequest` (pool request, MP100 input contacts) - shorter en/de texts: pool setpoint / Pool Soll, valve status / Ventil Status, valve actual / Ventil Ist, valve setpoint / Ventil Soll - existing short names (poolsettemp, pooltemp, poolshuntstatus, poolshunt) unchanged Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_013YrkDbvxEv3ZMS7SPSKCGd --- CHANGELOG_LATEST.md | 2 +- src/core/locale_translations.h | 14 ++++++++------ src/devices/pool.cpp | 12 ++++++------ src/devices/pool.h | 2 +- src/test/test.cpp | 2 +- 5 files changed, 17 insertions(+), 15 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index e6dc410ba..392d40af8 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -19,7 +19,7 @@ This release is based on the latest Espressif/Arduino core version 3. It brings - `show system` reports the Ethernet status on boards with a PHY, so a failed initialisation or a link that never came up is visible instead of Ethernet being omitted completely. Also shows the loop task's lowest free stack, to help diagnose reboots - new Application Setting "Automatically check for firmware updates", off by default. When enabled EMS-ESP asks emsesp.org for the latest version once a day on its own, otherwise it only asks when the WebUI wants to show it, so an unattended system never contacts emsesp.org - Automatically check and convert older 3.8.x filesystem to the new 3.9.0 format -- heatpump pool: `poolon` (switch, 0x48A), `hppoolon` (pool heating active, 0x488), MP100 `poolshuntset` (0x5C4) and `poolpump` (0x5BA) +- heatpump pool: `poolon` (switch, 0x48A), `hppoolon` (pool heating active, 0x488), MP100 `poolshuntset` (0x5C4) and `poolrequest` (0x5BA), shorter pool names ## Fixed diff --git a/src/core/locale_translations.h b/src/core/locale_translations.h index 14a25bd0c..f1a88489d 100644 --- a/src/core/locale_translations.h +++ b/src/core/locale_translations.h @@ -855,14 +855,16 @@ MAKE_TRANSLATION(flowTempVf, "flowtempvf", "flow temperature in header (T0/Vf)", MAKE_TRANSLATION(mixerSetTime, "valvesettime", "time to set valve", "Zeit zum einstellen des Ventils", "Inschakeltijd mengklep", "Inställningstid Shuntventil", "czas na ustawienie zaworu", "instillningstid ventil", "délai activation vanne", "vana ayar zamanı", "ritardo attivazione valvola", "čas na nastavenie ventilu", "čas pro nastavení ventilu") MAKE_TRANSLATION(setDiffPress, "setdiffpress", "set differential pressure", "Pumpensolldruck", "", "Tryckskillnad", "różnica ciśnień", "", "", "", "", "nastaviť diferenčný tlak", "nastavení rozdílového tlaku") -// mixer pool +// MP100 pool module MAKE_TRANSLATION(poolOn, "poolon", "pool on", "Pool ein") -MAKE_TRANSLATION(poolSetTemp, "poolsettemp", "pool set temperature", "Sollwert Pooltemperatur", "Streeftemperatuur zwembad", "Pool Temperatur Börvärde", "zadana temperatura basenu", "valgt temp basseng", "température consigne piscine", "hedef havuz sıcaklığı", "temperatura nominale piscina", "nastavená teplota bazéna", "cílová teplota bazénu") +MAKE_TRANSLATION(poolSetTemp, "poolsettemp", "pool setpoint", "Pool Soll", "Streeftemperatuur zwembad", "Pool Temperatur Börvärde", "zadana temperatura basenu", "valgt temp basseng", "température consigne piscine", "hedef havuz sıcaklığı", "temperatura nominale piscina", "nastavená teplota bazéna", "cílová teplota bazénu") MAKE_TRANSLATION(poolTemp, "pooltemp", "pool temperature", "Pooltemperatur", "Zwembadtemperatuur", "Pooltemperatur", "temperatura basenu", "bassengtemperatur", "température piscine", "havuz sıcaklığı", "temperatura piscina", "teplota bazéna", "teplota bazénu") -MAKE_TRANSLATION(poolShuntStatus, "poolshuntstatus", "pool shunt status opening/closing", "Poolventil öffnen/schließen", "Zwembadklep status openen/sluiten", "Pool Shunt-status öppen/stängd", "status bocznika basenu", "bassengshunt-status åpen/stengt", "état shunt piscine ouvert/fermé", "havuz şant durumu açılıyor/kapanıyor", "aprire/chiudere valvola regolazione piscina", "stav bazénového bočníka otváranie/zatváranie", "stav šoupátka bazénu (otevírání/zavírání)") -MAKE_TRANSLATION(poolShunt, "poolshunt", "pool shunt open/close (0% = pool / 100% = heat)", "Poolventil Öffnung", "Mengklep zwembad stand", "Pool Shunt Öppen/Stängd", "bocznik basenu (0% = basen / 100% = grzanie)", "bassengshunt åpen/stengt (0% = basseng / 100% = varme)", "ouverture/fermeture shunt piscine (0% = piscine / 100% = chaleur).", "havuz şant açık/kapalı (0% = havuz / 100% = ısıtma)", "valvola regolazione piscina (0% = piscina / 100% = caldo)", "pohyb bazéna otvoriť/zatvoriť (0 % = bazén / 100 % = teplo)", "šoupátko bazénu (0% = bazén / 100% = vytápění)") -MAKE_TRANSLATION(poolShuntSet, "poolshuntset", "pool shunt setpoint (0% = pool / 100% = heat)", "Poolventil Sollstellung") -MAKE_TRANSLATION(poolPump, "poolpump", "pool circulation pump", "Pool Umwälzpumpe") +MAKE_TRANSLATION(poolShuntStatus, "poolshuntstatus", "valve status", "Ventil Status", "Zwembadklep status openen/sluiten", "Pool Shunt-status öppen/stängd", "status bocznika basenu", "bassengshunt-status åpen/stengt", "état shunt piscine ouvert/fermé", "havuz şant durumu açılıyor/kapanıyor", "aprire/chiudere valvola regolazione piscina", "stav bazénového bočníka otváranie/zatváranie", "stav šoupátka bazénu (otevírání/zavírání)") +MAKE_TRANSLATION(poolShunt, "poolshunt", "valve actual", "Ventil Ist", "Mengklep zwembad stand", "Pool Shunt Öppen/Stängd", "bocznik basenu (0% = basen / 100% = grzanie)", "bassengshunt åpen/stengt (0% = basseng / 100% = varme)", "ouverture/fermeture shunt piscine (0% = piscine / 100% = chaleur).", "havuz şant açık/kapalı (0% = havuz / 100% = ısıtma)", "valvola regolazione piscina (0% = piscina / 100% = caldo)", "pohyb bazéna otvoriť/zatvoriť (0 % = bazén / 100 % = teplo)", "šoupátko bazénu (0% = bazén / 100% = vytápění)") +MAKE_TRANSLATION(poolShuntSet, "poolshuntset", "valve setpoint", "Ventil Soll") +MAKE_TRANSLATION(poolRequest, "poolrequest", "pool request", "Pool Anforderung") + +// water MAKE_TRANSLATION(hydrTemp, "hydrTemp", "hydraulic header temperature", "Verteilertemperatur", "Temperatuur open verdeler", "Fördelartemperatur", "temperatura kolektora hydraulicznego", "Fordelertemperatur", "température collecteur hydraulique", "hidrolik başlık sıcaklığı", "temperatura del collettore", "teplota hydraulickej hlavice", "teplota hydraulické hlavice") // solar diff --git a/src/devices/pool.cpp b/src/devices/pool.cpp index 5d70f7ce1..361f9631c 100644 --- a/src/devices/pool.cpp +++ b/src/devices/pool.cpp @@ -38,20 +38,20 @@ Pool::Pool(uint8_t device_type, uint8_t device_id, uint8_t product_id, const cha register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &poolShuntStatus_, DeviceValueType::ENUM, FL_(enum_shunt), FL_(poolShuntStatus), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &poolShunt_, DeviceValueType::UINT8, FL_(poolShunt), DeviceValueUOM::PERCENT); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &poolShuntSet_, DeviceValueType::UINT8, FL_(poolShuntSet), DeviceValueUOM::PERCENT); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &poolPump_, DeviceValueType::BOOL, FL_(poolPump), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &poolRequest_, DeviceValueType::BOOL, FL_(poolRequest), DeviceValueUOM::NONE); } // Mixer MP100 for pools - 0x5BA // MP100(0x11) -> Boiler(0x08): 11 08 FF 00 04 BA 01 45 02 00 02 -// offset 4 (pool circulation pump, 0 = running, 2 = off) is only in the telegram to the boiler, +// offset 4: MP100 input contacts, pool requests heat (0 = active, 2 = inactive), only in the telegram to the boiler, // the answer to a read request is one byte shorter void Pool::process_HpPoolStatus(const std::shared_ptr & telegram) { - uint8_t pump = EMS_VALUE_UINT8_NOTSET; - if (telegram->read_value(pump, 4)) { - has_update(poolPump_, pump == 0 ? EMS_VALUE_BOOL_ON : EMS_VALUE_BOOL_OFF); + uint8_t request = EMS_VALUE_UINT8_NOTSET; + if (telegram->read_value(request, 4)) { + has_update(poolRequest_, request == 0 ? EMS_VALUE_BOOL_ON : EMS_VALUE_BOOL_OFF); } has_update(telegram, poolTemp_, 0); - has_update(telegram, poolShunt_, 3); // 0-100% how much is the shunt open? + has_update(telegram, poolShunt_, 3); // 0-100%, 0% = pool / 100% = heat telegram->read_value(poolShuntStatus__, 2); uint8_t pss = poolShunt_ == 100 ? 3 : (poolShunt_ == 0 ? 4 : poolShuntStatus__); has_update(poolShuntStatus_, pss); diff --git a/src/devices/pool.h b/src/devices/pool.h index 5bbc4de7d..37477d33a 100644 --- a/src/devices/pool.h +++ b/src/devices/pool.h @@ -39,7 +39,7 @@ class Pool : public EMSdevice { uint8_t poolShuntStatus_; uint8_t poolShunt_; uint8_t poolShuntSet_; - uint8_t poolPump_; + uint8_t poolRequest_; uint8_t poolShuntStatus__ = EMS_VALUE_UINT8_NOTSET; // temp value }; diff --git a/src/test/test.cpp b/src/test/test.cpp index fed31cf00..b36b3ee89 100644 --- a/src/test/test.cpp +++ b/src/test/test.cpp @@ -970,7 +970,7 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd, const uart_telegram({0x08, 0x00, 0xFF, 0x00, 0x03, 0x88, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00}); // heatpump -> MP100 shunt setpoint 0% uart_telegram({0x08, 0x11, 0xFF, 0x00, 0x04, 0xC4, 0x00}); - // MP100 -> heatpump: 32.5 C, shunt 45%, pump running + // MP100 -> heatpump: 32.5 C, shunt 45%, pool request active uart_telegram({0x11, 0x08, 0xFF, 0x00, 0x04, 0xBA, 0x01, 0x45, 0x02, 0x2D, 0x00}); shell.invoke_command("show values"); ok = true; -- 2.54.0 From f550503fe9cc4f7865e15e73e62c48088e2473d8 Mon Sep 17 00:00:00 2001 From: Bingo2023 <61052575+Bingo2023@users.noreply.github.com> Date: Fri, 25 Sep 2026 18:50:26 +0200 Subject: [PATCH 017/148] Update locale_translations.h shorten --- src/core/locale_translations.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/locale_translations.h b/src/core/locale_translations.h index f1a88489d..1ad6be9bd 100644 --- a/src/core/locale_translations.h +++ b/src/core/locale_translations.h @@ -860,7 +860,7 @@ MAKE_TRANSLATION(poolOn, "poolon", "pool on", "Pool ein") MAKE_TRANSLATION(poolSetTemp, "poolsettemp", "pool setpoint", "Pool Soll", "Streeftemperatuur zwembad", "Pool Temperatur Börvärde", "zadana temperatura basenu", "valgt temp basseng", "température consigne piscine", "hedef havuz sıcaklığı", "temperatura nominale piscina", "nastavená teplota bazéna", "cílová teplota bazénu") MAKE_TRANSLATION(poolTemp, "pooltemp", "pool temperature", "Pooltemperatur", "Zwembadtemperatuur", "Pooltemperatur", "temperatura basenu", "bassengtemperatur", "température piscine", "havuz sıcaklığı", "temperatura piscina", "teplota bazéna", "teplota bazénu") MAKE_TRANSLATION(poolShuntStatus, "poolshuntstatus", "valve status", "Ventil Status", "Zwembadklep status openen/sluiten", "Pool Shunt-status öppen/stängd", "status bocznika basenu", "bassengshunt-status åpen/stengt", "état shunt piscine ouvert/fermé", "havuz şant durumu açılıyor/kapanıyor", "aprire/chiudere valvola regolazione piscina", "stav bazénového bočníka otváranie/zatváranie", "stav šoupátka bazénu (otevírání/zavírání)") -MAKE_TRANSLATION(poolShunt, "poolshunt", "valve actual", "Ventil Ist", "Mengklep zwembad stand", "Pool Shunt Öppen/Stängd", "bocznik basenu (0% = basen / 100% = grzanie)", "bassengshunt åpen/stengt (0% = basseng / 100% = varme)", "ouverture/fermeture shunt piscine (0% = piscine / 100% = chaleur).", "havuz şant açık/kapalı (0% = havuz / 100% = ısıtma)", "valvola regolazione piscina (0% = piscina / 100% = caldo)", "pohyb bazéna otvoriť/zatvoriť (0 % = bazén / 100 % = teplo)", "šoupátko bazénu (0% = bazén / 100% = vytápění)") +MAKE_TRANSLATION(poolShunt, "poolshunt", "valve actual", "Ventil Ist", "Mengklep zwembad stand", "Pool Shunt Öppen/Stängd", "bocznik basenu", "bassengshunt åpen/stengt", "ouverture/fermeture shunt piscine", "havuz şant açık/kapalı", "valvola regolazione piscina", "pohyb bazéna otvoriť/zatvoriť", "šoupátko bazénu") MAKE_TRANSLATION(poolShuntSet, "poolshuntset", "valve setpoint", "Ventil Soll") MAKE_TRANSLATION(poolRequest, "poolrequest", "pool request", "Pool Anforderung") -- 2.54.0 From 15fc5e1333ec0813d721c10fc104f6a7dac4b33a Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 26 Sep 2026 21:02:35 +0200 Subject: [PATCH 018/148] pkg update --- interface/package.json | 2 +- interface/pnpm-lock.yaml | 222 +++++++++++++++++++-------------------- 2 files changed, 112 insertions(+), 112 deletions(-) diff --git a/interface/package.json b/interface/package.json index 967f99404..a2b21aef7 100644 --- a/interface/package.json +++ b/interface/package.json @@ -55,7 +55,7 @@ "terser": "^5.51.2", "typescript": "^6.0.3", "typescript-eslint": "^8.70.1", - "vite": "^8.3.0", + "vite": "^8.3.1", "vite-plugin-imagemin": "^0.6.1" }, "packageManager": "pnpm@12.6.0" diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index acd7c818d..6c9b4fa18 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -214,7 +214,7 @@ importers: version: 10.0.1(eslint@10.11.0(supports-color@10.2.2)) '@preact/preset-vite': specifier: ^2.10.6 - version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.0(@types/node@26.6.2)(terser@5.51.2)) + version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.2)(terser@5.51.2)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 version: 6.0.2(prettier@3.9.9)(supports-color@10.2.2) @@ -247,7 +247,7 @@ importers: version: 3.9.9 rollup-plugin-visualizer: specifier: ^7.1.1 - version: 7.1.1(rolldown@1.2.10) + version: 7.1.1(rolldown@1.2.11) terser: specifier: ^5.51.2 version: 5.51.2 @@ -258,11 +258,11 @@ importers: specifier: ^8.70.1 version: 8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) vite: - specifier: ^8.3.0 - version: 8.3.0(@types/node@26.6.2)(terser@5.51.2) + specifier: ^8.3.1 + version: 8.3.1(@types/node@26.6.2)(terser@5.51.2) vite-plugin-imagemin: specifier: ^0.6.1 - version: 0.6.1(supports-color@10.2.2)(vite@8.3.0(@types/node@26.6.2)(terser@5.51.2)) + version: 0.6.1(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.2)(terser@5.51.2)) packages: @@ -661,98 +661,98 @@ packages: '@remix-run/route-pattern@0.22.1': resolution: {integrity: sha512-czdGJWh09Lapvcqt7Vb09KlrU2PhRJ8xQaI+AItTuD9aDJ5MAgxnS38lnys6Ll+6RJEqPiaUqTwIQhVLwFvv+w==} - '@rolldown/binding-android-arm-eabi@1.2.10': - resolution: {integrity: sha512-bp9svZb+QurZeh+8H4BhrZkifEB0YBNvTVzNSJnJQkj4NrRwmQoDUCGP0vSN7PbvLeM7l1tK6GXL8mrTiH2myg==} + '@rolldown/binding-android-arm-eabi@1.2.11': + resolution: {integrity: sha512-A5kXfGKvKWWZE0TtPrfsvT+q4Y5d1QG8gGUzpYjGydM+fARM9MuX90PrXYXe0XbsDVgyxxNzHo6giCj90bsFNw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@rolldown/binding-android-arm64@1.2.10': - resolution: {integrity: sha512-wm6Dld3RXUAZ/gRWKyUy+4W1B5CB5UeFaOzsSWJWEdxZXHH8rCYiZ5dGe6oJmhsunAPWzL7FZV+VtvmN5Ye2eA==} + '@rolldown/binding-android-arm64@1.2.11': + resolution: {integrity: sha512-z6cTycz+iJ4PVkuL4HHW4DfTfoeU/2nqYYuSOrTmH7yHK5Y0LCOnA03V4ZNxavyVaU1oOqUgIg2klN/s+USGOA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.2.10': - resolution: {integrity: sha512-UbEfXq/AqGNgRTV3ik+X/iR6mUxu2QdYAadwRxJWquUGnW6gDqdP1FtLtFXRow7RJx0ssRwi80XAPr4r+4DtsA==} + '@rolldown/binding-darwin-arm64@1.2.11': + resolution: {integrity: sha512-jShvqNtP6vDC6/A5JOAzbVV+DkgHqhl/ScVCJEbt+TUY6QYz7YnXcrg3sLtFBniro0f/Ld50ZwCWA6f7KYD1nQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.2.10': - resolution: {integrity: sha512-7f5h17q5KZVx/ji1vb8OTq31ch1O2I7K8NPIr44GkyWTApXMIsmhWqZfgpOH10xeauqghDAvGlZktasCkcF6Eg==} + '@rolldown/binding-darwin-x64@1.2.11': + resolution: {integrity: sha512-f2i2xiNWq1Z1l2++q2fuhZRdLAT3aqxD6vRNm1RAxpUoBcdqNB3C0s1Bt+K+PbEx2F5F4gQp6hqKkphCY/xF9w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.2.10': - resolution: {integrity: sha512-ynOk/eEYhC6ZB2xCGvKrEOwE58oBy9LnrAqtkrDF9Fz1VTaNdGZTsV0VarJdhPwb+sOJTGjCLwcuyRJZ1dnMcQ==} + '@rolldown/binding-freebsd-x64@1.2.11': + resolution: {integrity: sha512-4Ir5FSOKIAMr4r0kExpt1s3bMgzJU3rA45AYOHtQpls0oNeqcYBKrWMlckrYH4KCfGLfkfn1tN1dmZPMVsdXow==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.2.10': - resolution: {integrity: sha512-ERrAs185meZZhGan7a4l3RiiJK1ArSDlHdST++uvSxe+FDbR4TwUPahT/cbZJvaG6fIpDpF78surN+tX708Y4Q==} + '@rolldown/binding-linux-arm-gnueabihf@1.2.11': + resolution: {integrity: sha512-/gnRDM+39BROzAN/k1OZjDPnDMcZxB/0EUxKjONO5yVkNEvlsoMDrxGNKgZi/ttFriS2gwlDNzB65pvNbFOXIQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.2.10': - resolution: {integrity: sha512-KN7OHKD0J3jy1UzBwZWPxpwhODf9IARUIJcrH+yLYKOcmegZ8luEUM38lDP1bDVj40yP6PsSzCqOJF76vljFnQ==} + '@rolldown/binding-linux-arm64-gnu@1.2.11': + resolution: {integrity: sha512-PFaK8HwvAHbaKbBcDNQihjMKYvFnA5hiENx/l5tphTDz1E0WFp32l0A7aq7lyUwGsRw/xSrNIy/gIK4thrSCrw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.2.10': - resolution: {integrity: sha512-8l9wP8O+wa8zD6iw6egSfzVtu7oZVfH3hlUsMM4MwbLMhxleqeoXbZzjddyK3YyNlwLhqznq3tF7PkNJ8T/V2w==} + '@rolldown/binding-linux-arm64-musl@1.2.11': + resolution: {integrity: sha512-AskzJUIKRLPxkruR1wLKewGbOw+EYfU/9lOrBFj4AFrEA8hPpKFnODWNu2WLaNs0QNkEb9QIJufmVZZIL/bJlg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.2.10': - resolution: {integrity: sha512-SeXNKeQzA5kLhz/J0CH6ZP0/HJ3v1xm/0YbiYpE0kK7emfRC2OIGGIaE14xzkISEGv2aYuUSpiLiU5Gbq+OI0A==} + '@rolldown/binding-linux-ppc64-gnu@1.2.11': + resolution: {integrity: sha512-qlUGAheh2yh8afH7QBgx0PrRHN85hKnNd78x8MeMhXivuevgd8vgf6/CstOzmNKY/lLTHvNTrPy98cLnAugzJw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.2.10': - resolution: {integrity: sha512-mtht0nR+y8/hart4175Ll15w7lY8dg7CtQ+j2FDNTsDRspOWTK/2V3l0aj9sIj7XmvqxT8Yli/wq22e7feTTWg==} + '@rolldown/binding-linux-s390x-gnu@1.2.11': + resolution: {integrity: sha512-secpEad+0vCbSfn8upFySkDskv+bGPk3THSDS9Y89yc4rb4kzqHp8Dmyd9BkQW4SnhNXBZCl/6CrO//hZahNJQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.2.10': - resolution: {integrity: sha512-FSM94nGd55NYo48usCyM/nHfUKRnqc9+b0vJNuKV0oCCpIp/OGims7rO1Nv/DkFkt0S/s2rxsJ2kkS8J3HcpeA==} + '@rolldown/binding-linux-x64-gnu@1.2.11': + resolution: {integrity: sha512-mOVBT3dPpkWm8XBWPmU4bf+U6dYDLeMo/9ojUmis4N0L5uu10qra5vOyngZ7/PSdoE4G9KvRt4bloRxNjLas7A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.2.10': - resolution: {integrity: sha512-C3YxNB16myRLs7o+B+6PnQ6jBsdIS4+AE4Ah8glVGhDpEv9AOvxhZ/1duAb4B0UGczEK/lBbccksd8VI+p6zfw==} + '@rolldown/binding-linux-x64-musl@1.2.11': + resolution: {integrity: sha512-Is78i9A8Ui4SqcxUwFJ9uMmjDn58IbVTjFWYdQestFEgeuEmHMLGNriXnVJKkwG2YiZjw8cP0zCTyDMdDGtOOg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.2.10': - resolution: {integrity: sha512-571TlE/F1eeTjjdjYAMMMPs1Mfv3MtX6s3+ZKVU6HiUjZ5Njc6c/qzNy/8K3zALTZnaw3JQVYrHxvNfjm43KAg==} + '@rolldown/binding-openharmony-arm64@1.2.11': + resolution: {integrity: sha512-dUCXneZ87INUMyQ0D+C0HrEBNUPNXHaPmU5GTjyKTJEiussw9Kaj5Ln8UztPe4epV/ffvgNBEadksdYhmW6xJA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-win32-arm64-msvc@1.2.10': - resolution: {integrity: sha512-QXW+ZWaiqs2c7Fi++D/SsW07LTPcUrncxcskJGfGNBoaLik1IU6fJymz4HsqwEO0u5Iq11yTO0B/mc4cPk7jrQ==} + '@rolldown/binding-win32-arm64-msvc@1.2.11': + resolution: {integrity: sha512-jByxb6qfd+bH1xUd0qnfFnb17i9sWBPY2tOavJ0l3tdr3OTu+Kvtm8cd/JV5nFt657b1VqGltxg9olOEfofXWw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.2.10': - resolution: {integrity: sha512-5FQFGgah17YeMtG1Yd5a+rMxQpTksyNXxRtKz06FVTaQw3RKYUJQbUoKk0/5jrXBpDo+7makNP7UHA2LQyH64A==} + '@rolldown/binding-win32-x64-msvc@1.2.11': + resolution: {integrity: sha512-/PzKqzAJ03i19oy2ItPvyvaVjOjBCNnfaJs8yvUdGBKmiESgnrJSQ2awd81QzFbbnAmu7YO9ZnJrDCb9VSJPRA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -1004,8 +1004,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.11.25: - resolution: {integrity: sha512-gMmEShwwq7FJqMwvfRwvCl00v4kN+KOfJqXn+f4nrufak5gNHJOksd/60Dvjuz7sI8Y5WiSFBa8FEYr+zoyqCw==} + baseline-browser-mapping@2.11.26: + resolution: {integrity: sha512-GLQdD3y6UF8iVuMJl5fHgE4jdn/ua7n+toKfLgNlg3BqQtOZjpy68T8Tup8/wGWZCDlm7KMg7tPb4MPn7oN0TQ==} engines: {node: '>=6.0.0'} hasBin: true @@ -1049,8 +1049,8 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.29.0: - resolution: {integrity: sha512-3GSvyjvDI4Dur1Meg2BekJquu5uF+9R9a1+5M1Mde192eZoXbeXjzgOsgqPS2V8D5wrrip0gR5Hf/GhWQ9ZzaA==} + browserslist@4.29.1: + resolution: {integrity: sha512-AUdjuRyCNGUYtqpqfTmWyM4fXay8yIQhmLnvYe/THMGfT9B/34X7xQd3ifKxwyNPPpowVBjLb+64BN9Rn1mizw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -1072,8 +1072,8 @@ packages: buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - bundle-name@4.1.0: - resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + bundle-name@4.1.1: + resolution: {integrity: sha512-DdH81/zPLVS11EUgWq3tEu/xn+EzljlMYooDNdzWEnFha3R3NBMpMV1UqYIpjYHV/SgpFKMIX1Oh7o06SjM/oA==} engines: {node: '>=18'} cacheable-request@2.1.4: @@ -1106,8 +1106,8 @@ packages: resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} engines: {node: '>=0.10.0'} - caniuse-lite@1.0.30001810: - resolution: {integrity: sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==} + caniuse-lite@1.0.30001812: + resolution: {integrity: sha512-qN+QNNBr93TCmFrmte0bBCjSDMuRvt78VlHT99qIGPszm4QsqCX8lnyWUFkHi8B7ZBAPq8SH+UqyXNy/odMdng==} caw@2.0.1: resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} @@ -1338,8 +1338,8 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.438: - resolution: {integrity: sha512-AN9xMU1hJiT65LkCUPL1DZm5TCbOPb2Qsm5pYwFLEXp6/qj9SdT4yMiqs7Qqstwvkn1zF7l36SRGt+s6XcJ0FA==} + electron-to-chromium@1.5.439: + resolution: {integrity: sha512-qu6QIPXhsb+CRcAiTMNjR4A1y/7tCYKkKjr5CZXRVih6qkDf79peZ2BpEU3qoDBNCRrcy3Mra3X9nG5oruuA7Q==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -2686,8 +2686,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rolldown@1.2.10: - resolution: {integrity: sha512-OxkA08pSryMK7B3XiFA09B4OJ1xJMPgIYCBMY2xchzpqgBGsV1o0DetPAE+Sl3N3L4oCPiEzmHVSOj7iR04Zog==} + rolldown@1.2.11: + resolution: {integrity: sha512-qpSwIyz0jHQq5qXBTNxFmE6664rJ7O+4TvPFOiOaBSrz8IOHc1koKKSqTM2H6u1UG1+TveuC6vaDHKXFOvb1Kw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -2853,8 +2853,8 @@ packages: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} - string-width@8.2.2: - resolution: {integrity: sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==} + string-width@8.3.0: + resolution: {integrity: sha512-ZbmZM0JCihQN91dWnxoipT2KOEyHqEyfRXUyjuRhW8b/xnqPDoq4gWEVApTVa9db2wN8mmoikgFBbjh71+cGeQ==} engines: {node: '>=20'} string_decoder@1.1.1: @@ -3061,8 +3061,8 @@ packages: peerDependencies: vite: 5.x || 6.x || 7.x || 8.x - vite@8.3.0: - resolution: {integrity: sha512-lhZBVvEHefgE+HQZC9O7EBJgCU/nVzFNl7vkS4RE0APtWLP02/8QVIkQtzBxPquh7lq5/78NHipTj7ODQ6XuyQ==} + vite@8.3.1: + resolution: {integrity: sha512-/bvH9E9tmCXRGp2uXY3WbOldqpTwFkbha/8ANaEQ6VkxhH60KyqLwgZq6lG2y+4uT55x9+9eUHMpQ7uGnOCKjA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -3225,7 +3225,7 @@ snapshots: dependencies: '@babel/compat-data': 7.29.7 '@babel/helper-validator-option': 7.29.7 - browserslist: 4.29.0 + browserslist: 4.29.1 lru-cache: 5.1.1 semver: 6.3.1 @@ -3595,19 +3595,19 @@ snapshots: '@popperjs/core@2.11.8': {} - '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.0(@types/node@26.6.2)(terser@5.51.2))': + '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.2)(terser@5.51.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@prefresh/vite': 2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.0(@types/node@26.6.2)(terser@5.51.2)) + '@prefresh/vite': 2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.2)(terser@5.51.2)) '@rollup/pluginutils': 5.4.0 babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.7(supports-color@10.2.2)) debug: 4.4.3(supports-color@10.2.2) magic-string: 0.30.21 picocolors: 1.1.1 - vite: 8.3.0(@types/node@26.6.2)(terser@5.51.2) - vite-prerender-plugin: 0.5.13(vite@8.3.0(@types/node@26.6.2)(terser@5.51.2)) + vite: 8.3.1(@types/node@26.6.2)(terser@5.51.2) + vite-prerender-plugin: 0.5.13(vite@8.3.1(@types/node@26.6.2)(terser@5.51.2)) zimmerframe: 1.1.5 transitivePeerDependencies: - preact @@ -3624,7 +3624,7 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.0(@types/node@26.6.2)(terser@5.51.2))': + '@prefresh/vite@2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.2)(terser@5.51.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@prefresh/babel-plugin': 0.5.4(@babel/core@7.29.7(supports-color@10.2.2)) @@ -3632,55 +3632,55 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 10.29.8 - vite: 8.3.0(@types/node@26.6.2)(terser@5.51.2) + vite: 8.3.1(@types/node@26.6.2)(terser@5.51.2) transitivePeerDependencies: - supports-color '@remix-run/route-pattern@0.22.1': {} - '@rolldown/binding-android-arm-eabi@1.2.10': + '@rolldown/binding-android-arm-eabi@1.2.11': optional: true - '@rolldown/binding-android-arm64@1.2.10': + '@rolldown/binding-android-arm64@1.2.11': optional: true - '@rolldown/binding-darwin-arm64@1.2.10': + '@rolldown/binding-darwin-arm64@1.2.11': optional: true - '@rolldown/binding-darwin-x64@1.2.10': + '@rolldown/binding-darwin-x64@1.2.11': optional: true - '@rolldown/binding-freebsd-x64@1.2.10': + '@rolldown/binding-freebsd-x64@1.2.11': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.2.10': + '@rolldown/binding-linux-arm-gnueabihf@1.2.11': optional: true - '@rolldown/binding-linux-arm64-gnu@1.2.10': + '@rolldown/binding-linux-arm64-gnu@1.2.11': optional: true - '@rolldown/binding-linux-arm64-musl@1.2.10': + '@rolldown/binding-linux-arm64-musl@1.2.11': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.2.10': + '@rolldown/binding-linux-ppc64-gnu@1.2.11': optional: true - '@rolldown/binding-linux-s390x-gnu@1.2.10': + '@rolldown/binding-linux-s390x-gnu@1.2.11': optional: true - '@rolldown/binding-linux-x64-gnu@1.2.10': + '@rolldown/binding-linux-x64-gnu@1.2.11': optional: true - '@rolldown/binding-linux-x64-musl@1.2.10': + '@rolldown/binding-linux-x64-musl@1.2.11': optional: true - '@rolldown/binding-openharmony-arm64@1.2.10': + '@rolldown/binding-openharmony-arm64@1.2.11': optional: true - '@rolldown/binding-win32-arm64-msvc@1.2.10': + '@rolldown/binding-win32-arm64-msvc@1.2.11': optional: true - '@rolldown/binding-win32-x64-msvc@1.2.10': + '@rolldown/binding-win32-x64-msvc@1.2.11': optional: true '@rolldown/pluginutils@1.0.1': {} @@ -3946,7 +3946,7 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.11.25: {} + baseline-browser-mapping@2.11.26: {} bin-build@3.0.0: dependencies: @@ -4005,13 +4005,13 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.29.0: + browserslist@4.29.1: dependencies: - baseline-browser-mapping: 2.11.25 - caniuse-lite: 1.0.30001810 - electron-to-chromium: 1.5.438 + baseline-browser-mapping: 2.11.26 + caniuse-lite: 1.0.30001812 + electron-to-chromium: 1.5.439 node-releases: 2.0.57 - update-browserslist-db: 1.3.3(browserslist@4.29.0) + update-browserslist-db: 1.3.3(browserslist@4.29.1) buffer-alloc-unsafe@1.1.0: {} @@ -4031,7 +4031,7 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - bundle-name@4.1.0: + bundle-name@4.1.1: dependencies: run-applescript: 7.1.0 @@ -4079,7 +4079,7 @@ snapshots: camelcase@2.1.1: {} - caniuse-lite@1.0.30001810: {} + caniuse-lite@1.0.30001812: {} caw@2.0.1: dependencies: @@ -4281,7 +4281,7 @@ snapshots: default-browser@5.5.1: dependencies: - bundle-name: 4.1.0 + bundle-name: 4.1.1 default-browser-id: 5.0.1 define-data-property@1.1.4: @@ -4374,7 +4374,7 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.438: {} + electron-to-chromium@1.5.439: {} emoji-regex@10.6.0: {} @@ -5645,35 +5645,35 @@ snapshots: dependencies: glob: 7.2.3 - rolldown@1.2.10: + rolldown@1.2.11: dependencies: '@oxc-project/types': 0.151.0 '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm-eabi': 1.2.10 - '@rolldown/binding-android-arm64': 1.2.10 - '@rolldown/binding-darwin-arm64': 1.2.10 - '@rolldown/binding-darwin-x64': 1.2.10 - '@rolldown/binding-freebsd-x64': 1.2.10 - '@rolldown/binding-linux-arm-gnueabihf': 1.2.10 - '@rolldown/binding-linux-arm64-gnu': 1.2.10 - '@rolldown/binding-linux-arm64-musl': 1.2.10 - '@rolldown/binding-linux-ppc64-gnu': 1.2.10 - '@rolldown/binding-linux-s390x-gnu': 1.2.10 - '@rolldown/binding-linux-x64-gnu': 1.2.10 - '@rolldown/binding-linux-x64-musl': 1.2.10 - '@rolldown/binding-openharmony-arm64': 1.2.10 - '@rolldown/binding-win32-arm64-msvc': 1.2.10 - '@rolldown/binding-win32-x64-msvc': 1.2.10 + '@rolldown/binding-android-arm-eabi': 1.2.11 + '@rolldown/binding-android-arm64': 1.2.11 + '@rolldown/binding-darwin-arm64': 1.2.11 + '@rolldown/binding-darwin-x64': 1.2.11 + '@rolldown/binding-freebsd-x64': 1.2.11 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.11 + '@rolldown/binding-linux-arm64-gnu': 1.2.11 + '@rolldown/binding-linux-arm64-musl': 1.2.11 + '@rolldown/binding-linux-ppc64-gnu': 1.2.11 + '@rolldown/binding-linux-s390x-gnu': 1.2.11 + '@rolldown/binding-linux-x64-gnu': 1.2.11 + '@rolldown/binding-linux-x64-musl': 1.2.11 + '@rolldown/binding-openharmony-arm64': 1.2.11 + '@rolldown/binding-win32-arm64-msvc': 1.2.11 + '@rolldown/binding-win32-x64-msvc': 1.2.11 - rollup-plugin-visualizer@7.1.1(rolldown@1.2.10): + rollup-plugin-visualizer@7.1.1(rolldown@1.2.11): dependencies: open: 11.0.4 picomatch: 4.0.7 source-map: 0.8.0 yargs: 18.2.0 optionalDependencies: - rolldown: 1.2.10 + rolldown: 1.2.11 run-applescript@7.1.0: {} @@ -5799,7 +5799,7 @@ snapshots: get-east-asian-width: 1.7.0 strip-ansi: 7.2.0 - string-width@8.2.2: + string-width@8.3.0: dependencies: get-east-asian-width: 1.7.0 strip-ansi: 7.2.0 @@ -5959,9 +5959,9 @@ snapshots: universalify@2.0.1: {} - update-browserslist-db@1.3.3(browserslist@4.29.0): + update-browserslist-db@1.3.3(browserslist@4.29.1): dependencies: - browserslist: 4.29.0 + browserslist: 4.29.1 escalade: 3.2.0 picocolors: 1.1.1 @@ -5988,7 +5988,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-imagemin@0.6.1(supports-color@10.2.2)(vite@8.3.0(@types/node@26.6.2)(terser@5.51.2)): + vite-plugin-imagemin@0.6.1(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.2)(terser@5.51.2)): dependencies: '@types/imagemin': 7.0.1 '@types/imagemin-gifsicle': 7.0.4 @@ -6013,11 +6013,11 @@ snapshots: imagemin-webp: 6.1.0 jpegtran-bin: 6.0.1 pathe: 0.2.0 - vite: 8.3.0(@types/node@26.6.2)(terser@5.51.2) + vite: 8.3.1(@types/node@26.6.2)(terser@5.51.2) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.13(vite@8.3.0(@types/node@26.6.2)(terser@5.51.2)): + vite-prerender-plugin@0.5.13(vite@8.3.1(@types/node@26.6.2)(terser@5.51.2)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -6025,14 +6025,14 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0 - vite: 8.3.0(@types/node@26.6.2)(terser@5.51.2) + vite: 8.3.1(@types/node@26.6.2)(terser@5.51.2) - vite@8.3.0(@types/node@26.6.2)(terser@5.51.2): + vite@8.3.1(@types/node@26.6.2)(terser@5.51.2): dependencies: lightningcss: 1.33.0 picomatch: 4.0.7 postcss: 8.5.28 - rolldown: 1.2.10 + rolldown: 1.2.11 tinyglobby: 0.2.17 optionalDependencies: '@types/node': 26.6.2 @@ -6098,7 +6098,7 @@ snapshots: cliui: 9.0.1 escalade: 3.2.0 get-caller-file: 2.0.5 - string-width: 8.2.2 + string-width: 8.3.0 y18n: 5.0.8 yargs-parser: 22.0.0 -- 2.54.0 From 684d6b132d9287557501fd2d478119032a76f6e3 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 26 Sep 2026 21:03:02 +0200 Subject: [PATCH 019/148] tasmota 2026.09.50 --- platformio.ini | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/platformio.ini b/platformio.ini index d93cdc1df..886d1143b 100644 --- a/platformio.ini +++ b/platformio.ini @@ -60,7 +60,7 @@ 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/tasmota/platform-espressif32/releases/download/2026.05.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.8 based on IDF 5.5.4.260407 +platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 ; 16MB Flash variants [espressif32_base_16M] @@ -68,7 +68,7 @@ framework = arduino board_build.partitions = partitions/esp32_partition_16M.csv board_upload.flash_size = 16MB board_build.app_partition_name = app0 -platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.05.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.8 based on IDF 5.5.4.260407 +platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 ; 32MB Flash variants [espressif32_base_32M] @@ -76,7 +76,7 @@ framework = arduino board_build.partitions = partitions/esp32_partition_32M.csv board_upload.flash_size = 32MB board_build.app_partition_name = app0 -platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.05.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.8 based on IDF 5.5.4.260407 +platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 [env] build_flags = -- 2.54.0 From 7c6101e8190427a5047114501199e181ebe1f2c6 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 26 Sep 2026 21:03:17 +0200 Subject: [PATCH 020/148] prevent reboot on filesystem upload --- src/core/emsesp.cpp | 17 +++++++++-------- src/core/system.cpp | 23 ++++++++++++----------- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/src/core/emsesp.cpp b/src/core/emsesp.cpp index 6fecba8f9..8f26c0e6e 100644 --- a/src/core/emsesp.cpp +++ b/src/core/emsesp.cpp @@ -1774,6 +1774,15 @@ void EMSESP::start() { // start web log service. now we can start capturing logs to the web log webLogService.begin(); +#ifndef EMSESP_STANDALONE + // apply any uploaded settings before any service loads them from the filesystem + if (system_.check_restore()) { + root = LittleFS.open(EMSESP_SETTINGS_FILE); + factory_settings = !root; + root.close(); + } +#endif + // loads core system services settings (mqtt, ap, ntp etc) esp32React.begin(); @@ -1829,14 +1838,6 @@ void EMSESP::start() { LOG_INFO("Last system reset reason Core0: %s, Core1: %s", system_.reset_reason(0).c_str(), system_.reset_reason(1).c_str()); #endif -// see if we're restoring a settings file -#ifndef EMSESP_STANDALONE - if (system_.check_restore()) { - LOG_WARNING("EMS-ESP will restart to apply new settings. Please wait."); - system_.system_restart(); - }; -#endif - webSettingsService.begin(); // load EMS-ESP Application settings LOG_DEBUG("System name: %s", system_.system_name().c_str()); diff --git a/src/core/system.cpp b/src/core/system.cpp index 3d24b4f61..a0bc7306a 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -1362,8 +1362,9 @@ void System::show_system(uuid::console::Shell & shell) { // see if there is a restore of an older settings file that needs to be applied // note there can be only one file at a time +// called at boot before any services load their settings, returns true if system settings files were restored bool System::check_restore() { - bool reboot_required = false; // true if we need to reboot + bool settings_restored = false; // true if system settings files were restored #ifndef EMSESP_STANDALONE File new_file = LittleFS.open(TEMP_FILENAME_PATH); @@ -1378,7 +1379,7 @@ bool System::check_restore() { // system backup, which is a consolidated json object with all the settings files if (settings_type == "systembackup") { - reboot_required = true; + settings_restored = true; JsonArray sections = input["systembackup"].as(); for (JsonObject section : sections) { std::string section_type = section["type"]; @@ -1507,14 +1508,14 @@ bool System::check_restore() { } } - // It's a single settings file. Parse each section separately. If it's system related it will require a reboot + // It's a single settings file. Parse each section separately else if (settings_type == "settings") { - reboot_required = saveSettings(NETWORK_SETTINGS_FILE, input); - reboot_required |= saveSettings(AP_SETTINGS_FILE, input); - reboot_required |= saveSettings(MQTT_SETTINGS_FILE, input); - reboot_required |= saveSettings(NTP_SETTINGS_FILE, input); - reboot_required |= saveSettings(SECURITY_SETTINGS_FILE, input); - reboot_required |= saveSettings(EMSESP_SETTINGS_FILE, input); + settings_restored = saveSettings(NETWORK_SETTINGS_FILE, input); + settings_restored |= saveSettings(AP_SETTINGS_FILE, input); + settings_restored |= saveSettings(MQTT_SETTINGS_FILE, input); + settings_restored |= saveSettings(NTP_SETTINGS_FILE, input); + settings_restored |= saveSettings(SECURITY_SETTINGS_FILE, input); + settings_restored |= saveSettings(EMSESP_SETTINGS_FILE, input); } else if (settings_type == "customizations") { saveSettings(EMSESP_CUSTOMIZATION_FILE, input); } else if (settings_type == "schedule") { @@ -1526,7 +1527,7 @@ bool System::check_restore() { new_file.close(); if (LittleFS.rename(TEMP_FILENAME_PATH, EMSESP_CUSTOMSUPPORT_FILE)) { LOG_INFO("Custom support file stored"); - return false; // no need to reboot + return false; } else { LOG_ERROR("Failed to save custom support file"); } @@ -1543,7 +1544,7 @@ bool System::check_restore() { } #endif - return reboot_required; + return settings_restored; } // handle upgrades from previous versions -- 2.54.0 From 7fe65b7f7b18d8c6021b1b29bd0b503a7d9b7884 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 27 Sep 2026 09:28:49 +0200 Subject: [PATCH 021/148] quicker restart --- 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 a0bc7306a..3c65f7c82 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -656,7 +656,7 @@ void System::system_restart(const char * partitionname) { Mqtt::disconnect(); // gracefully disconnect MQTT (flushes the DISCONNECT before reboot, needed for QOS1) EMSuart::stop(); // stop UART so there is no interference #ifndef EMSESP_STANDALONE - delay(1000); // wait 1 second + delay(500); // wait 1/2 second ESP.restart(); // ka-boom! - this is the only place where the ESP32 restart is called #endif } -- 2.54.0 From 25d21f75ab4855c71fc5442bc286cb7cf6cbe6f8 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 27 Sep 2026 09:39:54 +0200 Subject: [PATCH 022/148] pkg update --- interface/package.json | 2 +- interface/pnpm-lock.yaml | 54 ++++++++++++++++++++-------------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/interface/package.json b/interface/package.json index a2b21aef7..cff3e1c8e 100644 --- a/interface/package.json +++ b/interface/package.json @@ -42,7 +42,7 @@ "@eslint/js": "^10.0.1", "@preact/preset-vite": "^2.10.6", "@trivago/prettier-plugin-sort-imports": "^6.0.2", - "@types/node": "^26.6.2", + "@types/node": "^26.6.3", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", "concurrently": "^10.0.5", diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index 6c9b4fa18..d6507c3c5 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -214,13 +214,13 @@ importers: version: 10.0.1(eslint@10.11.0(supports-color@10.2.2)) '@preact/preset-vite': specifier: ^2.10.6 - version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.2)(terser@5.51.2)) + version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 version: 6.0.2(prettier@3.9.9)(supports-color@10.2.2) '@types/node': - specifier: ^26.6.2 - version: 26.6.2 + specifier: ^26.6.3 + version: 26.6.3 '@types/react': specifier: ^19.3.0 version: 19.3.0 @@ -259,10 +259,10 @@ importers: version: 8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) vite: specifier: ^8.3.1 - version: 8.3.1(@types/node@26.6.2)(terser@5.51.2) + version: 8.3.1(@types/node@26.6.3)(terser@5.51.2) vite-plugin-imagemin: specifier: ^0.6.1 - version: 0.6.1(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.2)(terser@5.51.2)) + version: 0.6.1(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2)) packages: @@ -842,8 +842,8 @@ packages: '@types/minimatch@5.1.2': resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - '@types/node@26.6.2': - resolution: {integrity: sha512-X1P21scMv4zGKLYqjdGjaKa7COa0RKVYYZZN/NfvLQ1JegxFhdhpZG/Lyn8AXx6CDUavKAd11v6BvfpkDByK8g==} + '@types/node@26.6.3': + resolution: {integrity: sha512-dsqMQQoeTLqu9wynDD00q573mNzso3IdQOAfHRJqLCcmCFPoGo9A1bDpUcv/9tnKpErQWv9uKeGfl37EIS02Yg==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -3056,8 +3056,8 @@ packages: peerDependencies: vite: '>=2.0.0' - vite-prerender-plugin@0.5.13: - resolution: {integrity: sha512-IKSpYkzDBsKAxa05naRbj7GvNVMSdww/Z/E89oO3xndz+gWnOBOKOAbEXv7qDhktY/j3vHgJmoV1pPzqU2tx9g==} + vite-prerender-plugin@0.5.14: + resolution: {integrity: sha512-X2w9AS1OhwEUec9HSryGAmEnEQJGhW6eFoiCVJv8BfOTVpM8SOjk75cEw/IC28APDHZudeIRbP8Sp7wfABq+Aw==} peerDependencies: vite: 5.x || 6.x || 7.x || 8.x @@ -3595,19 +3595,19 @@ snapshots: '@popperjs/core@2.11.8': {} - '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.2)(terser@5.51.2))': + '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@prefresh/vite': 2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.2)(terser@5.51.2)) + '@prefresh/vite': 2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2)) '@rollup/pluginutils': 5.4.0 babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.7(supports-color@10.2.2)) debug: 4.4.3(supports-color@10.2.2) magic-string: 0.30.21 picocolors: 1.1.1 - vite: 8.3.1(@types/node@26.6.2)(terser@5.51.2) - vite-prerender-plugin: 0.5.13(vite@8.3.1(@types/node@26.6.2)(terser@5.51.2)) + vite: 8.3.1(@types/node@26.6.3)(terser@5.51.2) + vite-prerender-plugin: 0.5.14(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2)) zimmerframe: 1.1.5 transitivePeerDependencies: - preact @@ -3624,7 +3624,7 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.2)(terser@5.51.2))': + '@prefresh/vite@2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@prefresh/babel-plugin': 0.5.4(@babel/core@7.29.7(supports-color@10.2.2)) @@ -3632,7 +3632,7 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 10.29.8 - vite: 8.3.1(@types/node@26.6.2)(terser@5.51.2) + vite: 8.3.1(@types/node@26.6.3)(terser@5.51.2) transitivePeerDependencies: - supports-color @@ -3728,7 +3728,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 26.6.2 + '@types/node': 26.6.3 '@types/imagemin-gifsicle@7.0.4': dependencies: @@ -3757,17 +3757,17 @@ snapshots: '@types/imagemin@7.0.1': dependencies: - '@types/node': 26.6.2 + '@types/node': 26.6.3 '@types/json-schema@7.0.15': {} '@types/keyv@3.1.4': dependencies: - '@types/node': 26.6.2 + '@types/node': 26.6.3 '@types/minimatch@5.1.2': {} - '@types/node@26.6.2': + '@types/node@26.6.3': dependencies: undici-types: 8.9.0 @@ -3789,11 +3789,11 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 26.6.2 + '@types/node': 26.6.3 '@types/svgo@2.6.4': dependencies: - '@types/node': 26.6.2 + '@types/node': 26.6.3 '@typescript-eslint/eslint-plugin@8.70.1(@typescript-eslint/parser@8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: @@ -5988,7 +5988,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-imagemin@0.6.1(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.2)(terser@5.51.2)): + vite-plugin-imagemin@0.6.1(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2)): dependencies: '@types/imagemin': 7.0.1 '@types/imagemin-gifsicle': 7.0.4 @@ -6013,11 +6013,11 @@ snapshots: imagemin-webp: 6.1.0 jpegtran-bin: 6.0.1 pathe: 0.2.0 - vite: 8.3.1(@types/node@26.6.2)(terser@5.51.2) + vite: 8.3.1(@types/node@26.6.3)(terser@5.51.2) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.13(vite@8.3.1(@types/node@26.6.2)(terser@5.51.2)): + vite-prerender-plugin@0.5.14(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -6025,9 +6025,9 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0 - vite: 8.3.1(@types/node@26.6.2)(terser@5.51.2) + vite: 8.3.1(@types/node@26.6.3)(terser@5.51.2) - vite@8.3.1(@types/node@26.6.2)(terser@5.51.2): + vite@8.3.1(@types/node@26.6.3)(terser@5.51.2): dependencies: lightningcss: 1.33.0 picomatch: 4.0.7 @@ -6035,7 +6035,7 @@ snapshots: rolldown: 1.2.11 tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 26.6.2 + '@types/node': 26.6.3 fsevents: 2.3.3 terser: 5.51.2 -- 2.54.0 From f76822553360641cf506126023bb446b99c6b6cc Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 27 Sep 2026 09:40:12 +0200 Subject: [PATCH 023/148] revert back to Tasmota 2026.09.50 --- platformio.ini | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/platformio.ini b/platformio.ini index 886d1143b..9c306a099 100644 --- a/platformio.ini +++ b/platformio.ini @@ -60,7 +60,8 @@ 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/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 +platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.05.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.8 based on IDF 5.5.4.260407 +; platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 ; 16MB Flash variants [espressif32_base_16M] @@ -68,7 +69,8 @@ framework = arduino board_build.partitions = partitions/esp32_partition_16M.csv board_upload.flash_size = 16MB board_build.app_partition_name = app0 -platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 +platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.05.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.8 based on IDF 5.5.4.260407 +; platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 ; 32MB Flash variants [espressif32_base_32M] @@ -76,7 +78,8 @@ framework = arduino board_build.partitions = partitions/esp32_partition_32M.csv board_upload.flash_size = 32MB board_build.app_partition_name = app0 -platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 +platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.05.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.8 based on IDF 5.5.4.260407 +; platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 [env] build_flags = -- 2.54.0 From 74ff39b22eddfaa5535f26530ef82b064dcc3750 Mon Sep 17 00:00:00 2001 From: proddy <1230712+proddy@users.noreply.github.com> Date: Sun, 27 Sep 2026 08:05:03 +0000 Subject: [PATCH 024/148] chore: update generated files for v3.9.0-dev.15 --- docs/Modbus-Entity-Registers.md | 1808 +++++++++++++------------ docs/dump_entities.csv | 1808 +++++++++++++------------ docs/dump_telegrams.csv | 7 +- src/core/modbus_entity_parameters.hpp | 206 +-- 4 files changed, 1924 insertions(+), 1905 deletions(-) diff --git a/docs/Modbus-Entity-Registers.md b/docs/Modbus-Entity-Registers.md index 6609d7ebe..ba30e7dc9 100644 --- a/docs/Modbus-Entity-Registers.md +++ b/docs/Modbus-Entity-Registers.md @@ -120,95 +120,97 @@ uint8 | hpsetdiffpress | set differential pressure | uint8 (>=150<=750) | mbar | true | DEVICE_DATA | 151 | 1 | 50 | | hpcompon | hp compressor | boolean | | false | DEVICE_DATA | 152 | 1 | 1 | | hpactivity | compressor activity | enum | | false | DEVICE_DATA | 153 | 1 | 1 | -| hpbrinepumpspd | brine pump speed | uint8 | % | false | DEVICE_DATA | 154 | 1 | 1 | -| hpswitchvalve | switch valve | boolean | | false | DEVICE_DATA | 155 | 1 | 1 | -| hpcompspd | compressor speed | uint8 | % | false | DEVICE_DATA | 156 | 1 | 1 | -| hptargetspd | compressor target speed | uint8 | % | false | DEVICE_DATA | 157 | 1 | 1 | -| hpcircspd | circulation pump speed | uint8 | % | false | DEVICE_DATA | 158 | 1 | 1 | -| recvalve | receiver valve VR0 | uint8 | % | false | DEVICE_DATA | 159 | 1 | 1 | -| expvalve | expansion valve VR1 | uint8 | % | false | DEVICE_DATA | 160 | 1 | 1 | -| hpbrinein | brine in/evaporator | int16 | C | false | DEVICE_DATA | 161 | 1 | 1/10 | -| hpbrineout | brine out/condenser | int16 | C | false | DEVICE_DATA | 162 | 1 | 1/10 | -| hptc0 | heat carrier return (TC0) | int16 | C | false | DEVICE_DATA | 163 | 1 | 1/10 | -| hptc1 | heat carrier forward (TC1) | int16 | C | false | DEVICE_DATA | 164 | 1 | 1/10 | -| hptc3 | condenser temperature (TC3) | int16 | C | false | DEVICE_DATA | 165 | 1 | 1/10 | -| hptr1 | compressor temperature (TR1) | int16 | C | false | DEVICE_DATA | 166 | 1 | 1/10 | -| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 | C | false | DEVICE_DATA | 167 | 1 | 1/10 | -| hptr4 | evaporator inlet temperature (TR4) | int16 | C | false | DEVICE_DATA | 168 | 1 | 1/10 | -| hptr5 | compressor inlet temperature (TR5) | int16 | C | false | DEVICE_DATA | 169 | 1 | 1/10 | -| hptr6 | compressor outlet temperature (TR6) | int16 | C | false | DEVICE_DATA | 170 | 1 | 1/10 | -| hptr7 | refrigerant temperature gas side (condenser input) (TR7) | int16 | C | false | DEVICE_DATA | 171 | 1 | 1/10 | -| hptl2 | air inlet temperature (TL2) | int16 | C | false | DEVICE_DATA | 172 | 1 | 1/10 | -| hppl1 | low pressure side temperature (PL1) | int16 | C | false | DEVICE_DATA | 173 | 1 | 1/10 | -| hpph1 | high pressure side temperature (PH1) | int16 | C | false | DEVICE_DATA | 174 | 1 | 1/10 | -| hpta4 | drain pan temp (TA4) | int16 | C | false | DEVICE_DATA | 175 | 1 | 1/10 | -| hptw1 | reservoir temp (TW1) | int16 | C | false | DEVICE_DATA | 176 | 1 | 1/10 | +| hppoolon | hp pool | boolean | | false | DEVICE_DATA | 154 | 1 | 1 | +| hpbrinepumpspd | brine pump speed | uint8 | % | false | DEVICE_DATA | 155 | 1 | 1 | +| hpswitchvalve | switch valve | boolean | | false | DEVICE_DATA | 156 | 1 | 1 | +| hpcompspd | compressor speed | uint8 | % | false | DEVICE_DATA | 157 | 1 | 1 | +| hptargetspd | compressor target speed | uint8 | % | false | DEVICE_DATA | 158 | 1 | 1 | +| hpcircspd | circulation pump speed | uint8 | % | false | DEVICE_DATA | 159 | 1 | 1 | +| recvalve | receiver valve VR0 | uint8 | % | false | DEVICE_DATA | 160 | 1 | 1 | +| expvalve | expansion valve VR1 | uint8 | % | false | DEVICE_DATA | 161 | 1 | 1 | +| hpbrinein | brine in/evaporator | int16 | C | false | DEVICE_DATA | 162 | 1 | 1/10 | +| hpbrineout | brine out/condenser | int16 | C | false | DEVICE_DATA | 163 | 1 | 1/10 | +| hptc0 | heat carrier return (TC0) | int16 | C | false | DEVICE_DATA | 164 | 1 | 1/10 | +| hptc1 | heat carrier forward (TC1) | int16 | C | false | DEVICE_DATA | 165 | 1 | 1/10 | +| hptc3 | condenser temperature (TC3) | int16 | C | false | DEVICE_DATA | 166 | 1 | 1/10 | +| hptr1 | compressor temperature (TR1) | int16 | C | false | DEVICE_DATA | 167 | 1 | 1/10 | +| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 | C | false | DEVICE_DATA | 168 | 1 | 1/10 | +| hptr4 | evaporator inlet temperature (TR4) | int16 | C | false | DEVICE_DATA | 169 | 1 | 1/10 | +| hptr5 | compressor inlet temperature (TR5) | int16 | C | false | DEVICE_DATA | 170 | 1 | 1/10 | +| hptr6 | compressor outlet temperature (TR6) | int16 | C | false | DEVICE_DATA | 171 | 1 | 1/10 | +| hptr7 | refrigerant temperature gas side (condenser input) (TR7) | int16 | C | false | DEVICE_DATA | 172 | 1 | 1/10 | +| hptl2 | air inlet temperature (TL2) | int16 | C | false | DEVICE_DATA | 173 | 1 | 1/10 | +| hppl1 | low pressure side temperature (PL1) | int16 | C | false | DEVICE_DATA | 174 | 1 | 1/10 | +| hpph1 | high pressure side temperature (PH1) | int16 | C | false | DEVICE_DATA | 175 | 1 | 1/10 | +| hpta4 | drain pan temp (TA4) | int16 | C | false | DEVICE_DATA | 176 | 1 | 1/10 | +| hptw1 | reservoir temp (TW1) | int16 | C | false | DEVICE_DATA | 177 | 1 | 1/10 | +| poolon | pool on | boolean | | true | DEVICE_DATA | 178 | 1 | 1 | uint8 -| poolsettemp | pool set temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 177 | 1 | 1/2 | -| hp4way | 4-way valve (VR4) | boolean | | false | DEVICE_DATA | 178 | 1 | 1 | -| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 179 | 1 | 1 | -| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 180 | 8 | 1 | -| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 188 | 1 | 1 | -| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 189 | 8 | 1 | -| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 197 | 1 | 1 | -| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 198 | 8 | 1 | -| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 206 | 1 | 1 | -| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 207 | 8 | 1 | -| maxheatcomp | heat limit compressor | enum | | true | DEVICE_DATA | 215 | 1 | 1 | -| maxheatheat | heat limit heating | enum | | true | DEVICE_DATA | 216 | 1 | 1 | +| poolsettemp | pool setpoint | uint8 (>=0<=0) | C | true | DEVICE_DATA | 179 | 1 | 1/2 | +| hp4way | 4-way valve (VR4) | boolean | | false | DEVICE_DATA | 180 | 1 | 1 | +| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 181 | 1 | 1 | +| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 182 | 8 | 1 | +| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 190 | 1 | 1 | +| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 191 | 8 | 1 | +| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 199 | 1 | 1 | +| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 200 | 8 | 1 | +| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 208 | 1 | 1 | +| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 209 | 8 | 1 | +| maxheatcomp | heat limit compressor | enum | | true | DEVICE_DATA | 217 | 1 | 1 | +| maxheatheat | heat limit heating | enum | | true | DEVICE_DATA | 218 | 1 | 1 | | dhw.maxheat | heat limit | enum | | true | DHW | 14 | 1 | 1 | -| auxheatersource | aux heater source | enum | | true | DEVICE_DATA | 217 | 1 | 1 | -| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 218 | 1 | 1 | -| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 219 | 1 | 1 | -| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 220 | 1 | 1 | -| auxheaterstatus | aux heater status | enum | | false | DEVICE_DATA | 221 | 1 | 1 | -| auxheaterlevel | aux heater level | uint8 | % | false | DEVICE_DATA | 222 | 1 | 1 | +| auxheatersource | aux heater source | enum | | true | DEVICE_DATA | 219 | 1 | 1 | +| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 220 | 1 | 1 | +| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 221 | 1 | 1 | +| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 222 | 1 | 1 | +| auxheaterstatus | aux heater status | enum | | false | DEVICE_DATA | 223 | 1 | 1 | +| auxheaterlevel | aux heater level | uint8 | % | false | DEVICE_DATA | 224 | 1 | 1 | uint16 -| auxheaterdelay | aux heater on delay | uint16 (>=10<=1000) | K*min | true | DEVICE_DATA | 223 | 1 | 10 | +| auxheaterdelay | aux heater on delay | uint16 (>=10<=1000) | K*min | true | DEVICE_DATA | 225 | 1 | 10 | uint8 -| auxmaxlimit | aux heater max limit | uint8 (>=0<=10) | K | true | DEVICE_DATA | 224 | 1 | 1/10 | +| auxmaxlimit | aux heater max limit | uint8 (>=0<=10) | K | true | DEVICE_DATA | 226 | 1 | 1/10 | uint8 -| auxlimitstart | aux heater limit start | uint8 (>=0<=10) | K | true | DEVICE_DATA | 225 | 1 | 1/10 | -| auxheatrmode | aux heater mode | enum | | true | DEVICE_DATA | 226 | 1 | 1 | +| auxlimitstart | aux heater limit start | uint8 (>=0<=10) | K | true | DEVICE_DATA | 227 | 1 | 1/10 | +| auxheatrmode | aux heater mode | enum | | true | DEVICE_DATA | 228 | 1 | 1 | uint16 -| hphystheat | on/off hyst heat | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 227 | 1 | 5 | +| hphystheat | on/off hyst heat | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 229 | 1 | 5 | uint16 -| hphystcool | on/off hyst cool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 228 | 1 | 5 | +| hphystcool | on/off hyst cool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 230 | 1 | 5 | uint16 -| hphystpool | on/off hyst pool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 229 | 1 | 5 | -| silentmode | silent mode | enum | | true | DEVICE_DATA | 230 | 1 | 1 | +| hphystpool | on/off hyst pool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 231 | 1 | 5 | +| silentmode | silent mode | enum | | true | DEVICE_DATA | 232 | 1 | 1 | uint8 -| silentfrom | silent mode from | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 231 | 1 | 15 | +| silentfrom | silent mode from | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 233 | 1 | 15 | uint8 -| silentto | silent mode to | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 232 | 1 | 15 | +| silentto | silent mode to | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 234 | 1 | 15 | int8 -| mintempsilent | min outside temp for silent mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 233 | 1 | 1 | +| mintempsilent | min outside temp for silent mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 235 | 1 | 1 | int8 -| tempparmode | outside temp parallel mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 234 | 1 | 1 | -| auxheatmix | aux heater mixing valve | int8 | % | false | DEVICE_DATA | 235 | 1 | 1 | +| tempparmode | outside temp parallel mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 236 | 1 | 1 | +| auxheatmix | aux heater mixing valve | int8 | % | false | DEVICE_DATA | 237 | 1 | 1 | uint8 -| tempdiffheat | temp diff TC3/TC0 heat | uint8 (>=2<=10) | K | true | DEVICE_DATA | 236 | 1 | 1/10 | +| tempdiffheat | temp diff TC3/TC0 heat | uint8 (>=2<=10) | K | true | DEVICE_DATA | 238 | 1 | 1/10 | uint8 -| tempdiffcool | temp diff TC3/TC0 cool | uint8 (>=2<=10) | K | true | DEVICE_DATA | 237 | 1 | 1/10 | -| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 238 | 1 | 1 | -| heatcable | heating cable | boolean | | true | DEVICE_DATA | 239 | 1 | 1 | -| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 240 | 1 | 1 | -| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 241 | 1 | 1 | +| tempdiffcool | temp diff TC3/TC0 cool | uint8 (>=2<=10) | K | true | DEVICE_DATA | 239 | 1 | 1/10 | +| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 240 | 1 | 1 | +| heatcable | heating cable | boolean | | true | DEVICE_DATA | 241 | 1 | 1 | +| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 242 | 1 | 1 | +| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 243 | 1 | 1 | uint8 -| primepumpmod | primary heatpump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 242 | 1 | 1 | -| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 243 | 1 | 1 | -| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 244 | 1 | 1 | -| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 245 | 1 | 1 | -| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 246 | 1 | 1 | -| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 247 | 1 | 1 | -| hppumpmode | primary heatpump mode | enum | | true | DEVICE_DATA | 248 | 1 | 1 | +| primepumpmod | primary heatpump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 244 | 1 | 1 | +| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 245 | 1 | 1 | +| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 246 | 1 | 1 | +| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 247 | 1 | 1 | +| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 248 | 1 | 1 | +| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 249 | 1 | 1 | +| hppumpmode | primary heatpump mode | enum | | true | DEVICE_DATA | 250 | 1 | 1 | uint8 -| fan | fan | uint8 (>=20<=100) | % | true | DEVICE_DATA | 249 | 1 | 1 | -| fanspd | fan speed | uint8 | % | false | DEVICE_DATA | 250 | 1 | 1 | -| shutdown | shutdown | cmd | | true | DEVICE_DATA | 251 | 1 | 1 | -| hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 252 | 1 | 1 | +| fan | fan | uint8 (>=20<=100) | % | true | DEVICE_DATA | 251 | 1 | 1 | +| fanspd | fan speed | uint8 | % | false | DEVICE_DATA | 252 | 1 | 1 | +| shutdown | shutdown | cmd | | true | DEVICE_DATA | 253 | 1 | 1 | +| hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 254 | 1 | 1 | uint16 -| hppowerlimit | power limit | uint16 (>=0<=0) | W | true | DEVICE_DATA | 253 | 1 | 1 | +| hppowerlimit | power limit | uint16 (>=0<=0) | W | true | DEVICE_DATA | 255 | 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 | @@ -304,39 +306,39 @@ 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 | 254 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 257 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 261 | 1 | 1 | +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 262 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 263 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 264 | 1 | 1 | -| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 265 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 270 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 272 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 273 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 274 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | @@ -383,9 +385,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -439,7 +441,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 | 280 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | @@ -465,39 +467,39 @@ 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 | 254 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 257 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 261 | 1 | 1 | +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 262 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 263 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 264 | 1 | 1 | -| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 265 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 270 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 272 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 273 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 274 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | @@ -544,9 +546,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -600,7 +602,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 | 280 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | @@ -626,39 +628,39 @@ 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 | 254 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 257 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 261 | 1 | 1 | +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 262 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 263 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 264 | 1 | 1 | -| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 265 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 270 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 272 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 273 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 274 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | @@ -705,9 +707,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -761,7 +763,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 | 280 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | @@ -787,39 +789,39 @@ 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 | 254 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 257 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 261 | 1 | 1 | +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 262 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 263 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 264 | 1 | 1 | -| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 265 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 270 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 272 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 273 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 274 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | @@ -866,9 +868,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -922,7 +924,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 | 280 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | @@ -948,39 +950,39 @@ 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 | 254 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 257 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 261 | 1 | 1 | +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 262 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 263 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 264 | 1 | 1 | -| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 265 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 270 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 272 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 273 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 274 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | @@ -1027,9 +1029,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -1083,7 +1085,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 | 280 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | @@ -1109,39 +1111,39 @@ 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 | 254 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 257 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 261 | 1 | 1 | +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 262 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 263 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 264 | 1 | 1 | -| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 265 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 270 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 272 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 273 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 274 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | @@ -1188,9 +1190,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -1244,7 +1246,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 | 280 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | @@ -1270,39 +1272,39 @@ 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 | 254 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 257 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 261 | 1 | 1 | +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 262 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 263 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 264 | 1 | 1 | -| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 265 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 270 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 272 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 273 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 274 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | @@ -1349,9 +1351,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -1405,7 +1407,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 | 280 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | @@ -1431,39 +1433,39 @@ 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 | 254 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 257 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 261 | 1 | 1 | +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 262 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 263 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 264 | 1 | 1 | -| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 265 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 270 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 272 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 273 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 274 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | @@ -1510,9 +1512,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -1566,7 +1568,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 | 280 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | @@ -1592,39 +1594,39 @@ 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 | 254 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 257 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 261 | 1 | 1 | +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 262 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 263 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 264 | 1 | 1 | -| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 265 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 270 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 272 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 273 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 274 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | @@ -1671,9 +1673,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -1727,7 +1729,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 | 280 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | @@ -1753,39 +1755,39 @@ 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 | 254 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 257 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 261 | 1 | 1 | +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 262 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 263 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 264 | 1 | 1 | -| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 265 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 270 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 272 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 273 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 274 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | @@ -1832,9 +1834,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -1888,7 +1890,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 | 280 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | @@ -1914,39 +1916,39 @@ 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 | 254 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 257 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 261 | 1 | 1 | +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 262 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 263 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 264 | 1 | 1 | -| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 265 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 270 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 272 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 273 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 274 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | @@ -1993,9 +1995,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -2049,7 +2051,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 | 280 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | @@ -2075,39 +2077,39 @@ 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 | 254 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 257 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 261 | 1 | 1 | +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 262 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 263 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 264 | 1 | 1 | -| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 265 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 270 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 272 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 273 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 274 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | @@ -2154,9 +2156,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -2210,7 +2212,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 | 280 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | @@ -2236,39 +2238,39 @@ 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 | 254 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 257 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 261 | 1 | 1 | +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 262 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 263 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 264 | 1 | 1 | -| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 265 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 270 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 272 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 273 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 274 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | @@ -2315,9 +2317,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -2371,7 +2373,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 | 280 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | @@ -2397,39 +2399,39 @@ 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 | 254 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 257 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 261 | 1 | 1 | +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 262 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 263 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 264 | 1 | 1 | -| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 265 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 270 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 272 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 273 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 274 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | @@ -2476,9 +2478,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -2532,7 +2534,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 | 280 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | @@ -2558,39 +2560,39 @@ 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 | 254 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 257 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 261 | 1 | 1 | +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 262 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 263 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 264 | 1 | 1 | -| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 265 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 270 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 272 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 273 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 274 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | @@ -2637,9 +2639,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -2693,7 +2695,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 | 280 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | @@ -2719,39 +2721,39 @@ 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 | 254 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 257 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 261 | 1 | 1 | +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 262 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 263 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 264 | 1 | 1 | -| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 265 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 270 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 272 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 273 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 274 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | @@ -2798,9 +2800,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -2854,7 +2856,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 | 280 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | @@ -2880,39 +2882,39 @@ 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 | 254 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 257 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 261 | 1 | 1 | +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 262 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 263 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 264 | 1 | 1 | -| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 265 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 270 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 272 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 273 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 274 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | @@ -2959,9 +2961,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -3015,7 +3017,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 | 280 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | @@ -3041,39 +3043,39 @@ 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 | 254 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 257 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 261 | 1 | 1 | +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 262 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 263 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 264 | 1 | 1 | -| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 265 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 270 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 272 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 273 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 274 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | @@ -3120,9 +3122,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -3176,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 | 280 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | @@ -3202,39 +3204,39 @@ 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 | 254 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 257 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 261 | 1 | 1 | +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 262 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 263 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 264 | 1 | 1 | -| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 265 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 270 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 272 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 273 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 274 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | @@ -3281,9 +3283,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -3337,7 +3339,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 | 280 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | @@ -3363,39 +3365,39 @@ 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 | 254 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 257 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 261 | 1 | 1 | +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 262 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 263 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 264 | 1 | 1 | -| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 265 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 270 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 272 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 273 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 274 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | @@ -3442,9 +3444,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -3498,7 +3500,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 | 280 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | @@ -3616,95 +3618,97 @@ uint8 | hpsetdiffpress | set differential pressure | uint8 (>=150<=750) | mbar | true | DEVICE_DATA | 151 | 1 | 50 | | hpcompon | hp compressor | boolean | | false | DEVICE_DATA | 152 | 1 | 1 | | hpactivity | compressor activity | enum | | false | DEVICE_DATA | 153 | 1 | 1 | -| hpbrinepumpspd | brine pump speed | uint8 | % | false | DEVICE_DATA | 154 | 1 | 1 | -| hpswitchvalve | switch valve | boolean | | false | DEVICE_DATA | 155 | 1 | 1 | -| hpcompspd | compressor speed | uint8 | % | false | DEVICE_DATA | 156 | 1 | 1 | -| hptargetspd | compressor target speed | uint8 | % | false | DEVICE_DATA | 157 | 1 | 1 | -| hpcircspd | circulation pump speed | uint8 | % | false | DEVICE_DATA | 158 | 1 | 1 | -| recvalve | receiver valve VR0 | uint8 | % | false | DEVICE_DATA | 159 | 1 | 1 | -| expvalve | expansion valve VR1 | uint8 | % | false | DEVICE_DATA | 160 | 1 | 1 | -| hpbrinein | brine in/evaporator | int16 | C | false | DEVICE_DATA | 161 | 1 | 1/10 | -| hpbrineout | brine out/condenser | int16 | C | false | DEVICE_DATA | 162 | 1 | 1/10 | -| hptc0 | heat carrier return (TC0) | int16 | C | false | DEVICE_DATA | 163 | 1 | 1/10 | -| hptc1 | heat carrier forward (TC1) | int16 | C | false | DEVICE_DATA | 164 | 1 | 1/10 | -| hptc3 | condenser temperature (TC3) | int16 | C | false | DEVICE_DATA | 165 | 1 | 1/10 | -| hptr1 | compressor temperature (TR1) | int16 | C | false | DEVICE_DATA | 166 | 1 | 1/10 | -| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 | C | false | DEVICE_DATA | 167 | 1 | 1/10 | -| hptr4 | evaporator inlet temperature (TR4) | int16 | C | false | DEVICE_DATA | 168 | 1 | 1/10 | -| hptr5 | compressor inlet temperature (TR5) | int16 | C | false | DEVICE_DATA | 169 | 1 | 1/10 | -| hptr6 | compressor outlet temperature (TR6) | int16 | C | false | DEVICE_DATA | 170 | 1 | 1/10 | -| hptr7 | refrigerant temperature gas side (condenser input) (TR7) | int16 | C | false | DEVICE_DATA | 171 | 1 | 1/10 | -| hptl2 | air inlet temperature (TL2) | int16 | C | false | DEVICE_DATA | 172 | 1 | 1/10 | -| hppl1 | low pressure side temperature (PL1) | int16 | C | false | DEVICE_DATA | 173 | 1 | 1/10 | -| hpph1 | high pressure side temperature (PH1) | int16 | C | false | DEVICE_DATA | 174 | 1 | 1/10 | -| hpta4 | drain pan temp (TA4) | int16 | C | false | DEVICE_DATA | 175 | 1 | 1/10 | -| hptw1 | reservoir temp (TW1) | int16 | C | false | DEVICE_DATA | 176 | 1 | 1/10 | +| hppoolon | hp pool | boolean | | false | DEVICE_DATA | 154 | 1 | 1 | +| hpbrinepumpspd | brine pump speed | uint8 | % | false | DEVICE_DATA | 155 | 1 | 1 | +| hpswitchvalve | switch valve | boolean | | false | DEVICE_DATA | 156 | 1 | 1 | +| hpcompspd | compressor speed | uint8 | % | false | DEVICE_DATA | 157 | 1 | 1 | +| hptargetspd | compressor target speed | uint8 | % | false | DEVICE_DATA | 158 | 1 | 1 | +| hpcircspd | circulation pump speed | uint8 | % | false | DEVICE_DATA | 159 | 1 | 1 | +| recvalve | receiver valve VR0 | uint8 | % | false | DEVICE_DATA | 160 | 1 | 1 | +| expvalve | expansion valve VR1 | uint8 | % | false | DEVICE_DATA | 161 | 1 | 1 | +| hpbrinein | brine in/evaporator | int16 | C | false | DEVICE_DATA | 162 | 1 | 1/10 | +| hpbrineout | brine out/condenser | int16 | C | false | DEVICE_DATA | 163 | 1 | 1/10 | +| hptc0 | heat carrier return (TC0) | int16 | C | false | DEVICE_DATA | 164 | 1 | 1/10 | +| hptc1 | heat carrier forward (TC1) | int16 | C | false | DEVICE_DATA | 165 | 1 | 1/10 | +| hptc3 | condenser temperature (TC3) | int16 | C | false | DEVICE_DATA | 166 | 1 | 1/10 | +| hptr1 | compressor temperature (TR1) | int16 | C | false | DEVICE_DATA | 167 | 1 | 1/10 | +| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 | C | false | DEVICE_DATA | 168 | 1 | 1/10 | +| hptr4 | evaporator inlet temperature (TR4) | int16 | C | false | DEVICE_DATA | 169 | 1 | 1/10 | +| hptr5 | compressor inlet temperature (TR5) | int16 | C | false | DEVICE_DATA | 170 | 1 | 1/10 | +| hptr6 | compressor outlet temperature (TR6) | int16 | C | false | DEVICE_DATA | 171 | 1 | 1/10 | +| hptr7 | refrigerant temperature gas side (condenser input) (TR7) | int16 | C | false | DEVICE_DATA | 172 | 1 | 1/10 | +| hptl2 | air inlet temperature (TL2) | int16 | C | false | DEVICE_DATA | 173 | 1 | 1/10 | +| hppl1 | low pressure side temperature (PL1) | int16 | C | false | DEVICE_DATA | 174 | 1 | 1/10 | +| hpph1 | high pressure side temperature (PH1) | int16 | C | false | DEVICE_DATA | 175 | 1 | 1/10 | +| hpta4 | drain pan temp (TA4) | int16 | C | false | DEVICE_DATA | 176 | 1 | 1/10 | +| hptw1 | reservoir temp (TW1) | int16 | C | false | DEVICE_DATA | 177 | 1 | 1/10 | +| poolon | pool on | boolean | | true | DEVICE_DATA | 178 | 1 | 1 | uint8 -| poolsettemp | pool set temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 177 | 1 | 1/2 | -| hp4way | 4-way valve (VR4) | boolean | | false | DEVICE_DATA | 178 | 1 | 1 | -| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 179 | 1 | 1 | -| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 180 | 8 | 1 | -| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 188 | 1 | 1 | -| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 189 | 8 | 1 | -| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 197 | 1 | 1 | -| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 198 | 8 | 1 | -| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 206 | 1 | 1 | -| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 207 | 8 | 1 | -| maxheatcomp | heat limit compressor | enum | | true | DEVICE_DATA | 215 | 1 | 1 | -| maxheatheat | heat limit heating | enum | | true | DEVICE_DATA | 216 | 1 | 1 | +| poolsettemp | pool setpoint | uint8 (>=0<=0) | C | true | DEVICE_DATA | 179 | 1 | 1/2 | +| hp4way | 4-way valve (VR4) | boolean | | false | DEVICE_DATA | 180 | 1 | 1 | +| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 181 | 1 | 1 | +| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 182 | 8 | 1 | +| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 190 | 1 | 1 | +| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 191 | 8 | 1 | +| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 199 | 1 | 1 | +| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 200 | 8 | 1 | +| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 208 | 1 | 1 | +| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 209 | 8 | 1 | +| maxheatcomp | heat limit compressor | enum | | true | DEVICE_DATA | 217 | 1 | 1 | +| maxheatheat | heat limit heating | enum | | true | DEVICE_DATA | 218 | 1 | 1 | | dhw.maxheat | heat limit | enum | | true | DHW | 14 | 1 | 1 | -| auxheatersource | aux heater source | enum | | true | DEVICE_DATA | 217 | 1 | 1 | -| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 218 | 1 | 1 | -| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 219 | 1 | 1 | -| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 220 | 1 | 1 | -| auxheaterstatus | aux heater status | enum | | false | DEVICE_DATA | 221 | 1 | 1 | -| auxheaterlevel | aux heater level | uint8 | % | false | DEVICE_DATA | 222 | 1 | 1 | +| auxheatersource | aux heater source | enum | | true | DEVICE_DATA | 219 | 1 | 1 | +| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 220 | 1 | 1 | +| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 221 | 1 | 1 | +| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 222 | 1 | 1 | +| auxheaterstatus | aux heater status | enum | | false | DEVICE_DATA | 223 | 1 | 1 | +| auxheaterlevel | aux heater level | uint8 | % | false | DEVICE_DATA | 224 | 1 | 1 | uint16 -| auxheaterdelay | aux heater on delay | uint16 (>=10<=1000) | K*min | true | DEVICE_DATA | 223 | 1 | 10 | +| auxheaterdelay | aux heater on delay | uint16 (>=10<=1000) | K*min | true | DEVICE_DATA | 225 | 1 | 10 | uint8 -| auxmaxlimit | aux heater max limit | uint8 (>=0<=10) | K | true | DEVICE_DATA | 224 | 1 | 1/10 | +| auxmaxlimit | aux heater max limit | uint8 (>=0<=10) | K | true | DEVICE_DATA | 226 | 1 | 1/10 | uint8 -| auxlimitstart | aux heater limit start | uint8 (>=0<=10) | K | true | DEVICE_DATA | 225 | 1 | 1/10 | -| auxheatrmode | aux heater mode | enum | | true | DEVICE_DATA | 226 | 1 | 1 | +| auxlimitstart | aux heater limit start | uint8 (>=0<=10) | K | true | DEVICE_DATA | 227 | 1 | 1/10 | +| auxheatrmode | aux heater mode | enum | | true | DEVICE_DATA | 228 | 1 | 1 | uint16 -| hphystheat | on/off hyst heat | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 227 | 1 | 5 | +| hphystheat | on/off hyst heat | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 229 | 1 | 5 | uint16 -| hphystcool | on/off hyst cool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 228 | 1 | 5 | +| hphystcool | on/off hyst cool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 230 | 1 | 5 | uint16 -| hphystpool | on/off hyst pool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 229 | 1 | 5 | -| silentmode | silent mode | enum | | true | DEVICE_DATA | 230 | 1 | 1 | +| hphystpool | on/off hyst pool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 231 | 1 | 5 | +| silentmode | silent mode | enum | | true | DEVICE_DATA | 232 | 1 | 1 | uint8 -| silentfrom | silent mode from | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 231 | 1 | 15 | +| silentfrom | silent mode from | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 233 | 1 | 15 | uint8 -| silentto | silent mode to | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 232 | 1 | 15 | +| silentto | silent mode to | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 234 | 1 | 15 | int8 -| mintempsilent | min outside temp for silent mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 233 | 1 | 1 | +| mintempsilent | min outside temp for silent mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 235 | 1 | 1 | int8 -| tempparmode | outside temp parallel mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 234 | 1 | 1 | -| auxheatmix | aux heater mixing valve | int8 | % | false | DEVICE_DATA | 235 | 1 | 1 | +| tempparmode | outside temp parallel mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 236 | 1 | 1 | +| auxheatmix | aux heater mixing valve | int8 | % | false | DEVICE_DATA | 237 | 1 | 1 | uint8 -| tempdiffheat | temp diff TC3/TC0 heat | uint8 (>=2<=10) | K | true | DEVICE_DATA | 236 | 1 | 1/10 | +| tempdiffheat | temp diff TC3/TC0 heat | uint8 (>=2<=10) | K | true | DEVICE_DATA | 238 | 1 | 1/10 | uint8 -| tempdiffcool | temp diff TC3/TC0 cool | uint8 (>=2<=10) | K | true | DEVICE_DATA | 237 | 1 | 1/10 | -| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 238 | 1 | 1 | -| heatcable | heating cable | boolean | | true | DEVICE_DATA | 239 | 1 | 1 | -| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 240 | 1 | 1 | -| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 241 | 1 | 1 | +| tempdiffcool | temp diff TC3/TC0 cool | uint8 (>=2<=10) | K | true | DEVICE_DATA | 239 | 1 | 1/10 | +| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 240 | 1 | 1 | +| heatcable | heating cable | boolean | | true | DEVICE_DATA | 241 | 1 | 1 | +| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 242 | 1 | 1 | +| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 243 | 1 | 1 | uint8 -| primepumpmod | primary heatpump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 242 | 1 | 1 | -| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 243 | 1 | 1 | -| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 244 | 1 | 1 | -| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 245 | 1 | 1 | -| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 246 | 1 | 1 | -| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 247 | 1 | 1 | -| hppumpmode | primary heatpump mode | enum | | true | DEVICE_DATA | 248 | 1 | 1 | +| primepumpmod | primary heatpump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 244 | 1 | 1 | +| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 245 | 1 | 1 | +| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 246 | 1 | 1 | +| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 247 | 1 | 1 | +| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 248 | 1 | 1 | +| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 249 | 1 | 1 | +| hppumpmode | primary heatpump mode | enum | | true | DEVICE_DATA | 250 | 1 | 1 | uint8 -| fan | fan | uint8 (>=20<=100) | % | true | DEVICE_DATA | 249 | 1 | 1 | -| fanspd | fan speed | uint8 | % | false | DEVICE_DATA | 250 | 1 | 1 | -| shutdown | shutdown | cmd | | true | DEVICE_DATA | 251 | 1 | 1 | -| hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 252 | 1 | 1 | +| fan | fan | uint8 (>=20<=100) | % | true | DEVICE_DATA | 251 | 1 | 1 | +| fanspd | fan speed | uint8 | % | false | DEVICE_DATA | 252 | 1 | 1 | +| shutdown | shutdown | cmd | | true | DEVICE_DATA | 253 | 1 | 1 | +| hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 254 | 1 | 1 | uint16 -| hppowerlimit | power limit | uint16 (>=0<=0) | W | true | DEVICE_DATA | 253 | 1 | 1 | +| hppowerlimit | power limit | uint16 (>=0<=0) | W | true | DEVICE_DATA | 255 | 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 | @@ -3892,95 +3896,97 @@ uint8 | hpsetdiffpress | set differential pressure | uint8 (>=150<=750) | mbar | true | DEVICE_DATA | 151 | 1 | 50 | | hpcompon | hp compressor | boolean | | false | DEVICE_DATA | 152 | 1 | 1 | | hpactivity | compressor activity | enum | | false | DEVICE_DATA | 153 | 1 | 1 | -| hpbrinepumpspd | brine pump speed | uint8 | % | false | DEVICE_DATA | 154 | 1 | 1 | -| hpswitchvalve | switch valve | boolean | | false | DEVICE_DATA | 155 | 1 | 1 | -| hpcompspd | compressor speed | uint8 | % | false | DEVICE_DATA | 156 | 1 | 1 | -| hptargetspd | compressor target speed | uint8 | % | false | DEVICE_DATA | 157 | 1 | 1 | -| hpcircspd | circulation pump speed | uint8 | % | false | DEVICE_DATA | 158 | 1 | 1 | -| recvalve | receiver valve VR0 | uint8 | % | false | DEVICE_DATA | 159 | 1 | 1 | -| expvalve | expansion valve VR1 | uint8 | % | false | DEVICE_DATA | 160 | 1 | 1 | -| hpbrinein | brine in/evaporator | int16 | C | false | DEVICE_DATA | 161 | 1 | 1/10 | -| hpbrineout | brine out/condenser | int16 | C | false | DEVICE_DATA | 162 | 1 | 1/10 | -| hptc0 | heat carrier return (TC0) | int16 | C | false | DEVICE_DATA | 163 | 1 | 1/10 | -| hptc1 | heat carrier forward (TC1) | int16 | C | false | DEVICE_DATA | 164 | 1 | 1/10 | -| hptc3 | condenser temperature (TC3) | int16 | C | false | DEVICE_DATA | 165 | 1 | 1/10 | -| hptr1 | compressor temperature (TR1) | int16 | C | false | DEVICE_DATA | 166 | 1 | 1/10 | -| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 | C | false | DEVICE_DATA | 167 | 1 | 1/10 | -| hptr4 | evaporator inlet temperature (TR4) | int16 | C | false | DEVICE_DATA | 168 | 1 | 1/10 | -| hptr5 | compressor inlet temperature (TR5) | int16 | C | false | DEVICE_DATA | 169 | 1 | 1/10 | -| hptr6 | compressor outlet temperature (TR6) | int16 | C | false | DEVICE_DATA | 170 | 1 | 1/10 | -| hptr7 | refrigerant temperature gas side (condenser input) (TR7) | int16 | C | false | DEVICE_DATA | 171 | 1 | 1/10 | -| hptl2 | air inlet temperature (TL2) | int16 | C | false | DEVICE_DATA | 172 | 1 | 1/10 | -| hppl1 | low pressure side temperature (PL1) | int16 | C | false | DEVICE_DATA | 173 | 1 | 1/10 | -| hpph1 | high pressure side temperature (PH1) | int16 | C | false | DEVICE_DATA | 174 | 1 | 1/10 | -| hpta4 | drain pan temp (TA4) | int16 | C | false | DEVICE_DATA | 175 | 1 | 1/10 | -| hptw1 | reservoir temp (TW1) | int16 | C | false | DEVICE_DATA | 176 | 1 | 1/10 | +| hppoolon | hp pool | boolean | | false | DEVICE_DATA | 154 | 1 | 1 | +| hpbrinepumpspd | brine pump speed | uint8 | % | false | DEVICE_DATA | 155 | 1 | 1 | +| hpswitchvalve | switch valve | boolean | | false | DEVICE_DATA | 156 | 1 | 1 | +| hpcompspd | compressor speed | uint8 | % | false | DEVICE_DATA | 157 | 1 | 1 | +| hptargetspd | compressor target speed | uint8 | % | false | DEVICE_DATA | 158 | 1 | 1 | +| hpcircspd | circulation pump speed | uint8 | % | false | DEVICE_DATA | 159 | 1 | 1 | +| recvalve | receiver valve VR0 | uint8 | % | false | DEVICE_DATA | 160 | 1 | 1 | +| expvalve | expansion valve VR1 | uint8 | % | false | DEVICE_DATA | 161 | 1 | 1 | +| hpbrinein | brine in/evaporator | int16 | C | false | DEVICE_DATA | 162 | 1 | 1/10 | +| hpbrineout | brine out/condenser | int16 | C | false | DEVICE_DATA | 163 | 1 | 1/10 | +| hptc0 | heat carrier return (TC0) | int16 | C | false | DEVICE_DATA | 164 | 1 | 1/10 | +| hptc1 | heat carrier forward (TC1) | int16 | C | false | DEVICE_DATA | 165 | 1 | 1/10 | +| hptc3 | condenser temperature (TC3) | int16 | C | false | DEVICE_DATA | 166 | 1 | 1/10 | +| hptr1 | compressor temperature (TR1) | int16 | C | false | DEVICE_DATA | 167 | 1 | 1/10 | +| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 | C | false | DEVICE_DATA | 168 | 1 | 1/10 | +| hptr4 | evaporator inlet temperature (TR4) | int16 | C | false | DEVICE_DATA | 169 | 1 | 1/10 | +| hptr5 | compressor inlet temperature (TR5) | int16 | C | false | DEVICE_DATA | 170 | 1 | 1/10 | +| hptr6 | compressor outlet temperature (TR6) | int16 | C | false | DEVICE_DATA | 171 | 1 | 1/10 | +| hptr7 | refrigerant temperature gas side (condenser input) (TR7) | int16 | C | false | DEVICE_DATA | 172 | 1 | 1/10 | +| hptl2 | air inlet temperature (TL2) | int16 | C | false | DEVICE_DATA | 173 | 1 | 1/10 | +| hppl1 | low pressure side temperature (PL1) | int16 | C | false | DEVICE_DATA | 174 | 1 | 1/10 | +| hpph1 | high pressure side temperature (PH1) | int16 | C | false | DEVICE_DATA | 175 | 1 | 1/10 | +| hpta4 | drain pan temp (TA4) | int16 | C | false | DEVICE_DATA | 176 | 1 | 1/10 | +| hptw1 | reservoir temp (TW1) | int16 | C | false | DEVICE_DATA | 177 | 1 | 1/10 | +| poolon | pool on | boolean | | true | DEVICE_DATA | 178 | 1 | 1 | uint8 -| poolsettemp | pool set temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 177 | 1 | 1/2 | -| hp4way | 4-way valve (VR4) | boolean | | false | DEVICE_DATA | 178 | 1 | 1 | -| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 179 | 1 | 1 | -| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 180 | 8 | 1 | -| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 188 | 1 | 1 | -| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 189 | 8 | 1 | -| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 197 | 1 | 1 | -| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 198 | 8 | 1 | -| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 206 | 1 | 1 | -| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 207 | 8 | 1 | -| maxheatcomp | heat limit compressor | enum | | true | DEVICE_DATA | 215 | 1 | 1 | -| maxheatheat | heat limit heating | enum | | true | DEVICE_DATA | 216 | 1 | 1 | +| poolsettemp | pool setpoint | uint8 (>=0<=0) | C | true | DEVICE_DATA | 179 | 1 | 1/2 | +| hp4way | 4-way valve (VR4) | boolean | | false | DEVICE_DATA | 180 | 1 | 1 | +| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 181 | 1 | 1 | +| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 182 | 8 | 1 | +| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 190 | 1 | 1 | +| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 191 | 8 | 1 | +| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 199 | 1 | 1 | +| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 200 | 8 | 1 | +| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 208 | 1 | 1 | +| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 209 | 8 | 1 | +| maxheatcomp | heat limit compressor | enum | | true | DEVICE_DATA | 217 | 1 | 1 | +| maxheatheat | heat limit heating | enum | | true | DEVICE_DATA | 218 | 1 | 1 | | dhw.maxheat | heat limit | enum | | true | DHW | 14 | 1 | 1 | -| auxheatersource | aux heater source | enum | | true | DEVICE_DATA | 217 | 1 | 1 | -| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 218 | 1 | 1 | -| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 219 | 1 | 1 | -| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 220 | 1 | 1 | -| auxheaterstatus | aux heater status | enum | | false | DEVICE_DATA | 221 | 1 | 1 | -| auxheaterlevel | aux heater level | uint8 | % | false | DEVICE_DATA | 222 | 1 | 1 | +| auxheatersource | aux heater source | enum | | true | DEVICE_DATA | 219 | 1 | 1 | +| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 220 | 1 | 1 | +| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 221 | 1 | 1 | +| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 222 | 1 | 1 | +| auxheaterstatus | aux heater status | enum | | false | DEVICE_DATA | 223 | 1 | 1 | +| auxheaterlevel | aux heater level | uint8 | % | false | DEVICE_DATA | 224 | 1 | 1 | uint16 -| auxheaterdelay | aux heater on delay | uint16 (>=10<=1000) | K*min | true | DEVICE_DATA | 223 | 1 | 10 | +| auxheaterdelay | aux heater on delay | uint16 (>=10<=1000) | K*min | true | DEVICE_DATA | 225 | 1 | 10 | uint8 -| auxmaxlimit | aux heater max limit | uint8 (>=0<=10) | K | true | DEVICE_DATA | 224 | 1 | 1/10 | +| auxmaxlimit | aux heater max limit | uint8 (>=0<=10) | K | true | DEVICE_DATA | 226 | 1 | 1/10 | uint8 -| auxlimitstart | aux heater limit start | uint8 (>=0<=10) | K | true | DEVICE_DATA | 225 | 1 | 1/10 | -| auxheatrmode | aux heater mode | enum | | true | DEVICE_DATA | 226 | 1 | 1 | +| auxlimitstart | aux heater limit start | uint8 (>=0<=10) | K | true | DEVICE_DATA | 227 | 1 | 1/10 | +| auxheatrmode | aux heater mode | enum | | true | DEVICE_DATA | 228 | 1 | 1 | uint16 -| hphystheat | on/off hyst heat | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 227 | 1 | 5 | +| hphystheat | on/off hyst heat | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 229 | 1 | 5 | uint16 -| hphystcool | on/off hyst cool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 228 | 1 | 5 | +| hphystcool | on/off hyst cool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 230 | 1 | 5 | uint16 -| hphystpool | on/off hyst pool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 229 | 1 | 5 | -| silentmode | silent mode | enum | | true | DEVICE_DATA | 230 | 1 | 1 | +| hphystpool | on/off hyst pool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 231 | 1 | 5 | +| silentmode | silent mode | enum | | true | DEVICE_DATA | 232 | 1 | 1 | uint8 -| silentfrom | silent mode from | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 231 | 1 | 15 | +| silentfrom | silent mode from | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 233 | 1 | 15 | uint8 -| silentto | silent mode to | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 232 | 1 | 15 | +| silentto | silent mode to | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 234 | 1 | 15 | int8 -| mintempsilent | min outside temp for silent mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 233 | 1 | 1 | +| mintempsilent | min outside temp for silent mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 235 | 1 | 1 | int8 -| tempparmode | outside temp parallel mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 234 | 1 | 1 | -| auxheatmix | aux heater mixing valve | int8 | % | false | DEVICE_DATA | 235 | 1 | 1 | +| tempparmode | outside temp parallel mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 236 | 1 | 1 | +| auxheatmix | aux heater mixing valve | int8 | % | false | DEVICE_DATA | 237 | 1 | 1 | uint8 -| tempdiffheat | temp diff TC3/TC0 heat | uint8 (>=2<=10) | K | true | DEVICE_DATA | 236 | 1 | 1/10 | +| tempdiffheat | temp diff TC3/TC0 heat | uint8 (>=2<=10) | K | true | DEVICE_DATA | 238 | 1 | 1/10 | uint8 -| tempdiffcool | temp diff TC3/TC0 cool | uint8 (>=2<=10) | K | true | DEVICE_DATA | 237 | 1 | 1/10 | -| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 238 | 1 | 1 | -| heatcable | heating cable | boolean | | true | DEVICE_DATA | 239 | 1 | 1 | -| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 240 | 1 | 1 | -| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 241 | 1 | 1 | +| tempdiffcool | temp diff TC3/TC0 cool | uint8 (>=2<=10) | K | true | DEVICE_DATA | 239 | 1 | 1/10 | +| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 240 | 1 | 1 | +| heatcable | heating cable | boolean | | true | DEVICE_DATA | 241 | 1 | 1 | +| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 242 | 1 | 1 | +| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 243 | 1 | 1 | uint8 -| primepumpmod | primary heatpump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 242 | 1 | 1 | -| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 243 | 1 | 1 | -| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 244 | 1 | 1 | -| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 245 | 1 | 1 | -| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 246 | 1 | 1 | -| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 247 | 1 | 1 | -| hppumpmode | primary heatpump mode | enum | | true | DEVICE_DATA | 248 | 1 | 1 | +| primepumpmod | primary heatpump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 244 | 1 | 1 | +| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 245 | 1 | 1 | +| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 246 | 1 | 1 | +| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 247 | 1 | 1 | +| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 248 | 1 | 1 | +| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 249 | 1 | 1 | +| hppumpmode | primary heatpump mode | enum | | true | DEVICE_DATA | 250 | 1 | 1 | uint8 -| fan | fan | uint8 (>=20<=100) | % | true | DEVICE_DATA | 249 | 1 | 1 | -| fanspd | fan speed | uint8 | % | false | DEVICE_DATA | 250 | 1 | 1 | -| shutdown | shutdown | cmd | | true | DEVICE_DATA | 251 | 1 | 1 | -| hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 252 | 1 | 1 | +| fan | fan | uint8 (>=20<=100) | % | true | DEVICE_DATA | 251 | 1 | 1 | +| fanspd | fan speed | uint8 | % | false | DEVICE_DATA | 252 | 1 | 1 | +| shutdown | shutdown | cmd | | true | DEVICE_DATA | 253 | 1 | 1 | +| hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 254 | 1 | 1 | uint16 -| hppowerlimit | power limit | uint16 (>=0<=0) | W | true | DEVICE_DATA | 253 | 1 | 1 | +| hppowerlimit | power limit | uint16 (>=0<=0) | W | true | DEVICE_DATA | 255 | 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 | @@ -4076,39 +4082,39 @@ 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 | 254 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 257 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 261 | 1 | 1 | +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 262 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 263 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 264 | 1 | 1 | -| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 265 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 270 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 272 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 273 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 274 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | @@ -4155,9 +4161,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -4211,7 +4217,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 | 280 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | @@ -4237,39 +4243,39 @@ 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 | 254 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 257 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 261 | 1 | 1 | +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 262 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 263 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 264 | 1 | 1 | -| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 265 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 270 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 272 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 273 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 274 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | @@ -4316,9 +4322,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -4372,7 +4378,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 | 280 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | @@ -4398,39 +4404,39 @@ 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 | 254 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 257 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 261 | 1 | 1 | +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 262 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 263 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 264 | 1 | 1 | -| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 265 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 270 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 272 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 273 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 274 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | @@ -4477,9 +4483,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -4533,7 +4539,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 | 280 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | @@ -4559,39 +4565,39 @@ 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 | 254 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 257 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 261 | 1 | 1 | +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 262 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 263 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 264 | 1 | 1 | -| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 265 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 270 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 272 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 273 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 274 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | @@ -4638,9 +4644,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -4694,7 +4700,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 | 280 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | @@ -4720,39 +4726,39 @@ 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 | 254 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 257 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 261 | 1 | 1 | +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 262 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 263 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 264 | 1 | 1 | -| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 265 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 270 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 272 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 273 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 274 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | @@ -4799,9 +4805,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -4855,7 +4861,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 | 280 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | @@ -4881,39 +4887,39 @@ 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 | 254 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 257 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 261 | 1 | 1 | +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 262 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 263 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 264 | 1 | 1 | -| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 265 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 270 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 272 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 273 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 274 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | @@ -4960,9 +4966,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -5016,7 +5022,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 | 280 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | @@ -5027,14 +5033,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 | 281 | 1 | 1/10 | -| heatvalve | heating valve | uint8 | % | false | DEVICE_DATA | 282 | 1 | 1 | +| netflowtemp | heat network flow temp | uint16 | C | false | DEVICE_DATA | 283 | 1 | 1/10 | +| heatvalve | heating valve | uint8 | % | false | DEVICE_DATA | 284 | 1 | 1 | | dhw.dhwvalve | valve | uint8 | % | false | DHW | 75 | 1 | 1 | uint8 -| keepwarmtemp | keep warm temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 283 | 1 | 1 | +| keepwarmtemp | keep warm temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 285 | 1 | 1 | uint8 -| setreturntemp | set temp return | uint8 (>=0<=0) | C | true | DEVICE_DATA | 284 | 1 | 1 | -| heating | heating | boolean | | false | DEVICE_DATA | 285 | 1 | 1 | +| setreturntemp | set temp return | uint8 (>=0<=0) | C | true | DEVICE_DATA | 286 | 1 | 1 | +| heating | heating | boolean | | false | DEVICE_DATA | 287 | 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 | @@ -5096,9 +5102,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -5171,39 +5177,39 @@ 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 | 254 | 1 | 1/10 | -| burngas | gas | boolean | | false | DEVICE_DATA | 255 | 1 | 1 | -| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 256 | 1 | 1 | -| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 257 | 1 | 1/10 | -| fanwork | fan | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | -| ignwork | ignition | boolean | | false | DEVICE_DATA | 259 | 1 | 1 | -| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| exhausttemp | exhaust temperature | uint16 | C | false | DEVICE_DATA | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | uint8 -| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 261 | 1 | 1 | +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | uint8 -| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 262 | 1 | 1 | +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | uint8 -| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 263 | 1 | 1 | -| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 264 | 1 | 1 | -| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 265 | 1 | 1/10 | +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | int8 -| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 266 | 1 | 1 | +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | int8 -| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 267 | 1 | 1 | +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | int8 -| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | int8 -| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | -| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 270 | 1 | 1 | +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | uint8 -| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | uint8 -| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 272 | 1 | 1 | +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | uint8 -| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 273 | 1 | 1 | -| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 274 | 1 | 1 | +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | uint8 -| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | @@ -5250,9 +5256,9 @@ uint16 | pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | -| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 276 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | | dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | -| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | @@ -5306,7 +5312,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 | 280 | 1 | 1 | +| nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | uint24 | nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | @@ -8481,6 +8487,8 @@ uint8 | shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | |-|-|-|-|-|-|-|-|-| | pooltemp | pool temperature | int16 | C | false | DEVICE_DATA | -1 | 1 | 1/10 | -| poolshuntstatus | pool shunt status opening/closing | enum | | false | DEVICE_DATA | -1 | 1 | 1 | -| poolshunt | pool shunt open/close (0% = pool / 100% = heat) | uint8 | % | false | DEVICE_DATA | -1 | 1 | 1 | +| poolshuntstatus | valve status | enum | | false | DEVICE_DATA | -1 | 1 | 1 | +| poolshunt | valve actual | uint8 | % | false | DEVICE_DATA | -1 | 1 | 1 | +| poolshuntset | valve setpoint | uint8 | % | false | DEVICE_DATA | -1 | 1 | 1 | +| poolrequest | pool request | boolean | | false | DEVICE_DATA | -1 | 1 | 1 | diff --git a/docs/dump_entities.csv b/docs/dump_entities.csv index f564ad6d1..fecf00355 100644 --- a/docs/dump_entities.csv +++ b/docs/dump_entities.csv @@ -91,79 +91,81 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpsetdiffpress,set differential pressure,uint8 (>=150<=750),mbar,true,number.boiler_set_differential_pressure,number.boiler_hpsetdiffpress,6,0,50,151,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcompon,hp compressor,boolean, ,false,binary_sensor.boiler_hp_compressor,binary_sensor.boiler_hpcompon,6,0,1,152,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,6,0,1,153,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpbrinepumpspd,brine pump speed,uint8,%,false,sensor.boiler_brine_pump_speed,sensor.boiler_hpbrinepumpspd,6,0,1,154,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpswitchvalve,switch valve,boolean, ,false,binary_sensor.boiler_switch_valve,binary_sensor.boiler_hpswitchvalve,6,0,1,155,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcompspd,compressor speed,uint8,%,false,sensor.boiler_compressor_speed,sensor.boiler_hpcompspd,6,0,1,156,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptargetspd,compressor target speed,uint8,%,false,sensor.boiler_compressor_target_speed,sensor.boiler_hptargetspd,6,0,1,157,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcircspd,circulation pump speed,uint8,%,false,sensor.boiler_circulation_pump_speed,sensor.boiler_hpcircspd,6,0,1,158,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,recvalve,receiver valve VR0,uint8,%,false,sensor.boiler_receiver_valve_VR0,sensor.boiler_recvalve,6,0,1,159,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,expvalve,expansion valve VR1,uint8,%,false,sensor.boiler_expansion_valve_VR1,sensor.boiler_expvalve,6,0,1,160,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpbrinein,brine in/evaporator,int16,C,false,sensor.boiler_brine_in/evaporator,sensor.boiler_hpbrinein,6,0,1/10,161,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpbrineout,brine out/condenser,int16,C,false,sensor.boiler_brine_out/condenser,sensor.boiler_hpbrineout,6,0,1/10,162,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptc0,heat carrier return (TC0),int16,C,false,sensor.boiler_heat_carrier_return_(TC0),sensor.boiler_hptc0,6,0,1/10,163,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptc1,heat carrier forward (TC1),int16,C,false,sensor.boiler_heat_carrier_forward_(TC1),sensor.boiler_hptc1,6,0,1/10,164,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptc3,condenser temperature (TC3),int16,C,false,sensor.boiler_condenser_temperature_(TC3),sensor.boiler_hptc3,6,0,1/10,165,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr1,compressor temperature (TR1),int16,C,false,sensor.boiler_compressor_temperature_(TR1),sensor.boiler_hptr1,6,0,1/10,166,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,6,0,1/10,167,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr4,evaporator inlet temperature (TR4),int16,C,false,sensor.boiler_evaporator_inlet_temperature_(TR4),sensor.boiler_hptr4,6,0,1/10,168,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr5,compressor inlet temperature (TR5),int16,C,false,sensor.boiler_compressor_inlet_temperature_(TR5),sensor.boiler_hptr5,6,0,1/10,169,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr6,compressor outlet temperature (TR6),int16,C,false,sensor.boiler_compressor_outlet_temperature_(TR6),sensor.boiler_hptr6,6,0,1/10,170,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,6,0,1/10,171,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptl2,air inlet temperature (TL2),int16,C,false,sensor.boiler_air_inlet_temperature_(TL2),sensor.boiler_hptl2,6,0,1/10,172,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,6,0,1/10,173,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,6,0,1/10,174,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpta4,drain pan temp (TA4),int16,C,false,sensor.boiler_drain_pan_temp_(TA4),sensor.boiler_hpta4,6,0,1/10,175,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptw1,reservoir temp (TW1),int16,C,false,sensor.boiler_reservoir_temp_(TW1),sensor.boiler_hptw1,6,0,1/10,176,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,poolsettemp,pool set temperature,uint8 (>=0<=0),C,true,number.boiler_pool_set_temperature,number.boiler_poolsettemp,6,0,1/2,177,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,6,0,1,178,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin1,input 1 state,boolean, ,false,binary_sensor.boiler_input_1_state,binary_sensor.boiler_hpin1,6,0,1,179,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin1opt,input 1 options,string (>=0<=0), ,true,sensor.boiler_input_1_options,sensor.boiler_hpin1opt,6,0,1,180,8 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin2,input 2 state,boolean, ,false,binary_sensor.boiler_input_2_state,binary_sensor.boiler_hpin2,6,0,1,188,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin2opt,input 2 options,string (>=0<=0), ,true,sensor.boiler_input_2_options,sensor.boiler_hpin2opt,6,0,1,189,8 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin3,input 3 state,boolean, ,false,binary_sensor.boiler_input_3_state,binary_sensor.boiler_hpin3,6,0,1,197,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin3opt,input 3 options,string (>=0<=0), ,true,sensor.boiler_input_3_options,sensor.boiler_hpin3opt,6,0,1,198,8 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin4,input 4 state,boolean, ,false,binary_sensor.boiler_input_4_state,binary_sensor.boiler_hpin4,6,0,1,206,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin4opt,input 4 options,string (>=0<=0), ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt,6,0,1,207,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,6,0,1,215,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,6,0,1,216,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hppoolon,hp pool,boolean, ,false,binary_sensor.boiler_hp_pool,binary_sensor.boiler_hppoolon,6,0,1,154,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpbrinepumpspd,brine pump speed,uint8,%,false,sensor.boiler_brine_pump_speed,sensor.boiler_hpbrinepumpspd,6,0,1,155,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpswitchvalve,switch valve,boolean, ,false,binary_sensor.boiler_switch_valve,binary_sensor.boiler_hpswitchvalve,6,0,1,156,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcompspd,compressor speed,uint8,%,false,sensor.boiler_compressor_speed,sensor.boiler_hpcompspd,6,0,1,157,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptargetspd,compressor target speed,uint8,%,false,sensor.boiler_compressor_target_speed,sensor.boiler_hptargetspd,6,0,1,158,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcircspd,circulation pump speed,uint8,%,false,sensor.boiler_circulation_pump_speed,sensor.boiler_hpcircspd,6,0,1,159,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,recvalve,receiver valve VR0,uint8,%,false,sensor.boiler_receiver_valve_VR0,sensor.boiler_recvalve,6,0,1,160,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,expvalve,expansion valve VR1,uint8,%,false,sensor.boiler_expansion_valve_VR1,sensor.boiler_expvalve,6,0,1,161,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpbrinein,brine in/evaporator,int16,C,false,sensor.boiler_brine_in/evaporator,sensor.boiler_hpbrinein,6,0,1/10,162,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpbrineout,brine out/condenser,int16,C,false,sensor.boiler_brine_out/condenser,sensor.boiler_hpbrineout,6,0,1/10,163,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptc0,heat carrier return (TC0),int16,C,false,sensor.boiler_heat_carrier_return_(TC0),sensor.boiler_hptc0,6,0,1/10,164,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptc1,heat carrier forward (TC1),int16,C,false,sensor.boiler_heat_carrier_forward_(TC1),sensor.boiler_hptc1,6,0,1/10,165,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptc3,condenser temperature (TC3),int16,C,false,sensor.boiler_condenser_temperature_(TC3),sensor.boiler_hptc3,6,0,1/10,166,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr1,compressor temperature (TR1),int16,C,false,sensor.boiler_compressor_temperature_(TR1),sensor.boiler_hptr1,6,0,1/10,167,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,6,0,1/10,168,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr4,evaporator inlet temperature (TR4),int16,C,false,sensor.boiler_evaporator_inlet_temperature_(TR4),sensor.boiler_hptr4,6,0,1/10,169,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr5,compressor inlet temperature (TR5),int16,C,false,sensor.boiler_compressor_inlet_temperature_(TR5),sensor.boiler_hptr5,6,0,1/10,170,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr6,compressor outlet temperature (TR6),int16,C,false,sensor.boiler_compressor_outlet_temperature_(TR6),sensor.boiler_hptr6,6,0,1/10,171,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,6,0,1/10,172,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptl2,air inlet temperature (TL2),int16,C,false,sensor.boiler_air_inlet_temperature_(TL2),sensor.boiler_hptl2,6,0,1/10,173,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,6,0,1/10,174,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,6,0,1/10,175,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpta4,drain pan temp (TA4),int16,C,false,sensor.boiler_drain_pan_temp_(TA4),sensor.boiler_hpta4,6,0,1/10,176,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptw1,reservoir temp (TW1),int16,C,false,sensor.boiler_reservoir_temp_(TW1),sensor.boiler_hptw1,6,0,1/10,177,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,poolon,pool on,boolean (>=0<=0), ,true,switch.boiler_pool_on,switch.boiler_poolon,6,0,1,178,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,poolsettemp,pool setpoint,uint8 (>=0<=0),C,true,number.boiler_pool_setpoint,number.boiler_poolsettemp,6,0,1/2,179,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,6,0,1,180,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin1,input 1 state,boolean, ,false,binary_sensor.boiler_input_1_state,binary_sensor.boiler_hpin1,6,0,1,181,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin1opt,input 1 options,string (>=0<=0), ,true,sensor.boiler_input_1_options,sensor.boiler_hpin1opt,6,0,1,182,8 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin2,input 2 state,boolean, ,false,binary_sensor.boiler_input_2_state,binary_sensor.boiler_hpin2,6,0,1,190,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin2opt,input 2 options,string (>=0<=0), ,true,sensor.boiler_input_2_options,sensor.boiler_hpin2opt,6,0,1,191,8 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin3,input 3 state,boolean, ,false,binary_sensor.boiler_input_3_state,binary_sensor.boiler_hpin3,6,0,1,199,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin3opt,input 3 options,string (>=0<=0), ,true,sensor.boiler_input_3_options,sensor.boiler_hpin3opt,6,0,1,200,8 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin4,input 4 state,boolean, ,false,binary_sensor.boiler_input_4_state,binary_sensor.boiler_hpin4,6,0,1,208,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin4opt,input 4 options,string (>=0<=0), ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt,6,0,1,209,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,6,0,1,217,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,6,0,1,218,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,6,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,6,0,1,217,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,6,0,1,218,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheateronly,aux heater only,boolean (>=0<=0), ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly,6,0,1,219,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheateroff,disable aux heater,boolean (>=0<=0), ,true,switch.boiler_disable_aux_heater,switch.boiler_auxheateroff,6,0,1,220,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,6,0,1,221,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheaterlevel,aux heater level,uint8,%,false,sensor.boiler_aux_heater_level,sensor.boiler_auxheaterlevel,6,0,1,222,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,6,0,10,223,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,6,0,1/10,224,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,6,0,1/10,225,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,6,0,1,226,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,6,0,5,227,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,6,0,5,228,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,6,0,5,229,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,silentmode,silent mode,enum [off\|auto\|on] (>=0<=0), ,true,select.boiler_silent_mode,select.boiler_silentmode,6,0,1,230,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,silentfrom,silent mode from,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_from,number.boiler_silentfrom,6,0,15,231,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,silentto,silent mode to,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_to,number.boiler_silentto,6,0,15,232,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,6,0,1,233,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,6,0,1,234,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheatmix,aux heater mixing valve,int8,%,false,sensor.boiler_aux_heater_mixing_valve,sensor.boiler_auxheatmix,6,0,1,235,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,6,0,1/10,236,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,6,0,1/10,237,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,vpcooling,valve/pump cooling,boolean (>=0<=0), ,true,switch.boiler_valve/pump_cooling,switch.boiler_vpcooling,6,0,1,238,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatcable,heating cable,boolean (>=0<=0), ,true,switch.boiler_heating_cable,switch.boiler_heatcable,6,0,1,239,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,vc0valve,VC0 valve,boolean (>=0<=0), ,true,switch.boiler_VC0_valve,switch.boiler_vc0valve,6,0,1,240,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,primepump,primary heatpump,boolean (>=0<=0), ,true,switch.boiler_primary_heatpump,switch.boiler_primepump,6,0,1,241,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,primepumpmod,primary heatpump modulation,uint8 (>=0<=0),%,true,number.boiler_primary_heatpump_modulation,number.boiler_primepumpmod,6,0,1,242,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hp3way,3-way valve,boolean (>=0<=0), ,true,switch.boiler_3-way_valve,switch.boiler_hp3way,6,0,1,243,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,6,0,1,244,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,6,0,1,245,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,6,0,1,246,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,6,0,1,247,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,6,0,1,248,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,fan,fan,uint8 (>=20<=100),%,true,number.boiler_fan,number.boiler_fan,6,0,1,249,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,fanspd,fan speed,uint8,%,false,sensor.boiler_fan_speed,sensor.boiler_fanspd,6,0,1,250,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,shutdown,shutdown,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_shutdown,sensor.boiler_shutdown,6,0,1,251,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcurrpower,compressor current power,uint16,W,false,sensor.boiler_compressor_current_power,sensor.boiler_hpcurrpower,6,0,1,252,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hppowerlimit,power limit,uint16 (>=0<=0),W,true,number.boiler_power_limit,number.boiler_hppowerlimit,6,0,1,253,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,6,0,1,219,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,6,0,1,220,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheateronly,aux heater only,boolean (>=0<=0), ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly,6,0,1,221,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheateroff,disable aux heater,boolean (>=0<=0), ,true,switch.boiler_disable_aux_heater,switch.boiler_auxheateroff,6,0,1,222,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,6,0,1,223,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheaterlevel,aux heater level,uint8,%,false,sensor.boiler_aux_heater_level,sensor.boiler_auxheaterlevel,6,0,1,224,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,6,0,10,225,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,6,0,1/10,226,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,6,0,1/10,227,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,6,0,1,228,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,6,0,5,229,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,6,0,5,230,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,6,0,5,231,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,silentmode,silent mode,enum [off\|auto\|on] (>=0<=0), ,true,select.boiler_silent_mode,select.boiler_silentmode,6,0,1,232,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,silentfrom,silent mode from,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_from,number.boiler_silentfrom,6,0,15,233,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,silentto,silent mode to,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_to,number.boiler_silentto,6,0,15,234,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,6,0,1,235,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,6,0,1,236,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheatmix,aux heater mixing valve,int8,%,false,sensor.boiler_aux_heater_mixing_valve,sensor.boiler_auxheatmix,6,0,1,237,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,6,0,1/10,238,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,6,0,1/10,239,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,vpcooling,valve/pump cooling,boolean (>=0<=0), ,true,switch.boiler_valve/pump_cooling,switch.boiler_vpcooling,6,0,1,240,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatcable,heating cable,boolean (>=0<=0), ,true,switch.boiler_heating_cable,switch.boiler_heatcable,6,0,1,241,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,vc0valve,VC0 valve,boolean (>=0<=0), ,true,switch.boiler_VC0_valve,switch.boiler_vc0valve,6,0,1,242,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,primepump,primary heatpump,boolean (>=0<=0), ,true,switch.boiler_primary_heatpump,switch.boiler_primepump,6,0,1,243,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,primepumpmod,primary heatpump modulation,uint8 (>=0<=0),%,true,number.boiler_primary_heatpump_modulation,number.boiler_primepumpmod,6,0,1,244,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hp3way,3-way valve,boolean (>=0<=0), ,true,switch.boiler_3-way_valve,switch.boiler_hp3way,6,0,1,245,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,6,0,1,246,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,6,0,1,247,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,6,0,1,248,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,6,0,1,249,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,6,0,1,250,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,fan,fan,uint8 (>=20<=100),%,true,number.boiler_fan,number.boiler_fan,6,0,1,251,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,fanspd,fan speed,uint8,%,false,sensor.boiler_fan_speed,sensor.boiler_fanspd,6,0,1,252,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,shutdown,shutdown,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_shutdown,sensor.boiler_shutdown,6,0,1,253,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcurrpower,compressor current power,uint16,W,false,sensor.boiler_compressor_current_power,sensor.boiler_hpcurrpower,6,0,1,254,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hppowerlimit,power limit,uint16 (>=0<=0),W,true,number.boiler_power_limit,number.boiler_hppowerlimit,6,0,1,255,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.alternatingop,alternating operation,boolean (>=0<=0), ,true,switch.boiler_dhw_alternating_operation,switch.boiler_dhw_alternatingop,6,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,6,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,6,9,1,17,1 @@ -232,28 +234,28 @@ 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,6,0,1/10,11,1 "Greenstar 2000",boiler,11,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 "Greenstar 2000",boiler,11,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 -"Greenstar 2000",boiler,11,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,254,1 -"Greenstar 2000",boiler,11,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,255,1 -"Greenstar 2000",boiler,11,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,256,1 -"Greenstar 2000",boiler,11,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,257,1 -"Greenstar 2000",boiler,11,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,258,1 -"Greenstar 2000",boiler,11,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,259,1 -"Greenstar 2000",boiler,11,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,260,1 -"Greenstar 2000",boiler,11,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,261,1 -"Greenstar 2000",boiler,11,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,262,1 -"Greenstar 2000",boiler,11,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,263,1 -"Greenstar 2000",boiler,11,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,264,1 -"Greenstar 2000",boiler,11,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,265,1 -"Greenstar 2000",boiler,11,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,266,1 -"Greenstar 2000",boiler,11,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,267,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,6,0,1,268,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,6,0,1,269,1 -"Greenstar 2000",boiler,11,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,270,1 -"Greenstar 2000",boiler,11,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,271,1 -"Greenstar 2000",boiler,11,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,272,1 -"Greenstar 2000",boiler,11,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,273,1 -"Greenstar 2000",boiler,11,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,274,1 -"Greenstar 2000",boiler,11,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,275,1 +"Greenstar 2000",boiler,11,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Greenstar 2000",boiler,11,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Greenstar 2000",boiler,11,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Greenstar 2000",boiler,11,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Greenstar 2000",boiler,11,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Greenstar 2000",boiler,11,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Greenstar 2000",boiler,11,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Greenstar 2000",boiler,11,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Greenstar 2000",boiler,11,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Greenstar 2000",boiler,11,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Greenstar 2000",boiler,11,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Greenstar 2000",boiler,11,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Greenstar 2000",boiler,11,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Greenstar 2000",boiler,11,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Greenstar 2000",boiler,11,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Greenstar 2000",boiler,11,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Greenstar 2000",boiler,11,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Greenstar 2000",boiler,11,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Greenstar 2000",boiler,11,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Greenstar 2000",boiler,11,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 "Greenstar 2000",boiler,11,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 "Greenstar 2000",boiler,11,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 "Greenstar 2000",boiler,11,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 @@ -290,9 +292,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 2000",boiler,11,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 "Greenstar 2000",boiler,11,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Greenstar 2000",boiler,11,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 -"Greenstar 2000",boiler,11,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,276,2 +"Greenstar 2000",boiler,11,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 "Greenstar 2000",boiler,11,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 -"Greenstar 2000",boiler,11,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,278,2 +"Greenstar 2000",boiler,11,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 "Greenstar 2000",boiler,11,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 "Greenstar 2000",boiler,11,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 @@ -335,7 +337,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,6,9,1,66,1 "Greenstar 2000",boiler,11,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 "Greenstar 2000",boiler,11,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 -"Greenstar 2000",boiler,11,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,280,1 +"Greenstar 2000",boiler,11,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Greenstar 2000",boiler,11,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Greenstar 2000",boiler,11,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 "Greenstar 2000",boiler,11,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 @@ -353,28 +355,28 @@ 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,6,0,1/10,11,1 "C1200W",boiler,12,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 "C1200W",boiler,12,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 -"C1200W",boiler,12,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,254,1 -"C1200W",boiler,12,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,255,1 -"C1200W",boiler,12,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,256,1 -"C1200W",boiler,12,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,257,1 -"C1200W",boiler,12,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,258,1 -"C1200W",boiler,12,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,259,1 -"C1200W",boiler,12,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,260,1 -"C1200W",boiler,12,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,261,1 -"C1200W",boiler,12,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,262,1 -"C1200W",boiler,12,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,263,1 -"C1200W",boiler,12,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,264,1 -"C1200W",boiler,12,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,265,1 -"C1200W",boiler,12,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,266,1 -"C1200W",boiler,12,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,267,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,6,0,1,268,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,6,0,1,269,1 -"C1200W",boiler,12,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,270,1 -"C1200W",boiler,12,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,271,1 -"C1200W",boiler,12,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,272,1 -"C1200W",boiler,12,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,273,1 -"C1200W",boiler,12,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,274,1 -"C1200W",boiler,12,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,275,1 +"C1200W",boiler,12,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"C1200W",boiler,12,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"C1200W",boiler,12,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"C1200W",boiler,12,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"C1200W",boiler,12,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"C1200W",boiler,12,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"C1200W",boiler,12,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"C1200W",boiler,12,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"C1200W",boiler,12,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"C1200W",boiler,12,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"C1200W",boiler,12,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"C1200W",boiler,12,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"C1200W",boiler,12,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"C1200W",boiler,12,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"C1200W",boiler,12,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"C1200W",boiler,12,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"C1200W",boiler,12,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"C1200W",boiler,12,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"C1200W",boiler,12,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"C1200W",boiler,12,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 "C1200W",boiler,12,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 "C1200W",boiler,12,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 "C1200W",boiler,12,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 @@ -411,9 +413,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "C1200W",boiler,12,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 "C1200W",boiler,12,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "C1200W",boiler,12,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 -"C1200W",boiler,12,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,276,2 +"C1200W",boiler,12,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 "C1200W",boiler,12,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 -"C1200W",boiler,12,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,278,2 +"C1200W",boiler,12,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 "C1200W",boiler,12,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 "C1200W",boiler,12,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 @@ -456,7 +458,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,6,9,1,66,1 "C1200W",boiler,12,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 "C1200W",boiler,12,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 -"C1200W",boiler,12,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,280,1 +"C1200W",boiler,12,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "C1200W",boiler,12,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "C1200W",boiler,12,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 "C1200W",boiler,12,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 @@ -474,28 +476,28 @@ 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,6,0,1/10,11,1 "CS5800iG",boiler,16,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 "CS5800iG",boiler,16,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 -"CS5800iG",boiler,16,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,254,1 -"CS5800iG",boiler,16,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,255,1 -"CS5800iG",boiler,16,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,256,1 -"CS5800iG",boiler,16,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,257,1 -"CS5800iG",boiler,16,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,258,1 -"CS5800iG",boiler,16,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,259,1 -"CS5800iG",boiler,16,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,260,1 -"CS5800iG",boiler,16,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,261,1 -"CS5800iG",boiler,16,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,262,1 -"CS5800iG",boiler,16,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,263,1 -"CS5800iG",boiler,16,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,264,1 -"CS5800iG",boiler,16,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,265,1 -"CS5800iG",boiler,16,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,266,1 -"CS5800iG",boiler,16,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,267,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,6,0,1,268,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,6,0,1,269,1 -"CS5800iG",boiler,16,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,270,1 -"CS5800iG",boiler,16,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,271,1 -"CS5800iG",boiler,16,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,272,1 -"CS5800iG",boiler,16,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,273,1 -"CS5800iG",boiler,16,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,274,1 -"CS5800iG",boiler,16,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,275,1 +"CS5800iG",boiler,16,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"CS5800iG",boiler,16,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"CS5800iG",boiler,16,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"CS5800iG",boiler,16,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"CS5800iG",boiler,16,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"CS5800iG",boiler,16,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"CS5800iG",boiler,16,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"CS5800iG",boiler,16,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"CS5800iG",boiler,16,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"CS5800iG",boiler,16,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"CS5800iG",boiler,16,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"CS5800iG",boiler,16,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"CS5800iG",boiler,16,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"CS5800iG",boiler,16,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"CS5800iG",boiler,16,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"CS5800iG",boiler,16,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"CS5800iG",boiler,16,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"CS5800iG",boiler,16,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"CS5800iG",boiler,16,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"CS5800iG",boiler,16,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 "CS5800iG",boiler,16,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 "CS5800iG",boiler,16,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 "CS5800iG",boiler,16,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 @@ -532,9 +534,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CS5800iG",boiler,16,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 "CS5800iG",boiler,16,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "CS5800iG",boiler,16,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 -"CS5800iG",boiler,16,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,276,2 +"CS5800iG",boiler,16,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 "CS5800iG",boiler,16,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 -"CS5800iG",boiler,16,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,278,2 +"CS5800iG",boiler,16,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 "CS5800iG",boiler,16,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 "CS5800iG",boiler,16,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 @@ -577,7 +579,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,6,9,1,66,1 "CS5800iG",boiler,16,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 "CS5800iG",boiler,16,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 -"CS5800iG",boiler,16,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,280,1 +"CS5800iG",boiler,16,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "CS5800iG",boiler,16,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "CS5800iG",boiler,16,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 "CS5800iG",boiler,16,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 @@ -595,28 +597,28 @@ 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,6,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,6,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,6,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,6,0,1/10,254,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,255,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,256,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,257,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,258,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,259,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,260,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,261,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,262,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,6,0,1,263,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,264,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,265,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,6,0,1,266,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,6,0,1,267,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,6,0,1,268,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,6,0,1,269,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,270,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,271,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,272,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,273,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,274,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,275,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,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,6,0,1,265,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,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,6,0,1,268,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,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 "BK13/BK15, Smartline, GB1*2",boiler,64,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,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,6,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,6,0,1,16,1 @@ -653,9 +655,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "BK13/BK15, Smartline, GB1*2",boiler,64,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 "BK13/BK15, Smartline, GB1*2",boiler,64,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,276,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,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,6,0,1/10,278,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,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,6,9,1,29,1 @@ -698,7 +700,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,6,9,1,66,1 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,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,6,0,1,280,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "BK13/BK15, Smartline, GB1*2",boiler,64,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "BK13/BK15, Smartline, GB1*2",boiler,64,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 @@ -716,28 +718,28 @@ 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,6,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,6,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,6,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,6,0,1/10,254,1 -"Logano GB1*5, Logamatic MC10",boiler,72,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,255,1 -"Logano GB1*5, Logamatic MC10",boiler,72,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,256,1 -"Logano GB1*5, Logamatic MC10",boiler,72,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,257,1 -"Logano GB1*5, Logamatic MC10",boiler,72,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,258,1 -"Logano GB1*5, Logamatic MC10",boiler,72,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,259,1 -"Logano GB1*5, Logamatic MC10",boiler,72,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,260,1 -"Logano GB1*5, Logamatic MC10",boiler,72,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,261,1 -"Logano GB1*5, Logamatic MC10",boiler,72,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,262,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,6,0,1,263,1 -"Logano GB1*5, Logamatic MC10",boiler,72,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,264,1 -"Logano GB1*5, Logamatic MC10",boiler,72,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,265,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,6,0,1,266,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,6,0,1,267,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,6,0,1,268,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,6,0,1,269,1 -"Logano GB1*5, Logamatic MC10",boiler,72,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,270,1 -"Logano GB1*5, Logamatic MC10",boiler,72,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,271,1 -"Logano GB1*5, Logamatic MC10",boiler,72,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,272,1 -"Logano GB1*5, Logamatic MC10",boiler,72,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,273,1 -"Logano GB1*5, Logamatic MC10",boiler,72,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,274,1 -"Logano GB1*5, Logamatic MC10",boiler,72,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,275,1 +"Logano GB1*5, Logamatic MC10",boiler,72,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Logano GB1*5, Logamatic MC10",boiler,72,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Logano GB1*5, Logamatic MC10",boiler,72,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Logano GB1*5, Logamatic MC10",boiler,72,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Logano GB1*5, Logamatic MC10",boiler,72,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Logano GB1*5, Logamatic MC10",boiler,72,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Logano GB1*5, Logamatic MC10",boiler,72,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Logano GB1*5, Logamatic MC10",boiler,72,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Logano GB1*5, Logamatic MC10",boiler,72,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,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,6,0,1,265,1 +"Logano GB1*5, Logamatic MC10",boiler,72,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Logano GB1*5, Logamatic MC10",boiler,72,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,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,6,0,1,268,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,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Logano GB1*5, Logamatic MC10",boiler,72,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Logano GB1*5, Logamatic MC10",boiler,72,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Logano GB1*5, Logamatic MC10",boiler,72,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Logano GB1*5, Logamatic MC10",boiler,72,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Logano GB1*5, Logamatic MC10",boiler,72,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Logano GB1*5, Logamatic MC10",boiler,72,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 "Logano GB1*5, Logamatic MC10",boiler,72,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,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,6,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,6,0,1,16,1 @@ -774,9 +776,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB1*5, Logamatic MC10",boiler,72,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 "Logano GB1*5, Logamatic MC10",boiler,72,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,276,2 +"Logano GB1*5, Logamatic MC10",boiler,72,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,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,6,0,1/10,278,2 +"Logano GB1*5, Logamatic MC10",boiler,72,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,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,6,9,1,29,1 @@ -819,7 +821,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,6,9,1,66,1 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,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,6,0,1,280,1 +"Logano GB1*5, Logamatic MC10",boiler,72,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Logano GB1*5, Logamatic MC10",boiler,72,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Logano GB1*5, Logamatic MC10",boiler,72,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 @@ -837,28 +839,28 @@ 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,6,0,1/10,11,1 "Cascade CM10",boiler,81,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 "Cascade CM10",boiler,81,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 -"Cascade CM10",boiler,81,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,254,1 -"Cascade CM10",boiler,81,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,255,1 -"Cascade CM10",boiler,81,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,256,1 -"Cascade CM10",boiler,81,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,257,1 -"Cascade CM10",boiler,81,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,258,1 -"Cascade CM10",boiler,81,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,259,1 -"Cascade CM10",boiler,81,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,260,1 -"Cascade CM10",boiler,81,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,261,1 -"Cascade CM10",boiler,81,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,262,1 -"Cascade CM10",boiler,81,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,263,1 -"Cascade CM10",boiler,81,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,264,1 -"Cascade CM10",boiler,81,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,265,1 -"Cascade CM10",boiler,81,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,266,1 -"Cascade CM10",boiler,81,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,267,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,6,0,1,268,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,6,0,1,269,1 -"Cascade CM10",boiler,81,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,270,1 -"Cascade CM10",boiler,81,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,271,1 -"Cascade CM10",boiler,81,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,272,1 -"Cascade CM10",boiler,81,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,273,1 -"Cascade CM10",boiler,81,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,274,1 -"Cascade CM10",boiler,81,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,275,1 +"Cascade CM10",boiler,81,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Cascade CM10",boiler,81,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Cascade CM10",boiler,81,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Cascade CM10",boiler,81,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Cascade CM10",boiler,81,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Cascade CM10",boiler,81,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Cascade CM10",boiler,81,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Cascade CM10",boiler,81,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Cascade CM10",boiler,81,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Cascade CM10",boiler,81,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Cascade CM10",boiler,81,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Cascade CM10",boiler,81,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Cascade CM10",boiler,81,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Cascade CM10",boiler,81,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Cascade CM10",boiler,81,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Cascade CM10",boiler,81,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Cascade CM10",boiler,81,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Cascade CM10",boiler,81,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Cascade CM10",boiler,81,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Cascade CM10",boiler,81,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 "Cascade CM10",boiler,81,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 "Cascade CM10",boiler,81,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 "Cascade CM10",boiler,81,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 @@ -895,9 +897,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade CM10",boiler,81,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 "Cascade CM10",boiler,81,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Cascade CM10",boiler,81,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 -"Cascade CM10",boiler,81,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,276,2 +"Cascade CM10",boiler,81,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 "Cascade CM10",boiler,81,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 -"Cascade CM10",boiler,81,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,278,2 +"Cascade CM10",boiler,81,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 "Cascade CM10",boiler,81,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 "Cascade CM10",boiler,81,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 @@ -940,7 +942,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,6,9,1,66,1 "Cascade CM10",boiler,81,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 "Cascade CM10",boiler,81,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 -"Cascade CM10",boiler,81,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,280,1 +"Cascade CM10",boiler,81,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Cascade CM10",boiler,81,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Cascade CM10",boiler,81,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 "Cascade CM10",boiler,81,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 @@ -958,28 +960,28 @@ 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,6,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,6,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,6,0,1/10,13,1 -"Logamax Plus GB022",boiler,84,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,254,1 -"Logamax Plus GB022",boiler,84,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,255,1 -"Logamax Plus GB022",boiler,84,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,256,1 -"Logamax Plus GB022",boiler,84,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,257,1 -"Logamax Plus GB022",boiler,84,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,258,1 -"Logamax Plus GB022",boiler,84,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,259,1 -"Logamax Plus GB022",boiler,84,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,260,1 -"Logamax Plus GB022",boiler,84,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,261,1 -"Logamax Plus GB022",boiler,84,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,262,1 -"Logamax Plus GB022",boiler,84,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,263,1 -"Logamax Plus GB022",boiler,84,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,264,1 -"Logamax Plus GB022",boiler,84,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,265,1 -"Logamax Plus GB022",boiler,84,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,266,1 -"Logamax Plus GB022",boiler,84,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,267,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,6,0,1,268,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,6,0,1,269,1 -"Logamax Plus GB022",boiler,84,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,270,1 -"Logamax Plus GB022",boiler,84,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,271,1 -"Logamax Plus GB022",boiler,84,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,272,1 -"Logamax Plus GB022",boiler,84,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,273,1 -"Logamax Plus GB022",boiler,84,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,274,1 -"Logamax Plus GB022",boiler,84,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,275,1 +"Logamax Plus GB022",boiler,84,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Logamax Plus GB022",boiler,84,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Logamax Plus GB022",boiler,84,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Logamax Plus GB022",boiler,84,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Logamax Plus GB022",boiler,84,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Logamax Plus GB022",boiler,84,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Logamax Plus GB022",boiler,84,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Logamax Plus GB022",boiler,84,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Logamax Plus GB022",boiler,84,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Logamax Plus GB022",boiler,84,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Logamax Plus GB022",boiler,84,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Logamax Plus GB022",boiler,84,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Logamax Plus GB022",boiler,84,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Logamax Plus GB022",boiler,84,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Logamax Plus GB022",boiler,84,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Logamax Plus GB022",boiler,84,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Logamax Plus GB022",boiler,84,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Logamax Plus GB022",boiler,84,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Logamax Plus GB022",boiler,84,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Logamax Plus GB022",boiler,84,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 "Logamax Plus GB022",boiler,84,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 "Logamax Plus GB022",boiler,84,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 "Logamax Plus GB022",boiler,84,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 @@ -1016,9 +1018,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB022",boiler,84,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 "Logamax Plus GB022",boiler,84,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Logamax Plus GB022",boiler,84,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,276,2 +"Logamax Plus GB022",boiler,84,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 "Logamax Plus GB022",boiler,84,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,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,6,0,1/10,278,2 +"Logamax Plus GB022",boiler,84,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 "Logamax Plus GB022",boiler,84,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,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,6,9,1,29,1 @@ -1061,7 +1063,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,6,9,1,66,1 "Logamax Plus GB022",boiler,84,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 -"Logamax Plus GB022",boiler,84,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,280,1 +"Logamax Plus GB022",boiler,84,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Logamax Plus GB022",boiler,84,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Logamax Plus GB022",boiler,84,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 "Logamax Plus GB022",boiler,84,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 @@ -1079,28 +1081,28 @@ 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,6,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,6,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,6,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,6,0,1/10,254,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,255,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,6,0,1,256,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,257,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,258,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,259,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,6,0,1,260,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,6,0,1,261,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,6,0,1,262,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,6,0,1,263,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,6,0,1,264,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,265,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,6,0,1,266,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,6,0,1,267,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,6,0,1,268,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,6,0,1,269,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,6,0,1,270,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,6,0,1,271,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,6,0,1,272,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,6,0,1,273,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,6,0,1,274,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,6,0,1,275,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,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,6,0,1,258,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,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,6,0,1,262,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,6,0,1,263,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,6,0,1,264,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,6,0,1,265,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,6,0,1,266,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,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,6,0,1,268,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,6,0,1,269,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,6,0,1,270,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,6,0,1,271,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,6,0,1,272,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,6,0,1,273,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,6,0,1,274,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,6,0,1,275,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,6,0,1,276,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,6,0,1,277,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,6,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,6,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,6,0,1,16,1 @@ -1137,9 +1139,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "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,6,0,1,87,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,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,6,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,6,0,1/10,276,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,6,0,1/10,278,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,6,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,6,0,1/10,278,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,6,0,1/10,280,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,6,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,6,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,6,9,1,29,1 @@ -1182,7 +1184,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,6,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,6,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,6,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,6,0,1,280,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,6,0,1,282,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,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,6,0,1/100,91,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,6,9,1/100,0,2 @@ -1200,28 +1202,28 @@ 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,6,0,1/10,11,1 "Topline, GB162",boiler,115,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 "Topline, GB162",boiler,115,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 -"Topline, GB162",boiler,115,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,254,1 -"Topline, GB162",boiler,115,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,255,1 -"Topline, GB162",boiler,115,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,256,1 -"Topline, GB162",boiler,115,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,257,1 -"Topline, GB162",boiler,115,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,258,1 -"Topline, GB162",boiler,115,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,259,1 -"Topline, GB162",boiler,115,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,260,1 -"Topline, GB162",boiler,115,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,261,1 -"Topline, GB162",boiler,115,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,262,1 -"Topline, GB162",boiler,115,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,263,1 -"Topline, GB162",boiler,115,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,264,1 -"Topline, GB162",boiler,115,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,265,1 -"Topline, GB162",boiler,115,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,266,1 -"Topline, GB162",boiler,115,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,267,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,6,0,1,268,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,6,0,1,269,1 -"Topline, GB162",boiler,115,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,270,1 -"Topline, GB162",boiler,115,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,271,1 -"Topline, GB162",boiler,115,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,272,1 -"Topline, GB162",boiler,115,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,273,1 -"Topline, GB162",boiler,115,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,274,1 -"Topline, GB162",boiler,115,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,275,1 +"Topline, GB162",boiler,115,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Topline, GB162",boiler,115,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Topline, GB162",boiler,115,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Topline, GB162",boiler,115,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Topline, GB162",boiler,115,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Topline, GB162",boiler,115,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Topline, GB162",boiler,115,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Topline, GB162",boiler,115,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Topline, GB162",boiler,115,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Topline, GB162",boiler,115,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Topline, GB162",boiler,115,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Topline, GB162",boiler,115,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Topline, GB162",boiler,115,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Topline, GB162",boiler,115,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Topline, GB162",boiler,115,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Topline, GB162",boiler,115,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Topline, GB162",boiler,115,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Topline, GB162",boiler,115,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Topline, GB162",boiler,115,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Topline, GB162",boiler,115,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 "Topline, GB162",boiler,115,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 "Topline, GB162",boiler,115,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 "Topline, GB162",boiler,115,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 @@ -1258,9 +1260,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Topline, GB162",boiler,115,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 "Topline, GB162",boiler,115,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Topline, GB162",boiler,115,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 -"Topline, GB162",boiler,115,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,276,2 +"Topline, GB162",boiler,115,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 "Topline, GB162",boiler,115,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 -"Topline, GB162",boiler,115,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,278,2 +"Topline, GB162",boiler,115,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 "Topline, GB162",boiler,115,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 "Topline, GB162",boiler,115,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 @@ -1303,7 +1305,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,6,9,1,66,1 "Topline, GB162",boiler,115,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 "Topline, GB162",boiler,115,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 -"Topline, GB162",boiler,115,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,280,1 +"Topline, GB162",boiler,115,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Topline, GB162",boiler,115,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Topline, GB162",boiler,115,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 "Topline, GB162",boiler,115,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 @@ -1321,28 +1323,28 @@ 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,6,0,1/10,11,1 "Cascade MCM10",boiler,121,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 "Cascade MCM10",boiler,121,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 -"Cascade MCM10",boiler,121,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,254,1 -"Cascade MCM10",boiler,121,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,255,1 -"Cascade MCM10",boiler,121,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,256,1 -"Cascade MCM10",boiler,121,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,257,1 -"Cascade MCM10",boiler,121,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,258,1 -"Cascade MCM10",boiler,121,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,259,1 -"Cascade MCM10",boiler,121,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,260,1 -"Cascade MCM10",boiler,121,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,261,1 -"Cascade MCM10",boiler,121,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,262,1 -"Cascade MCM10",boiler,121,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,263,1 -"Cascade MCM10",boiler,121,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,264,1 -"Cascade MCM10",boiler,121,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,265,1 -"Cascade MCM10",boiler,121,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,266,1 -"Cascade MCM10",boiler,121,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,267,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,6,0,1,268,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,6,0,1,269,1 -"Cascade MCM10",boiler,121,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,270,1 -"Cascade MCM10",boiler,121,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,271,1 -"Cascade MCM10",boiler,121,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,272,1 -"Cascade MCM10",boiler,121,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,273,1 -"Cascade MCM10",boiler,121,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,274,1 -"Cascade MCM10",boiler,121,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,275,1 +"Cascade MCM10",boiler,121,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Cascade MCM10",boiler,121,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Cascade MCM10",boiler,121,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Cascade MCM10",boiler,121,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Cascade MCM10",boiler,121,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Cascade MCM10",boiler,121,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Cascade MCM10",boiler,121,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Cascade MCM10",boiler,121,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Cascade MCM10",boiler,121,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Cascade MCM10",boiler,121,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Cascade MCM10",boiler,121,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Cascade MCM10",boiler,121,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Cascade MCM10",boiler,121,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Cascade MCM10",boiler,121,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Cascade MCM10",boiler,121,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Cascade MCM10",boiler,121,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Cascade MCM10",boiler,121,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Cascade MCM10",boiler,121,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Cascade MCM10",boiler,121,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Cascade MCM10",boiler,121,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 "Cascade MCM10",boiler,121,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 "Cascade MCM10",boiler,121,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 "Cascade MCM10",boiler,121,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 @@ -1379,9 +1381,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MCM10",boiler,121,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 "Cascade MCM10",boiler,121,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Cascade MCM10",boiler,121,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 -"Cascade MCM10",boiler,121,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,276,2 +"Cascade MCM10",boiler,121,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 "Cascade MCM10",boiler,121,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 -"Cascade MCM10",boiler,121,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,278,2 +"Cascade MCM10",boiler,121,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 "Cascade MCM10",boiler,121,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 "Cascade MCM10",boiler,121,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 @@ -1424,7 +1426,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,6,9,1,66,1 "Cascade MCM10",boiler,121,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 "Cascade MCM10",boiler,121,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 -"Cascade MCM10",boiler,121,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,280,1 +"Cascade MCM10",boiler,121,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Cascade MCM10",boiler,121,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Cascade MCM10",boiler,121,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 "Cascade MCM10",boiler,121,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 @@ -1442,28 +1444,28 @@ 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,6,0,1/10,11,1 "Proline",boiler,122,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 "Proline",boiler,122,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 -"Proline",boiler,122,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,254,1 -"Proline",boiler,122,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,255,1 -"Proline",boiler,122,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,256,1 -"Proline",boiler,122,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,257,1 -"Proline",boiler,122,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,258,1 -"Proline",boiler,122,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,259,1 -"Proline",boiler,122,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,260,1 -"Proline",boiler,122,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,261,1 -"Proline",boiler,122,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,262,1 -"Proline",boiler,122,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,263,1 -"Proline",boiler,122,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,264,1 -"Proline",boiler,122,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,265,1 -"Proline",boiler,122,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,266,1 -"Proline",boiler,122,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,267,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,6,0,1,268,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,6,0,1,269,1 -"Proline",boiler,122,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,270,1 -"Proline",boiler,122,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,271,1 -"Proline",boiler,122,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,272,1 -"Proline",boiler,122,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,273,1 -"Proline",boiler,122,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,274,1 -"Proline",boiler,122,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,275,1 +"Proline",boiler,122,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Proline",boiler,122,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Proline",boiler,122,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Proline",boiler,122,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Proline",boiler,122,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Proline",boiler,122,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Proline",boiler,122,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Proline",boiler,122,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Proline",boiler,122,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Proline",boiler,122,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Proline",boiler,122,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Proline",boiler,122,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Proline",boiler,122,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Proline",boiler,122,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Proline",boiler,122,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Proline",boiler,122,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Proline",boiler,122,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Proline",boiler,122,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Proline",boiler,122,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Proline",boiler,122,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 "Proline",boiler,122,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 "Proline",boiler,122,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 "Proline",boiler,122,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 @@ -1500,9 +1502,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Proline",boiler,122,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 "Proline",boiler,122,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Proline",boiler,122,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 -"Proline",boiler,122,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,276,2 +"Proline",boiler,122,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 "Proline",boiler,122,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 -"Proline",boiler,122,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,278,2 +"Proline",boiler,122,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 "Proline",boiler,122,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 "Proline",boiler,122,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 @@ -1545,7 +1547,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,6,9,1,66,1 "Proline",boiler,122,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 "Proline",boiler,122,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 -"Proline",boiler,122,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,280,1 +"Proline",boiler,122,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Proline",boiler,122,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Proline",boiler,122,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 "Proline",boiler,122,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 @@ -1563,28 +1565,28 @@ 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,6,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,6,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,6,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,6,0,1/10,254,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,255,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,6,0,1,256,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,257,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,258,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,259,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,260,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,6,0,1,261,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,6,0,1,262,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,6,0,1,263,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,6,0,1,264,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,265,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,6,0,1,266,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,6,0,1,267,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,6,0,1,268,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,6,0,1,269,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,270,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,271,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,272,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,273,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,274,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,275,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,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,6,0,1,258,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,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,6,0,1,263,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,6,0,1,264,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,6,0,1,265,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,6,0,1,266,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,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,6,0,1,268,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,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,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,6,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,6,0,1,16,1 @@ -1621,9 +1623,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "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,6,0,1,87,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,276,2 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,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,6,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,6,0,1/10,278,2 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,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,6,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,6,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,6,9,1,29,1 @@ -1666,7 +1668,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,6,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,6,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,6,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,6,0,1,280,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,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,6,9,1/100,0,2 @@ -1684,28 +1686,28 @@ 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,6,0,1/10,11,1 "GB212",boiler,131,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 "GB212",boiler,131,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 -"GB212",boiler,131,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,254,1 -"GB212",boiler,131,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,255,1 -"GB212",boiler,131,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,256,1 -"GB212",boiler,131,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,257,1 -"GB212",boiler,131,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,258,1 -"GB212",boiler,131,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,259,1 -"GB212",boiler,131,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,260,1 -"GB212",boiler,131,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,261,1 -"GB212",boiler,131,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,262,1 -"GB212",boiler,131,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,263,1 -"GB212",boiler,131,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,264,1 -"GB212",boiler,131,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,265,1 -"GB212",boiler,131,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,266,1 -"GB212",boiler,131,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,267,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,6,0,1,268,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,6,0,1,269,1 -"GB212",boiler,131,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,270,1 -"GB212",boiler,131,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,271,1 -"GB212",boiler,131,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,272,1 -"GB212",boiler,131,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,273,1 -"GB212",boiler,131,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,274,1 -"GB212",boiler,131,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,275,1 +"GB212",boiler,131,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"GB212",boiler,131,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"GB212",boiler,131,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"GB212",boiler,131,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"GB212",boiler,131,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"GB212",boiler,131,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"GB212",boiler,131,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"GB212",boiler,131,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"GB212",boiler,131,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"GB212",boiler,131,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"GB212",boiler,131,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"GB212",boiler,131,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"GB212",boiler,131,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"GB212",boiler,131,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"GB212",boiler,131,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"GB212",boiler,131,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"GB212",boiler,131,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"GB212",boiler,131,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"GB212",boiler,131,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"GB212",boiler,131,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 "GB212",boiler,131,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 "GB212",boiler,131,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 "GB212",boiler,131,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 @@ -1742,9 +1744,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB212",boiler,131,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 "GB212",boiler,131,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "GB212",boiler,131,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 -"GB212",boiler,131,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,276,2 +"GB212",boiler,131,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 "GB212",boiler,131,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 -"GB212",boiler,131,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,278,2 +"GB212",boiler,131,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 "GB212",boiler,131,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 "GB212",boiler,131,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 @@ -1787,7 +1789,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,6,9,1,66,1 "GB212",boiler,131,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 "GB212",boiler,131,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 -"GB212",boiler,131,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,280,1 +"GB212",boiler,131,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "GB212",boiler,131,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "GB212",boiler,131,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 "GB212",boiler,131,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 @@ -1805,28 +1807,28 @@ 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,6,0,1/10,11,1 "GC7000F",boiler,132,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 "GC7000F",boiler,132,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 -"GC7000F",boiler,132,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,254,1 -"GC7000F",boiler,132,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,255,1 -"GC7000F",boiler,132,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,256,1 -"GC7000F",boiler,132,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,257,1 -"GC7000F",boiler,132,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,258,1 -"GC7000F",boiler,132,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,259,1 -"GC7000F",boiler,132,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,260,1 -"GC7000F",boiler,132,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,261,1 -"GC7000F",boiler,132,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,262,1 -"GC7000F",boiler,132,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,263,1 -"GC7000F",boiler,132,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,264,1 -"GC7000F",boiler,132,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,265,1 -"GC7000F",boiler,132,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,266,1 -"GC7000F",boiler,132,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,267,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,6,0,1,268,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,6,0,1,269,1 -"GC7000F",boiler,132,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,270,1 -"GC7000F",boiler,132,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,271,1 -"GC7000F",boiler,132,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,272,1 -"GC7000F",boiler,132,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,273,1 -"GC7000F",boiler,132,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,274,1 -"GC7000F",boiler,132,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,275,1 +"GC7000F",boiler,132,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"GC7000F",boiler,132,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"GC7000F",boiler,132,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"GC7000F",boiler,132,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"GC7000F",boiler,132,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"GC7000F",boiler,132,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"GC7000F",boiler,132,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"GC7000F",boiler,132,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"GC7000F",boiler,132,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"GC7000F",boiler,132,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"GC7000F",boiler,132,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"GC7000F",boiler,132,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"GC7000F",boiler,132,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"GC7000F",boiler,132,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"GC7000F",boiler,132,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"GC7000F",boiler,132,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"GC7000F",boiler,132,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"GC7000F",boiler,132,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"GC7000F",boiler,132,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"GC7000F",boiler,132,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 "GC7000F",boiler,132,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 "GC7000F",boiler,132,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 "GC7000F",boiler,132,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 @@ -1863,9 +1865,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GC7000F",boiler,132,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 "GC7000F",boiler,132,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "GC7000F",boiler,132,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 -"GC7000F",boiler,132,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,276,2 +"GC7000F",boiler,132,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 "GC7000F",boiler,132,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 -"GC7000F",boiler,132,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,278,2 +"GC7000F",boiler,132,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 "GC7000F",boiler,132,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 "GC7000F",boiler,132,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 @@ -1908,7 +1910,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,6,9,1,66,1 "GC7000F",boiler,132,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 "GC7000F",boiler,132,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 -"GC7000F",boiler,132,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,280,1 +"GC7000F",boiler,132,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "GC7000F",boiler,132,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "GC7000F",boiler,132,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 "GC7000F",boiler,132,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 @@ -1926,28 +1928,28 @@ 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,6,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,6,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,6,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,6,0,1/10,254,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,255,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,256,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,257,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,258,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,259,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,260,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,261,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,262,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,6,0,1,263,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,264,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,265,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,6,0,1,266,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,6,0,1,267,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,6,0,1,268,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,6,0,1,269,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,270,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,271,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,272,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,273,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,274,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,275,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,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,6,0,1,265,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,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,6,0,1,268,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,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,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,6,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,6,0,1,16,1 @@ -1984,9 +1986,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB125/KB195i, Logamatic MC110",boiler,133,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,276,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,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,6,0,1/10,278,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,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,6,9,1,29,1 @@ -2029,7 +2031,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,6,9,1,66,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,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,6,0,1,280,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 @@ -2047,28 +2049,28 @@ 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,6,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,6,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,6,0,1/10,13,1 -"Greenstar 30Ri Compact",boiler,154,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,254,1 -"Greenstar 30Ri Compact",boiler,154,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,255,1 -"Greenstar 30Ri Compact",boiler,154,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,256,1 -"Greenstar 30Ri Compact",boiler,154,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,257,1 -"Greenstar 30Ri Compact",boiler,154,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,258,1 -"Greenstar 30Ri Compact",boiler,154,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,259,1 -"Greenstar 30Ri Compact",boiler,154,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,260,1 -"Greenstar 30Ri Compact",boiler,154,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,261,1 -"Greenstar 30Ri Compact",boiler,154,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,262,1 -"Greenstar 30Ri Compact",boiler,154,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,263,1 -"Greenstar 30Ri Compact",boiler,154,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,264,1 -"Greenstar 30Ri Compact",boiler,154,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,265,1 -"Greenstar 30Ri Compact",boiler,154,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,266,1 -"Greenstar 30Ri Compact",boiler,154,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,267,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,6,0,1,268,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,6,0,1,269,1 -"Greenstar 30Ri Compact",boiler,154,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,270,1 -"Greenstar 30Ri Compact",boiler,154,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,271,1 -"Greenstar 30Ri Compact",boiler,154,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,272,1 -"Greenstar 30Ri Compact",boiler,154,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,273,1 -"Greenstar 30Ri Compact",boiler,154,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,274,1 -"Greenstar 30Ri Compact",boiler,154,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,275,1 +"Greenstar 30Ri Compact",boiler,154,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Greenstar 30Ri Compact",boiler,154,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Greenstar 30Ri Compact",boiler,154,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Greenstar 30Ri Compact",boiler,154,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Greenstar 30Ri Compact",boiler,154,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Greenstar 30Ri Compact",boiler,154,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Greenstar 30Ri Compact",boiler,154,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Greenstar 30Ri Compact",boiler,154,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Greenstar 30Ri Compact",boiler,154,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Greenstar 30Ri Compact",boiler,154,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Greenstar 30Ri Compact",boiler,154,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Greenstar 30Ri Compact",boiler,154,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Greenstar 30Ri Compact",boiler,154,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Greenstar 30Ri Compact",boiler,154,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Greenstar 30Ri Compact",boiler,154,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Greenstar 30Ri Compact",boiler,154,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Greenstar 30Ri Compact",boiler,154,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Greenstar 30Ri Compact",boiler,154,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Greenstar 30Ri Compact",boiler,154,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Greenstar 30Ri Compact",boiler,154,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 "Greenstar 30Ri Compact",boiler,154,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 "Greenstar 30Ri Compact",boiler,154,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 "Greenstar 30Ri Compact",boiler,154,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 @@ -2105,9 +2107,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 30Ri Compact",boiler,154,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 "Greenstar 30Ri Compact",boiler,154,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Greenstar 30Ri Compact",boiler,154,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,276,2 +"Greenstar 30Ri Compact",boiler,154,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 "Greenstar 30Ri Compact",boiler,154,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,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,6,0,1/10,278,2 +"Greenstar 30Ri Compact",boiler,154,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 "Greenstar 30Ri Compact",boiler,154,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,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,6,9,1,29,1 @@ -2150,7 +2152,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,6,9,1,66,1 "Greenstar 30Ri Compact",boiler,154,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 -"Greenstar 30Ri Compact",boiler,154,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,280,1 +"Greenstar 30Ri Compact",boiler,154,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Greenstar 30Ri Compact",boiler,154,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Greenstar 30Ri Compact",boiler,154,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 "Greenstar 30Ri Compact",boiler,154,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 @@ -2168,28 +2170,28 @@ 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,6,0,1/10,11,1 "Suprapur-o",boiler,155,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 "Suprapur-o",boiler,155,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 -"Suprapur-o",boiler,155,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,254,1 -"Suprapur-o",boiler,155,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,255,1 -"Suprapur-o",boiler,155,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,256,1 -"Suprapur-o",boiler,155,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,257,1 -"Suprapur-o",boiler,155,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,258,1 -"Suprapur-o",boiler,155,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,259,1 -"Suprapur-o",boiler,155,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,260,1 -"Suprapur-o",boiler,155,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,261,1 -"Suprapur-o",boiler,155,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,262,1 -"Suprapur-o",boiler,155,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,263,1 -"Suprapur-o",boiler,155,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,264,1 -"Suprapur-o",boiler,155,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,265,1 -"Suprapur-o",boiler,155,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,266,1 -"Suprapur-o",boiler,155,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,267,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,6,0,1,268,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,6,0,1,269,1 -"Suprapur-o",boiler,155,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,270,1 -"Suprapur-o",boiler,155,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,271,1 -"Suprapur-o",boiler,155,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,272,1 -"Suprapur-o",boiler,155,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,273,1 -"Suprapur-o",boiler,155,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,274,1 -"Suprapur-o",boiler,155,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,275,1 +"Suprapur-o",boiler,155,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Suprapur-o",boiler,155,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Suprapur-o",boiler,155,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Suprapur-o",boiler,155,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Suprapur-o",boiler,155,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Suprapur-o",boiler,155,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Suprapur-o",boiler,155,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Suprapur-o",boiler,155,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Suprapur-o",boiler,155,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Suprapur-o",boiler,155,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Suprapur-o",boiler,155,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Suprapur-o",boiler,155,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Suprapur-o",boiler,155,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Suprapur-o",boiler,155,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Suprapur-o",boiler,155,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Suprapur-o",boiler,155,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Suprapur-o",boiler,155,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Suprapur-o",boiler,155,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Suprapur-o",boiler,155,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Suprapur-o",boiler,155,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 "Suprapur-o",boiler,155,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 "Suprapur-o",boiler,155,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 "Suprapur-o",boiler,155,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 @@ -2226,9 +2228,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Suprapur-o",boiler,155,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 "Suprapur-o",boiler,155,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Suprapur-o",boiler,155,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 -"Suprapur-o",boiler,155,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,276,2 +"Suprapur-o",boiler,155,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 "Suprapur-o",boiler,155,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 -"Suprapur-o",boiler,155,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,278,2 +"Suprapur-o",boiler,155,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 "Suprapur-o",boiler,155,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 "Suprapur-o",boiler,155,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 @@ -2271,7 +2273,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,6,9,1,66,1 "Suprapur-o",boiler,155,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 "Suprapur-o",boiler,155,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 -"Suprapur-o",boiler,155,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,280,1 +"Suprapur-o",boiler,155,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Suprapur-o",boiler,155,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Suprapur-o",boiler,155,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 "Suprapur-o",boiler,155,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 @@ -2289,28 +2291,28 @@ 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,6,0,1/10,11,1 "Cerapur Aero",boiler,167,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 "Cerapur Aero",boiler,167,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 -"Cerapur Aero",boiler,167,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,254,1 -"Cerapur Aero",boiler,167,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,255,1 -"Cerapur Aero",boiler,167,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,256,1 -"Cerapur Aero",boiler,167,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,257,1 -"Cerapur Aero",boiler,167,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,258,1 -"Cerapur Aero",boiler,167,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,259,1 -"Cerapur Aero",boiler,167,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,260,1 -"Cerapur Aero",boiler,167,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,261,1 -"Cerapur Aero",boiler,167,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,262,1 -"Cerapur Aero",boiler,167,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,263,1 -"Cerapur Aero",boiler,167,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,264,1 -"Cerapur Aero",boiler,167,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,265,1 -"Cerapur Aero",boiler,167,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,266,1 -"Cerapur Aero",boiler,167,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,267,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,6,0,1,268,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,6,0,1,269,1 -"Cerapur Aero",boiler,167,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,270,1 -"Cerapur Aero",boiler,167,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,271,1 -"Cerapur Aero",boiler,167,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,272,1 -"Cerapur Aero",boiler,167,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,273,1 -"Cerapur Aero",boiler,167,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,274,1 -"Cerapur Aero",boiler,167,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,275,1 +"Cerapur Aero",boiler,167,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Cerapur Aero",boiler,167,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Cerapur Aero",boiler,167,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Cerapur Aero",boiler,167,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Cerapur Aero",boiler,167,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Cerapur Aero",boiler,167,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Cerapur Aero",boiler,167,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Cerapur Aero",boiler,167,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Cerapur Aero",boiler,167,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Cerapur Aero",boiler,167,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Cerapur Aero",boiler,167,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Cerapur Aero",boiler,167,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Cerapur Aero",boiler,167,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Cerapur Aero",boiler,167,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Cerapur Aero",boiler,167,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Cerapur Aero",boiler,167,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Cerapur Aero",boiler,167,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Cerapur Aero",boiler,167,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Cerapur Aero",boiler,167,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Cerapur Aero",boiler,167,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 "Cerapur Aero",boiler,167,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 "Cerapur Aero",boiler,167,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 "Cerapur Aero",boiler,167,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 @@ -2347,9 +2349,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cerapur Aero",boiler,167,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 "Cerapur Aero",boiler,167,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Cerapur Aero",boiler,167,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 -"Cerapur Aero",boiler,167,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,276,2 +"Cerapur Aero",boiler,167,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 "Cerapur Aero",boiler,167,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 -"Cerapur Aero",boiler,167,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,278,2 +"Cerapur Aero",boiler,167,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 "Cerapur Aero",boiler,167,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 "Cerapur Aero",boiler,167,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 @@ -2392,7 +2394,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,6,9,1,66,1 "Cerapur Aero",boiler,167,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 "Cerapur Aero",boiler,167,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 -"Cerapur Aero",boiler,167,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,280,1 +"Cerapur Aero",boiler,167,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Cerapur Aero",boiler,167,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Cerapur Aero",boiler,167,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 "Cerapur Aero",boiler,167,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 @@ -2410,28 +2412,28 @@ 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,6,0,1/10,11,1 "Hybrid Heatpump",boiler,168,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 "Hybrid Heatpump",boiler,168,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 -"Hybrid Heatpump",boiler,168,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,254,1 -"Hybrid Heatpump",boiler,168,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,255,1 -"Hybrid Heatpump",boiler,168,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,256,1 -"Hybrid Heatpump",boiler,168,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,257,1 -"Hybrid Heatpump",boiler,168,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,258,1 -"Hybrid Heatpump",boiler,168,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,259,1 -"Hybrid Heatpump",boiler,168,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,260,1 -"Hybrid Heatpump",boiler,168,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,261,1 -"Hybrid Heatpump",boiler,168,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,262,1 -"Hybrid Heatpump",boiler,168,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,263,1 -"Hybrid Heatpump",boiler,168,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,264,1 -"Hybrid Heatpump",boiler,168,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,265,1 -"Hybrid Heatpump",boiler,168,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,266,1 -"Hybrid Heatpump",boiler,168,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,267,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,6,0,1,268,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,6,0,1,269,1 -"Hybrid Heatpump",boiler,168,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,270,1 -"Hybrid Heatpump",boiler,168,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,271,1 -"Hybrid Heatpump",boiler,168,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,272,1 -"Hybrid Heatpump",boiler,168,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,273,1 -"Hybrid Heatpump",boiler,168,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,274,1 -"Hybrid Heatpump",boiler,168,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,275,1 +"Hybrid Heatpump",boiler,168,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Hybrid Heatpump",boiler,168,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Hybrid Heatpump",boiler,168,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Hybrid Heatpump",boiler,168,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Hybrid Heatpump",boiler,168,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Hybrid Heatpump",boiler,168,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Hybrid Heatpump",boiler,168,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Hybrid Heatpump",boiler,168,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Hybrid Heatpump",boiler,168,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Hybrid Heatpump",boiler,168,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Hybrid Heatpump",boiler,168,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Hybrid Heatpump",boiler,168,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Hybrid Heatpump",boiler,168,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Hybrid Heatpump",boiler,168,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Hybrid Heatpump",boiler,168,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Hybrid Heatpump",boiler,168,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Hybrid Heatpump",boiler,168,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Hybrid Heatpump",boiler,168,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Hybrid Heatpump",boiler,168,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Hybrid Heatpump",boiler,168,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 "Hybrid Heatpump",boiler,168,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 "Hybrid Heatpump",boiler,168,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 "Hybrid Heatpump",boiler,168,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 @@ -2468,9 +2470,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Hybrid Heatpump",boiler,168,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 "Hybrid Heatpump",boiler,168,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Hybrid Heatpump",boiler,168,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 -"Hybrid Heatpump",boiler,168,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,276,2 +"Hybrid Heatpump",boiler,168,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 "Hybrid Heatpump",boiler,168,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 -"Hybrid Heatpump",boiler,168,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,278,2 +"Hybrid Heatpump",boiler,168,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 "Hybrid Heatpump",boiler,168,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 "Hybrid Heatpump",boiler,168,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 @@ -2513,7 +2515,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,6,9,1,66,1 "Hybrid Heatpump",boiler,168,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 "Hybrid Heatpump",boiler,168,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 -"Hybrid Heatpump",boiler,168,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,280,1 +"Hybrid Heatpump",boiler,168,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Hybrid Heatpump",boiler,168,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Hybrid Heatpump",boiler,168,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 "Hybrid Heatpump",boiler,168,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 @@ -2531,28 +2533,28 @@ 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,6,0,1/10,11,1 "Logano GB212",boiler,170,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 "Logano GB212",boiler,170,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 -"Logano GB212",boiler,170,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,254,1 -"Logano GB212",boiler,170,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,255,1 -"Logano GB212",boiler,170,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,256,1 -"Logano GB212",boiler,170,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,257,1 -"Logano GB212",boiler,170,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,258,1 -"Logano GB212",boiler,170,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,259,1 -"Logano GB212",boiler,170,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,260,1 -"Logano GB212",boiler,170,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,261,1 -"Logano GB212",boiler,170,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,262,1 -"Logano GB212",boiler,170,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,263,1 -"Logano GB212",boiler,170,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,264,1 -"Logano GB212",boiler,170,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,265,1 -"Logano GB212",boiler,170,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,266,1 -"Logano GB212",boiler,170,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,267,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,6,0,1,268,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,6,0,1,269,1 -"Logano GB212",boiler,170,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,270,1 -"Logano GB212",boiler,170,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,271,1 -"Logano GB212",boiler,170,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,272,1 -"Logano GB212",boiler,170,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,273,1 -"Logano GB212",boiler,170,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,274,1 -"Logano GB212",boiler,170,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,275,1 +"Logano GB212",boiler,170,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Logano GB212",boiler,170,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Logano GB212",boiler,170,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Logano GB212",boiler,170,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Logano GB212",boiler,170,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Logano GB212",boiler,170,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Logano GB212",boiler,170,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Logano GB212",boiler,170,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Logano GB212",boiler,170,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Logano GB212",boiler,170,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Logano GB212",boiler,170,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Logano GB212",boiler,170,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Logano GB212",boiler,170,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Logano GB212",boiler,170,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Logano GB212",boiler,170,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Logano GB212",boiler,170,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Logano GB212",boiler,170,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Logano GB212",boiler,170,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Logano GB212",boiler,170,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Logano GB212",boiler,170,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 "Logano GB212",boiler,170,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 "Logano GB212",boiler,170,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 "Logano GB212",boiler,170,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 @@ -2589,9 +2591,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB212",boiler,170,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 "Logano GB212",boiler,170,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Logano GB212",boiler,170,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 -"Logano GB212",boiler,170,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,276,2 +"Logano GB212",boiler,170,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 "Logano GB212",boiler,170,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 -"Logano GB212",boiler,170,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,278,2 +"Logano GB212",boiler,170,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 "Logano GB212",boiler,170,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 "Logano GB212",boiler,170,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 @@ -2634,7 +2636,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,6,9,1,66,1 "Logano GB212",boiler,170,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 "Logano GB212",boiler,170,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 -"Logano GB212",boiler,170,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,280,1 +"Logano GB212",boiler,170,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Logano GB212",boiler,170,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Logano GB212",boiler,170,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 "Logano GB212",boiler,170,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 @@ -2730,79 +2732,81 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "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,6,0,50,151,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,6,0,1,152,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,6,0,1,153,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,6,0,1,154,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,6,0,1,155,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,6,0,1,156,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,6,0,1,157,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,6,0,1,158,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,6,0,1,159,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,6,0,1,160,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,6,0,1/10,161,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,6,0,1/10,162,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,6,0,1/10,163,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,6,0,1/10,164,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,6,0,1/10,165,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,6,0,1/10,166,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,6,0,1/10,167,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,6,0,1/10,168,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,6,0,1/10,169,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,6,0,1/10,170,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,6,0,1/10,171,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,6,0,1/10,172,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,6,0,1/10,173,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,6,0,1/10,174,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,6,0,1/10,175,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,6,0,1/10,176,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,6,0,1/2,177,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,6,0,1,178,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,6,0,1,179,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,6,0,1,180,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,6,0,1,188,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,6,0,1,189,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,6,0,1,197,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,6,0,1,198,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,6,0,1,206,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,6,0,1,207,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\|12 kW\|15 kW] (>=0<=0), ,true,select.boiler_heat_limit_compressor,select.boiler_maxheatcomp,6,0,1,215,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\|12 kW\|15 kW] (>=0<=0), ,true,select.boiler_heat_limit_heating,select.boiler_maxheatheat,6,0,1,216,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hppoolon,hp pool,boolean, ,false,binary_sensor.boiler_hp_pool,binary_sensor.boiler_hppoolon,6,0,1,154,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,6,0,1,155,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,6,0,1,156,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,6,0,1,157,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,6,0,1,158,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,6,0,1,159,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,6,0,1,160,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,6,0,1,161,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,6,0,1/10,162,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,6,0,1/10,163,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,6,0,1/10,164,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,6,0,1/10,165,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,6,0,1/10,166,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,6,0,1/10,167,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,6,0,1/10,168,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,6,0,1/10,169,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,6,0,1/10,170,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,6,0,1/10,171,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,6,0,1/10,172,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,6,0,1/10,173,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,6,0,1/10,174,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,6,0,1/10,175,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,6,0,1/10,176,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,6,0,1/10,177,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,poolon,pool on,boolean (>=0<=0), ,true,switch.boiler_pool_on,switch.boiler_poolon,6,0,1,178,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,poolsettemp,pool setpoint,uint8 (>=0<=0),C,true,number.boiler_pool_setpoint,number.boiler_poolsettemp,6,0,1/2,179,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,6,0,1,180,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,6,0,1,181,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,6,0,1,182,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,6,0,1,190,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,6,0,1,191,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,6,0,1,199,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,6,0,1,200,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,6,0,1,208,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,6,0,1,209,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\|12 kW\|15 kW] (>=0<=0), ,true,select.boiler_heat_limit_compressor,select.boiler_maxheatcomp,6,0,1,217,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\|12 kW\|15 kW] (>=0<=0), ,true,select.boiler_heat_limit_heating,select.boiler_maxheatheat,6,0,1,218,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\|12 kW\|15 kW] (>=0<=0), ,true,select.boiler_dhw_heat_limit,select.boiler_dhw_maxheat,6,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,6,0,1,217,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,6,0,1,218,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,6,0,1,219,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,6,0,1,220,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,6,0,1,221,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,6,0,1,222,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,6,0,10,223,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,6,0,1/10,224,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,6,0,1/10,225,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,6,0,1,226,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,6,0,5,227,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,6,0,5,228,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,6,0,5,229,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,6,0,1,230,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,6,0,15,231,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,6,0,15,232,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,6,0,1,233,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,6,0,1,234,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,6,0,1,235,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,6,0,1/10,236,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,6,0,1/10,237,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,6,0,1,238,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,6,0,1,239,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,6,0,1,240,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,6,0,1,241,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,6,0,1,242,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,6,0,1,243,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,6,0,1,244,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,6,0,1,245,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,6,0,1,246,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,6,0,1,247,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,6,0,1,248,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,6,0,1,249,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,6,0,1,250,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,6,0,1,251,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,6,0,1,252,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,6,0,1,253,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,6,0,1,219,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,6,0,1,220,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,6,0,1,221,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,6,0,1,222,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,6,0,1,223,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,6,0,1,224,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,6,0,10,225,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,6,0,1/10,226,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,6,0,1/10,227,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,6,0,1,228,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,6,0,5,229,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,6,0,5,230,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,6,0,5,231,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,6,0,1,232,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,6,0,15,233,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,6,0,15,234,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,6,0,1,235,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,6,0,1,236,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,6,0,1,237,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,6,0,1/10,238,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,6,0,1/10,239,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,6,0,1,240,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,6,0,1,241,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,6,0,1,242,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,6,0,1,243,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,6,0,1,244,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,6,0,1,245,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,6,0,1,246,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,6,0,1,247,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,6,0,1,248,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,6,0,1,249,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,6,0,1,250,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,6,0,1,251,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,6,0,1,252,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,6,0,1,253,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,6,0,1,254,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,6,0,1,255,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,6,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,6,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,6,9,1,17,1 @@ -2949,79 +2953,81 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Geo 5xx",boiler,173,hpsetdiffpress,set differential pressure,uint8 (>=150<=750),mbar,true,number.boiler_set_differential_pressure,number.boiler_hpsetdiffpress,6,0,50,151,1 "Geo 5xx",boiler,173,hpcompon,hp compressor,boolean, ,false,binary_sensor.boiler_hp_compressor,binary_sensor.boiler_hpcompon,6,0,1,152,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,6,0,1,153,1 -"Geo 5xx",boiler,173,hpbrinepumpspd,brine pump speed,uint8,%,false,sensor.boiler_brine_pump_speed,sensor.boiler_hpbrinepumpspd,6,0,1,154,1 -"Geo 5xx",boiler,173,hpswitchvalve,switch valve,boolean, ,false,binary_sensor.boiler_switch_valve,binary_sensor.boiler_hpswitchvalve,6,0,1,155,1 -"Geo 5xx",boiler,173,hpcompspd,compressor speed,uint8,%,false,sensor.boiler_compressor_speed,sensor.boiler_hpcompspd,6,0,1,156,1 -"Geo 5xx",boiler,173,hptargetspd,compressor target speed,uint8,%,false,sensor.boiler_compressor_target_speed,sensor.boiler_hptargetspd,6,0,1,157,1 -"Geo 5xx",boiler,173,hpcircspd,circulation pump speed,uint8,%,false,sensor.boiler_circulation_pump_speed,sensor.boiler_hpcircspd,6,0,1,158,1 -"Geo 5xx",boiler,173,recvalve,receiver valve VR0,uint8,%,false,sensor.boiler_receiver_valve_VR0,sensor.boiler_recvalve,6,0,1,159,1 -"Geo 5xx",boiler,173,expvalve,expansion valve VR1,uint8,%,false,sensor.boiler_expansion_valve_VR1,sensor.boiler_expvalve,6,0,1,160,1 -"Geo 5xx",boiler,173,hpbrinein,brine in/evaporator,int16,C,false,sensor.boiler_brine_in/evaporator,sensor.boiler_hpbrinein,6,0,1/10,161,1 -"Geo 5xx",boiler,173,hpbrineout,brine out/condenser,int16,C,false,sensor.boiler_brine_out/condenser,sensor.boiler_hpbrineout,6,0,1/10,162,1 -"Geo 5xx",boiler,173,hptc0,heat carrier return (TC0),int16,C,false,sensor.boiler_heat_carrier_return_(TC0),sensor.boiler_hptc0,6,0,1/10,163,1 -"Geo 5xx",boiler,173,hptc1,heat carrier forward (TC1),int16,C,false,sensor.boiler_heat_carrier_forward_(TC1),sensor.boiler_hptc1,6,0,1/10,164,1 -"Geo 5xx",boiler,173,hptc3,condenser temperature (TC3),int16,C,false,sensor.boiler_condenser_temperature_(TC3),sensor.boiler_hptc3,6,0,1/10,165,1 -"Geo 5xx",boiler,173,hptr1,compressor temperature (TR1),int16,C,false,sensor.boiler_compressor_temperature_(TR1),sensor.boiler_hptr1,6,0,1/10,166,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,6,0,1/10,167,1 -"Geo 5xx",boiler,173,hptr4,evaporator inlet temperature (TR4),int16,C,false,sensor.boiler_evaporator_inlet_temperature_(TR4),sensor.boiler_hptr4,6,0,1/10,168,1 -"Geo 5xx",boiler,173,hptr5,compressor inlet temperature (TR5),int16,C,false,sensor.boiler_compressor_inlet_temperature_(TR5),sensor.boiler_hptr5,6,0,1/10,169,1 -"Geo 5xx",boiler,173,hptr6,compressor outlet temperature (TR6),int16,C,false,sensor.boiler_compressor_outlet_temperature_(TR6),sensor.boiler_hptr6,6,0,1/10,170,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,6,0,1/10,171,1 -"Geo 5xx",boiler,173,hptl2,air inlet temperature (TL2),int16,C,false,sensor.boiler_air_inlet_temperature_(TL2),sensor.boiler_hptl2,6,0,1/10,172,1 -"Geo 5xx",boiler,173,hppl1,low pressure side temperature (PL1),int16,C,false,sensor.boiler_low_pressure_side_temperature_(PL1),sensor.boiler_hppl1,6,0,1/10,173,1 -"Geo 5xx",boiler,173,hpph1,high pressure side temperature (PH1),int16,C,false,sensor.boiler_high_pressure_side_temperature_(PH1),sensor.boiler_hpph1,6,0,1/10,174,1 -"Geo 5xx",boiler,173,hpta4,drain pan temp (TA4),int16,C,false,sensor.boiler_drain_pan_temp_(TA4),sensor.boiler_hpta4,6,0,1/10,175,1 -"Geo 5xx",boiler,173,hptw1,reservoir temp (TW1),int16,C,false,sensor.boiler_reservoir_temp_(TW1),sensor.boiler_hptw1,6,0,1/10,176,1 -"Geo 5xx",boiler,173,poolsettemp,pool set temperature,uint8 (>=0<=0),C,true,number.boiler_pool_set_temperature,number.boiler_poolsettemp,6,0,1/2,177,1 -"Geo 5xx",boiler,173,hp4way,4-way valve (VR4),boolean, ,false,binary_sensor.boiler_4-way_valve_(VR4),binary_sensor.boiler_hp4way,6,0,1,178,1 -"Geo 5xx",boiler,173,hpin1,input 1 state,boolean, ,false,binary_sensor.boiler_input_1_state,binary_sensor.boiler_hpin1,6,0,1,179,1 -"Geo 5xx",boiler,173,hpin1opt,input 1 options,string (>=0<=0), ,true,sensor.boiler_input_1_options,sensor.boiler_hpin1opt,6,0,1,180,8 -"Geo 5xx",boiler,173,hpin2,input 2 state,boolean, ,false,binary_sensor.boiler_input_2_state,binary_sensor.boiler_hpin2,6,0,1,188,1 -"Geo 5xx",boiler,173,hpin2opt,input 2 options,string (>=0<=0), ,true,sensor.boiler_input_2_options,sensor.boiler_hpin2opt,6,0,1,189,8 -"Geo 5xx",boiler,173,hpin3,input 3 state,boolean, ,false,binary_sensor.boiler_input_3_state,binary_sensor.boiler_hpin3,6,0,1,197,1 -"Geo 5xx",boiler,173,hpin3opt,input 3 options,string (>=0<=0), ,true,sensor.boiler_input_3_options,sensor.boiler_hpin3opt,6,0,1,198,8 -"Geo 5xx",boiler,173,hpin4,input 4 state,boolean, ,false,binary_sensor.boiler_input_4_state,binary_sensor.boiler_hpin4,6,0,1,206,1 -"Geo 5xx",boiler,173,hpin4opt,input 4 options,string (>=0<=0), ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt,6,0,1,207,8 -"Geo 5xx",boiler,173,maxheatcomp,heat limit compressor,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW\|12 kW\|15 kW] (>=0<=0), ,true,select.boiler_heat_limit_compressor,select.boiler_maxheatcomp,6,0,1,215,1 -"Geo 5xx",boiler,173,maxheatheat,heat limit heating,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW\|12 kW\|15 kW] (>=0<=0), ,true,select.boiler_heat_limit_heating,select.boiler_maxheatheat,6,0,1,216,1 +"Geo 5xx",boiler,173,hppoolon,hp pool,boolean, ,false,binary_sensor.boiler_hp_pool,binary_sensor.boiler_hppoolon,6,0,1,154,1 +"Geo 5xx",boiler,173,hpbrinepumpspd,brine pump speed,uint8,%,false,sensor.boiler_brine_pump_speed,sensor.boiler_hpbrinepumpspd,6,0,1,155,1 +"Geo 5xx",boiler,173,hpswitchvalve,switch valve,boolean, ,false,binary_sensor.boiler_switch_valve,binary_sensor.boiler_hpswitchvalve,6,0,1,156,1 +"Geo 5xx",boiler,173,hpcompspd,compressor speed,uint8,%,false,sensor.boiler_compressor_speed,sensor.boiler_hpcompspd,6,0,1,157,1 +"Geo 5xx",boiler,173,hptargetspd,compressor target speed,uint8,%,false,sensor.boiler_compressor_target_speed,sensor.boiler_hptargetspd,6,0,1,158,1 +"Geo 5xx",boiler,173,hpcircspd,circulation pump speed,uint8,%,false,sensor.boiler_circulation_pump_speed,sensor.boiler_hpcircspd,6,0,1,159,1 +"Geo 5xx",boiler,173,recvalve,receiver valve VR0,uint8,%,false,sensor.boiler_receiver_valve_VR0,sensor.boiler_recvalve,6,0,1,160,1 +"Geo 5xx",boiler,173,expvalve,expansion valve VR1,uint8,%,false,sensor.boiler_expansion_valve_VR1,sensor.boiler_expvalve,6,0,1,161,1 +"Geo 5xx",boiler,173,hpbrinein,brine in/evaporator,int16,C,false,sensor.boiler_brine_in/evaporator,sensor.boiler_hpbrinein,6,0,1/10,162,1 +"Geo 5xx",boiler,173,hpbrineout,brine out/condenser,int16,C,false,sensor.boiler_brine_out/condenser,sensor.boiler_hpbrineout,6,0,1/10,163,1 +"Geo 5xx",boiler,173,hptc0,heat carrier return (TC0),int16,C,false,sensor.boiler_heat_carrier_return_(TC0),sensor.boiler_hptc0,6,0,1/10,164,1 +"Geo 5xx",boiler,173,hptc1,heat carrier forward (TC1),int16,C,false,sensor.boiler_heat_carrier_forward_(TC1),sensor.boiler_hptc1,6,0,1/10,165,1 +"Geo 5xx",boiler,173,hptc3,condenser temperature (TC3),int16,C,false,sensor.boiler_condenser_temperature_(TC3),sensor.boiler_hptc3,6,0,1/10,166,1 +"Geo 5xx",boiler,173,hptr1,compressor temperature (TR1),int16,C,false,sensor.boiler_compressor_temperature_(TR1),sensor.boiler_hptr1,6,0,1/10,167,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,6,0,1/10,168,1 +"Geo 5xx",boiler,173,hptr4,evaporator inlet temperature (TR4),int16,C,false,sensor.boiler_evaporator_inlet_temperature_(TR4),sensor.boiler_hptr4,6,0,1/10,169,1 +"Geo 5xx",boiler,173,hptr5,compressor inlet temperature (TR5),int16,C,false,sensor.boiler_compressor_inlet_temperature_(TR5),sensor.boiler_hptr5,6,0,1/10,170,1 +"Geo 5xx",boiler,173,hptr6,compressor outlet temperature (TR6),int16,C,false,sensor.boiler_compressor_outlet_temperature_(TR6),sensor.boiler_hptr6,6,0,1/10,171,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,6,0,1/10,172,1 +"Geo 5xx",boiler,173,hptl2,air inlet temperature (TL2),int16,C,false,sensor.boiler_air_inlet_temperature_(TL2),sensor.boiler_hptl2,6,0,1/10,173,1 +"Geo 5xx",boiler,173,hppl1,low pressure side temperature (PL1),int16,C,false,sensor.boiler_low_pressure_side_temperature_(PL1),sensor.boiler_hppl1,6,0,1/10,174,1 +"Geo 5xx",boiler,173,hpph1,high pressure side temperature (PH1),int16,C,false,sensor.boiler_high_pressure_side_temperature_(PH1),sensor.boiler_hpph1,6,0,1/10,175,1 +"Geo 5xx",boiler,173,hpta4,drain pan temp (TA4),int16,C,false,sensor.boiler_drain_pan_temp_(TA4),sensor.boiler_hpta4,6,0,1/10,176,1 +"Geo 5xx",boiler,173,hptw1,reservoir temp (TW1),int16,C,false,sensor.boiler_reservoir_temp_(TW1),sensor.boiler_hptw1,6,0,1/10,177,1 +"Geo 5xx",boiler,173,poolon,pool on,boolean (>=0<=0), ,true,switch.boiler_pool_on,switch.boiler_poolon,6,0,1,178,1 +"Geo 5xx",boiler,173,poolsettemp,pool setpoint,uint8 (>=0<=0),C,true,number.boiler_pool_setpoint,number.boiler_poolsettemp,6,0,1/2,179,1 +"Geo 5xx",boiler,173,hp4way,4-way valve (VR4),boolean, ,false,binary_sensor.boiler_4-way_valve_(VR4),binary_sensor.boiler_hp4way,6,0,1,180,1 +"Geo 5xx",boiler,173,hpin1,input 1 state,boolean, ,false,binary_sensor.boiler_input_1_state,binary_sensor.boiler_hpin1,6,0,1,181,1 +"Geo 5xx",boiler,173,hpin1opt,input 1 options,string (>=0<=0), ,true,sensor.boiler_input_1_options,sensor.boiler_hpin1opt,6,0,1,182,8 +"Geo 5xx",boiler,173,hpin2,input 2 state,boolean, ,false,binary_sensor.boiler_input_2_state,binary_sensor.boiler_hpin2,6,0,1,190,1 +"Geo 5xx",boiler,173,hpin2opt,input 2 options,string (>=0<=0), ,true,sensor.boiler_input_2_options,sensor.boiler_hpin2opt,6,0,1,191,8 +"Geo 5xx",boiler,173,hpin3,input 3 state,boolean, ,false,binary_sensor.boiler_input_3_state,binary_sensor.boiler_hpin3,6,0,1,199,1 +"Geo 5xx",boiler,173,hpin3opt,input 3 options,string (>=0<=0), ,true,sensor.boiler_input_3_options,sensor.boiler_hpin3opt,6,0,1,200,8 +"Geo 5xx",boiler,173,hpin4,input 4 state,boolean, ,false,binary_sensor.boiler_input_4_state,binary_sensor.boiler_hpin4,6,0,1,208,1 +"Geo 5xx",boiler,173,hpin4opt,input 4 options,string (>=0<=0), ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt,6,0,1,209,8 +"Geo 5xx",boiler,173,maxheatcomp,heat limit compressor,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW\|12 kW\|15 kW] (>=0<=0), ,true,select.boiler_heat_limit_compressor,select.boiler_maxheatcomp,6,0,1,217,1 +"Geo 5xx",boiler,173,maxheatheat,heat limit heating,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW\|12 kW\|15 kW] (>=0<=0), ,true,select.boiler_heat_limit_heating,select.boiler_maxheatheat,6,0,1,218,1 "Geo 5xx",boiler,173,dhw.maxheat,heat limit,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW\|12 kW\|15 kW] (>=0<=0), ,true,select.boiler_dhw_heat_limit,select.boiler_dhw_maxheat,6,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,6,0,1,217,1 -"Geo 5xx",boiler,173,pvcooling,cooling only with PV,boolean (>=0<=0), ,true,switch.boiler_cooling_only_with_PV,switch.boiler_pvcooling,6,0,1,218,1 -"Geo 5xx",boiler,173,auxheateronly,aux heater only,boolean (>=0<=0), ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly,6,0,1,219,1 -"Geo 5xx",boiler,173,auxheateroff,disable aux heater,boolean (>=0<=0), ,true,switch.boiler_disable_aux_heater,switch.boiler_auxheateroff,6,0,1,220,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,6,0,1,221,1 -"Geo 5xx",boiler,173,auxheaterlevel,aux heater level,uint8,%,false,sensor.boiler_aux_heater_level,sensor.boiler_auxheaterlevel,6,0,1,222,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,6,0,10,223,1 -"Geo 5xx",boiler,173,auxmaxlimit,aux heater max limit,uint8 (>=0<=10),K,true,number.boiler_aux_heater_max_limit,number.boiler_auxmaxlimit,6,0,1/10,224,1 -"Geo 5xx",boiler,173,auxlimitstart,aux heater limit start,uint8 (>=0<=10),K,true,number.boiler_aux_heater_limit_start,number.boiler_auxlimitstart,6,0,1/10,225,1 -"Geo 5xx",boiler,173,auxheatrmode,aux heater mode,enum [eco\|comfort] (>=0<=0), ,true,select.boiler_aux_heater_mode,select.boiler_auxheatrmode,6,0,1,226,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,6,0,5,227,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,6,0,5,228,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,6,0,5,229,1 -"Geo 5xx",boiler,173,silentmode,silent mode,enum [off\|auto\|on] (>=0<=0), ,true,select.boiler_silent_mode,select.boiler_silentmode,6,0,1,230,1 -"Geo 5xx",boiler,173,silentfrom,silent mode from,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_from,number.boiler_silentfrom,6,0,15,231,1 -"Geo 5xx",boiler,173,silentto,silent mode to,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_to,number.boiler_silentto,6,0,15,232,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,6,0,1,233,1 -"Geo 5xx",boiler,173,tempparmode,outside temp parallel mode,int8 (>=0<=0),C,true,number.boiler_outside_temp_parallel_mode,number.boiler_tempparmode,6,0,1,234,1 -"Geo 5xx",boiler,173,auxheatmix,aux heater mixing valve,int8,%,false,sensor.boiler_aux_heater_mixing_valve,sensor.boiler_auxheatmix,6,0,1,235,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,6,0,1/10,236,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,6,0,1/10,237,1 -"Geo 5xx",boiler,173,vpcooling,valve/pump cooling,boolean (>=0<=0), ,true,switch.boiler_valve/pump_cooling,switch.boiler_vpcooling,6,0,1,238,1 -"Geo 5xx",boiler,173,heatcable,heating cable,boolean (>=0<=0), ,true,switch.boiler_heating_cable,switch.boiler_heatcable,6,0,1,239,1 -"Geo 5xx",boiler,173,vc0valve,VC0 valve,boolean (>=0<=0), ,true,switch.boiler_VC0_valve,switch.boiler_vc0valve,6,0,1,240,1 -"Geo 5xx",boiler,173,primepump,primary heatpump,boolean (>=0<=0), ,true,switch.boiler_primary_heatpump,switch.boiler_primepump,6,0,1,241,1 -"Geo 5xx",boiler,173,primepumpmod,primary heatpump modulation,uint8 (>=0<=0),%,true,number.boiler_primary_heatpump_modulation,number.boiler_primepumpmod,6,0,1,242,1 -"Geo 5xx",boiler,173,hp3way,3-way valve,boolean (>=0<=0), ,true,switch.boiler_3-way_valve,switch.boiler_hp3way,6,0,1,243,1 -"Geo 5xx",boiler,173,elheatstep1,el. heater step 1,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_1,switch.boiler_elheatstep1,6,0,1,244,1 -"Geo 5xx",boiler,173,elheatstep2,el. heater step 2,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_2,switch.boiler_elheatstep2,6,0,1,245,1 -"Geo 5xx",boiler,173,elheatstep3,el. heater step 3,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_3,switch.boiler_elheatstep3,6,0,1,246,1 -"Geo 5xx",boiler,173,hpea0,condensate reservoir heating (EA0),boolean, ,false,binary_sensor.boiler_condensate_reservoir_heating_(EA0),binary_sensor.boiler_hpea0,6,0,1,247,1 -"Geo 5xx",boiler,173,hppumpmode,primary heatpump mode,enum [auto\|continuous] (>=0<=0), ,true,select.boiler_primary_heatpump_mode,select.boiler_hppumpmode,6,0,1,248,1 -"Geo 5xx",boiler,173,fan,fan,uint8 (>=20<=100),%,true,number.boiler_fan,number.boiler_fan,6,0,1,249,1 -"Geo 5xx",boiler,173,fanspd,fan speed,uint8,%,false,sensor.boiler_fan_speed,sensor.boiler_fanspd,6,0,1,250,1 -"Geo 5xx",boiler,173,shutdown,shutdown,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_shutdown,sensor.boiler_shutdown,6,0,1,251,1 -"Geo 5xx",boiler,173,hpcurrpower,compressor current power,uint16,W,false,sensor.boiler_compressor_current_power,sensor.boiler_hpcurrpower,6,0,1,252,1 -"Geo 5xx",boiler,173,hppowerlimit,power limit,uint16 (>=0<=0),W,true,number.boiler_power_limit,number.boiler_hppowerlimit,6,0,1,253,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,6,0,1,219,1 +"Geo 5xx",boiler,173,pvcooling,cooling only with PV,boolean (>=0<=0), ,true,switch.boiler_cooling_only_with_PV,switch.boiler_pvcooling,6,0,1,220,1 +"Geo 5xx",boiler,173,auxheateronly,aux heater only,boolean (>=0<=0), ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly,6,0,1,221,1 +"Geo 5xx",boiler,173,auxheateroff,disable aux heater,boolean (>=0<=0), ,true,switch.boiler_disable_aux_heater,switch.boiler_auxheateroff,6,0,1,222,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,6,0,1,223,1 +"Geo 5xx",boiler,173,auxheaterlevel,aux heater level,uint8,%,false,sensor.boiler_aux_heater_level,sensor.boiler_auxheaterlevel,6,0,1,224,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,6,0,10,225,1 +"Geo 5xx",boiler,173,auxmaxlimit,aux heater max limit,uint8 (>=0<=10),K,true,number.boiler_aux_heater_max_limit,number.boiler_auxmaxlimit,6,0,1/10,226,1 +"Geo 5xx",boiler,173,auxlimitstart,aux heater limit start,uint8 (>=0<=10),K,true,number.boiler_aux_heater_limit_start,number.boiler_auxlimitstart,6,0,1/10,227,1 +"Geo 5xx",boiler,173,auxheatrmode,aux heater mode,enum [eco\|comfort] (>=0<=0), ,true,select.boiler_aux_heater_mode,select.boiler_auxheatrmode,6,0,1,228,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,6,0,5,229,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,6,0,5,230,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,6,0,5,231,1 +"Geo 5xx",boiler,173,silentmode,silent mode,enum [off\|auto\|on] (>=0<=0), ,true,select.boiler_silent_mode,select.boiler_silentmode,6,0,1,232,1 +"Geo 5xx",boiler,173,silentfrom,silent mode from,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_from,number.boiler_silentfrom,6,0,15,233,1 +"Geo 5xx",boiler,173,silentto,silent mode to,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_to,number.boiler_silentto,6,0,15,234,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,6,0,1,235,1 +"Geo 5xx",boiler,173,tempparmode,outside temp parallel mode,int8 (>=0<=0),C,true,number.boiler_outside_temp_parallel_mode,number.boiler_tempparmode,6,0,1,236,1 +"Geo 5xx",boiler,173,auxheatmix,aux heater mixing valve,int8,%,false,sensor.boiler_aux_heater_mixing_valve,sensor.boiler_auxheatmix,6,0,1,237,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,6,0,1/10,238,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,6,0,1/10,239,1 +"Geo 5xx",boiler,173,vpcooling,valve/pump cooling,boolean (>=0<=0), ,true,switch.boiler_valve/pump_cooling,switch.boiler_vpcooling,6,0,1,240,1 +"Geo 5xx",boiler,173,heatcable,heating cable,boolean (>=0<=0), ,true,switch.boiler_heating_cable,switch.boiler_heatcable,6,0,1,241,1 +"Geo 5xx",boiler,173,vc0valve,VC0 valve,boolean (>=0<=0), ,true,switch.boiler_VC0_valve,switch.boiler_vc0valve,6,0,1,242,1 +"Geo 5xx",boiler,173,primepump,primary heatpump,boolean (>=0<=0), ,true,switch.boiler_primary_heatpump,switch.boiler_primepump,6,0,1,243,1 +"Geo 5xx",boiler,173,primepumpmod,primary heatpump modulation,uint8 (>=0<=0),%,true,number.boiler_primary_heatpump_modulation,number.boiler_primepumpmod,6,0,1,244,1 +"Geo 5xx",boiler,173,hp3way,3-way valve,boolean (>=0<=0), ,true,switch.boiler_3-way_valve,switch.boiler_hp3way,6,0,1,245,1 +"Geo 5xx",boiler,173,elheatstep1,el. heater step 1,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_1,switch.boiler_elheatstep1,6,0,1,246,1 +"Geo 5xx",boiler,173,elheatstep2,el. heater step 2,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_2,switch.boiler_elheatstep2,6,0,1,247,1 +"Geo 5xx",boiler,173,elheatstep3,el. heater step 3,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_3,switch.boiler_elheatstep3,6,0,1,248,1 +"Geo 5xx",boiler,173,hpea0,condensate reservoir heating (EA0),boolean, ,false,binary_sensor.boiler_condensate_reservoir_heating_(EA0),binary_sensor.boiler_hpea0,6,0,1,249,1 +"Geo 5xx",boiler,173,hppumpmode,primary heatpump mode,enum [auto\|continuous] (>=0<=0), ,true,select.boiler_primary_heatpump_mode,select.boiler_hppumpmode,6,0,1,250,1 +"Geo 5xx",boiler,173,fan,fan,uint8 (>=20<=100),%,true,number.boiler_fan,number.boiler_fan,6,0,1,251,1 +"Geo 5xx",boiler,173,fanspd,fan speed,uint8,%,false,sensor.boiler_fan_speed,sensor.boiler_fanspd,6,0,1,252,1 +"Geo 5xx",boiler,173,shutdown,shutdown,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_shutdown,sensor.boiler_shutdown,6,0,1,253,1 +"Geo 5xx",boiler,173,hpcurrpower,compressor current power,uint16,W,false,sensor.boiler_compressor_current_power,sensor.boiler_hpcurrpower,6,0,1,254,1 +"Geo 5xx",boiler,173,hppowerlimit,power limit,uint16 (>=0<=0),W,true,number.boiler_power_limit,number.boiler_hppowerlimit,6,0,1,255,1 "Geo 5xx",boiler,173,dhw.alternatingop,alternating operation,boolean (>=0<=0), ,true,switch.boiler_dhw_alternating_operation,switch.boiler_dhw_alternatingop,6,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,6,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,6,9,1,17,1 @@ -3090,28 +3096,28 @@ 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,6,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,6,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,6,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,6,0,1/10,254,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,255,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,6,0,1,256,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,257,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,258,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,259,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,260,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,6,0,1,261,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,6,0,1,262,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,6,0,1,263,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,6,0,1,264,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,265,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,6,0,1,266,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,6,0,1,267,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,6,0,1,268,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,6,0,1,269,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,270,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,6,0,1,271,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,6,0,1,272,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,6,0,1,273,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,274,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,6,0,1,275,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,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,6,0,1,258,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,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,6,0,1,263,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,6,0,1,264,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,6,0,1,265,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,6,0,1,266,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,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,6,0,1,268,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,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,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,6,0,1,273,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,6,0,1,274,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,6,0,1,275,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,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,6,0,1,277,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,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,6,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,6,0,1,16,1 @@ -3148,9 +3154,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "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,6,0,1,87,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,276,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,6,0,1/10,278,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,6,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,6,0,1/10,278,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,6,0,1/10,280,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,6,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,6,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,6,9,1,29,1 @@ -3193,7 +3199,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,6,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,6,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,6,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,6,0,1,280,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,6,0,1,282,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,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,6,0,1/100,91,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,6,9,1/100,0,2 @@ -3211,28 +3217,28 @@ 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,6,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,6,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,6,0,1/10,13,1 -"Logamax U122, Cerapur",boiler,203,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,254,1 -"Logamax U122, Cerapur",boiler,203,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,255,1 -"Logamax U122, Cerapur",boiler,203,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,256,1 -"Logamax U122, Cerapur",boiler,203,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,257,1 -"Logamax U122, Cerapur",boiler,203,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,258,1 -"Logamax U122, Cerapur",boiler,203,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,259,1 -"Logamax U122, Cerapur",boiler,203,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,260,1 -"Logamax U122, Cerapur",boiler,203,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,261,1 -"Logamax U122, Cerapur",boiler,203,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,262,1 -"Logamax U122, Cerapur",boiler,203,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,263,1 -"Logamax U122, Cerapur",boiler,203,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,264,1 -"Logamax U122, Cerapur",boiler,203,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,265,1 -"Logamax U122, Cerapur",boiler,203,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,266,1 -"Logamax U122, Cerapur",boiler,203,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,267,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,6,0,1,268,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,6,0,1,269,1 -"Logamax U122, Cerapur",boiler,203,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,270,1 -"Logamax U122, Cerapur",boiler,203,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,271,1 -"Logamax U122, Cerapur",boiler,203,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,272,1 -"Logamax U122, Cerapur",boiler,203,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,273,1 -"Logamax U122, Cerapur",boiler,203,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,274,1 -"Logamax U122, Cerapur",boiler,203,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,275,1 +"Logamax U122, Cerapur",boiler,203,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Logamax U122, Cerapur",boiler,203,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Logamax U122, Cerapur",boiler,203,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Logamax U122, Cerapur",boiler,203,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Logamax U122, Cerapur",boiler,203,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Logamax U122, Cerapur",boiler,203,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Logamax U122, Cerapur",boiler,203,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Logamax U122, Cerapur",boiler,203,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Logamax U122, Cerapur",boiler,203,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Logamax U122, Cerapur",boiler,203,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Logamax U122, Cerapur",boiler,203,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Logamax U122, Cerapur",boiler,203,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Logamax U122, Cerapur",boiler,203,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Logamax U122, Cerapur",boiler,203,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Logamax U122, Cerapur",boiler,203,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Logamax U122, Cerapur",boiler,203,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Logamax U122, Cerapur",boiler,203,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Logamax U122, Cerapur",boiler,203,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Logamax U122, Cerapur",boiler,203,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Logamax U122, Cerapur",boiler,203,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 "Logamax U122, Cerapur",boiler,203,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 "Logamax U122, Cerapur",boiler,203,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 "Logamax U122, Cerapur",boiler,203,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 @@ -3269,9 +3275,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax U122, Cerapur",boiler,203,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 "Logamax U122, Cerapur",boiler,203,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Logamax U122, Cerapur",boiler,203,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,276,2 +"Logamax U122, Cerapur",boiler,203,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 "Logamax U122, Cerapur",boiler,203,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,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,6,0,1/10,278,2 +"Logamax U122, Cerapur",boiler,203,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 "Logamax U122, Cerapur",boiler,203,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,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,6,9,1,29,1 @@ -3314,7 +3320,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,6,9,1,66,1 "Logamax U122, Cerapur",boiler,203,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 -"Logamax U122, Cerapur",boiler,203,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,280,1 +"Logamax U122, Cerapur",boiler,203,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Logamax U122, Cerapur",boiler,203,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Logamax U122, Cerapur",boiler,203,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 "Logamax U122, Cerapur",boiler,203,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 @@ -3332,28 +3338,28 @@ 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,6,0,1/10,11,1 "Ecomline Excellent",boiler,206,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 "Ecomline Excellent",boiler,206,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 -"Ecomline Excellent",boiler,206,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,254,1 -"Ecomline Excellent",boiler,206,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,255,1 -"Ecomline Excellent",boiler,206,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,256,1 -"Ecomline Excellent",boiler,206,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,257,1 -"Ecomline Excellent",boiler,206,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,258,1 -"Ecomline Excellent",boiler,206,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,259,1 -"Ecomline Excellent",boiler,206,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,260,1 -"Ecomline Excellent",boiler,206,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,261,1 -"Ecomline Excellent",boiler,206,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,262,1 -"Ecomline Excellent",boiler,206,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,263,1 -"Ecomline Excellent",boiler,206,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,264,1 -"Ecomline Excellent",boiler,206,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,265,1 -"Ecomline Excellent",boiler,206,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,266,1 -"Ecomline Excellent",boiler,206,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,267,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,6,0,1,268,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,6,0,1,269,1 -"Ecomline Excellent",boiler,206,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,270,1 -"Ecomline Excellent",boiler,206,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,271,1 -"Ecomline Excellent",boiler,206,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,272,1 -"Ecomline Excellent",boiler,206,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,273,1 -"Ecomline Excellent",boiler,206,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,274,1 -"Ecomline Excellent",boiler,206,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,275,1 +"Ecomline Excellent",boiler,206,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Ecomline Excellent",boiler,206,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Ecomline Excellent",boiler,206,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Ecomline Excellent",boiler,206,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Ecomline Excellent",boiler,206,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Ecomline Excellent",boiler,206,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Ecomline Excellent",boiler,206,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Ecomline Excellent",boiler,206,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Ecomline Excellent",boiler,206,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Ecomline Excellent",boiler,206,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Ecomline Excellent",boiler,206,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Ecomline Excellent",boiler,206,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Ecomline Excellent",boiler,206,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Ecomline Excellent",boiler,206,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Ecomline Excellent",boiler,206,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Ecomline Excellent",boiler,206,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Ecomline Excellent",boiler,206,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Ecomline Excellent",boiler,206,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Ecomline Excellent",boiler,206,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Ecomline Excellent",boiler,206,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 "Ecomline Excellent",boiler,206,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 "Ecomline Excellent",boiler,206,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 "Ecomline Excellent",boiler,206,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 @@ -3390,9 +3396,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Ecomline Excellent",boiler,206,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 "Ecomline Excellent",boiler,206,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Ecomline Excellent",boiler,206,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 -"Ecomline Excellent",boiler,206,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,276,2 +"Ecomline Excellent",boiler,206,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 "Ecomline Excellent",boiler,206,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 -"Ecomline Excellent",boiler,206,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,278,2 +"Ecomline Excellent",boiler,206,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 "Ecomline Excellent",boiler,206,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 "Ecomline Excellent",boiler,206,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 @@ -3435,7 +3441,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,6,9,1,66,1 "Ecomline Excellent",boiler,206,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 "Ecomline Excellent",boiler,206,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 -"Ecomline Excellent",boiler,206,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,280,1 +"Ecomline Excellent",boiler,206,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Ecomline Excellent",boiler,206,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Ecomline Excellent",boiler,206,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 "Ecomline Excellent",boiler,206,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 @@ -3453,28 +3459,28 @@ 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,6,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,6,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,6,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,6,0,1/10,254,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,255,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,6,0,1,256,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,257,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,258,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,259,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,260,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,6,0,1,261,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,6,0,1,262,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,6,0,1,263,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,6,0,1,264,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,265,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,6,0,1,266,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,6,0,1,267,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,6,0,1,268,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,6,0,1,269,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,270,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,6,0,1,271,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,6,0,1,272,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,6,0,1,273,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,274,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,6,0,1,275,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,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,6,0,1,258,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,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,6,0,1,263,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,6,0,1,264,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,6,0,1,265,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,6,0,1,266,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,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,6,0,1,268,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,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,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,6,0,1,273,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,6,0,1,274,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,6,0,1,275,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,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,6,0,1,277,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,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,6,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,6,0,1,16,1 @@ -3511,9 +3517,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "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,6,0,1,87,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,276,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,6,0,1/10,278,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,6,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,6,0,1/10,278,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,6,0,1/10,280,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,6,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,6,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,6,9,1,29,1 @@ -3556,7 +3562,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,6,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,6,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,6,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,6,0,1,280,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,6,0,1,282,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,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,6,0,1/100,91,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,6,9,1/100,0,2 @@ -3574,28 +3580,28 @@ 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,6,0,1/10,11,1 "Cascade MC400",boiler,210,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 "Cascade MC400",boiler,210,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 -"Cascade MC400",boiler,210,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,254,1 -"Cascade MC400",boiler,210,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,255,1 -"Cascade MC400",boiler,210,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,256,1 -"Cascade MC400",boiler,210,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,257,1 -"Cascade MC400",boiler,210,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,258,1 -"Cascade MC400",boiler,210,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,259,1 -"Cascade MC400",boiler,210,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,260,1 -"Cascade MC400",boiler,210,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,261,1 -"Cascade MC400",boiler,210,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,262,1 -"Cascade MC400",boiler,210,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,263,1 -"Cascade MC400",boiler,210,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,264,1 -"Cascade MC400",boiler,210,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,265,1 -"Cascade MC400",boiler,210,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,266,1 -"Cascade MC400",boiler,210,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,267,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,6,0,1,268,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,6,0,1,269,1 -"Cascade MC400",boiler,210,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,270,1 -"Cascade MC400",boiler,210,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,271,1 -"Cascade MC400",boiler,210,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,272,1 -"Cascade MC400",boiler,210,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,273,1 -"Cascade MC400",boiler,210,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,274,1 -"Cascade MC400",boiler,210,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,275,1 +"Cascade MC400",boiler,210,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Cascade MC400",boiler,210,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Cascade MC400",boiler,210,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Cascade MC400",boiler,210,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Cascade MC400",boiler,210,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Cascade MC400",boiler,210,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Cascade MC400",boiler,210,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Cascade MC400",boiler,210,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Cascade MC400",boiler,210,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Cascade MC400",boiler,210,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Cascade MC400",boiler,210,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Cascade MC400",boiler,210,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Cascade MC400",boiler,210,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Cascade MC400",boiler,210,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Cascade MC400",boiler,210,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Cascade MC400",boiler,210,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Cascade MC400",boiler,210,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Cascade MC400",boiler,210,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Cascade MC400",boiler,210,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Cascade MC400",boiler,210,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 "Cascade MC400",boiler,210,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 "Cascade MC400",boiler,210,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 "Cascade MC400",boiler,210,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 @@ -3632,9 +3638,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MC400",boiler,210,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 "Cascade MC400",boiler,210,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Cascade MC400",boiler,210,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 -"Cascade MC400",boiler,210,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,276,2 +"Cascade MC400",boiler,210,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 "Cascade MC400",boiler,210,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 -"Cascade MC400",boiler,210,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,278,2 +"Cascade MC400",boiler,210,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 "Cascade MC400",boiler,210,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 "Cascade MC400",boiler,210,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 @@ -3677,7 +3683,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,6,9,1,66,1 "Cascade MC400",boiler,210,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 "Cascade MC400",boiler,210,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 -"Cascade MC400",boiler,210,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,280,1 +"Cascade MC400",boiler,210,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Cascade MC400",boiler,210,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Cascade MC400",boiler,210,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 "Cascade MC400",boiler,210,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 @@ -3695,28 +3701,28 @@ 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,6,0,1/10,11,1 "EasyControl Adapter",boiler,211,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 "EasyControl Adapter",boiler,211,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 -"EasyControl Adapter",boiler,211,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,254,1 -"EasyControl Adapter",boiler,211,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,255,1 -"EasyControl Adapter",boiler,211,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,256,1 -"EasyControl Adapter",boiler,211,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,257,1 -"EasyControl Adapter",boiler,211,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,258,1 -"EasyControl Adapter",boiler,211,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,259,1 -"EasyControl Adapter",boiler,211,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,260,1 -"EasyControl Adapter",boiler,211,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,261,1 -"EasyControl Adapter",boiler,211,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,262,1 -"EasyControl Adapter",boiler,211,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,263,1 -"EasyControl Adapter",boiler,211,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,264,1 -"EasyControl Adapter",boiler,211,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,265,1 -"EasyControl Adapter",boiler,211,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,266,1 -"EasyControl Adapter",boiler,211,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,267,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,6,0,1,268,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,6,0,1,269,1 -"EasyControl Adapter",boiler,211,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,270,1 -"EasyControl Adapter",boiler,211,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,271,1 -"EasyControl Adapter",boiler,211,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,272,1 -"EasyControl Adapter",boiler,211,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,273,1 -"EasyControl Adapter",boiler,211,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,274,1 -"EasyControl Adapter",boiler,211,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,275,1 +"EasyControl Adapter",boiler,211,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"EasyControl Adapter",boiler,211,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"EasyControl Adapter",boiler,211,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"EasyControl Adapter",boiler,211,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"EasyControl Adapter",boiler,211,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"EasyControl Adapter",boiler,211,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"EasyControl Adapter",boiler,211,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"EasyControl Adapter",boiler,211,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"EasyControl Adapter",boiler,211,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"EasyControl Adapter",boiler,211,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"EasyControl Adapter",boiler,211,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"EasyControl Adapter",boiler,211,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"EasyControl Adapter",boiler,211,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"EasyControl Adapter",boiler,211,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"EasyControl Adapter",boiler,211,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"EasyControl Adapter",boiler,211,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"EasyControl Adapter",boiler,211,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"EasyControl Adapter",boiler,211,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"EasyControl Adapter",boiler,211,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"EasyControl Adapter",boiler,211,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 "EasyControl Adapter",boiler,211,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 "EasyControl Adapter",boiler,211,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 "EasyControl Adapter",boiler,211,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 @@ -3753,9 +3759,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "EasyControl Adapter",boiler,211,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 "EasyControl Adapter",boiler,211,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "EasyControl Adapter",boiler,211,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 -"EasyControl Adapter",boiler,211,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,276,2 +"EasyControl Adapter",boiler,211,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 "EasyControl Adapter",boiler,211,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 -"EasyControl Adapter",boiler,211,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,278,2 +"EasyControl Adapter",boiler,211,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 "EasyControl Adapter",boiler,211,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 "EasyControl Adapter",boiler,211,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 @@ -3798,16 +3804,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,6,9,1,66,1 "EasyControl Adapter",boiler,211,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 "EasyControl Adapter",boiler,211,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 -"EasyControl Adapter",boiler,211,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,280,1 +"EasyControl Adapter",boiler,211,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "EasyControl Adapter",boiler,211,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "EasyControl Adapter",boiler,211,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 "EasyControl Adapter",boiler,211,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,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,6,0,1/10,281,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,heatvalve,heating valve,uint8,%,false,sensor.boiler_heating_valve,sensor.boiler_heatvalve,6,0,1,282,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,6,0,1/10,283,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,heatvalve,heating valve,uint8,%,false,sensor.boiler_heating_valve,sensor.boiler_heatvalve,6,0,1,284,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.dhwvalve,valve,uint8,%,false,sensor.boiler_dhw_valve,sensor.boiler_dhw_dhwvalve,6,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,6,0,1,283,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,6,0,1,284,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,heating,heating,boolean, ,false,binary_sensor.boiler_heating,binary_sensor.boiler_heating,6,0,1,285,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,6,0,1,285,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,6,0,1,286,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,heating,heating,boolean, ,false,binary_sensor.boiler_heating,binary_sensor.boiler_heating,6,0,1,287,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,6,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,6,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,6,0,1,2,1 @@ -3858,9 +3864,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar HIU, Logamax kompakt WS170",boiler,219,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,276,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,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,6,0,1/10,278,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,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,6,9,1,29,1 @@ -3917,28 +3923,28 @@ 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,6,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,6,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,6,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,6,0,1/10,254,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,255,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,6,0,1,256,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,257,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,258,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,259,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,6,0,1,260,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,6,0,1,261,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,6,0,1,262,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,6,0,1,263,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,6,0,1,264,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,265,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,6,0,1,266,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,6,0,1,267,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,6,0,1,268,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,6,0,1,269,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,6,0,1,270,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,6,0,1,271,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,6,0,1,272,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,6,0,1,273,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,6,0,1,274,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,6,0,1,275,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,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,6,0,1,258,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,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,6,0,1,262,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,6,0,1,263,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,6,0,1,264,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,6,0,1,265,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,6,0,1,266,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,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,6,0,1,268,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,6,0,1,269,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,6,0,1,270,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,6,0,1,271,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,6,0,1,272,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,6,0,1,273,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,6,0,1,274,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,6,0,1,275,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,6,0,1,276,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,6,0,1,277,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,6,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,6,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,6,0,1,16,1 @@ -3975,9 +3981,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "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,6,0,1,87,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,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,6,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,6,0,1/10,276,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,6,0,1/10,278,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,6,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,6,0,1/10,278,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,6,0,1/10,280,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,6,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,6,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,6,9,1,29,1 @@ -4020,7 +4026,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,6,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,6,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,6,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,6,0,1,280,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,6,0,1,282,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,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,6,0,1/100,91,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,6,9,1/100,0,2 @@ -6051,5 +6057,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "SM200, MS200",water,164,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.water_dhw_circulation_active,switch.water_dhw_circ,20,9,1,9,1 "SM200, MS200",water,164,dhw.circmode,circulation pump mode,enum [off\|on\|auto\|own prog] (>=0<=0), ,true,select.water_dhw_circulation_pump_mode,select.water_dhw_circmode,20,9,1,10,1 "MP100",pool,204,pooltemp,pool temperature,int16,C,false,sensor.pool_pool_temperature,sensor.pool_pooltemp,21,0,1/10,-1,1 -"MP100",pool,204,poolshuntstatus,pool shunt status opening/closing,enum [stopped\|opening\|closing\|open\|close], ,false,sensor.pool_pool_shunt_status_opening/closing,sensor.pool_poolshuntstatus,21,0,1,-1,1 -"MP100",pool,204,poolshunt,pool shunt open/close (0% = pool / 100% = heat),uint8,%,false,sensor.pool_pool_shunt_open/close_(0%_=_pool_/_100%_=_heat),sensor.pool_poolshunt,21,0,1,-1,1 +"MP100",pool,204,poolshuntstatus,valve status,enum [stopped\|opening\|closing\|open\|close], ,false,sensor.pool_valve_status,sensor.pool_poolshuntstatus,21,0,1,-1,1 +"MP100",pool,204,poolshunt,valve actual,uint8,%,false,sensor.pool_valve_actual,sensor.pool_poolshunt,21,0,1,-1,1 +"MP100",pool,204,poolshuntset,valve setpoint,uint8,%,false,sensor.pool_valve_setpoint,sensor.pool_poolshuntset,21,0,1,-1,1 +"MP100",pool,204,poolrequest,pool request,boolean, ,false,binary_sensor.pool_pool_request,binary_sensor.pool_poolrequest,21,0,1,-1,1 diff --git a/docs/dump_telegrams.csv b/docs/dump_telegrams.csv index 5050e8fc0..9bffc4864 100644 --- a/docs/dump_telegrams.csv +++ b/docs/dump_telegrams.csv @@ -29,7 +29,7 @@ telegram_type_id,name,is_fetched 0x3B,Energy, 0x3D,RC35Set, 0x3E,RC35Monitor, -0x3F,RC30Timer, +0x3F,RC35Timer, 0x40,RC30Temp, 0x41,RC30Monitor, 0x42,RC35Timer2, @@ -77,7 +77,7 @@ telegram_type_id,name,is_fetched 0x0103,ISM1StatusMessage,fetched 0x0104,ISM2StatusMessage, 0x010C,IPMStatusMessage, -0x011E,JunkersDisp,fetched +0x011E,IPMTempMessage, 0x012E,HPEnergy1, 0x013B,HPEnergy2, 0x0165,JunkersSet, @@ -115,7 +115,7 @@ telegram_type_id,name,is_fetched 0x02A5,EasyMonitor, 0x02A6,RC300Monitor, 0x02A7,RC300Monitor, -0x02A8,CRFMonitor, +0x02A8,RC300Monitor, 0x02A9,RC300Monitor, 0x02AA,RC300Monitor, 0x02AB,RC300Monitor, @@ -209,6 +209,7 @@ telegram_type_id,name,is_fetched 0x0585,Blowerspeed, 0x0587,Bypass, 0x05BA,HpPoolStatus,fetched +0x05C4,HpPoolShunt, 0x05D9,Airquality, 0x0772,HIUSettings, 0x0779,HIUMonitor, diff --git a/src/core/modbus_entity_parameters.hpp b/src/core/modbus_entity_parameters.hpp index e3fa4af6c..ab793e189 100644 --- a/src/core/modbus_entity_parameters.hpp +++ b/src/core/modbus_entity_parameters.hpp @@ -101,108 +101,110 @@ const std::initializer_list Modbus::modbus_register_ma REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpSetDiffPress), 151, 1), // hpsetdiffpress REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpCompOn), 152, 1), // hpcompon REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpActivity), 153, 1), // hpactivity - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpBrinePumpSpd), 154, 1), // hpbrinepumpspd - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpSwitchValve), 155, 1), // hpswitchvalve - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpCompSpd), 156, 1), // hpcompspd - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTargetSpd), 157, 1), // hptargetspd - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpCircSpd), 158, 1), // hpcircspd - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(receiverValveVr0), 159, 1), // recvalve - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(expansionValveVr1), 160, 1), // expvalve - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpBrineIn), 161, 1), // hpbrinein - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpBrineOut), 162, 1), // hpbrineout - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTc0), 163, 1), // hptc0 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTc1), 164, 1), // hptc1 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTc3), 165, 1), // hptc3 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTr1), 166, 1), // hptr1 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTr3), 167, 1), // hptr3 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTr4), 168, 1), // hptr4 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTr5), 169, 1), // hptr5 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTr6), 170, 1), // hptr6 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTr7), 171, 1), // hptr7 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTl2), 172, 1), // hptl2 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpPl1), 173, 1), // hppl1 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpPh1), 174, 1), // hpph1 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTa4), 175, 1), // hpta4 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTw1), 176, 1), // hptw1 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(poolSetTemp), 177, 1), // poolsettemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hp4wayValve), 178, 1), // hp4way - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpInput1), 179, 1), // hpin1 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpIn1Opt), 180, 8), // hpin1opt - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpInput2), 188, 1), // hpin2 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpIn2Opt), 189, 8), // hpin2opt - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpInput3), 197, 1), // hpin3 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpIn3Opt), 198, 8), // hpin3opt - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpInput4), 206, 1), // hpin4 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpIn4Opt), 207, 8), // hpin4opt - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(maxHeatComp), 215, 1), // maxheatcomp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(maxHeatHeat), 216, 1), // maxheatheat - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterSource), 217, 1), // auxheatersource - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(pvCooling), 218, 1), // pvcooling - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterOnly), 219, 1), // auxheateronly - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterOff), 220, 1), // auxheateroff - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterStatus), 221, 1), // auxheaterstatus - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterLevel), 222, 1), // auxheaterlevel - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterDelay), 223, 1), // auxheaterdelay - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxMaxLimit), 224, 1), // auxmaxlimit - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxLimitStart), 225, 1), // auxlimitstart - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeatMode), 226, 1), // auxheatrmode - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpHystHeat), 227, 1), // hphystheat - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpHystCool), 228, 1), // hphystcool - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpHystPool), 229, 1), // hphystpool - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(silentMode), 230, 1), // silentmode - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(silentFrom), 231, 1), // silentfrom - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(silentTo), 232, 1), // silentto - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(minTempSilent), 233, 1), // mintempsilent - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(tempParMode), 234, 1), // tempparmode - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeatMixValve), 235, 1), // auxheatmix - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(tempDiffHeat), 236, 1), // tempdiffheat - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(tempDiffCool), 237, 1), // tempdiffcool - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(vp_cooling), 238, 1), // vpcooling - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatCable), 239, 1), // heatcable - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(VC0valve), 240, 1), // vc0valve - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(primePump), 241, 1), // primepump - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(primePumpMod), 242, 1), // primepumpmod - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hp3wayValve), 243, 1), // hp3way - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(elHeatStep1), 244, 1), // elheatstep1 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(elHeatStep2), 245, 1), // elheatstep2 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(elHeatStep3), 246, 1), // elheatstep3 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpEA0), 247, 1), // hpea0 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpPumpMode), 248, 1), // hppumpmode - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpFan), 249, 1), // fan - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(fanSpd), 250, 1), // fanspd - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpShutdown), 251, 1), // shutdown - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpCurrPower), 252, 1), // hpcurrpower - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpPowerLimit), 253, 1), // hppowerlimit - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(exhaustTemp), 254, 1), // exhausttemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnGas), 255, 1), // burngas - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnGas2), 256, 1), // burngas2 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(flameCurr), 257, 1), // flamecurr - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(fanWork), 258, 1), // fanwork - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(ignWork), 259, 1), // ignwork - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(oilPreHeat), 260, 1), // oilpreheat - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnMinPower), 261, 1), // burnminpower - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnMaxPower), 262, 1), // burnmaxpower - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnMinPeriod), 263, 1), // burnminperiod - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(absBurnPow), 264, 1), // absburnpow - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatblock), 265, 1), // heatblock - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boilHystOn), 266, 1), // boilhyston - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boilHystOff), 267, 1), // boilhystoff - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boil2HystOn), 268, 1), // boil2hyston - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boil2HystOff), 269, 1), // boil2hystoff - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveOn), 270, 1), // curveon - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveBase), 271, 1), // curvebase - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveEnd), 272, 1), // curveend - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(summertemp), 273, 1), // summertemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nofrostmode), 274, 1), // nofrostmode - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nofrosttemp), 275, 1), // nofrosttemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(gasMeterHeat), 276, 2), // gasmeterheat - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgHeat2), 278, 2), // nrgheat2 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nomPower), 280, 1), // nompower - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(netFlowTemp), 281, 1), // netflowtemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatValve), 282, 1), // heatvalve - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(keepWarmTemp), 283, 1), // keepwarmtemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(setReturnTemp), 284, 1), // setreturntemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatingOn), 285, 1), // heating + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpPoolOn), 154, 1), // hppoolon + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpBrinePumpSpd), 155, 1), // hpbrinepumpspd + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpSwitchValve), 156, 1), // hpswitchvalve + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpCompSpd), 157, 1), // hpcompspd + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTargetSpd), 158, 1), // hptargetspd + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpCircSpd), 159, 1), // hpcircspd + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(receiverValveVr0), 160, 1), // recvalve + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(expansionValveVr1), 161, 1), // expvalve + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpBrineIn), 162, 1), // hpbrinein + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpBrineOut), 163, 1), // hpbrineout + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTc0), 164, 1), // hptc0 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTc1), 165, 1), // hptc1 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTc3), 166, 1), // hptc3 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTr1), 167, 1), // hptr1 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTr3), 168, 1), // hptr3 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTr4), 169, 1), // hptr4 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTr5), 170, 1), // hptr5 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTr6), 171, 1), // hptr6 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTr7), 172, 1), // hptr7 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTl2), 173, 1), // hptl2 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpPl1), 174, 1), // hppl1 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpPh1), 175, 1), // hpph1 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTa4), 176, 1), // hpta4 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpTw1), 177, 1), // hptw1 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(poolOn), 178, 1), // poolon + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(poolSetTemp), 179, 1), // poolsettemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hp4wayValve), 180, 1), // hp4way + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpInput1), 181, 1), // hpin1 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpIn1Opt), 182, 8), // hpin1opt + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpInput2), 190, 1), // hpin2 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpIn2Opt), 191, 8), // hpin2opt + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpInput3), 199, 1), // hpin3 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpIn3Opt), 200, 8), // hpin3opt + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpInput4), 208, 1), // hpin4 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpIn4Opt), 209, 8), // hpin4opt + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(maxHeatComp), 217, 1), // maxheatcomp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(maxHeatHeat), 218, 1), // maxheatheat + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterSource), 219, 1), // auxheatersource + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(pvCooling), 220, 1), // pvcooling + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterOnly), 221, 1), // auxheateronly + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterOff), 222, 1), // auxheateroff + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterStatus), 223, 1), // auxheaterstatus + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterLevel), 224, 1), // auxheaterlevel + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeaterDelay), 225, 1), // auxheaterdelay + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxMaxLimit), 226, 1), // auxmaxlimit + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxLimitStart), 227, 1), // auxlimitstart + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeatMode), 228, 1), // auxheatrmode + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpHystHeat), 229, 1), // hphystheat + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpHystCool), 230, 1), // hphystcool + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpHystPool), 231, 1), // hphystpool + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(silentMode), 232, 1), // silentmode + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(silentFrom), 233, 1), // silentfrom + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(silentTo), 234, 1), // silentto + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(minTempSilent), 235, 1), // mintempsilent + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(tempParMode), 236, 1), // tempparmode + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(auxHeatMixValve), 237, 1), // auxheatmix + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(tempDiffHeat), 238, 1), // tempdiffheat + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(tempDiffCool), 239, 1), // tempdiffcool + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(vp_cooling), 240, 1), // vpcooling + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatCable), 241, 1), // heatcable + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(VC0valve), 242, 1), // vc0valve + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(primePump), 243, 1), // primepump + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(primePumpMod), 244, 1), // primepumpmod + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hp3wayValve), 245, 1), // hp3way + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(elHeatStep1), 246, 1), // elheatstep1 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(elHeatStep2), 247, 1), // elheatstep2 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(elHeatStep3), 248, 1), // elheatstep3 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpEA0), 249, 1), // hpea0 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpPumpMode), 250, 1), // hppumpmode + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpFan), 251, 1), // fan + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(fanSpd), 252, 1), // fanspd + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpShutdown), 253, 1), // shutdown + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpCurrPower), 254, 1), // hpcurrpower + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(hpPowerLimit), 255, 1), // hppowerlimit + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(exhaustTemp), 256, 1), // exhausttemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnGas), 257, 1), // burngas + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnGas2), 258, 1), // burngas2 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(flameCurr), 259, 1), // flamecurr + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(fanWork), 260, 1), // fanwork + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(ignWork), 261, 1), // ignwork + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(oilPreHeat), 262, 1), // oilpreheat + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnMinPower), 263, 1), // burnminpower + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnMaxPower), 264, 1), // burnmaxpower + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnMinPeriod), 265, 1), // burnminperiod + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(absBurnPow), 266, 1), // absburnpow + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatblock), 267, 1), // heatblock + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boilHystOn), 268, 1), // boilhyston + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boilHystOff), 269, 1), // boilhystoff + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boil2HystOn), 270, 1), // boil2hyston + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boil2HystOff), 271, 1), // boil2hystoff + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveOn), 272, 1), // curveon + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveBase), 273, 1), // curvebase + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveEnd), 274, 1), // curveend + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(summertemp), 275, 1), // summertemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nofrostmode), 276, 1), // nofrostmode + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nofrosttemp), 277, 1), // nofrosttemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(gasMeterHeat), 278, 2), // gasmeterheat + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgHeat2), 280, 2), // nrgheat2 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nomPower), 282, 1), // nompower + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(netFlowTemp), 283, 1), // netflowtemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatValve), 284, 1), // heatvalve + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(keepWarmTemp), 285, 1), // keepwarmtemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(setReturnTemp), 286, 1), // setreturntemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatingOn), 287, 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 -- 2.54.0 From 8a48eb75d2a9860cd858435df298e56bc617ead7 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 27 Sep 2026 10:34:55 +0200 Subject: [PATCH 025/148] formatting --- src/core/analogsensor.cpp | 3 ++- src/test/test.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/core/analogsensor.cpp b/src/core/analogsensor.cpp index b91f4772f..ec1d323e9 100644 --- a/src/core/analogsensor.cpp +++ b/src/core/analogsensor.cpp @@ -406,7 +406,8 @@ void AnalogSensor::measure() { sensor.sum_ = (sensor.sum_ * 15 + a * 16) / 16; sensor.analog_ = sensor.sum_ / 16; } - if (sensor.analog_ > 0 && sensor.analog_ < NTC_VREF_MV && (sensor.last_reading_ + 1 < sensor.analog_ || sensor.last_reading_ > sensor.analog_ + 1)) { + if (sensor.analog_ > 0 && sensor.analog_ < NTC_VREF_MV + && (sensor.last_reading_ + 1 < sensor.analog_ || sensor.last_reading_ > sensor.analog_ + 1)) { sensor.set_value(sensor.offset() + 1 / (1 / T25 + log((double)sensor.analog_ / (NTC_VREF_MV - sensor.analog_) * (Rt / R0)) / Beta) - T0); // Temperature in Celsius sensor.last_reading_ = sensor.analog_; diff --git a/src/test/test.cpp b/src/test/test.cpp index b36b3ee89..9a1045ea5 100644 --- a/src/test/test.cpp +++ b/src/test/test.cpp @@ -967,7 +967,8 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd, const uart_telegram({0x10, 0x08, 0xFF, 0x00, 0x03, 0x8A, 0x01}); uart_telegram({0x08, 0x00, 0xFF, 0x00, 0x03, 0x8A, 0x01, 0x50, 0x01, 0x0C, 0x00, 0x00, 0x0A, 0x00, 0x1E, 0x00, 0x00, 0x01, 0x00, 0x04}); // HPValve, byte 0 bit 6 = pool heating active - uart_telegram({0x08, 0x00, 0xFF, 0x00, 0x03, 0x88, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00}); + uart_telegram({0x08, 0x00, 0xFF, 0x00, 0x03, 0x88, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00}); // heatpump -> MP100 shunt setpoint 0% uart_telegram({0x08, 0x11, 0xFF, 0x00, 0x04, 0xC4, 0x00}); // MP100 -> heatpump: 32.5 C, shunt 45%, pool request active -- 2.54.0 From 3befcb638d6e5fbefa7657d5ca7e98e57f5b630c Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 27 Sep 2026 14:02:09 +0200 Subject: [PATCH 026/148] update github actions --- .github/workflows/dev_release.yml | 7 ++++--- .github/workflows/github-releases-to-discord.yml | 4 ++-- .github/workflows/pr_check.yml | 4 ++-- .github/workflows/sonar_check.yml | 6 +++--- .github/workflows/stable_release.yml | 6 +++--- .github/workflows/stale_issues.yml | 2 +- .github/workflows/test_release.yml | 6 +++--- .github/workflows/update_versions.yml | 2 +- 8 files changed, 19 insertions(+), 18 deletions(-) diff --git a/.github/workflows/dev_release.yml b/.github/workflows/dev_release.yml index e79ff00a2..f518634e4 100644 --- a/.github/workflows/dev_release.yml +++ b/.github/workflows/dev_release.yml @@ -14,21 +14,22 @@ permissions: jobs: pre-release: name: 'Build Dev Release' + if: github.event_name == 'workflow_dispatch' || github.repository == 'emsesp/EMS-ESP32' runs-on: ubuntu-latest steps: - name: Install python 3.13 - uses: actions/setup-python@v6 + uses: actions/setup-python@v7 with: python-version: '3.13' - name: Install Node.js 26 - uses: actions/setup-node@v6 + uses: actions/setup-node@v7 with: node-version: 26 - name: Checkout repository - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: fetch-depth: 0 diff --git a/.github/workflows/github-releases-to-discord.yml b/.github/workflows/github-releases-to-discord.yml index aca7fd49c..be1018093 100644 --- a/.github/workflows/github-releases-to-discord.yml +++ b/.github/workflows/github-releases-to-discord.yml @@ -11,10 +11,10 @@ jobs: contents: read steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: GitHub Releases To Discord - uses: SethCohen/github-releases-to-discord@v1.13.1 + uses: SethCohen/github-releases-to-discord@v1.20.0 with: webhook_url: ${{ secrets.WEBHOOK_URL }} color: '2105893' diff --git a/.github/workflows/pr_check.yml b/.github/workflows/pr_check.yml index 8f668d31d..d8b061db3 100644 --- a/.github/workflows/pr_check.yml +++ b/.github/workflows/pr_check.yml @@ -15,10 +15,10 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Install python 3.13 - uses: actions/setup-python@v6 + uses: actions/setup-python@v7 with: python-version: '3.13' diff --git a/.github/workflows/sonar_check.yml b/.github/workflows/sonar_check.yml index 3a476fb5b..69939638d 100644 --- a/.github/workflows/sonar_check.yml +++ b/.github/workflows/sonar_check.yml @@ -19,15 +19,15 @@ jobs: BUILD_WRAPPER_OUT_DIR: bw-output steps: - name: Checkout repository - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: fetch-depth: 0 - name: Install Build Wrapper - uses: SonarSource/sonarqube-scan-action/install-build-wrapper@master + uses: SonarSource/sonarqube-scan-action/install-build-wrapper@v8.2.2 - name: Run Build Wrapper run: build-wrapper-linux-x86-64 --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} make all - name: SonarQube Scan - uses: SonarSource/sonarqube-scan-action@master + uses: SonarSource/sonarqube-scan-action@v8.2.2 env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} diff --git a/.github/workflows/stable_release.yml b/.github/workflows/stable_release.yml index 91ac2ad35..f1f3b7dfe 100644 --- a/.github/workflows/stable_release.yml +++ b/.github/workflows/stable_release.yml @@ -16,17 +16,17 @@ jobs: steps: - name: Install python 3.13 - uses: actions/setup-python@v6 + uses: actions/setup-python@v7 with: python-version: '3.13' - name: Install Node.js 26 - uses: actions/setup-node@v6 + uses: actions/setup-node@v7 with: node-version: 26 - name: Checkout repository - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Install pnpm run: npm install -g pnpm diff --git a/.github/workflows/stale_issues.yml b/.github/workflows/stale_issues.yml index 6903b401f..76cddcc3f 100644 --- a/.github/workflows/stale_issues.yml +++ b/.github/workflows/stale_issues.yml @@ -12,7 +12,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@v10 + - uses: actions/stale@v11 with: repo-token: ${{ secrets.GITHUB_TOKEN }} days-before-stale: 30 diff --git a/.github/workflows/test_release.yml b/.github/workflows/test_release.yml index 2d8777c70..ff961b26a 100644 --- a/.github/workflows/test_release.yml +++ b/.github/workflows/test_release.yml @@ -18,17 +18,17 @@ jobs: steps: - name: Install python 3.13 - uses: actions/setup-python@v6 + uses: actions/setup-python@v7 with: python-version: '3.13' - name: Install Node.js 26 - uses: actions/setup-node@v6 + uses: actions/setup-node@v7 with: node-version: 26 - name: Checkout repository - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Install pnpm run: npm install -g pnpm diff --git a/.github/workflows/update_versions.yml b/.github/workflows/update_versions.yml index e246f84c2..c15033b69 100644 --- a/.github/workflows/update_versions.yml +++ b/.github/workflows/update_versions.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Get and Send EMS-ESP version to Cloudflare env: -- 2.54.0 From 333e2d83d759659358e2a5aea103e83344a69d30 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 27 Sep 2026 15:10:45 +0200 Subject: [PATCH 027/148] update --- CHANGELOG_LATEST.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index b3f059530..f92b691a6 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -4,7 +4,7 @@ For more details go to [emsesp.org](https://emsesp.org/). ## [3.9.0] -This release is based on the latest Espressif/Arduino core version 3. It brings in many memory and performance optimizations. Note it does require the user to manually migrate settings from 3.8.x to 3.9.0. +This release is based on the latest Espressif/Arduino core version 3. It brings in many memory and performance optimizations. ## Added -- 2.54.0 From 52b24d56414f206092116282ea12c6dbc264c271 Mon Sep 17 00:00:00 2001 From: proddy Date: Wed, 30 Sep 2026 18:04:34 +0200 Subject: [PATCH 028/148] #3257 --- CHANGELOG_LATEST.md | 1 + src/devices/thermostat.cpp | 41 +++++++++++++++++++------------------- src/devices/thermostat.h | 3 +++ src/emsesp_version.h | 2 +- 4 files changed, 26 insertions(+), 21 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index f92b691a6..9fbd7011e 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -37,6 +37,7 @@ This release is based on the latest Espressif/Arduino core version 3. It brings - HA Discovery warning on Uptime after EMS-ESP boot due to NTP not ready - hc/control setting for UI800 thermostats [#3181](https://github.com/emsesp/EMS-ESP32/discussions/3181) - solar module switches [#3223](https://github.com/emsesp/EMS-ESP32/issues/3223) +- UI800/HMI800.2 thermostats without telegram 0x470 reported `summertemp` as 0 and lost the per-hc heat/cool delays [#3257](https://github.com/emsesp/EMS-ESP32/issues/3257) - possible crash when the WebUI asked for version information while the versions.json refresh was rewriting the cache from the main loop task - HTTP client could write past a fixed 64 byte buffer when a URL had a hostname of 64 characters or more, could busy-spin for the whole read budget if the socket reported bytes it wouldn't return, and buffered responses without any size limit - the "Ethernet clock mode (GPIO16/17) conflicts with PSRAM" error was never logged because Ethernet had already been skipped by the time the check ran diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index d2d4004ac..59888138f 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -181,9 +181,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i 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), 14); register_telegram_type(curve_typeids[i], "RC300Curves", false, MAKE_PF_CB(process_RC300Curve), 9); - if (model != EMSdevice::EMS_DEVICE_FLAG_UI800) { - register_telegram_type(summer2_typeids[i], "RC300Summer2", false, MAKE_PF_CB(process_RC300Summer2), 8); - } + register_telegram_type(summer2_typeids[i], "RC300Summer2", false, MAKE_PF_CB(process_RC300Summer2), 8); } const size_t set2_size = set2_typeids.size(); for (uint8_t i = 0; i < set2_size; i++) { @@ -1256,7 +1254,7 @@ void Thermostat::process_RC300Summer(const std::shared_ptr & tel has_update(telegram, hc->roominfl_factor, 1); // is * 10 has_update(telegram, hc->offsettemp, 2); has_update(telegram, hc->solarInfl, 3); - if (!is_received(summer2_typeids[hc->hc()])) { + if (!is_received(summer2_typeids[hc->hc()]) && !has_summer3()) { has_update(telegram, hc->summertemp, 6); has_update(telegram, hc->summersetmode, 7); } @@ -1274,6 +1272,11 @@ void Thermostat::process_RC300Summer(const std::shared_ptr & tel has_update(telegram, hc->comfortPointTemp, 12); } +// some UI800 (e.g. HMI800.2) don't send 0x470 and use the per-hc 0x471 ff instead, #3257 +bool Thermostat::has_summer3() const { + return model() == EMSdevice::EMS_DEVICE_FLAG_UI800 && is_received(0x470); +} + // type 0x470, only BC400/UI800 // (0x470), data: 01 0E 01 01 02 17 04 48 void Thermostat::process_RC300Summer3(const std::shared_ptr & telegram) { @@ -2654,7 +2657,7 @@ bool Thermostat::set_coolondelay(const char * value, const int8_t id) { if (!Helpers::value2float(value, f)) { return false; } - if (model() == EMSdevice::EMS_DEVICE_FLAG_UI800) { + if (has_summer3()) { write_command(0x470, 6, (uint8_t)(f * 4), 0x470); return true; } @@ -2671,7 +2674,7 @@ bool Thermostat::set_cooloffdelay(const char * value, const int8_t id) { if (!Helpers::value2float(value, f)) { return false; } - if (model() == EMSdevice::EMS_DEVICE_FLAG_UI800) { + if (has_summer3()) { write_command(0x470, 7, (uint8_t)(f * 4), 0x470); return true; } @@ -3438,7 +3441,7 @@ bool Thermostat::set_mode_n(const uint8_t mode, const int8_t id) { // sets the thermostat summermode for RC300 bool Thermostat::set_summermode(const char * value, const int8_t id) { uint8_t set; - if (model() == EMSdevice::EMS_DEVICE_FLAG_UI800) { + if (has_summer3()) { if (Helpers::value2enum(value, set, FL_(enum_summermode))) { write_command(0x470, 0, set, 0x470); return true; @@ -3599,7 +3602,7 @@ bool Thermostat::set_heatondelay(const char * value, const int8_t id) { if (!Helpers::value2float(value, f)) { return false; } - if (model() == EMSdevice::EMS_DEVICE_FLAG_UI800) { + if (has_summer3()) { write_command(0x470, 2, (uint8_t)(f * 4), 0x470); return true; } @@ -3616,7 +3619,7 @@ bool Thermostat::set_heatoffdelay(const char * value, const int8_t id) { if (!Helpers::value2float(value, f)) { return false; } - if (model() == EMSdevice::EMS_DEVICE_FLAG_UI800) { + if (has_summer3()) { write_command(0x470, 3, (uint8_t)(f * 4), 0x470); return true; } @@ -3633,7 +3636,7 @@ bool Thermostat::set_instantstart(const char * value, const int8_t id) { if (!Helpers::value2number(value, v)) { return false; } - if (model() == EMSdevice::EMS_DEVICE_FLAG_UI800) { + if (has_summer3()) { write_command(0x470, 4, (uint8_t)v, 0x470); return true; } @@ -4163,7 +4166,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co validate_typeid = set_typeids[hc->hc()]; switch (mode) { case HeatingCircuit::Mode::SUMMER: - if (model == EMSdevice::EMS_DEVICE_FLAG_UI800) { + if (has_summer3()) { write_command(0x470, 1, temperature, 0x470); return true; } @@ -4178,7 +4181,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co factor = 1; break; case HeatingCircuit::Mode::COOLSTART: - if (model == EMSdevice::EMS_DEVICE_FLAG_UI800) { + if (has_summer3()) { write_command(0x470, 5, temperature, 0x470); return true; } @@ -5206,14 +5209,12 @@ void Thermostat::register_device_values_hc(std::shared_ptrremotehum, DeviceValueType::CMD, FL_(remotehum), DeviceValueUOM::PERCENT, MAKE_CF_CB(set_remotehum), -1, 101); } - if (model != EMSdevice::EMS_DEVICE_FLAG_UI800) { - register_device_value(tag, &hc->heatondelay, DeviceValueType::UINT8, FL_(heatondelay), DeviceValueUOM::HOURS, MAKE_CF_CB(set_heatondelay), 1, 48); - register_device_value(tag, &hc->heatoffdelay, DeviceValueType::UINT8, FL_(heatoffdelay), DeviceValueUOM::HOURS, MAKE_CF_CB(set_heatoffdelay), 1, 48); - register_device_value(tag, &hc->coolondelay, DeviceValueType::UINT8, FL_(coolondelay), DeviceValueUOM::HOURS, MAKE_CF_CB(set_coolondelay), 1, 48); - register_device_value(tag, &hc->cooloffdelay, DeviceValueType::UINT8, FL_(cooloffdelay), DeviceValueUOM::HOURS, MAKE_CF_CB(set_cooloffdelay), 1, 48); - register_device_value(tag, &hc->instantstart, DeviceValueType::UINT8, FL_(instantstart), DeviceValueUOM::K, MAKE_CF_CB(set_instantstart), 1, 10); - register_device_value(tag, &hc->coolstart, DeviceValueType::UINT8, FL_(coolstart), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_coolstart), 20, 35); - } + register_device_value(tag, &hc->heatondelay, DeviceValueType::UINT8, FL_(heatondelay), DeviceValueUOM::HOURS, MAKE_CF_CB(set_heatondelay), 1, 48); + register_device_value(tag, &hc->heatoffdelay, DeviceValueType::UINT8, FL_(heatoffdelay), DeviceValueUOM::HOURS, MAKE_CF_CB(set_heatoffdelay), 1, 48); + register_device_value(tag, &hc->coolondelay, DeviceValueType::UINT8, FL_(coolondelay), DeviceValueUOM::HOURS, MAKE_CF_CB(set_coolondelay), 1, 48); + register_device_value(tag, &hc->cooloffdelay, DeviceValueType::UINT8, FL_(cooloffdelay), DeviceValueUOM::HOURS, MAKE_CF_CB(set_cooloffdelay), 1, 48); + register_device_value(tag, &hc->instantstart, DeviceValueType::UINT8, FL_(instantstart), DeviceValueUOM::K, MAKE_CF_CB(set_instantstart), 1, 10); + register_device_value(tag, &hc->coolstart, DeviceValueType::UINT8, FL_(coolstart), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_coolstart), 20, 35); register_device_value(tag, &hc->boost, DeviceValueType::BOOL, FL_(boost), DeviceValueUOM::NONE, MAKE_CF_CB(set_boost)); register_device_value(tag, &hc->boosttime, DeviceValueType::UINT8, FL_(boosttime), DeviceValueUOM::HOURS, MAKE_CF_CB(set_boosttime)); register_device_value(tag, diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index b80957998..1c795eab7 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -459,9 +459,12 @@ class Thermostat : public EMSdevice { void process_RC300Monitor(const std::shared_ptr & telegram); void process_RC300Set(const std::shared_ptr & telegram); void process_RC300Set2(const std::shared_ptr & telegram); + void process_RC300Summer(const std::shared_ptr & telegram); void process_RC300Summer2(const std::shared_ptr & telegram); void process_RC300Summer3(const std::shared_ptr & telegram); + bool has_summer3() const; + void process_RC300WWmode(const std::shared_ptr & telegram); void process_RC300WWmode2(const std::shared_ptr & telegram); void process_RC300WWtemp(const std::shared_ptr & telegram); diff --git a/src/emsesp_version.h b/src/emsesp_version.h index a731a45b3..fc1c2c9d9 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.9.0-dev.15" +#define EMSESP_APP_VERSION "3.9.0-dev.16" -- 2.54.0 From 635daa8ab8c12d1002b50642851039ee824adad3 Mon Sep 17 00:00:00 2001 From: proddy <1230712+proddy@users.noreply.github.com> Date: Wed, 30 Sep 2026 16:22:18 +0000 Subject: [PATCH 029/148] chore: update generated files for v3.9.0-dev.16 --- docs/Modbus-Entity-Registers.md | 12 ++++++++++++ docs/dump_entities.csv | 6 ++++++ docs/dump_telegrams.csv | 8 ++++---- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/docs/Modbus-Entity-Registers.md b/docs/Modbus-Entity-Registers.md index ba30e7dc9..ce2905541 100644 --- a/docs/Modbus-Entity-Registers.md +++ b/docs/Modbus-Entity-Registers.md @@ -6583,6 +6583,18 @@ uint8 | 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 | 47 | 1 | 1 | +uint8 +| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 48 | 1 | 1 | +uint8 +| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 49 | 1 | 1 | +uint8 +| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 50 | 1 | 1 | +uint8 +| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 51 | 1 | 1 | +uint8 +| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 52 | 1 | 1 | | hc1.boost | boost mode | boolean | | true | HC | 53 | 1 | 1 | uint8 | hc1.boosttime | boost time | uint8 (>=0<=0) | hours | true | HC | 54 | 1 | 1 | diff --git a/docs/dump_entities.csv b/docs/dump_entities.csv index fecf00355..e3150436c 100644 --- a/docs/dump_entities.csv +++ b/docs/dump_entities.csv @@ -4836,6 +4836,12 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.control,control device,enum [off\|-\|CR10\|CR10H\|-\|CR20RF\|RT800\|single] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,7,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,7,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,7,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,7,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,7,1,1,48,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,7,1,1,49,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,7,1,1,50,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,7,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,7,1,1,52,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,7,1,1,53,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,7,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,7,1,1,55,1 diff --git a/docs/dump_telegrams.csv b/docs/dump_telegrams.csv index 9bffc4864..dc630de2a 100644 --- a/docs/dump_telegrams.csv +++ b/docs/dump_telegrams.csv @@ -29,7 +29,7 @@ telegram_type_id,name,is_fetched 0x3B,Energy, 0x3D,RC35Set, 0x3E,RC35Monitor, -0x3F,RC35Timer, +0x3F,RC30Timer, 0x40,RC30Temp, 0x41,RC30Monitor, 0x42,RC35Timer2, @@ -77,7 +77,7 @@ telegram_type_id,name,is_fetched 0x0103,ISM1StatusMessage,fetched 0x0104,ISM2StatusMessage, 0x010C,IPMStatusMessage, -0x011E,IPMTempMessage, +0x011E,JunkersDisp,fetched 0x012E,HPEnergy1, 0x013B,HPEnergy2, 0x0165,JunkersSet, @@ -112,7 +112,7 @@ telegram_type_id,name,is_fetched 0x02A0,RC300Curves, 0x02A1,RC300Curves, 0x02A2,RC300Curves, -0x02A5,EasyMonitor, +0x02A5,CRFMonitor, 0x02A6,RC300Monitor, 0x02A7,RC300Monitor, 0x02A8,RC300Monitor, @@ -200,7 +200,7 @@ telegram_type_id,name,is_fetched 0x04A2,HpInput,fetched 0x04A5,HPFan,fetched 0x04A7,HPPowerLimit,fetched -0x04AA,HPPower, +0x04AA,HPPower2,fetched 0x04AE,HPEnergy,fetched 0x04AF,HPMeters,fetched 0x055C,VentilationSet,fetched -- 2.54.0 From e4f9d4a96df1fe184f7e11eac8fe5b6ff745453a Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 1 Oct 2026 17:52:52 +0200 Subject: [PATCH 030/148] #3257 summermode back and a test for #3094 --- CHANGELOG_LATEST.md | 2 +- interface/package.json | 6 +- interface/pnpm-lock.yaml | 490 +++++++++++++------------- lib/uuid-common/src/get_uptime_ms.cpp | 9 + lib/uuid-common/src/uuid/common.h | 3 + lib/uuid-console/src/shell_log.cpp | 11 +- mock-api/package.json | 2 +- mock-api/pnpm-lock.yaml | 122 +++---- platformio.ini | 1 + src/core/emsesp.cpp | 115 ++++++ src/core/emsesp.h | 22 ++ src/devices/thermostat.cpp | 7 +- src/web/WebLogService.cpp | 11 +- 13 files changed, 476 insertions(+), 325 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 9fbd7011e..073e370c1 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -37,7 +37,7 @@ This release is based on the latest Espressif/Arduino core version 3. It brings - HA Discovery warning on Uptime after EMS-ESP boot due to NTP not ready - hc/control setting for UI800 thermostats [#3181](https://github.com/emsesp/EMS-ESP32/discussions/3181) - solar module switches [#3223](https://github.com/emsesp/EMS-ESP32/issues/3223) -- UI800/HMI800.2 thermostats without telegram 0x470 reported `summertemp` as 0 and lost the per-hc heat/cool delays [#3257](https://github.com/emsesp/EMS-ESP32/issues/3257) +- UI800/HMI800.2 thermostats without telegram 0x470 reported `summertemp` as 0 and lost the per-hc heat/cool delays. `summermode` is now also shown for UI800 heatpumps [#3257](https://github.com/emsesp/EMS-ESP32/issues/3257) - possible crash when the WebUI asked for version information while the versions.json refresh was rewriting the cache from the main loop task - HTTP client could write past a fixed 64 byte buffer when a URL had a hostname of 64 characters or more, could busy-spin for the whole read budget if the socket reported bytes it wouldn't return, and buffered responses without any size limit - the "Ethernet clock mode (GPIO16/17) conflicts with PSRAM" error was never logged because Ethernet had already been skipped by the time the check ran diff --git a/interface/package.json b/interface/package.json index cff3e1c8e..0a881fa5f 100644 --- a/interface/package.json +++ b/interface/package.json @@ -31,7 +31,7 @@ "@table-library/react-table-library": "4.1.15", "alova": "^3.5.5", "jwt-decode": "^4.0.0", - "preact": "^10.29.8", + "preact": "^11.0.0", "react": "^19.3.0", "react-dom": "^19.3.0", "react-icons": "^5.7.0", @@ -54,9 +54,9 @@ "rollup-plugin-visualizer": "^7.1.1", "terser": "^5.51.2", "typescript": "^6.0.3", - "typescript-eslint": "^8.70.1", + "typescript-eslint": "^8.71.0", "vite": "^8.3.1", "vite-plugin-imagemin": "^0.6.1" }, - "packageManager": "pnpm@12.6.0" + "packageManager": "pnpm@12.8.1" } diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index d6507c3c5..140c0bf61 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -7,153 +7,153 @@ importers: configDependencies: {} packageManagerDependencies: pnpm: - specifier: 12.6.0 - version: 12.6.0 + specifier: 12.8.1 + version: 12.8.1 packages: - '@pnpm/exe.android-arm64@12.6.0': - resolution: {integrity: sha512-kviIHft9h02q+7N2In7tSL9T/HRUSGwYmU74YPtsWU5ee7vgqPyC0JT6RRX6miW+NxX1CvHgQxg69qq1qTLJYQ==} + '@pnpm/exe.android-arm64@12.8.1': + resolution: {integrity: sha512-siDxcidfz5eM6L2tJfik+i2bbUEw8UC7MZ3Yl2HYdRmqbdhHGAOQACtOOu6QVW4Jul4/w5wVKm+wM8ACtgh1Pg==} cpu: [arm64] os: [android] - '@pnpm/exe.android-x64@12.6.0': - resolution: {integrity: sha512-CT8aJKLq2mtZFE71pr4E5Z2xHL8uGnRGr+NclDqsXlVF4SVcQ2QAs14mWi0C8gjT4hbmi+Q0lJRRIkMAWfjjng==} + '@pnpm/exe.android-x64@12.8.1': + resolution: {integrity: sha512-0F/uqPRc3aN4vLHsa0f+6fTtmsigFQ9/yxEU43fionF//pNHEd5e97b3w/nKIgqYMCUQCJphmBRMA9Q8/wlo9Q==} cpu: [x64] os: [android] - '@pnpm/exe.darwin-arm64@12.6.0': - resolution: {integrity: sha512-rafpVkjzugKBMxSvGQd5wK1x5eOTkD/+lcJIFHeQhvd+BJ8kDisOOvwhQDrpGd4vd2Fx+hhW0P2Ptt638OlhFg==} + '@pnpm/exe.darwin-arm64@12.8.1': + resolution: {integrity: sha512-/rwavvMQJsl2RIxOHBnDF+4Gk+fhQFAY4M3PQZoKskJOEnaJcygG9p1xby6wcQcbS4d9dIubv09CQhufTgfmpw==} cpu: [arm64] os: [darwin] - '@pnpm/exe.darwin-x64@12.6.0': - resolution: {integrity: sha512-72Jpuv1m24gI8zUNcaylYpBWEhBzz1VPhnDIU2GYM2eRP+KsOqVLwV78i+JrihI39zY2NNXmaN4eAKX1inpaDQ==} + '@pnpm/exe.darwin-x64@12.8.1': + resolution: {integrity: sha512-htYt2gN7zqJKLhC99Ft6EUiO7myjZAZXfmGCTJUL1v+o7vE9hZdE1+fAkk4Oj1ZHNRti6b2woOxEkRkAusi8OQ==} cpu: [x64] os: [darwin] - '@pnpm/exe.freebsd-x64@12.6.0': - resolution: {integrity: sha512-LON4QgNy1w/XF4uySZIyC/5hEB0oGdelXsY9tSKqstER+2j2X2oHz67skD11RRd/HWFRtMr64shQZ4I9ZoZ0zg==} + '@pnpm/exe.freebsd-x64@12.8.1': + resolution: {integrity: sha512-PB5BULNgytxvExoOXUUeseS/DcpPENs+cg3iA6xHHeaLT4ctEGKSGXEbuj7USeqvo8JBpAx039hivnbzGqDwnA==} cpu: [x64] os: [freebsd] - '@pnpm/exe.linux-arm64-musl@12.6.0': - resolution: {integrity: sha512-BdDpX+DeaMUc5x6WNcE6FkmFy36NwrBbBvwsZU737Zt3u1fTY+iKFPchjEQNCM4rT6q6xvF2oN3ZwExGsJCkxQ==} + '@pnpm/exe.linux-arm64-musl@12.8.1': + resolution: {integrity: sha512-kKeyC/ArjrgdciQRBrOL0j9HtOI4gDRgoyP+eJ1CQKyadpKlf/DhDDyspXe07R3B9KagTVLUF2nlt6Dr5quFIg==} cpu: [arm64] os: [linux] libc: [musl] - '@pnpm/exe.linux-arm64@12.6.0': - resolution: {integrity: sha512-8h2sNoIhHDpHDYqZZCh9PXr6krqW10btb0GHVGuw710muDHlFAHMtUG2ogmaHge6zJG1xgY4Y7mwX5g/LWvrYg==} + '@pnpm/exe.linux-arm64@12.8.1': + resolution: {integrity: sha512-q4s9a9X2O3N9aeUFooW24orNrxvu20+jyVUFR5RanPCqOKKPBrgs2iywMkBBx1aXkkzdWT54/mfz8Be8sJlWEw==} cpu: [arm64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-ppc64@12.6.0': - resolution: {integrity: sha512-ld6xgcEhFCFrsVsJhbmdmR714PnsEspO/Ij8w0/D7OSiz2hYGu3fZd5tKRxOI5m6H6Gl0/RRFAPncTHbsgXVjQ==} + '@pnpm/exe.linux-ppc64@12.8.1': + resolution: {integrity: sha512-F7XSjKJthwCh/L6abZiMpAfo2Cm61SZIT3e4dfgiIjESndlWaXCnfLKngSgZ/SEMsdmHT6dud3+kWIB3tw0/xQ==} cpu: [ppc64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-riscv64@12.6.0': - resolution: {integrity: sha512-HIbImydoC3J8NFt+8MXfhTCf5rO6NjCMyinSAHac0VmV8uCHw+kbQkyAzxV84rzz9ZOzmBOnj0b1N461UIYGsw==} + '@pnpm/exe.linux-riscv64@12.8.1': + resolution: {integrity: sha512-z1ecpIK/ZY08Unk69KWWE9867oaKUytGUjrHnBoGFAAhsK+q+0cfvBH+f5fWobJ7FX97leMlLO+gkJolddM45Q==} cpu: [riscv64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-s390x@12.6.0': - resolution: {integrity: sha512-DjSqT7+BZ/lWcDHwNMuzsRVfyxUimh+D54Xw4tSWbdVVQhtWtNMUyI93LVnwCmsoEpar2gC3SFeAgywx37svKQ==} + '@pnpm/exe.linux-s390x@12.8.1': + resolution: {integrity: sha512-KU6tnrBfu4uKXTq6N5qJwSm8FSrs9Wc8b5AUEsHK9bRXwNdsZ1/lRxG1++X29SKRW9OSNuDSjxASv5mAvGo1gA==} cpu: [s390x] os: [linux] libc: [glibc] - '@pnpm/exe.linux-x64-musl@12.6.0': - resolution: {integrity: sha512-31lKeGPmRE6xfV6I3VjaEGVFRei14pl/zgoFDK4w+UkbJqOuNl2Ht3O1GuqNIg3Gl14qTEb4kZRAYFHXifDx9A==} + '@pnpm/exe.linux-x64-musl@12.8.1': + resolution: {integrity: sha512-eUE8BWJkDr2tJb/yrk0yVnszlmNqFarVxUlqiZ9BAkct28Nq/5g2H0tvMDmPA7fAQW3STNj+omJPPRVT+4s5sQ==} cpu: [x64] os: [linux] libc: [musl] - '@pnpm/exe.linux-x64@12.6.0': - resolution: {integrity: sha512-qFWBneHJAJ73W4whtbaFOL1M/7DBC6ILHXuxc7ZPtEhfPuT1zeZiGrmKHoMAfJA+mcm6xhOFljqVTUS+00Jabw==} + '@pnpm/exe.linux-x64@12.8.1': + resolution: {integrity: sha512-8bDZ0lZlCdi2rvnFul7EYgcC7zKeWSe76y8JV2oXobaS8p9i9d6PSf6LgLtTM0fI7R9Oh4eLCbveXyNDMmvZ+g==} cpu: [x64] os: [linux] libc: [glibc] - '@pnpm/exe.win32-arm64@12.6.0': - resolution: {integrity: sha512-OhfefXEEykZlslSUhR8PPRe6MVPV3Oink/dVfIecE5velpc7j80cZYsHlaDrtRDcm3TPwQHkaRW1SJ1efX9oFg==} + '@pnpm/exe.win32-arm64@12.8.1': + resolution: {integrity: sha512-MsT0dlrRxnCRCHCaosNbhWpEiAFnFuMEu3KuDJDU41BXgTwiINxU8goloUSUDejWZUqKaUqNC/qUTihl9nFtqg==} cpu: [arm64] os: [win32] - '@pnpm/exe.win32-x64@12.6.0': - resolution: {integrity: sha512-L2tuyrD2+Imgxs3VK/ST/2L3xD6vDP0ktJQxM0TaGw7TbAQEMq+RMc8iK6Ew7Id579uzjJe8jSfJID2ZGsOHCA==} + '@pnpm/exe.win32-x64@12.8.1': + resolution: {integrity: sha512-SWtPe0PsbTTk//gJND10tMdOfCYjrkq5+qV49hzVhY7xz2iJ339Rc+xwASlcvbwTfrvH39YNqpKYibD+CRGLwA==} cpu: [x64] os: [win32] - pnpm@12.6.0: - resolution: {integrity: sha512-PvaPlRyxEawgS0paFvCy3fDaVqluBBPoHYVdnwtV75JnFHCQKOHNAMQFwsX7e56OxNxGd3yAXQNzwvL/AP0g7A==} + pnpm@12.8.1: + resolution: {integrity: sha512-9kupB1B/XOr+BsjTjmBS0BeURFgOwSed3Vv8EctIqoomRLZlmOB+dh2oSHKp/FfV+QK4f6SdAkGY1VhhKqu+RQ==} engines: {node: '>=18.*'} hasBin: true snapshots: - '@pnpm/exe.android-arm64@12.6.0': + '@pnpm/exe.android-arm64@12.8.1': optional: true - '@pnpm/exe.android-x64@12.6.0': + '@pnpm/exe.android-x64@12.8.1': optional: true - '@pnpm/exe.darwin-arm64@12.6.0': + '@pnpm/exe.darwin-arm64@12.8.1': optional: true - '@pnpm/exe.darwin-x64@12.6.0': + '@pnpm/exe.darwin-x64@12.8.1': optional: true - '@pnpm/exe.freebsd-x64@12.6.0': + '@pnpm/exe.freebsd-x64@12.8.1': optional: true - '@pnpm/exe.linux-arm64-musl@12.6.0': + '@pnpm/exe.linux-arm64-musl@12.8.1': optional: true - '@pnpm/exe.linux-arm64@12.6.0': + '@pnpm/exe.linux-arm64@12.8.1': optional: true - '@pnpm/exe.linux-ppc64@12.6.0': + '@pnpm/exe.linux-ppc64@12.8.1': optional: true - '@pnpm/exe.linux-riscv64@12.6.0': + '@pnpm/exe.linux-riscv64@12.8.1': optional: true - '@pnpm/exe.linux-s390x@12.6.0': + '@pnpm/exe.linux-s390x@12.8.1': optional: true - '@pnpm/exe.linux-x64-musl@12.6.0': + '@pnpm/exe.linux-x64-musl@12.8.1': optional: true - '@pnpm/exe.linux-x64@12.6.0': + '@pnpm/exe.linux-x64@12.8.1': optional: true - '@pnpm/exe.win32-arm64@12.6.0': + '@pnpm/exe.win32-arm64@12.8.1': optional: true - '@pnpm/exe.win32-x64@12.6.0': + '@pnpm/exe.win32-x64@12.8.1': optional: true - pnpm@12.6.0: + pnpm@12.8.1: optionalDependencies: - '@pnpm/exe.android-arm64': 12.6.0 - '@pnpm/exe.android-x64': 12.6.0 - '@pnpm/exe.darwin-arm64': 12.6.0 - '@pnpm/exe.darwin-x64': 12.6.0 - '@pnpm/exe.freebsd-x64': 12.6.0 - '@pnpm/exe.linux-arm64': 12.6.0 - '@pnpm/exe.linux-arm64-musl': 12.6.0 - '@pnpm/exe.linux-ppc64': 12.6.0 - '@pnpm/exe.linux-riscv64': 12.6.0 - '@pnpm/exe.linux-s390x': 12.6.0 - '@pnpm/exe.linux-x64': 12.6.0 - '@pnpm/exe.linux-x64-musl': 12.6.0 - '@pnpm/exe.win32-arm64': 12.6.0 - '@pnpm/exe.win32-x64': 12.6.0 + '@pnpm/exe.android-arm64': 12.8.1 + '@pnpm/exe.android-x64': 12.8.1 + '@pnpm/exe.darwin-arm64': 12.8.1 + '@pnpm/exe.darwin-x64': 12.8.1 + '@pnpm/exe.freebsd-x64': 12.8.1 + '@pnpm/exe.linux-arm64': 12.8.1 + '@pnpm/exe.linux-arm64-musl': 12.8.1 + '@pnpm/exe.linux-ppc64': 12.8.1 + '@pnpm/exe.linux-riscv64': 12.8.1 + '@pnpm/exe.linux-s390x': 12.8.1 + '@pnpm/exe.linux-x64': 12.8.1 + '@pnpm/exe.linux-x64-musl': 12.8.1 + '@pnpm/exe.win32-arm64': 12.8.1 + '@pnpm/exe.win32-x64': 12.8.1 --- lockfileVersion: '9.0' @@ -191,8 +191,8 @@ importers: specifier: ^4.0.0 version: 4.0.0 preact: - specifier: ^10.29.8 - version: 10.29.8 + specifier: ^11.0.0 + version: 11.0.0 react: specifier: ^19.3.0 version: 19.3.0 @@ -214,7 +214,7 @@ importers: version: 10.0.1(eslint@10.11.0(supports-color@10.2.2)) '@preact/preset-vite': specifier: ^2.10.6 - version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2)) + version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 version: 6.0.2(prettier@3.9.9)(supports-color@10.2.2) @@ -247,7 +247,7 @@ importers: version: 3.9.9 rollup-plugin-visualizer: specifier: ^7.1.1 - version: 7.1.1(rolldown@1.2.11) + version: 7.1.1(rolldown@1.2.12) terser: specifier: ^5.51.2 version: 5.51.2 @@ -255,8 +255,8 @@ importers: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.70.1 - version: 8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + specifier: ^8.71.0 + version: 8.71.0(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) vite: specifier: ^8.3.1 version: 8.3.1(@types/node@26.6.3)(terser@5.51.2) @@ -627,8 +627,8 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@oxc-project/types@0.151.0': - resolution: {integrity: sha512-J1yXrIlNDZVzE3ada310xeAw7nH8yCAyLPuUIsjKatFPmfn5bS1oW+cM+QsGOtVWd5nhSpbwZWx/rue+r5Z+PA==} + '@oxc-project/types@0.152.0': + resolution: {integrity: sha512-oM/5rLBm2tPkg0iBgkH/FOeR3PCDpY19GTgAZjMFM8h9WI9VW7cLgzp6nwtarYKmovavIQZ+Fe/RKX/8C8O/Rw==} '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} @@ -661,98 +661,98 @@ packages: '@remix-run/route-pattern@0.22.1': resolution: {integrity: sha512-czdGJWh09Lapvcqt7Vb09KlrU2PhRJ8xQaI+AItTuD9aDJ5MAgxnS38lnys6Ll+6RJEqPiaUqTwIQhVLwFvv+w==} - '@rolldown/binding-android-arm-eabi@1.2.11': - resolution: {integrity: sha512-A5kXfGKvKWWZE0TtPrfsvT+q4Y5d1QG8gGUzpYjGydM+fARM9MuX90PrXYXe0XbsDVgyxxNzHo6giCj90bsFNw==} + '@rolldown/binding-android-arm-eabi@1.2.12': + resolution: {integrity: sha512-dB/a1214qKfHMXCpgqR4OZT+jS4kTyEXbQGJPqzobt5EwH5rX080pxE37alt3RzvR1bf1Yz/yGqRfrYAxuPw0A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@rolldown/binding-android-arm64@1.2.11': - resolution: {integrity: sha512-z6cTycz+iJ4PVkuL4HHW4DfTfoeU/2nqYYuSOrTmH7yHK5Y0LCOnA03V4ZNxavyVaU1oOqUgIg2klN/s+USGOA==} + '@rolldown/binding-android-arm64@1.2.12': + resolution: {integrity: sha512-7KHFgQ5VJxIHcLlrwrc3Xbds7oTNQT7Pgi9gQCJKrd2VGab/UksIOYp6VD8MzCstGxOKMgNamPwUCfxPdP1OHg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.2.11': - resolution: {integrity: sha512-jShvqNtP6vDC6/A5JOAzbVV+DkgHqhl/ScVCJEbt+TUY6QYz7YnXcrg3sLtFBniro0f/Ld50ZwCWA6f7KYD1nQ==} + '@rolldown/binding-darwin-arm64@1.2.12': + resolution: {integrity: sha512-3YIhqHD96nA5SaYNRBR16HnGv4oavZvXfD/ayHM+oYZ0WD/8lBAtf6zQua4kEyAvpqrluKXl0lnOBoiNby7x9w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.2.11': - resolution: {integrity: sha512-f2i2xiNWq1Z1l2++q2fuhZRdLAT3aqxD6vRNm1RAxpUoBcdqNB3C0s1Bt+K+PbEx2F5F4gQp6hqKkphCY/xF9w==} + '@rolldown/binding-darwin-x64@1.2.12': + resolution: {integrity: sha512-UuuJ35MFw4gmFOrE9pEqIV+K3syIKveph+Qc1/ljHZVdoDW4pz/JHR/eMVom+TZGl/5OOvGJOWaOCVt3ZfqhxA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.2.11': - resolution: {integrity: sha512-4Ir5FSOKIAMr4r0kExpt1s3bMgzJU3rA45AYOHtQpls0oNeqcYBKrWMlckrYH4KCfGLfkfn1tN1dmZPMVsdXow==} + '@rolldown/binding-freebsd-x64@1.2.12': + resolution: {integrity: sha512-uMvssit0a4W+/7D8CbHUvG719mH3R2jwXAlh/XcPvuHTE0g++LymF88DCGNX0HM2rBOn0xrzgXktIB6fLSJBTQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.2.11': - resolution: {integrity: sha512-/gnRDM+39BROzAN/k1OZjDPnDMcZxB/0EUxKjONO5yVkNEvlsoMDrxGNKgZi/ttFriS2gwlDNzB65pvNbFOXIQ==} + '@rolldown/binding-linux-arm-gnueabihf@1.2.12': + resolution: {integrity: sha512-XcFu0R0xWnwzSf4IQgFH1rJIckPN1pLy2R+4r9IDB7Yfu/ys9cVqfa4pBrMHj7a3gl8mIR4nRNPg0e5IvEVs6g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.2.11': - resolution: {integrity: sha512-PFaK8HwvAHbaKbBcDNQihjMKYvFnA5hiENx/l5tphTDz1E0WFp32l0A7aq7lyUwGsRw/xSrNIy/gIK4thrSCrw==} + '@rolldown/binding-linux-arm64-gnu@1.2.12': + resolution: {integrity: sha512-260UrKgn8tz39ak+SMDOirKzr7V04M9dWPw5llW00SwBivCZoWcRBKV1d8cXnRkUmSZA3BdiUmBHWk7734Ulpw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.2.11': - resolution: {integrity: sha512-AskzJUIKRLPxkruR1wLKewGbOw+EYfU/9lOrBFj4AFrEA8hPpKFnODWNu2WLaNs0QNkEb9QIJufmVZZIL/bJlg==} + '@rolldown/binding-linux-arm64-musl@1.2.12': + resolution: {integrity: sha512-5YK1I9SqDkbPgc1IA8BgDl34suqUS2q0KWnBrirm0E51YjOs6eo6dV6jbQfNE/argHRSvd0QUGgtpIoYx+WWpw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.2.11': - resolution: {integrity: sha512-qlUGAheh2yh8afH7QBgx0PrRHN85hKnNd78x8MeMhXivuevgd8vgf6/CstOzmNKY/lLTHvNTrPy98cLnAugzJw==} + '@rolldown/binding-linux-ppc64-gnu@1.2.12': + resolution: {integrity: sha512-Rkcrmp7eFRg74yL5fXEU91JEWbdEPLevWwGtXpmhbjlD1StScbWTmO94Bhly+Mo+ketKYkdmM1vNUKeWSlx8cQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.2.11': - resolution: {integrity: sha512-secpEad+0vCbSfn8upFySkDskv+bGPk3THSDS9Y89yc4rb4kzqHp8Dmyd9BkQW4SnhNXBZCl/6CrO//hZahNJQ==} + '@rolldown/binding-linux-s390x-gnu@1.2.12': + resolution: {integrity: sha512-qvK4DuAsQc2BSjlx+Xr+IzOIvvxbGZqxFwdWfG6F518Erj0GGISyQbJ6pIappnOxlNPzNHvo/L0BwB30GZ+zVw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.2.11': - resolution: {integrity: sha512-mOVBT3dPpkWm8XBWPmU4bf+U6dYDLeMo/9ojUmis4N0L5uu10qra5vOyngZ7/PSdoE4G9KvRt4bloRxNjLas7A==} + '@rolldown/binding-linux-x64-gnu@1.2.12': + resolution: {integrity: sha512-Q9uLBO53Xd4QIq1WOycVQyPP1O4HhraEV2qqb3uTrnVw6QZih9duY4vNXOivL1xoUS1/z+W8eF4NMfl2a8Sdjw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.2.11': - resolution: {integrity: sha512-Is78i9A8Ui4SqcxUwFJ9uMmjDn58IbVTjFWYdQestFEgeuEmHMLGNriXnVJKkwG2YiZjw8cP0zCTyDMdDGtOOg==} + '@rolldown/binding-linux-x64-musl@1.2.12': + resolution: {integrity: sha512-3IBxWFMjbOZskDPKv8Lf9BCnahlKuHthWkYnyIxOH/QcJrFcS4EmcenthApkwr/5+nEqZlLzeYbxeMaX7A5u4g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.2.11': - resolution: {integrity: sha512-dUCXneZ87INUMyQ0D+C0HrEBNUPNXHaPmU5GTjyKTJEiussw9Kaj5Ln8UztPe4epV/ffvgNBEadksdYhmW6xJA==} + '@rolldown/binding-openharmony-arm64@1.2.12': + resolution: {integrity: sha512-xtX61xg4LKPkPWilZU1ynKClz5Gj4bf74LML4r3eVLWumKnGjoEr1OSHQhMdbBDoYTi+yjrujvpZe2pUnqCrrA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-win32-arm64-msvc@1.2.11': - resolution: {integrity: sha512-jByxb6qfd+bH1xUd0qnfFnb17i9sWBPY2tOavJ0l3tdr3OTu+Kvtm8cd/JV5nFt657b1VqGltxg9olOEfofXWw==} + '@rolldown/binding-win32-arm64-msvc@1.2.12': + resolution: {integrity: sha512-At7fPB6PCaIjzgIhEZFxuT+BBFqiQibJDT4d3PhiR3f4E7bbMZF4aKblbFfEM3sETRDd1YiQx/+U/g/B/ou5Ew==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.2.11': - resolution: {integrity: sha512-/PzKqzAJ03i19oy2ItPvyvaVjOjBCNnfaJs8yvUdGBKmiESgnrJSQ2awd81QzFbbnAmu7YO9ZnJrDCb9VSJPRA==} + '@rolldown/binding-win32-x64-msvc@1.2.12': + resolution: {integrity: sha512-WIw2haVKwjuYdXkHaoC0mF8Le71TuCBxjrdKqLbJGctbBABj+ClfmNvtbOnzpq3RokNo5+V1qhtSzJyXorsklQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -870,63 +870,63 @@ packages: '@types/svgo@2.6.4': resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==} - '@typescript-eslint/eslint-plugin@8.70.1': - resolution: {integrity: sha512-nDNrUQ/4ruSNYbu749TRY7cfrzPtoLHEXSNBI8aaNY32LlZCajixqRf3FqcKC4p5Cam4VOHYx/t+i5+nKXvrqA==} + '@typescript-eslint/eslint-plugin@8.71.0': + resolution: {integrity: sha512-pqcS9c1HxZTHt7End4nXqd0s5lJrrFzrgCkKFJrsbUnaL6M3+6oBFZaslg6Gjsl3argl2DDRFROnXARaZ2e4Nw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.70.1 + '@typescript-eslint/parser': ^8.71.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.70.1': - resolution: {integrity: sha512-nO974WLllwhSFWQXnMLj6nDGa8f0khKEz1JzpPJ1u7Vm/4X1X6ZHajpoknU4bb41vJyMB0HHVyS2GqdhWfIXZw==} + '@typescript-eslint/parser@8.71.0': + resolution: {integrity: sha512-CG4nPk1f2zc8yw4pALqHsFYH2hdo+h1T9daSp21+Hnxi9LOE3GT9hAfTKJCBXVNM2GmYs1eMEP615wPoeOgk3A==} 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.70.1': - resolution: {integrity: sha512-62xOgboPfwc3/IgPSX/W6oQR3ZbF04194FPGUGH8HL8iLFHbt/456/8Ph1wLNUgVF+s94FlHoipBsz+v7+LMnA==} + '@typescript-eslint/project-service@8.71.0': + resolution: {integrity: sha512-aABjw5rjBacYONVPaPiWOCjJu0vEF4a25iQuodlmQYL1trtLZ0X/y+2Vzl3BKI1odM4LnwLE1oUDXYp1wzx1TQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.70.1': - resolution: {integrity: sha512-Pa0EeSeAusQc1WbjQMac+YfenewYTBu0KjgYvkUKwhXaHUKbFog23Dm/rp0DX/6tyYOQ3Xl1a+3EcFNZynGHCw==} + '@typescript-eslint/scope-manager@8.71.0': + resolution: {integrity: sha512-gWF0BhUcnjZxSpLE8ngS/59n2SB0J3YqRxvX1+2aoRJk9hNtHSLOV+TcarFiOr5ipXm3yc1QrI4c9YZc8zyCxw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.70.1': - resolution: {integrity: sha512-jumze1fPI+sDOaM2TWGQdn39PDxTr7TZGeuyLkAbNyx2vtMT3uRnVKChN0hfht5V2TugphJzF6bYXvBcE09qqg==} + '@typescript-eslint/tsconfig-utils@8.71.0': + resolution: {integrity: sha512-Z1UlWHADEK2Mlb9NpWfDeSjqoZ5EyrOv4R3eQpbkzqn/EwaIdOpXXupEA1+0ZIOSJSZZDBHG0BrQyN8zUG6Pwg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.70.1': - resolution: {integrity: sha512-7zKTnyvaVWqzLZHPFQtX1hVHqgkMC+WebPWakNCSyrQVbIP1AM0L0TlBZtACldIRb6PptI8Odk+jyZ5kP3B1VA==} + '@typescript-eslint/type-utils@8.71.0': + resolution: {integrity: sha512-i8uO1qbdxeKgRnS5sCRt6On3/nfo2d2DwQe3Yvjx543zLy7r8ySqRuPPiIIXAhS03U0v5NfAFx+rUgxFzKKwNw==} 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.70.1': - resolution: {integrity: sha512-Dm1ypdhhrGCTyyehxElhgJ6kgk8MVCv5qXdoOVqPr1uqk42jX8KjrZqhROvdShczA8qrDoYiOWn1ykWlx2k81Q==} + '@typescript-eslint/types@8.71.0': + resolution: {integrity: sha512-cJ4OoxPGWvFnBTnSZyaU+qJzGTqPTGJY+gDchj6cRyLRdmIdt4rcsE4twj+zPfrNiWuVi38wijHzShL++Z9atQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.70.1': - resolution: {integrity: sha512-TU8PwyGN0PQJUcE96mw8eCQ44SmxGdQlJmlWakHaHQ15eIuuvye5yNtmh/i6oS88jzXVQB71xdNkbkB/fMwL0g==} + '@typescript-eslint/typescript-estree@8.71.0': + resolution: {integrity: sha512-PEEF4G5sLLWAS5BpPrUvms4ySZkiBQQZM4z+3ReI46axK5Vqr/vXBQatJQIZZOYdGyPUAKTtsrWzpqKuU+3DEw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.70.1': - resolution: {integrity: sha512-Esgul8MsnKnRLdYU2Eb2cRV9bS5HJYtKj1ByJnOzzG2M58DGdSUQ1jUuILxipqcpB2h9WLrbD5GijIWUjX/Tqw==} + '@typescript-eslint/utils@8.71.0': + resolution: {integrity: sha512-pKR/tEMVrXZG23UFKUn5BQf3zfmfk7KQceI2cGzywZ5nxM5Eu3hEJU1utjWzydtzBbcJAQhHN8iPCxobHpPcZQ==} 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.70.1': - resolution: {integrity: sha512-Vwj9lUIW5Xq3wQ9w6gv3R86g1hMK8f2zNOdGTAgeXUMMXFK78G9ruCjjqutHMNJc0+CH7LYRnHeUB9IT8wFmcw==} + '@typescript-eslint/visitor-keys@8.71.0': + resolution: {integrity: sha512-8eQ9R218XORK+KLosnf4bu/QsUXvUyVwTbArg7/0NMB1Pu87OJKvj4nhFblkYE8gQV73mW1dx1ptlPCkwRGa7A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} acorn-jsx@5.3.2: @@ -950,8 +950,8 @@ packages: resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} engines: {node: '>=0.10.0'} - ansi-regex@6.3.0: - resolution: {integrity: sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ==} + ansi-regex@6.4.0: + resolution: {integrity: sha512-KzTVk2tCWAHtYrvvvaP8bJKJq2pVinhLcGEQdtLIYPbmNGNyYe8QwNaTUYQp2J7/vIsUKt5QCqAfUkYyG9DkOw==} engines: {node: '>=12'} ansi-styles@2.2.1: @@ -1049,8 +1049,8 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.29.1: - resolution: {integrity: sha512-AUdjuRyCNGUYtqpqfTmWyM4fXay8yIQhmLnvYe/THMGfT9B/34X7xQd3ifKxwyNPPpowVBjLb+64BN9Rn1mizw==} + browserslist@4.29.3: + resolution: {integrity: sha512-1R4kiYKXGViqEN0CnoDrXc1StD9niAwu+j2dukWzrD4bJgsD4lDmEp0CRbc6E/vYJIfTHwPmwyaKtVSudICdPA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -1106,8 +1106,8 @@ packages: resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} engines: {node: '>=0.10.0'} - caniuse-lite@1.0.30001812: - resolution: {integrity: sha512-qN+QNNBr93TCmFrmte0bBCjSDMuRvt78VlHT99qIGPszm4QsqCX8lnyWUFkHi8B7ZBAPq8SH+UqyXNy/odMdng==} + caniuse-lite@1.0.30001814: + resolution: {integrity: sha512-/Uaf1lAzr59XcMpW0o96WoEfr+VXK2OX4U9AgFoiSHsVJ4HppnIFUjtYzsyDH2+tgANaQb2/oxYGwCPapN1FpA==} caw@2.0.1: resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} @@ -1338,8 +1338,8 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.439: - resolution: {integrity: sha512-qu6QIPXhsb+CRcAiTMNjR4A1y/7tCYKkKjr5CZXRVih6qkDf79peZ2BpEU3qoDBNCRrcy3Mra3X9nG5oruuA7Q==} + electron-to-chromium@1.5.443: + resolution: {integrity: sha512-TDJG36L9A3CWWwZ97HKaE+Iz1sW80pNp6sAU0owzCIV3Zc9eVyRqZK8Vz6NKuMIU8WjP0pIkoqCa0VRf/yFD0Q==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -1869,8 +1869,8 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - ignore@7.0.10: - resolution: {integrity: sha512-HpbUakT7xp5miBUywCHf36ZEuAJNklBJDDsGpUIjMzOSmM8ELSfA9Sa/QDPeNeqeoN31u+UTCkL4klCOVvRm4Q==} + ignore@7.0.11: + resolution: {integrity: sha512-YChdK5txDjwGUvgR7oCJcLGkwi3LDh8Zx8tS7ndYciLEg/oOCL26VUBSUEtgS7EjiybcBqFxh5j0rAdDX7/bbg==} engines: {node: '>= 4'} imagemin-gifsicle@7.0.0: @@ -2527,18 +2527,14 @@ packages: resolution: {integrity: sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==} engines: {node: ^10 || ^12 || >=14} - powershell-utils@0.1.0: - resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} - engines: {node: '>=20'} - powershell-utils@0.2.1: resolution: {integrity: sha512-C+y9x90UElAddDZmV4qOx9W53B61PO7cIqWz2dQsWlwswuq4mr8NEwytdGKboYbQlGZ3awrkTeNvcZiZNHnQ8A==} engines: {node: '>=20'} - preact@10.29.8: - resolution: {integrity: sha512-ej2aVZ+vZ8WO7tvlQWRM9N63A0KzF9q4mWJfDUHgYaIofWY9hu74QdnQrjoPMmZi2/nZ5gN0bJCQF49xQqx09Q==} + preact@11.0.0: + resolution: {integrity: sha512-LRTLKuSe6VYPhvBDjwFaX+nuZnpsw6IN2GSboisAvhGsncylBmrbDCERhgKDn6yP2mAwbGvsB5OVyTe33M8gBg==} peerDependencies: - preact-render-to-string: '>=5' + preact-render-to-string: '>=6.7.0' peerDependenciesMeta: preact-render-to-string: optional: true @@ -2686,8 +2682,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rolldown@1.2.11: - resolution: {integrity: sha512-qpSwIyz0jHQq5qXBTNxFmE6664rJ7O+4TvPFOiOaBSrz8IOHc1koKKSqTM2H6u1UG1+TveuC6vaDHKXFOvb1Kw==} + rolldown@1.2.12: + resolution: {integrity: sha512-8wafseiaG80xmXSfqidUNqZcylTlhmPZZt+za2m+js2sFZ8dTNlhIOV2WcbIPx2hgwPBJpEUGFAMZ9bgBBLTSQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -2798,8 +2794,8 @@ packages: resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==} engines: {node: '>=4'} - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + source-map-js@1.2.2: + resolution: {integrity: sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==} engines: {node: '>=0.10.0'} source-map-support@0.5.21: @@ -2997,8 +2993,8 @@ packages: peerDependencies: typescript: '>=3.5.1' - typescript-eslint@8.70.1: - resolution: {integrity: sha512-AcWG7KDjZ2THNXsgwttMaGmzVi0VFRlFYfqFHYQRbDpF3owuYbuiL8c7UUrd2k8s3PoSfIQrWfrGXfcElrWLYA==} + typescript-eslint@8.71.0: + resolution: {integrity: sha512-fBdHYiqQ14RW6mOMXD14Svn82ZsCYAoQSzGRzyEjR59S5A2Krh/l7fGTOQ7iCr8gGy/mHVXtEF7s5fgjEdV0Pw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -3128,8 +3124,8 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - wsl-utils@1.0.0: - resolution: {integrity: sha512-Hl0ZOAs672vg+06kfujwRhoS6/jehvULrlFkuF2dRu6pHgA8U06h3xqNIqNNU1LTXPcedxByAR4GS6pwQK0mgA==} + wsl-utils@1.0.1: + resolution: {integrity: sha512-c16PKLIRxBYpR3jSWsdS7SFp0COm5SOQdiFjY818dYFHJbMGuLBszpF07LBWmOS1uzrHa9VGdynsEgoeKy0oOQ==} engines: {node: '>=20'} xtend@4.0.2: @@ -3225,7 +3221,7 @@ snapshots: dependencies: '@babel/compat-data': 7.29.7 '@babel/helper-validator-option': 7.29.7 - browserslist: 4.29.1 + browserslist: 4.29.3 lru-cache: 5.1.1 semver: 6.3.1 @@ -3591,16 +3587,16 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.3 - '@oxc-project/types@0.151.0': {} + '@oxc-project/types@0.152.0': {} '@popperjs/core@2.11.8': {} - '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2))': + '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@prefresh/vite': 2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2)) + '@prefresh/vite': 2.4.12(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2)) '@rollup/pluginutils': 5.4.0 babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.7(supports-color@10.2.2)) debug: 4.4.3(supports-color@10.2.2) @@ -3618,69 +3614,69 @@ snapshots: dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) - '@prefresh/core@1.5.11(preact@10.29.8)': + '@prefresh/core@1.5.11(preact@11.0.0)': dependencies: - preact: 10.29.8 + preact: 11.0.0 '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2))': + '@prefresh/vite@2.4.12(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@prefresh/babel-plugin': 0.5.4(@babel/core@7.29.7(supports-color@10.2.2)) - '@prefresh/core': 1.5.11(preact@10.29.8) + '@prefresh/core': 1.5.11(preact@11.0.0) '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 - preact: 10.29.8 + preact: 11.0.0 vite: 8.3.1(@types/node@26.6.3)(terser@5.51.2) transitivePeerDependencies: - supports-color '@remix-run/route-pattern@0.22.1': {} - '@rolldown/binding-android-arm-eabi@1.2.11': + '@rolldown/binding-android-arm-eabi@1.2.12': optional: true - '@rolldown/binding-android-arm64@1.2.11': + '@rolldown/binding-android-arm64@1.2.12': optional: true - '@rolldown/binding-darwin-arm64@1.2.11': + '@rolldown/binding-darwin-arm64@1.2.12': optional: true - '@rolldown/binding-darwin-x64@1.2.11': + '@rolldown/binding-darwin-x64@1.2.12': optional: true - '@rolldown/binding-freebsd-x64@1.2.11': + '@rolldown/binding-freebsd-x64@1.2.12': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.2.11': + '@rolldown/binding-linux-arm-gnueabihf@1.2.12': optional: true - '@rolldown/binding-linux-arm64-gnu@1.2.11': + '@rolldown/binding-linux-arm64-gnu@1.2.12': optional: true - '@rolldown/binding-linux-arm64-musl@1.2.11': + '@rolldown/binding-linux-arm64-musl@1.2.12': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.2.11': + '@rolldown/binding-linux-ppc64-gnu@1.2.12': optional: true - '@rolldown/binding-linux-s390x-gnu@1.2.11': + '@rolldown/binding-linux-s390x-gnu@1.2.12': optional: true - '@rolldown/binding-linux-x64-gnu@1.2.11': + '@rolldown/binding-linux-x64-gnu@1.2.12': optional: true - '@rolldown/binding-linux-x64-musl@1.2.11': + '@rolldown/binding-linux-x64-musl@1.2.12': optional: true - '@rolldown/binding-openharmony-arm64@1.2.11': + '@rolldown/binding-openharmony-arm64@1.2.12': optional: true - '@rolldown/binding-win32-arm64-msvc@1.2.11': + '@rolldown/binding-win32-arm64-msvc@1.2.12': optional: true - '@rolldown/binding-win32-x64-msvc@1.2.11': + '@rolldown/binding-win32-x64-msvc@1.2.12': optional: true '@rolldown/pluginutils@1.0.1': {} @@ -3795,57 +3791,57 @@ snapshots: dependencies: '@types/node': 26.6.3 - '@typescript-eslint/eslint-plugin@8.70.1(@typescript-eslint/parser@8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.71.0(@typescript-eslint/parser@8.71.0(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.70.1 - '@typescript-eslint/type-utils': 8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/utils': 8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.70.1 + '@typescript-eslint/parser': 8.71.0(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.71.0 + '@typescript-eslint/type-utils': 8.71.0(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/utils': 8.71.0(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.71.0 eslint: 10.11.0(supports-color@10.2.2) - ignore: 7.0.10 + ignore: 7.0.11 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/parser@8.71.0(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/scope-manager': 8.70.1 - '@typescript-eslint/types': 8.70.1 - '@typescript-eslint/typescript-estree': 8.70.1(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.70.1 + '@typescript-eslint/scope-manager': 8.71.0 + '@typescript-eslint/types': 8.71.0 + '@typescript-eslint/typescript-estree': 8.71.0(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.71.0 debug: 4.4.3(supports-color@10.2.2) eslint: 10.11.0(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.70.1(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/project-service@8.71.0(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.70.1(typescript@6.0.3) - '@typescript-eslint/types': 8.70.1 + '@typescript-eslint/tsconfig-utils': 8.71.0(typescript@6.0.3) + '@typescript-eslint/types': 8.71.0 debug: 4.4.3(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.70.1': + '@typescript-eslint/scope-manager@8.71.0': dependencies: - '@typescript-eslint/types': 8.70.1 - '@typescript-eslint/visitor-keys': 8.70.1 + '@typescript-eslint/types': 8.71.0 + '@typescript-eslint/visitor-keys': 8.71.0 - '@typescript-eslint/tsconfig-utils@8.70.1(typescript@6.0.3)': + '@typescript-eslint/tsconfig-utils@8.71.0(typescript@6.0.3)': dependencies: typescript: 6.0.3 - '@typescript-eslint/type-utils@8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.71.0(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/types': 8.70.1 - '@typescript-eslint/typescript-estree': 8.70.1(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/utils': 8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/types': 8.71.0 + '@typescript-eslint/typescript-estree': 8.71.0(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/utils': 8.71.0(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) debug: 4.4.3(supports-color@10.2.2) eslint: 10.11.0(supports-color@10.2.2) ts-api-utils: 2.5.0(typescript@6.0.3) @@ -3853,14 +3849,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.70.1': {} + '@typescript-eslint/types@8.71.0': {} - '@typescript-eslint/typescript-estree@8.70.1(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/typescript-estree@8.71.0(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/project-service': 8.70.1(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.70.1(typescript@6.0.3) - '@typescript-eslint/types': 8.70.1 - '@typescript-eslint/visitor-keys': 8.70.1 + '@typescript-eslint/project-service': 8.71.0(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.71.0(typescript@6.0.3) + '@typescript-eslint/types': 8.71.0 + '@typescript-eslint/visitor-keys': 8.71.0 debug: 4.4.3(supports-color@10.2.2) minimatch: 10.2.6 semver: 7.8.5 @@ -3870,20 +3866,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/utils@8.71.0(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: '@eslint-community/eslint-utils': 4.10.1(eslint@10.11.0(supports-color@10.2.2)) - '@typescript-eslint/scope-manager': 8.70.1 - '@typescript-eslint/types': 8.70.1 - '@typescript-eslint/typescript-estree': 8.70.1(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.71.0 + '@typescript-eslint/types': 8.71.0 + '@typescript-eslint/typescript-estree': 8.71.0(supports-color@10.2.2)(typescript@6.0.3) eslint: 10.11.0(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.70.1': + '@typescript-eslint/visitor-keys@8.71.0': dependencies: - '@typescript-eslint/types': 8.70.1 + '@typescript-eslint/types': 8.71.0 eslint-visitor-keys: 5.0.1 acorn-jsx@5.3.2(acorn@8.18.0): @@ -3906,7 +3902,7 @@ snapshots: ansi-regex@2.1.1: {} - ansi-regex@6.3.0: {} + ansi-regex@6.4.0: {} ansi-styles@2.2.1: {} @@ -4005,13 +4001,13 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.29.1: + browserslist@4.29.3: dependencies: baseline-browser-mapping: 2.11.26 - caniuse-lite: 1.0.30001812 - electron-to-chromium: 1.5.439 + caniuse-lite: 1.0.30001814 + electron-to-chromium: 1.5.443 node-releases: 2.0.57 - update-browserslist-db: 1.3.3(browserslist@4.29.1) + update-browserslist-db: 1.3.3(browserslist@4.29.3) buffer-alloc-unsafe@1.1.0: {} @@ -4079,7 +4075,7 @@ snapshots: camelcase@2.1.1: {} - caniuse-lite@1.0.30001812: {} + caniuse-lite@1.0.30001814: {} caw@2.0.1: dependencies: @@ -4374,7 +4370,7 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.439: {} + electron-to-chromium@1.5.443: {} emoji-regex@10.6.0: {} @@ -4917,7 +4913,7 @@ snapshots: ignore@5.3.2: {} - ignore@7.0.10: {} + ignore@7.0.11: {} imagemin-gifsicle@7.0.0: dependencies: @@ -5360,7 +5356,7 @@ snapshots: is-in-ssh: 1.0.0 is-inside-container: 1.0.0 powershell-utils: 0.2.1 - wsl-utils: 1.0.0 + wsl-utils: 1.0.1 optionator@0.9.4: dependencies: @@ -5501,13 +5497,11 @@ snapshots: dependencies: nanoid: 3.3.19 picocolors: 1.1.1 - source-map-js: 1.2.1 - - powershell-utils@0.1.0: {} + source-map-js: 1.2.2 powershell-utils@0.2.1: {} - preact@10.29.8: {} + preact@11.0.0: {} prelude-ls@1.2.1: {} @@ -5645,35 +5639,35 @@ snapshots: dependencies: glob: 7.2.3 - rolldown@1.2.11: + rolldown@1.2.12: dependencies: - '@oxc-project/types': 0.151.0 + '@oxc-project/types': 0.152.0 '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm-eabi': 1.2.11 - '@rolldown/binding-android-arm64': 1.2.11 - '@rolldown/binding-darwin-arm64': 1.2.11 - '@rolldown/binding-darwin-x64': 1.2.11 - '@rolldown/binding-freebsd-x64': 1.2.11 - '@rolldown/binding-linux-arm-gnueabihf': 1.2.11 - '@rolldown/binding-linux-arm64-gnu': 1.2.11 - '@rolldown/binding-linux-arm64-musl': 1.2.11 - '@rolldown/binding-linux-ppc64-gnu': 1.2.11 - '@rolldown/binding-linux-s390x-gnu': 1.2.11 - '@rolldown/binding-linux-x64-gnu': 1.2.11 - '@rolldown/binding-linux-x64-musl': 1.2.11 - '@rolldown/binding-openharmony-arm64': 1.2.11 - '@rolldown/binding-win32-arm64-msvc': 1.2.11 - '@rolldown/binding-win32-x64-msvc': 1.2.11 + '@rolldown/binding-android-arm-eabi': 1.2.12 + '@rolldown/binding-android-arm64': 1.2.12 + '@rolldown/binding-darwin-arm64': 1.2.12 + '@rolldown/binding-darwin-x64': 1.2.12 + '@rolldown/binding-freebsd-x64': 1.2.12 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.12 + '@rolldown/binding-linux-arm64-gnu': 1.2.12 + '@rolldown/binding-linux-arm64-musl': 1.2.12 + '@rolldown/binding-linux-ppc64-gnu': 1.2.12 + '@rolldown/binding-linux-s390x-gnu': 1.2.12 + '@rolldown/binding-linux-x64-gnu': 1.2.12 + '@rolldown/binding-linux-x64-musl': 1.2.12 + '@rolldown/binding-openharmony-arm64': 1.2.12 + '@rolldown/binding-win32-arm64-msvc': 1.2.12 + '@rolldown/binding-win32-x64-msvc': 1.2.12 - rollup-plugin-visualizer@7.1.1(rolldown@1.2.11): + rollup-plugin-visualizer@7.1.1(rolldown@1.2.12): dependencies: open: 11.0.4 picomatch: 4.0.7 source-map: 0.8.0 yargs: 18.2.0 optionalDependencies: - rolldown: 1.2.11 + rolldown: 1.2.12 run-applescript@7.1.0: {} @@ -5752,7 +5746,7 @@ snapshots: dependencies: is-plain-obj: 1.1.0 - source-map-js@1.2.1: {} + source-map-js@1.2.2: {} source-map-support@0.5.21: dependencies: @@ -5814,7 +5808,7 @@ snapshots: strip-ansi@7.2.0: dependencies: - ansi-regex: 6.3.0 + ansi-regex: 6.4.0 strip-bom@2.0.0: dependencies: @@ -5937,12 +5931,12 @@ snapshots: dependencies: typescript: 6.0.3 - typescript-eslint@8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3): + typescript-eslint@8.71.0(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.70.1(@typescript-eslint/parser@8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/parser': 8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.70.1(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/utils': 8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/eslint-plugin': 8.71.0(@typescript-eslint/parser@8.71.0(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/parser': 8.71.0(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.71.0(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/utils': 8.71.0(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) eslint: 10.11.0(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: @@ -5959,9 +5953,9 @@ snapshots: universalify@2.0.1: {} - update-browserslist-db@1.3.3(browserslist@4.29.1): + update-browserslist-db@1.3.3(browserslist@4.29.3): dependencies: - browserslist: 4.29.1 + browserslist: 4.29.3 escalade: 3.2.0 picocolors: 1.1.1 @@ -6032,7 +6026,7 @@ snapshots: lightningcss: 1.33.0 picomatch: 4.0.7 postcss: 8.5.28 - rolldown: 1.2.11 + rolldown: 1.2.12 tinyglobby: 0.2.17 optionalDependencies: '@types/node': 26.6.3 @@ -6067,10 +6061,10 @@ snapshots: wrappy@1.0.2: {} - wsl-utils@1.0.0: + wsl-utils@1.0.1: dependencies: is-wsl: 3.1.1 - powershell-utils: 0.1.0 + powershell-utils: 0.2.1 xtend@4.0.2: {} diff --git a/lib/uuid-common/src/get_uptime_ms.cpp b/lib/uuid-common/src/get_uptime_ms.cpp index c995341e4..1e6e268cf 100644 --- a/lib/uuid-common/src/get_uptime_ms.cpp +++ b/lib/uuid-common/src/get_uptime_ms.cpp @@ -20,6 +20,8 @@ #include +#include + namespace uuid { static uint64_t now_millis = 0; @@ -41,4 +43,11 @@ uint32_t get_uptime() { return (uint32_t)now_millis; } +// both clocks are read live and in ms, whole-second values would make the offset jitter by 1s +int64_t get_wall_offset_ms() { + struct timeval tv; + gettimeofday(&tv, nullptr); + return (int64_t)tv.tv_sec * 1000 + tv.tv_usec / 1000 - esp_timer_get_time() / 1000; +} + } // namespace uuid diff --git a/lib/uuid-common/src/uuid/common.h b/lib/uuid-common/src/uuid/common.h index d8c1ef572..a9aff9eb5 100644 --- a/lib/uuid-common/src/uuid/common.h +++ b/lib/uuid-common/src/uuid/common.h @@ -105,6 +105,9 @@ uint64_t get_uptime_ms(); uint32_t get_uptime(); uint32_t get_uptime_sec(); +// milliseconds to add to an uptime in ms to get the wall clock time in ms since the epoch +int64_t get_wall_offset_ms(); + void set_uptime(); } // namespace uuid diff --git a/lib/uuid-console/src/shell_log.cpp b/lib/uuid-console/src/shell_log.cpp index 0ae54eab7..dcc781889 100644 --- a/lib/uuid-console/src/shell_log.cpp +++ b/lib/uuid-console/src/shell_log.cpp @@ -106,14 +106,15 @@ void Shell::output_logs() { } while (1) { - time_t offset = time(nullptr) - uuid::get_uptime_sec(); - if (offset < 1500000000L) { + int64_t offset_ms = uuid::get_wall_offset_ms(); + if (offset_ms < 1500000000000LL) { print(uuid::log::format_timestamp_ms(message.content_->uptime_ms, 3)); } else { - time_t t1 = offset + (time_t)(message.content_->uptime_ms / 1000); - char timestr[25]; + int64_t wall_ms = offset_ms + (int64_t)message.content_->uptime_ms; + time_t t1 = (time_t)(wall_ms / 1000); + char timestr[25]; strftime(timestr, 25, "%FT%T", localtime(&t1)); - printf("%s.%03d", timestr, (uint16_t)(message.content_->uptime_ms % 1000)); + printf("%s.%03d", timestr, (int)(wall_ms % 1000)); } printf(" %c %lu: [%s] ", uuid::log::format_level_char(message.content_->level), message.id_, message.content_->name); diff --git a/mock-api/package.json b/mock-api/package.json index ffc836250..64a729272 100644 --- a/mock-api/package.json +++ b/mock-api/package.json @@ -17,5 +17,5 @@ "@trivago/prettier-plugin-sort-imports": "^6.0.2", "prettier": "^3.9.9" }, - "packageManager": "pnpm@12.6.0" + "packageManager": "pnpm@12.8.1" } diff --git a/mock-api/pnpm-lock.yaml b/mock-api/pnpm-lock.yaml index 80e7ed185..a0c58b979 100644 --- a/mock-api/pnpm-lock.yaml +++ b/mock-api/pnpm-lock.yaml @@ -7,153 +7,153 @@ importers: configDependencies: {} packageManagerDependencies: pnpm: - specifier: 12.6.0 - version: 12.6.0 + specifier: 12.8.1 + version: 12.8.1 packages: - '@pnpm/exe.android-arm64@12.6.0': - resolution: {integrity: sha512-kviIHft9h02q+7N2In7tSL9T/HRUSGwYmU74YPtsWU5ee7vgqPyC0JT6RRX6miW+NxX1CvHgQxg69qq1qTLJYQ==} + '@pnpm/exe.android-arm64@12.8.1': + resolution: {integrity: sha512-siDxcidfz5eM6L2tJfik+i2bbUEw8UC7MZ3Yl2HYdRmqbdhHGAOQACtOOu6QVW4Jul4/w5wVKm+wM8ACtgh1Pg==} cpu: [arm64] os: [android] - '@pnpm/exe.android-x64@12.6.0': - resolution: {integrity: sha512-CT8aJKLq2mtZFE71pr4E5Z2xHL8uGnRGr+NclDqsXlVF4SVcQ2QAs14mWi0C8gjT4hbmi+Q0lJRRIkMAWfjjng==} + '@pnpm/exe.android-x64@12.8.1': + resolution: {integrity: sha512-0F/uqPRc3aN4vLHsa0f+6fTtmsigFQ9/yxEU43fionF//pNHEd5e97b3w/nKIgqYMCUQCJphmBRMA9Q8/wlo9Q==} cpu: [x64] os: [android] - '@pnpm/exe.darwin-arm64@12.6.0': - resolution: {integrity: sha512-rafpVkjzugKBMxSvGQd5wK1x5eOTkD/+lcJIFHeQhvd+BJ8kDisOOvwhQDrpGd4vd2Fx+hhW0P2Ptt638OlhFg==} + '@pnpm/exe.darwin-arm64@12.8.1': + resolution: {integrity: sha512-/rwavvMQJsl2RIxOHBnDF+4Gk+fhQFAY4M3PQZoKskJOEnaJcygG9p1xby6wcQcbS4d9dIubv09CQhufTgfmpw==} cpu: [arm64] os: [darwin] - '@pnpm/exe.darwin-x64@12.6.0': - resolution: {integrity: sha512-72Jpuv1m24gI8zUNcaylYpBWEhBzz1VPhnDIU2GYM2eRP+KsOqVLwV78i+JrihI39zY2NNXmaN4eAKX1inpaDQ==} + '@pnpm/exe.darwin-x64@12.8.1': + resolution: {integrity: sha512-htYt2gN7zqJKLhC99Ft6EUiO7myjZAZXfmGCTJUL1v+o7vE9hZdE1+fAkk4Oj1ZHNRti6b2woOxEkRkAusi8OQ==} cpu: [x64] os: [darwin] - '@pnpm/exe.freebsd-x64@12.6.0': - resolution: {integrity: sha512-LON4QgNy1w/XF4uySZIyC/5hEB0oGdelXsY9tSKqstER+2j2X2oHz67skD11RRd/HWFRtMr64shQZ4I9ZoZ0zg==} + '@pnpm/exe.freebsd-x64@12.8.1': + resolution: {integrity: sha512-PB5BULNgytxvExoOXUUeseS/DcpPENs+cg3iA6xHHeaLT4ctEGKSGXEbuj7USeqvo8JBpAx039hivnbzGqDwnA==} cpu: [x64] os: [freebsd] - '@pnpm/exe.linux-arm64-musl@12.6.0': - resolution: {integrity: sha512-BdDpX+DeaMUc5x6WNcE6FkmFy36NwrBbBvwsZU737Zt3u1fTY+iKFPchjEQNCM4rT6q6xvF2oN3ZwExGsJCkxQ==} + '@pnpm/exe.linux-arm64-musl@12.8.1': + resolution: {integrity: sha512-kKeyC/ArjrgdciQRBrOL0j9HtOI4gDRgoyP+eJ1CQKyadpKlf/DhDDyspXe07R3B9KagTVLUF2nlt6Dr5quFIg==} cpu: [arm64] os: [linux] libc: [musl] - '@pnpm/exe.linux-arm64@12.6.0': - resolution: {integrity: sha512-8h2sNoIhHDpHDYqZZCh9PXr6krqW10btb0GHVGuw710muDHlFAHMtUG2ogmaHge6zJG1xgY4Y7mwX5g/LWvrYg==} + '@pnpm/exe.linux-arm64@12.8.1': + resolution: {integrity: sha512-q4s9a9X2O3N9aeUFooW24orNrxvu20+jyVUFR5RanPCqOKKPBrgs2iywMkBBx1aXkkzdWT54/mfz8Be8sJlWEw==} cpu: [arm64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-ppc64@12.6.0': - resolution: {integrity: sha512-ld6xgcEhFCFrsVsJhbmdmR714PnsEspO/Ij8w0/D7OSiz2hYGu3fZd5tKRxOI5m6H6Gl0/RRFAPncTHbsgXVjQ==} + '@pnpm/exe.linux-ppc64@12.8.1': + resolution: {integrity: sha512-F7XSjKJthwCh/L6abZiMpAfo2Cm61SZIT3e4dfgiIjESndlWaXCnfLKngSgZ/SEMsdmHT6dud3+kWIB3tw0/xQ==} cpu: [ppc64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-riscv64@12.6.0': - resolution: {integrity: sha512-HIbImydoC3J8NFt+8MXfhTCf5rO6NjCMyinSAHac0VmV8uCHw+kbQkyAzxV84rzz9ZOzmBOnj0b1N461UIYGsw==} + '@pnpm/exe.linux-riscv64@12.8.1': + resolution: {integrity: sha512-z1ecpIK/ZY08Unk69KWWE9867oaKUytGUjrHnBoGFAAhsK+q+0cfvBH+f5fWobJ7FX97leMlLO+gkJolddM45Q==} cpu: [riscv64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-s390x@12.6.0': - resolution: {integrity: sha512-DjSqT7+BZ/lWcDHwNMuzsRVfyxUimh+D54Xw4tSWbdVVQhtWtNMUyI93LVnwCmsoEpar2gC3SFeAgywx37svKQ==} + '@pnpm/exe.linux-s390x@12.8.1': + resolution: {integrity: sha512-KU6tnrBfu4uKXTq6N5qJwSm8FSrs9Wc8b5AUEsHK9bRXwNdsZ1/lRxG1++X29SKRW9OSNuDSjxASv5mAvGo1gA==} cpu: [s390x] os: [linux] libc: [glibc] - '@pnpm/exe.linux-x64-musl@12.6.0': - resolution: {integrity: sha512-31lKeGPmRE6xfV6I3VjaEGVFRei14pl/zgoFDK4w+UkbJqOuNl2Ht3O1GuqNIg3Gl14qTEb4kZRAYFHXifDx9A==} + '@pnpm/exe.linux-x64-musl@12.8.1': + resolution: {integrity: sha512-eUE8BWJkDr2tJb/yrk0yVnszlmNqFarVxUlqiZ9BAkct28Nq/5g2H0tvMDmPA7fAQW3STNj+omJPPRVT+4s5sQ==} cpu: [x64] os: [linux] libc: [musl] - '@pnpm/exe.linux-x64@12.6.0': - resolution: {integrity: sha512-qFWBneHJAJ73W4whtbaFOL1M/7DBC6ILHXuxc7ZPtEhfPuT1zeZiGrmKHoMAfJA+mcm6xhOFljqVTUS+00Jabw==} + '@pnpm/exe.linux-x64@12.8.1': + resolution: {integrity: sha512-8bDZ0lZlCdi2rvnFul7EYgcC7zKeWSe76y8JV2oXobaS8p9i9d6PSf6LgLtTM0fI7R9Oh4eLCbveXyNDMmvZ+g==} cpu: [x64] os: [linux] libc: [glibc] - '@pnpm/exe.win32-arm64@12.6.0': - resolution: {integrity: sha512-OhfefXEEykZlslSUhR8PPRe6MVPV3Oink/dVfIecE5velpc7j80cZYsHlaDrtRDcm3TPwQHkaRW1SJ1efX9oFg==} + '@pnpm/exe.win32-arm64@12.8.1': + resolution: {integrity: sha512-MsT0dlrRxnCRCHCaosNbhWpEiAFnFuMEu3KuDJDU41BXgTwiINxU8goloUSUDejWZUqKaUqNC/qUTihl9nFtqg==} cpu: [arm64] os: [win32] - '@pnpm/exe.win32-x64@12.6.0': - resolution: {integrity: sha512-L2tuyrD2+Imgxs3VK/ST/2L3xD6vDP0ktJQxM0TaGw7TbAQEMq+RMc8iK6Ew7Id579uzjJe8jSfJID2ZGsOHCA==} + '@pnpm/exe.win32-x64@12.8.1': + resolution: {integrity: sha512-SWtPe0PsbTTk//gJND10tMdOfCYjrkq5+qV49hzVhY7xz2iJ339Rc+xwASlcvbwTfrvH39YNqpKYibD+CRGLwA==} cpu: [x64] os: [win32] - pnpm@12.6.0: - resolution: {integrity: sha512-PvaPlRyxEawgS0paFvCy3fDaVqluBBPoHYVdnwtV75JnFHCQKOHNAMQFwsX7e56OxNxGd3yAXQNzwvL/AP0g7A==} + pnpm@12.8.1: + resolution: {integrity: sha512-9kupB1B/XOr+BsjTjmBS0BeURFgOwSed3Vv8EctIqoomRLZlmOB+dh2oSHKp/FfV+QK4f6SdAkGY1VhhKqu+RQ==} engines: {node: '>=18.*'} hasBin: true snapshots: - '@pnpm/exe.android-arm64@12.6.0': + '@pnpm/exe.android-arm64@12.8.1': optional: true - '@pnpm/exe.android-x64@12.6.0': + '@pnpm/exe.android-x64@12.8.1': optional: true - '@pnpm/exe.darwin-arm64@12.6.0': + '@pnpm/exe.darwin-arm64@12.8.1': optional: true - '@pnpm/exe.darwin-x64@12.6.0': + '@pnpm/exe.darwin-x64@12.8.1': optional: true - '@pnpm/exe.freebsd-x64@12.6.0': + '@pnpm/exe.freebsd-x64@12.8.1': optional: true - '@pnpm/exe.linux-arm64-musl@12.6.0': + '@pnpm/exe.linux-arm64-musl@12.8.1': optional: true - '@pnpm/exe.linux-arm64@12.6.0': + '@pnpm/exe.linux-arm64@12.8.1': optional: true - '@pnpm/exe.linux-ppc64@12.6.0': + '@pnpm/exe.linux-ppc64@12.8.1': optional: true - '@pnpm/exe.linux-riscv64@12.6.0': + '@pnpm/exe.linux-riscv64@12.8.1': optional: true - '@pnpm/exe.linux-s390x@12.6.0': + '@pnpm/exe.linux-s390x@12.8.1': optional: true - '@pnpm/exe.linux-x64-musl@12.6.0': + '@pnpm/exe.linux-x64-musl@12.8.1': optional: true - '@pnpm/exe.linux-x64@12.6.0': + '@pnpm/exe.linux-x64@12.8.1': optional: true - '@pnpm/exe.win32-arm64@12.6.0': + '@pnpm/exe.win32-arm64@12.8.1': optional: true - '@pnpm/exe.win32-x64@12.6.0': + '@pnpm/exe.win32-x64@12.8.1': optional: true - pnpm@12.6.0: + pnpm@12.8.1: optionalDependencies: - '@pnpm/exe.android-arm64': 12.6.0 - '@pnpm/exe.android-x64': 12.6.0 - '@pnpm/exe.darwin-arm64': 12.6.0 - '@pnpm/exe.darwin-x64': 12.6.0 - '@pnpm/exe.freebsd-x64': 12.6.0 - '@pnpm/exe.linux-arm64': 12.6.0 - '@pnpm/exe.linux-arm64-musl': 12.6.0 - '@pnpm/exe.linux-ppc64': 12.6.0 - '@pnpm/exe.linux-riscv64': 12.6.0 - '@pnpm/exe.linux-s390x': 12.6.0 - '@pnpm/exe.linux-x64': 12.6.0 - '@pnpm/exe.linux-x64-musl': 12.6.0 - '@pnpm/exe.win32-arm64': 12.6.0 - '@pnpm/exe.win32-x64': 12.6.0 + '@pnpm/exe.android-arm64': 12.8.1 + '@pnpm/exe.android-x64': 12.8.1 + '@pnpm/exe.darwin-arm64': 12.8.1 + '@pnpm/exe.darwin-x64': 12.8.1 + '@pnpm/exe.freebsd-x64': 12.8.1 + '@pnpm/exe.linux-arm64': 12.8.1 + '@pnpm/exe.linux-arm64-musl': 12.8.1 + '@pnpm/exe.linux-ppc64': 12.8.1 + '@pnpm/exe.linux-riscv64': 12.8.1 + '@pnpm/exe.linux-s390x': 12.8.1 + '@pnpm/exe.linux-x64': 12.8.1 + '@pnpm/exe.linux-x64-musl': 12.8.1 + '@pnpm/exe.win32-arm64': 12.8.1 + '@pnpm/exe.win32-x64': 12.8.1 --- lockfileVersion: '9.0' diff --git a/platformio.ini b/platformio.ini index 9c306a099..1448e2f51 100644 --- a/platformio.ini +++ b/platformio.ini @@ -50,6 +50,7 @@ build_flags = ; -D EMSESP_MQTT_STACKSIZE=5120 ; default -D EMSESP_UART_RUNNING_CORE=1 ; default any core ; -D EMSESP_UART_STACKSIZE=2560 ; default + ; -D EMSESP_GATEWAY_TX_HOLD ; hold Tx while a K30RF/KM200 gateway is syncing, see issue #3094 unbuild_flags = ${common.core_unbuild_flags} diff --git a/src/core/emsesp.cpp b/src/core/emsesp.cpp index e6fedefb1..4c79eb7db 100644 --- a/src/core/emsesp.cpp +++ b/src/core/emsesp.cpp @@ -49,6 +49,16 @@ uint16_t EMSESP::wait_validate_ = 0; bool EMSESP::wait_km_ = false; uint32_t EMSESP::last_fetch_ = 0; +#ifdef EMSESP_GATEWAY_TX_HOLD +uint32_t EMSESP::gateway_hold_until_ = 0; +uint32_t EMSESP::gateway_hold_start_ = 0; +uint32_t EMSESP::gateway_cooldown_until_ = 0; +uint32_t EMSESP::gateway_window_start_ = 0; +uint8_t EMSESP::gateway_window_count_ = 0; +uint8_t EMSESP::last_version_request_src_ = 0; +uint32_t EMSESP::last_version_request_time_ = 0; +#endif + uint32_t EMSESP::last_entity_change_ = 0; bool EMSESP::entity_compaction_pending_ = false; @@ -1130,9 +1140,26 @@ void EMSESP::process_version(const std::shared_ptr & telegram) { brand = EMSdevice::Brand::NO_BRAND; // unknown } +#ifdef EMSESP_GATEWAY_TX_HOLD + // skip the name request if we already know this device and its name + bool known = false; + for (const auto & emsdevice : emsdevices) { + if (emsdevice && emsdevice->is_device_id(device_id) && emsdevice->product_id() == product_id && !emsdevice->model().empty()) { + known = true; + break; + } + } +#endif + // add it - will be overwritten if device already exists (void)add_device(device_id, product_id, version, brand); +#ifdef EMSESP_GATEWAY_TX_HOLD + if (known) { + return; + } +#endif + // request the deviceName from telegram 0x01 send_read_request(EMSdevice::EMS_TYPE_NAME, device_id, 27); } @@ -1249,7 +1276,16 @@ bool EMSESP::process_telegram(const std::shared_ptr & telegram) LOG_NOTICE("%s", pretty_telegram(telegram).c_str()); } if (!wait_km_ && !found_device && (telegram->src != EMSbus::ems_bus_id()) && (telegram->message_length > 0)) { +#ifdef EMSESP_GATEWAY_TX_HOLD + // a new device often sends several broadcasts before its version reply is processed, only ask once + if (telegram->src != last_version_request_src_ || uuid::get_uptime() - last_version_request_time_ > 5000) { + last_version_request_src_ = telegram->src; + last_version_request_time_ = uuid::get_uptime(); + send_read_request(EMSdevice::EMS_TYPE_VERSION, telegram->src); + } +#else send_read_request(EMSdevice::EMS_TYPE_VERSION, telegram->src); +#endif } } } @@ -1511,6 +1547,13 @@ bool EMSESP::add_device(const uint8_t device_id, const uint8_t product_id, const // Print to LOG showing we've added a new device LOG_INFO("Detected EMS device: %s (0x%02X)", EMSdevice::device_type_2_device_name(device_type), device_id); +#ifdef EMSESP_GATEWAY_TX_HOLD + // a gateway appearing while we're running is most likely starting up and about to sync + if (device_id == EMSdevice::EMS_DEVICE_ID_GATEWAY1) { + gateway_tx_hold_start(); + } +#endif + // register the MQTT subscribe topic for this device // except for controller and gateway if ((device_type == DeviceType::CONTROLLER) || (device_type == DeviceType::GATEWAY)) { @@ -1656,6 +1699,11 @@ void EMSESP::incoming_telegram(uint8_t * data, const uint8_t length) { } #endif // check for poll to us, if so send top message from Tx queue immediately and quit +#ifdef EMSESP_GATEWAY_TX_HOLD + if (poll_id == EMSbus::ems_bus_id() && gateway_tx_hold()) { + return; + } +#endif if (poll_id == txservice_.get_send_id()) { txservice_.send(); } else { @@ -1670,6 +1718,10 @@ void EMSESP::incoming_telegram(uint8_t * data, const uint8_t length) { #endif Roomctrl::check(data[1], data, length); // check if there is a message for the roomcontroller +#ifdef EMSESP_GATEWAY_TX_HOLD + gateway_rx_check(data, length); +#endif + rxservice_.add(data, length); // add to RxQueue } } @@ -1677,6 +1729,11 @@ void EMSESP::incoming_telegram(uint8_t * data, const uint8_t length) { // fetch devices one by one void EMSESP::scheduled_fetch_values() { static uint8_t no = 0; +#ifdef EMSESP_GATEWAY_TX_HOLD + if (gateway_tx_hold()) { + return; + } +#endif if (no || (uuid::get_uptime() - last_fetch_ > EMS_FETCH_FREQUENCY)) { if (!no) { last_fetch_ = uuid::get_uptime(); @@ -1698,6 +1755,64 @@ void EMSESP::scheduled_fetch_values() { } } +#ifdef EMSESP_GATEWAY_TX_HOLD +// count read requests from the gateway to other devices, a high rate means it's doing its startup sync +void EMSESP::gateway_rx_check(const uint8_t * data, const uint8_t length) { + if (length < 4 || (data[0] & 0x7F) != EMSdevice::EMS_DEVICE_ID_GATEWAY1 || !(data[1] & 0x80)) { + return; + } + uint8_t dest = data[1] & 0x7F; + if (dest == 0 || dest == EMSbus::ems_bus_id()) { + return; + } + + uint32_t now = uuid::get_uptime(); + if (now - gateway_window_start_ > GATEWAY_BURST_WINDOW) { + gateway_window_start_ = now; + gateway_window_count_ = 0; + } + if (++gateway_window_count_ >= GATEWAY_BURST_THRESHOLD) { + gateway_window_start_ = now; + gateway_window_count_ = 0; + gateway_tx_hold_start(); + } +} + +void EMSESP::gateway_tx_hold_start() { + uint32_t now = uuid::get_uptime(); + if (gateway_cooldown_until_) { + if ((int32_t)(now - gateway_cooldown_until_) < 0) { + return; + } + gateway_cooldown_until_ = 0; + } + if (!gateway_hold_until_) { + gateway_hold_start_ = now; + LOG_INFO("Gateway 0x%02X is busy, holding Tx", EMSdevice::EMS_DEVICE_ID_GATEWAY1); + } + gateway_hold_until_ = (now + GATEWAY_HOLD_TIME) | 1; // 0 means no hold +} + +bool EMSESP::gateway_tx_hold() { + if (!gateway_hold_until_) { + return false; + } + uint32_t now = uuid::get_uptime(); + if (now - gateway_hold_start_ > GATEWAY_HOLD_MAX) { + gateway_hold_until_ = 0; + gateway_cooldown_until_ = (now + GATEWAY_HOLD_COOLDOWN) | 1; + LOG_WARNING("Gateway 0x%02X still busy after %lu s, resuming Tx", EMSdevice::EMS_DEVICE_ID_GATEWAY1, (unsigned long)(GATEWAY_HOLD_MAX / 1000)); + return false; + } + if ((int32_t)(now - gateway_hold_until_) >= 0) { + gateway_hold_until_ = 0; + LOG_INFO("Gateway 0x%02X is quiet, resuming Tx after %lu s", EMSdevice::EMS_DEVICE_ID_GATEWAY1, (unsigned long)((now - gateway_hold_start_) / 1000)); + return false; + } + return true; +} +#endif + // EMSESP main class EMSESP::EMSESP() #ifndef EMSESP_STANDALONE diff --git a/src/core/emsesp.h b/src/core/emsesp.h index 8d443bd03..4fc1db8da 100644 --- a/src/core/emsesp.h +++ b/src/core/emsesp.h @@ -291,6 +291,28 @@ class EMSESP { static constexpr uint32_t EMS_FETCH_FREQUENCY = 60000; // check every minute static constexpr uint8_t EMS_WAIT_KM_TIMEOUT = 60; // wait one minute +#ifdef EMSESP_GATEWAY_TX_HOLD + // hold our Tx while a gateway (K30RF/KM200 on 0x48) is doing its startup sync, see issue #3094 + // a startup sync is 55-250 read requests/min to other devices, normal operation is <10/min + static void gateway_rx_check(const uint8_t * data, const uint8_t length); + static bool gateway_tx_hold(); + static void gateway_tx_hold_start(); + + static constexpr uint32_t GATEWAY_BURST_WINDOW = 30000; // ms window for counting gateway read requests + static constexpr uint8_t GATEWAY_BURST_THRESHOLD = 15; // read requests within window to treat gateway as busy + static constexpr uint32_t GATEWAY_HOLD_TIME = 60000; // keep holding Tx this long after the last busy window + static constexpr uint32_t GATEWAY_HOLD_MAX = 600000; // never hold longer than 10 minutes in one go + static constexpr uint32_t GATEWAY_HOLD_COOLDOWN = 600000; // after hitting the max, don't hold again for 10 minutes + + static uint32_t gateway_hold_until_; + static uint32_t gateway_hold_start_; + static uint32_t gateway_cooldown_until_; + static uint32_t gateway_window_start_; + static uint8_t gateway_window_count_; + static uint8_t last_version_request_src_; + static uint32_t last_version_request_time_; +#endif + static constexpr uint32_t SYSTEM_STATUS_RESET_TIMEOUT = 300000; // return a non-normal system status to normal after this (in ms) - 5 minutes struct Device_record { diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 59888138f..d10e8dc70 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -1180,7 +1180,12 @@ void Thermostat::process_RC300Monitor(const std::shared_ptr & te has_update(hc->hpoperatingstate, EMS_VALUE_UINT8_NOTSET); } else { has_enumupdate(telegram, hc->hpoperatingstate, 20, 1); // 1:heating, 2:off, 3:cooling - has_update(hc->summermode, EMS_VALUE_UINT8_NOTSET); + // UI800 heatpumps report a valid summer bit, older RC300 heatpumps don't, #3257 + if (model() == EMSdevice::EMS_DEVICE_FLAG_UI800) { + has_update(hc->summermode, hc->statusbyte & 0x50 ? 1 : 0); + } else { + has_update(hc->summermode, EMS_VALUE_UINT8_NOTSET); + } } has_update(telegram, hc->targetflowtemp, 4); has_update(telegram, hc->curroominfl, 27); diff --git a/src/web/WebLogService.cpp b/src/web/WebLogService.cpp index d40d2f143..6116ee779 100644 --- a/src/web/WebLogService.cpp +++ b/src/web/WebLogService.cpp @@ -156,14 +156,15 @@ void WebLogService::loop() { // convert time to real offset char * WebLogService::messagetime(char * out, const uint64_t t, const size_t bufsize) { - time_t offset = time(nullptr) - uuid::get_uptime_sec(); - if (offset < 1500000000L) { + int64_t offset_ms = uuid::get_wall_offset_ms(); + if (offset_ms < 1500000000000LL) { strlcpy(out, uuid::log::format_timestamp_ms(t, 3).c_str(), bufsize); } else { - time_t t1 = offset + (time_t)(t / 1000); - char timestr[25]; + int64_t wall_ms = offset_ms + (int64_t)t; + time_t t1 = (time_t)(wall_ms / 1000); + char timestr[25]; strftime(timestr, 25, "%FT%T", localtime(&t1)); - snprintf(out, bufsize, "%s.%03d", timestr, (uint16_t)(t % 1000)); + snprintf(out, bufsize, "%s.%03d", timestr, (int)(wall_ms % 1000)); } return out; } -- 2.54.0 From 3666f21d4111b8f7bffc6a59559ce9748c1b95a2 Mon Sep 17 00:00:00 2001 From: Raphael Hehl <7577984+RaHehl@users.noreply.github.com> Date: Sat, 3 Oct 2026 00:16:50 +0200 Subject: [PATCH 031/148] fix: German names of heat pump sensors TC0, TC1, TC3 and TA4 The English names of TC0, TC1 and TA4 are correct, the German translations were not. Use the terms from the Bosch manuals. --- src/core/locale_translations.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/locale_translations.h b/src/core/locale_translations.h index 9912b7f98..f25b86f79 100644 --- a/src/core/locale_translations.h +++ b/src/core/locale_translations.h @@ -484,9 +484,9 @@ MAKE_TRANSLATION(expansionValveVr1, "expvalve", "expansion valve VR1", "Ausdehnu MAKE_TRANSLATION(hpMaxPower, "hpmaxpower", "compressor max power", "max. Kompressorleistung", "", "Max. Kompressoreffekt", "maksymalna wydajność sprężarki", "", "", "", "", "max výkon kompresora", "maximální výkon kompresoru") MAKE_TRANSLATION(pvMaxComp, "pvmaxcomp", "pv compressor max power", "PV max. Kompressorleistung", "", "PV Max. Kompressoreffekt", "maksymalna wydajność sprężarki", "", "", "", "", "pv max výkon kompresora", "maximální výkon PV kompresoru") MAKE_TRANSLATION(hpPower, "hppower", "compressor power output", "Kompressorleistung", "Compressorvermogen", "Kompressoreffekt", "moc wyjściowa sprężarki", "kompressoreffekt", "puissance de sortie compresseur", "ısı pompası güç çıkışı", "potenza uscita compressore", "výkon kompresora", "výstupní výkon kompresoru") -MAKE_TRANSLATION(hpTc0, "hptc0", "heat carrier return (TC0)", "Kältemittelrücklauf (TC0)", "Koudemiddel retour (TC0)", "Värmebärare Retur (TC0)", "temperatura nośnika ciepła na powrocie (TC0)", "kjølemiddel retur (TC0)", "retour caloporteur (TC0)", "sıcak su dönüşü (TC0)", "ritorno del refrigerante (TC0)", "návrat nosiča tepla (TC0)", "návrat teplonosné látky (TC0)") -MAKE_TRANSLATION(hpTc1, "hptc1", "heat carrier forward (TC1)", "Kältemittelvorlauf (TC1)", "Koudemiddel aanvoer (TC1)", "Värmebärare Framledning (TC1)", "temperatura nośnika ciepła pierwotna (TC1)", "kjølemiddel tur (TC1)", "avance caloporteur (TC1)", "sıcak su çıkışı (TC1)", "flusso di refrigerante (TC1)", "nosič tepla vpred (TC1)", "předání teplonosné látky (TC1)") -MAKE_TRANSLATION(hpTc3, "hptc3", "condenser temperature (TC3)", "Kondensatortemperatur (TC3)", "Condensortemperatuur (TC3)", "Kondensortemperatur (TC3)", "temperatura skraplacza/na wyjściu sprężarki (TC3)", "kondensortemperatur (TC3)", "température condensateur (TC3)", "kondenser sıcaklığı (TC3)", "temperatura condensatore (TC3)", "teplota kondenzátora (TC3)", "teplota kondenzátoru (TC3)") +MAKE_TRANSLATION(hpTc0, "hptc0", "heat carrier return (TC0)", "Wärmeträgerrücklauf (TC0)", "Koudemiddel retour (TC0)", "Värmebärare Retur (TC0)", "temperatura nośnika ciepła na powrocie (TC0)", "kjølemiddel retur (TC0)", "retour caloporteur (TC0)", "sıcak su dönüşü (TC0)", "ritorno del refrigerante (TC0)", "návrat nosiča tepla (TC0)", "návrat teplonosné látky (TC0)") +MAKE_TRANSLATION(hpTc1, "hptc1", "heat carrier forward (TC1)", "Wärmeträgervorlauf (TC1)", "Koudemiddel aanvoer (TC1)", "Värmebärare Framledning (TC1)", "temperatura nośnika ciepła pierwotna (TC1)", "kjølemiddel tur (TC1)", "avance caloporteur (TC1)", "sıcak su çıkışı (TC1)", "flusso di refrigerante (TC1)", "nosič tepla vpred (TC1)", "předání teplonosné látky (TC1)") +MAKE_TRANSLATION(hpTc3, "hptc3", "condenser temperature (TC3)", "Wärmeträgerausgang (TC3)", "Condensortemperatuur (TC3)", "Kondensortemperatur (TC3)", "temperatura skraplacza/na wyjściu sprężarki (TC3)", "kondensortemperatur (TC3)", "température condensateur (TC3)", "kondenser sıcaklığı (TC3)", "temperatura condensatore (TC3)", "teplota kondenzátora (TC3)", "teplota kondenzátoru (TC3)") MAKE_TRANSLATION(hpTr1, "hptr1", "compressor temperature (TR1)", "Kompressortemperatur (TR1)", "Compressor temperatuur (TR1)", "Kompressor temp (TR1)", "temperatura sprężarki (TR1)", "kompressor temperatur (TR1)", "température compresseur (TR1)", "ısı pompası sıcaklığı (TR1)", "temperatura compressore (TR1)", "teplota kompresora (TR1)", "teplota kompresoru (TR1)") MAKE_TRANSLATION(hpTr3, "hptr3", "refrigerant temperature liquid side (condenser output) (TR3)", "Kältemittel (flüssig) (TR3)", "Temperatuur koudemiddel vloeibare zijde (TR3)", "Köldmedium temperatur (kondensorutlopp) (TR3)", "temperatura skraplacza ogrzew. (TR3)", "kjølemiddeltemperatur på væskesiden (TR3)", "température réfrigérant côté liquide (sortie condensateur) (TR3)", "ısı pompası çıkışı (TR3)", "temperatura refrigerante lato liquido (uscita condensatore) (TR3)", "teplota chladiva na strane kvapaliny (výstup kondenzátora) (TR3)", "teplota chladiva na kapalné straně (výstup kondenzátoru) (TR3)") MAKE_TRANSLATION(hpTr4, "hptr4", "evaporator inlet temperature (TR4)", "Verdampfereingang (TR4)", "Verdamper ingangstemperatuur (TR4)", "Förångare inloppstemp (TR4)", "temperatura na wejściu parownika (TR4)", "innløpstemperatur for fordamperen (TR4)", "température entrée évaporateur (TR4)", "evaporatör giriş sıcaklığı (TR4)", "temperatura di ingresso dell'evaporatore (TR4)", "Vstupná teplota výparníka (TR4)", "teplota vstupu do evaporátoru (TR4)") @@ -496,7 +496,7 @@ MAKE_TRANSLATION(hpTr7, "hptr7", "refrigerant temperature gas side (condenser in MAKE_TRANSLATION(hpTl2, "hptl2", "air inlet temperature (TL2)", "Außenlufteintrittstemperatur (TL2)", "Temperatuur luchtinlaat (TL2)", "Luftintagstemperatur (TL2)", "temperatura wlotu powietrza (TL2)", "luftinntakstemperatur (TL2)", "température entrée air (TL2)", "hava giriş sıcaklığı (TL2)", "temperatura ingresso aria (TL2)", "teplota prívodu vzduchu (TL2)", "teplota vzduchu na vstupu (TL2)") MAKE_TRANSLATION(hpPl1, "hppl1", "low pressure side temperature (PL1)", "Niederdrucktemperatur (PL1)", "Temperatuur lage drukzijde (PL1)", "Temperatur Lågtryckssidan (PL1)", "temperatura po stronie niskiego ciśnienia (PL1)", "temperatur lavtrykksiden (PL1)", "température côté basse pression (PL1)", "düşük basınç tarafı sıcaklığı (PL1)", "temperatura lato bassa pressione (PL1)", "teplota na strane nízkeho tlaku (PL1)", "teplota na nízkotlaké straně (PL1)") MAKE_TRANSLATION(hpPh1, "hpph1", "high pressure side temperature (PH1)", "Hochdrucktemperatur (PH1)", "Temperatuur hoge drukzijde (PH1)", "Temperatur Högtryckssidan (PH1)", "temperatura po stronie wysokiego ciśnienia (PH1)", "Temperatur Høytrykksiden (PH1)", "température côté bhauteasse pression (PH1)", "yüksek basınç tarafı sıcaklığı (PH1)", "temperatura lato alta pressione (PH1)", "teplota na strane vysokého tlaku (PH1)", "teplota na vysokotlaké straně (PH1)") -MAKE_TRANSLATION(hpTa4, "hpta4", "drain pan temp (TA4)", "Kondensatorwanne (TA4)", "Temperatuur condensorafvoerbak (TA4)", " (TA4)", "temperatura ociekacza (TA4)", "kondenstråg temperatur (TA4)", " (TA4)", "tahliye sıcaklığı (TA4)", "temperatura condensatore (TA4)", "teplota vypúšťacej misky (TA4)", "teplota odvodňovací vany (TA4)") +MAKE_TRANSLATION(hpTa4, "hpta4", "drain pan temp (TA4)", "Auffangwanne (TA4)", "Temperatuur condensorafvoerbak (TA4)", " (TA4)", "temperatura ociekacza (TA4)", "kondenstråg temperatur (TA4)", " (TA4)", "tahliye sıcaklığı (TA4)", "temperatura condensatore (TA4)", "teplota vypúšťacej misky (TA4)", "teplota odvodňovací vany (TA4)") MAKE_TRANSLATION(hpTw1, "hptw1", "reservoir temp (TW1)", "DHW Reservoir (TW1)", "(TW1)", "Varmvattentank Temperatur (TW1)", "temperatura zbiornika (TW1)", "(TW1)", "(TW1)", "(TW1)", "(TW1)", "teplota zásobníka (TW1)", "teplota v nádrži (TW1)") MAKE_TRANSLATION(hpInput1, "hpin1", "input 1 state", "Status Eingang 1", "Status input 1", "Status Ingång 1", "stan wejścia 1", "status inggang 1", "état entrée 1", "giriş 1 durumu", "stato ingresso 1", "stav vstupu 1", "stav vstupu 1") MAKE_TRANSLATION(hpInput2, "hpin2", "input 2 state", "Status Eingang 2", "Status input 2", "Status Ingång 2", "stan wejścia 2", "status inggang 2", "état entrée 2", "giriş 2 durumu", "stato ingresso 2", "stav vstupu 2", "stav vstupu 2") -- 2.54.0 From 61eaee2ffa9d3de5a776003e49e3ae21fdcfaee8 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 4 Oct 2026 09:22:40 +0200 Subject: [PATCH 032/148] enable internal pull-up on the UART Rx --- CHANGELOG_LATEST.md | 1 + src/uart/emsuart_esp32.cpp | 3 +++ 2 files changed, 4 insertions(+) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 073e370c1..78089d484 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -42,6 +42,7 @@ This release is based on the latest Espressif/Arduino core version 3. It brings - HTTP client could write past a fixed 64 byte buffer when a URL had a hostname of 64 characters or more, could busy-spin for the whole read budget if the socket reported bytes it wouldn't return, and buffered responses without any size limit - the "Ethernet clock mode (GPIO16/17) conflicts with PSRAM" error was never logged because Ethernet had already been skipped by the time the check ran - heat limit entities (`maxheatcomp`, `maxheatheat`, `dhw.maxheat`) read as unknown on heat pumps with an auxiliary heater larger than 9 kW - `enum_maxHeat` was missing the 12 kW and 15 kW steps +- no EMS bus on custom boards whose interface relies on a pull-up on the Rx line. The newer ESP-IDF no longer enables the internal pull-up on the UART Rx pin, so it is now set explicitly as it was in 3.8 [#3258](https://github.com/emsesp/EMS-ESP32/discussions/3258) ## Changed diff --git a/src/uart/emsuart_esp32.cpp b/src/uart/emsuart_esp32.cpp index 74a9398cc..aac0f73f8 100644 --- a/src/uart/emsuart_esp32.cpp +++ b/src/uart/emsuart_esp32.cpp @@ -24,6 +24,7 @@ #include "freertos/task.h" #include "freertos/queue.h" #include "driver/uart.h" +#include "driver/gpio.h" #include "soc/uart_reg.h" #include "uart/emsuart_esp32.h" #include "emsesp.h" @@ -91,6 +92,7 @@ void EMSuart::start(const uint8_t tx_mode, const uint8_t rx_gpio, const uint8_t #endif uart_param_config(EMSUART_NUM, &uart_config); uart_set_pin(EMSUART_NUM, tx_gpio, rx_gpio, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE); + gpio_pullup_en((gpio_num_t)rx_gpio); // IDF 5 no longer enables the Rx pull-up, some custom interfaces rely on it uart_set_line_inverse(EMSUART_NUM, inverse_mask); uart_driver_install(EMSUART_NUM, UART_HW_FIFO_LEN(EMSUART_NUM) + 1, @@ -109,6 +111,7 @@ void EMSuart::start(const uint8_t tx_mode, const uint8_t rx_gpio, const uint8_t #endif } else { uart_set_pin(EMSUART_NUM, tx_gpio, rx_gpio, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE); + gpio_pullup_en((gpio_num_t)rx_gpio); vTaskResume(xHandle); } tx_mode_ = tx_mode; -- 2.54.0 From 3ea25eba4322e6b519af1e90a7fa116ad2e60126 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 4 Oct 2026 09:55:44 +0200 Subject: [PATCH 033/148] EMSESP_TX_PRE_DELAY --- interface/package.json | 6 +- interface/pnpm-lock.yaml | 146 +++++++++++++------------- lib/uuid-common/src/get_uptime_ms.cpp | 4 +- platformio.ini | 1 + src/uart/emsuart_esp32.cpp | 5 + 5 files changed, 84 insertions(+), 78 deletions(-) diff --git a/interface/package.json b/interface/package.json index 0a881fa5f..0426a9136 100644 --- a/interface/package.json +++ b/interface/package.json @@ -42,11 +42,11 @@ "@eslint/js": "^10.0.1", "@preact/preset-vite": "^2.10.6", "@trivago/prettier-plugin-sort-imports": "^6.0.2", - "@types/node": "^26.6.3", + "@types/node": "^26.6.4", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", "concurrently": "^10.0.5", - "eslint": "^10.11.0", + "eslint": "^10.12.0", "eslint-config-prettier": "^10.1.8", "etag": "^1.8.1", "mime-types": "^3.0.2", @@ -55,7 +55,7 @@ "terser": "^5.51.2", "typescript": "^6.0.3", "typescript-eslint": "^8.71.0", - "vite": "^8.3.1", + "vite": "^8.3.2", "vite-plugin-imagemin": "^0.6.1" }, "packageManager": "pnpm@12.8.1" diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index 140c0bf61..faaee8b4f 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -211,16 +211,16 @@ importers: devDependencies: '@eslint/js': specifier: ^10.0.1 - version: 10.0.1(eslint@10.11.0(supports-color@10.2.2)) + version: 10.0.1(eslint@10.12.0(supports-color@10.2.2)) '@preact/preset-vite': specifier: ^2.10.6 - version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2)) + version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.2(@types/node@26.6.4)(terser@5.51.2)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 version: 6.0.2(prettier@3.9.9)(supports-color@10.2.2) '@types/node': - specifier: ^26.6.3 - version: 26.6.3 + specifier: ^26.6.4 + version: 26.6.4 '@types/react': specifier: ^19.3.0 version: 19.3.0 @@ -231,11 +231,11 @@ importers: specifier: ^10.0.5 version: 10.0.5 eslint: - specifier: ^10.11.0 - version: 10.11.0(supports-color@10.2.2) + specifier: ^10.12.0 + version: 10.12.0(supports-color@10.2.2) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@10.11.0(supports-color@10.2.2)) + version: 10.1.8(eslint@10.12.0(supports-color@10.2.2)) etag: specifier: ^1.8.1 version: 1.8.1 @@ -256,13 +256,13 @@ importers: version: 6.0.3 typescript-eslint: specifier: ^8.71.0 - version: 8.71.0(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + version: 8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) vite: - specifier: ^8.3.1 - version: 8.3.1(@types/node@26.6.3)(terser@5.51.2) + specifier: ^8.3.2 + version: 8.3.2(@types/node@26.6.4)(terser@5.51.2) vite-plugin-imagemin: specifier: ^0.6.1 - version: 0.6.1(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2)) + version: 0.6.1(supports-color@10.2.2)(vite@8.3.2(@types/node@26.6.4)(terser@5.51.2)) packages: @@ -842,8 +842,8 @@ packages: '@types/minimatch@5.1.2': resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - '@types/node@26.6.3': - resolution: {integrity: sha512-dsqMQQoeTLqu9wynDD00q573mNzso3IdQOAfHRJqLCcmCFPoGo9A1bDpUcv/9tnKpErQWv9uKeGfl37EIS02Yg==} + '@types/node@26.6.4': + resolution: {integrity: sha512-ldVPDCzj7fsaGZrLB0NuHuTvJcsNasysBAqMolr/cgxrLd1xbqxIr3XJiPnHHJUCxj5sNF1vnRj9aWnrVh5Jcg==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -1004,8 +1004,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.11.26: - resolution: {integrity: sha512-GLQdD3y6UF8iVuMJl5fHgE4jdn/ua7n+toKfLgNlg3BqQtOZjpy68T8Tup8/wGWZCDlm7KMg7tPb4MPn7oN0TQ==} + baseline-browser-mapping@2.11.27: + resolution: {integrity: sha512-ElY12DaROGuan+lMmZ8Cvo/ZUbXPe7Enc/9VU/b1T3Kp4dwytRcNdR8DoSJN5SNJT/CuvcCA0DHDVmMOCePdRQ==} engines: {node: '>=6.0.0'} hasBin: true @@ -1338,8 +1338,8 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.443: - resolution: {integrity: sha512-TDJG36L9A3CWWwZ97HKaE+Iz1sW80pNp6sAU0owzCIV3Zc9eVyRqZK8Vz6NKuMIU8WjP0pIkoqCa0VRf/yFD0Q==} + electron-to-chromium@1.5.444: + resolution: {integrity: sha512-5ss/uJfoDYDHT0lfJzT6FbcskIzROIOPf0BbbFkGcvDzoJU7i//9GDrwwIHQVmIsrAGiF3ihpADBRIsrEFt1rQ==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -1524,8 +1524,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.11.0: - resolution: {integrity: sha512-P7a6UEEqb9G95MYAtqkmsTbVXIYyzIfl6NGOIJk162PaahFxFyeGcrlXYFSiagECg4sEm8IseJdZBKR3rx6MsQ==} + eslint@10.12.0: + resolution: {integrity: sha512-npHjrHb2o4ehH3mE+YuxABR+0gyb0aVWCIolgJDArwCiHEIsonBm3ZKjel5b0U5+a+MbEvIyRCGCzD3eKKK2NA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -1869,8 +1869,8 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - ignore@7.0.11: - resolution: {integrity: sha512-YChdK5txDjwGUvgR7oCJcLGkwi3LDh8Zx8tS7ndYciLEg/oOCL26VUBSUEtgS7EjiybcBqFxh5j0rAdDX7/bbg==} + ignore@7.0.12: + resolution: {integrity: sha512-/8UvqAPU9DGTI9k4mxtf49U37Isfwr8Uts96+SBHIkFxPJnHS0Ew4f00sM4Scd8V8EjM0jUNtVDdv1kPdt35lg==} engines: {node: '>= 4'} imagemin-gifsicle@7.0.0: @@ -3057,8 +3057,8 @@ packages: peerDependencies: vite: 5.x || 6.x || 7.x || 8.x - vite@8.3.1: - resolution: {integrity: sha512-/bvH9E9tmCXRGp2uXY3WbOldqpTwFkbha/8ANaEQ6VkxhH60KyqLwgZq6lG2y+4uT55x9+9eUHMpQ7uGnOCKjA==} + vite@8.3.2: + resolution: {integrity: sha512-SQr1x6W5vVSbROg7vsyXIaxK9b0G7zsT68acdWWRmnBUsgDieLCRG+Rep9WdZgcposvv/GSnr4GUUBqB3vXq6w==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -3406,9 +3406,9 @@ snapshots: '@esbuild/linux-loong64@0.14.54': optional: true - '@eslint-community/eslint-utils@4.10.1(eslint@10.11.0(supports-color@10.2.2))': + '@eslint-community/eslint-utils@4.10.1(eslint@10.12.0(supports-color@10.2.2))': dependencies: - eslint: 10.11.0(supports-color@10.2.2) + eslint: 10.12.0(supports-color@10.2.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} @@ -3429,9 +3429,9 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/js@10.0.1(eslint@10.11.0(supports-color@10.2.2))': + '@eslint/js@10.0.1(eslint@10.12.0(supports-color@10.2.2))': optionalDependencies: - eslint: 10.11.0(supports-color@10.2.2) + eslint: 10.12.0(supports-color@10.2.2) '@eslint/object-schema@3.0.5': {} @@ -3591,19 +3591,19 @@ snapshots: '@popperjs/core@2.11.8': {} - '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2))': + '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.2(@types/node@26.6.4)(terser@5.51.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@prefresh/vite': 2.4.12(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2)) + '@prefresh/vite': 2.4.12(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.2(@types/node@26.6.4)(terser@5.51.2)) '@rollup/pluginutils': 5.4.0 babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.7(supports-color@10.2.2)) debug: 4.4.3(supports-color@10.2.2) magic-string: 0.30.21 picocolors: 1.1.1 - vite: 8.3.1(@types/node@26.6.3)(terser@5.51.2) - vite-prerender-plugin: 0.5.14(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2)) + vite: 8.3.2(@types/node@26.6.4)(terser@5.51.2) + vite-prerender-plugin: 0.5.14(vite@8.3.2(@types/node@26.6.4)(terser@5.51.2)) zimmerframe: 1.1.5 transitivePeerDependencies: - preact @@ -3620,7 +3620,7 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.12(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2))': + '@prefresh/vite@2.4.12(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.2(@types/node@26.6.4)(terser@5.51.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@prefresh/babel-plugin': 0.5.4(@babel/core@7.29.7(supports-color@10.2.2)) @@ -3628,7 +3628,7 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 11.0.0 - vite: 8.3.1(@types/node@26.6.3)(terser@5.51.2) + vite: 8.3.2(@types/node@26.6.4)(terser@5.51.2) transitivePeerDependencies: - supports-color @@ -3724,7 +3724,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 26.6.3 + '@types/node': 26.6.4 '@types/imagemin-gifsicle@7.0.4': dependencies: @@ -3753,17 +3753,17 @@ snapshots: '@types/imagemin@7.0.1': dependencies: - '@types/node': 26.6.3 + '@types/node': 26.6.4 '@types/json-schema@7.0.15': {} '@types/keyv@3.1.4': dependencies: - '@types/node': 26.6.3 + '@types/node': 26.6.4 '@types/minimatch@5.1.2': {} - '@types/node@26.6.3': + '@types/node@26.6.4': dependencies: undici-types: 8.9.0 @@ -3785,36 +3785,36 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 26.6.3 + '@types/node': 26.6.4 '@types/svgo@2.6.4': dependencies: - '@types/node': 26.6.3 + '@types/node': 26.6.4 - '@typescript-eslint/eslint-plugin@8.71.0(@typescript-eslint/parser@8.71.0(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.71.0(@typescript-eslint/parser@8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.71.0(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/parser': 8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) '@typescript-eslint/scope-manager': 8.71.0 - '@typescript-eslint/type-utils': 8.71.0(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/utils': 8.71.0(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/type-utils': 8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/utils': 8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) '@typescript-eslint/visitor-keys': 8.71.0 - eslint: 10.11.0(supports-color@10.2.2) - ignore: 7.0.11 + eslint: 10.12.0(supports-color@10.2.2) + ignore: 7.0.12 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.71.0(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/parser@8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: '@typescript-eslint/scope-manager': 8.71.0 '@typescript-eslint/types': 8.71.0 '@typescript-eslint/typescript-estree': 8.71.0(supports-color@10.2.2)(typescript@6.0.3) '@typescript-eslint/visitor-keys': 8.71.0 debug: 4.4.3(supports-color@10.2.2) - eslint: 10.11.0(supports-color@10.2.2) + eslint: 10.12.0(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -3837,13 +3837,13 @@ snapshots: dependencies: typescript: 6.0.3 - '@typescript-eslint/type-utils@8.71.0(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: '@typescript-eslint/types': 8.71.0 '@typescript-eslint/typescript-estree': 8.71.0(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/utils': 8.71.0(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/utils': 8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) debug: 4.4.3(supports-color@10.2.2) - eslint: 10.11.0(supports-color@10.2.2) + eslint: 10.12.0(supports-color@10.2.2) ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: @@ -3866,13 +3866,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.71.0(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/utils@8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@eslint-community/eslint-utils': 4.10.1(eslint@10.11.0(supports-color@10.2.2)) + '@eslint-community/eslint-utils': 4.10.1(eslint@10.12.0(supports-color@10.2.2)) '@typescript-eslint/scope-manager': 8.71.0 '@typescript-eslint/types': 8.71.0 '@typescript-eslint/typescript-estree': 8.71.0(supports-color@10.2.2)(typescript@6.0.3) - eslint: 10.11.0(supports-color@10.2.2) + eslint: 10.12.0(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -3942,7 +3942,7 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.11.26: {} + baseline-browser-mapping@2.11.27: {} bin-build@3.0.0: dependencies: @@ -4003,9 +4003,9 @@ snapshots: browserslist@4.29.3: dependencies: - baseline-browser-mapping: 2.11.26 + baseline-browser-mapping: 2.11.27 caniuse-lite: 1.0.30001814 - electron-to-chromium: 1.5.443 + electron-to-chromium: 1.5.444 node-releases: 2.0.57 update-browserslist-db: 1.3.3(browserslist@4.29.3) @@ -4370,7 +4370,7 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.443: {} + electron-to-chromium@1.5.444: {} emoji-regex@10.6.0: {} @@ -4484,9 +4484,9 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@10.1.8(eslint@10.11.0(supports-color@10.2.2)): + eslint-config-prettier@10.1.8(eslint@10.12.0(supports-color@10.2.2)): dependencies: - eslint: 10.11.0(supports-color@10.2.2) + eslint: 10.12.0(supports-color@10.2.2) eslint-scope@9.1.2: dependencies: @@ -4499,9 +4499,9 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.11.0(supports-color@10.2.2): + eslint@10.12.0(supports-color@10.2.2): dependencies: - '@eslint-community/eslint-utils': 4.10.1(eslint@10.11.0(supports-color@10.2.2)) + '@eslint-community/eslint-utils': 4.10.1(eslint@10.12.0(supports-color@10.2.2)) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.23.5(supports-color@10.2.2) '@eslint/config-helpers': 0.7.0 @@ -4913,7 +4913,7 @@ snapshots: ignore@5.3.2: {} - ignore@7.0.11: {} + ignore@7.0.12: {} imagemin-gifsicle@7.0.0: dependencies: @@ -5931,13 +5931,13 @@ snapshots: dependencies: typescript: 6.0.3 - typescript-eslint@8.71.0(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3): + typescript-eslint@8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.71.0(@typescript-eslint/parser@8.71.0(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/parser': 8.71.0(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/eslint-plugin': 8.71.0(@typescript-eslint/parser@8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/parser': 8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) '@typescript-eslint/typescript-estree': 8.71.0(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/utils': 8.71.0(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - eslint: 10.11.0(supports-color@10.2.2) + '@typescript-eslint/utils': 8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + eslint: 10.12.0(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -5982,7 +5982,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-imagemin@0.6.1(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2)): + vite-plugin-imagemin@0.6.1(supports-color@10.2.2)(vite@8.3.2(@types/node@26.6.4)(terser@5.51.2)): dependencies: '@types/imagemin': 7.0.1 '@types/imagemin-gifsicle': 7.0.4 @@ -6007,11 +6007,11 @@ snapshots: imagemin-webp: 6.1.0 jpegtran-bin: 6.0.1 pathe: 0.2.0 - vite: 8.3.1(@types/node@26.6.3)(terser@5.51.2) + vite: 8.3.2(@types/node@26.6.4)(terser@5.51.2) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.14(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2)): + vite-prerender-plugin@0.5.14(vite@8.3.2(@types/node@26.6.4)(terser@5.51.2)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -6019,9 +6019,9 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0 - vite: 8.3.1(@types/node@26.6.3)(terser@5.51.2) + vite: 8.3.2(@types/node@26.6.4)(terser@5.51.2) - vite@8.3.1(@types/node@26.6.3)(terser@5.51.2): + vite@8.3.2(@types/node@26.6.4)(terser@5.51.2): dependencies: lightningcss: 1.33.0 picomatch: 4.0.7 @@ -6029,7 +6029,7 @@ snapshots: rolldown: 1.2.12 tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 26.6.3 + '@types/node': 26.6.4 fsevents: 2.3.3 terser: 5.51.2 diff --git a/lib/uuid-common/src/get_uptime_ms.cpp b/lib/uuid-common/src/get_uptime_ms.cpp index 1e6e268cf..6af3f1e03 100644 --- a/lib/uuid-common/src/get_uptime_ms.cpp +++ b/lib/uuid-common/src/get_uptime_ms.cpp @@ -43,11 +43,11 @@ uint32_t get_uptime() { return (uint32_t)now_millis; } -// both clocks are read live and in ms, whole-second values would make the offset jitter by 1s +// both clocks are read live and subtracted in us, rounding each to ms or s first makes the offset jitter int64_t get_wall_offset_ms() { struct timeval tv; gettimeofday(&tv, nullptr); - return (int64_t)tv.tv_sec * 1000 + tv.tv_usec / 1000 - esp_timer_get_time() / 1000; + return ((int64_t)tv.tv_sec * 1000000 + tv.tv_usec - esp_timer_get_time()) / 1000; } } // namespace uuid diff --git a/platformio.ini b/platformio.ini index 1448e2f51..9fa302349 100644 --- a/platformio.ini +++ b/platformio.ini @@ -51,6 +51,7 @@ build_flags = -D EMSESP_UART_RUNNING_CORE=1 ; default any core ; -D EMSESP_UART_STACKSIZE=2560 ; default ; -D EMSESP_GATEWAY_TX_HOLD ; hold Tx while a K30RF/KM200 gateway is syncing, see issue #3094 + ; -D EMSESP_TX_PRE_DELAY=1000 ; wait this many us before each Tx so we don't overlap the master's break, see issue #3094 unbuild_flags = ${common.core_unbuild_flags} diff --git a/src/uart/emsuart_esp32.cpp b/src/uart/emsuart_esp32.cpp index aac0f73f8..41de2166d 100644 --- a/src/uart/emsuart_esp32.cpp +++ b/src/uart/emsuart_esp32.cpp @@ -156,6 +156,11 @@ uint8_t EMSuart::transmit(const uint8_t * buf, const uint8_t len) { last_tx_src_ = len < 4 ? 0 : buf[0]; // update last tx source +#ifdef EMSESP_TX_PRE_DELAY + // the BRK event fires after one character time of low, while the master break may still be running + delayMicroseconds(EMSESP_TX_PRE_DELAY); +#endif + // TXMODE is hardware controlled mode if (tx_mode_ == EMS_TXMODE_HW) { uart_write_bytes_with_break(EMSUART_NUM, buf, len, 10); -- 2.54.0 From 79c2e5e8a121aafed2a982388613b5ff5d4228b2 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 4 Oct 2026 14:28:02 +0200 Subject: [PATCH 034/148] formatting type column --- interface/src/app/main/Devices.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/app/main/Devices.tsx b/interface/src/app/main/Devices.tsx index 9d53d0429..10939aa4e 100644 --- a/interface/src/app/main/Devices.tsx +++ b/interface/src/app/main/Devices.tsx @@ -174,7 +174,7 @@ const Devices = memo(() => { } `, Table: ` - --data-table-library_grid-template-columns: repeat(1, minmax(0, 1fr)) 130px; + --data-table-library_grid-template-columns: repeat(1, minmax(0, 1fr)) 170px; `, HeaderRow: ` .th { -- 2.54.0 From b51d153dc5cc4fa96351a8541f53e8e2b9c25b18 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 4 Oct 2026 14:28:12 +0200 Subject: [PATCH 035/148] show status in guest mode --- interface/src/app/status/Status.tsx | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/interface/src/app/status/Status.tsx b/interface/src/app/status/Status.tsx index 07324d7cb..7635bc431 100644 --- a/interface/src/app/status/Status.tsx +++ b/interface/src/app/status/Status.tsx @@ -1,5 +1,3 @@ -import { useContext } from 'react'; - import AccessTimeIcon from '@mui/icons-material/AccessTime'; import DeviceHubIcon from '@mui/icons-material/DeviceHub'; import DirectionsBusIcon from '@mui/icons-material/DirectionsBus'; @@ -24,7 +22,6 @@ import { useRequest } from 'alova/client'; import { busConnectionStatus } from 'app/main/types'; import { FormLoader, SectionContent, useLayoutTitle } from 'components'; import ListMenuItem from 'components/layout/ListMenuItem'; -import { AuthenticatedContext } from 'contexts/authentication'; import { useI18nContext } from 'i18n/i18n-react'; import { NTPSyncStatus, NetworkConnectionStatus, SystemStatusCodes } from 'types'; import { useInterval } from 'utils'; @@ -56,8 +53,6 @@ const SystemStatus = () => { useLayoutTitle(LL.STATUS_OF('')); - const { me } = useContext(AuthenticatedContext); - const { data, send: loadData, error } = useRequest(readSystemStatus); useInterval(() => { @@ -211,7 +206,6 @@ const SystemStatus = () => { { /> { /> { /> { /> { /> { /> Date: Sun, 4 Oct 2026 14:28:25 +0200 Subject: [PATCH 036/148] skip duplicate reads --- src/core/telegram.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/core/telegram.cpp b/src/core/telegram.cpp index d1dafeea6..3abdd41f1 100644 --- a/src/core/telegram.cpp +++ b/src/core/telegram.cpp @@ -558,6 +558,16 @@ void TxService::add(uint8_t operation, const uint8_t * data, const uint8_t lengt // send a Tx telegram to request data from an EMS device void TxService::read_request(const uint16_t type_id, const uint8_t dest, const uint8_t offset, const uint8_t length, const bool front) { +#ifdef EMSESP_GATEWAY_TX_HOLD + // while Tx is held the queue isn't drained, so periodic triggers (e.g. UBADevices) would stack up identical reads + for (const auto & queued : tx_telegrams_) { + const auto & t = queued.telegram_; + if (t->operation == Telegram::Operation::TX_READ && t->dest == dest && t->type_id == type_id && t->offset == offset) { + LOG_DEBUG("Tx read request to deviceID 0x%02X for typeID 0x%02X already queued", dest, type_id); + return; + } + } +#endif LOG_DEBUG("Tx read request to deviceID 0x%02X for typeID 0x%02X", dest, type_id); uint8_t message_data = 0xFF; -- 2.54.0 From 4b3f6015eedad7c1c63651d564b48cf20b92c367 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 4 Oct 2026 14:28:53 +0200 Subject: [PATCH 037/148] tests for gateway speeds --- src/core/emsesp.cpp | 12 +++++++++++- src/core/emsesp.h | 4 ++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/core/emsesp.cpp b/src/core/emsesp.cpp index 4c79eb7db..e460992f0 100644 --- a/src/core/emsesp.cpp +++ b/src/core/emsesp.cpp @@ -55,6 +55,8 @@ uint32_t EMSESP::gateway_hold_start_ = 0; uint32_t EMSESP::gateway_cooldown_until_ = 0; uint32_t EMSESP::gateway_window_start_ = 0; uint8_t EMSESP::gateway_window_count_ = 0; +uint32_t EMSESP::gateway_fast_start_ = 0; +uint8_t EMSESP::gateway_fast_count_ = 0; uint8_t EMSESP::last_version_request_src_ = 0; uint32_t EMSESP::last_version_request_time_ = 0; #endif @@ -1771,9 +1773,17 @@ void EMSESP::gateway_rx_check(const uint8_t * data, const uint8_t length) { gateway_window_start_ = now; gateway_window_count_ = 0; } - if (++gateway_window_count_ >= GATEWAY_BURST_THRESHOLD) { + if (now - gateway_fast_start_ > GATEWAY_FAST_WINDOW) { + gateway_fast_start_ = now; + gateway_fast_count_ = 0; + } + ++gateway_window_count_; + ++gateway_fast_count_; + if (gateway_window_count_ >= GATEWAY_BURST_THRESHOLD || gateway_fast_count_ >= GATEWAY_FAST_THRESHOLD) { gateway_window_start_ = now; gateway_window_count_ = 0; + gateway_fast_start_ = now; + gateway_fast_count_ = 0; gateway_tx_hold_start(); } } diff --git a/src/core/emsesp.h b/src/core/emsesp.h index 4fc1db8da..ac15d7fb5 100644 --- a/src/core/emsesp.h +++ b/src/core/emsesp.h @@ -300,6 +300,8 @@ class EMSESP { static constexpr uint32_t GATEWAY_BURST_WINDOW = 30000; // ms window for counting gateway read requests static constexpr uint8_t GATEWAY_BURST_THRESHOLD = 15; // read requests within window to treat gateway as busy + static constexpr uint32_t GATEWAY_FAST_WINDOW = 5000; // short window to catch the start of a burst quickly + static constexpr uint8_t GATEWAY_FAST_THRESHOLD = 8; // normal polling is ~1 read per 2s, a sync starts at >10/s static constexpr uint32_t GATEWAY_HOLD_TIME = 60000; // keep holding Tx this long after the last busy window static constexpr uint32_t GATEWAY_HOLD_MAX = 600000; // never hold longer than 10 minutes in one go static constexpr uint32_t GATEWAY_HOLD_COOLDOWN = 600000; // after hitting the max, don't hold again for 10 minutes @@ -309,6 +311,8 @@ class EMSESP { static uint32_t gateway_cooldown_until_; static uint32_t gateway_window_start_; static uint8_t gateway_window_count_; + static uint32_t gateway_fast_start_; + static uint8_t gateway_fast_count_; static uint8_t last_version_request_src_; static uint32_t last_version_request_time_; #endif -- 2.54.0 From 1375f87163bf7b8d8fe43465d4c18f781aeed893 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 4 Oct 2026 14:29:17 +0200 Subject: [PATCH 038/148] add precision to voltage in HA --- src/core/mqtt.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/core/mqtt.cpp b/src/core/mqtt.cpp index 6ea9eb732..c4dffdf39 100644 --- a/src/core/mqtt.cpp +++ b/src/core/mqtt.cpp @@ -1318,8 +1318,9 @@ void Mqtt::add_ha_classes(JsonObject doc, const uint8_t device_type, const uint8 break; case DeviceValueUOM::MV: case DeviceValueUOM::VOLTS: - doc[sc_ha] = sc_ha_measurement; - doc[dc_ha] = "voltage"; + doc[sc_ha] = sc_ha_measurement; + doc[dc_ha] = "voltage"; + doc["sug_dsp_prc"] = 2; // round to 2 decimal places break; case DeviceValueUOM::MBAR: doc[sc_ha] = sc_ha_measurement; -- 2.54.0 From f8e7dd92440df62493892356079f4bf566804e62 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 6 Oct 2026 21:42:51 +0200 Subject: [PATCH 039/148] Ack polls during gateway Tx hold (#3094) --- src/core/emsesp.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/emsesp.cpp b/src/core/emsesp.cpp index e460992f0..37c9328ae 100644 --- a/src/core/emsesp.cpp +++ b/src/core/emsesp.cpp @@ -1703,6 +1703,8 @@ void EMSESP::incoming_telegram(uint8_t * data, const uint8_t length) { // check for poll to us, if so send top message from Tx queue immediately and quit #ifdef EMSESP_GATEWAY_TX_HOLD if (poll_id == EMSbus::ems_bus_id() && gateway_tx_hold()) { + // still ack the poll, otherwise the master drops us from 0x07 and the gateway sees the device list change + txservice_.send_poll(); return; } #endif -- 2.54.0 From 6411b6ffbd143bc384afd1a293b6abeee08ff5de Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 6 Oct 2026 22:57:25 +0200 Subject: [PATCH 040/148] add recovery firmware with OTA updater and recovery web interface Co-authored-by: Cursor --- .github/workflows/dev_release.yml | 4 + .github/workflows/stable_release.yml | 4 + .github/workflows/test_release.yml | 4 + .gitignore | 2 + CHANGELOG_LATEST.md | 5 + docs/Recovery-Testing.md | 156 ++++ docs/dump_telegrams.csv | 8 +- interface/.prettierignore | 1 + interface/eslint.config.js | 1 + interface/package.json | 6 +- interface/pnpm-lock.yaml | 282 +++--- interface/progmem-generator.js | 16 +- interface/recovery.html | 13 + interface/src/app/settings/Version.tsx | 20 +- .../src/components/upload/SingleUpload.tsx | 13 +- interface/src/i18n/cs/index.ts | 5 +- interface/src/i18n/de/index.ts | 5 +- interface/src/i18n/en/index.ts | 5 +- interface/src/i18n/fr/index.ts | 5 +- interface/src/i18n/it/index.ts | 5 +- interface/src/i18n/nl/index.ts | 5 +- interface/src/i18n/no/index.ts | 5 +- interface/src/i18n/pl/index.ts | 5 +- interface/src/i18n/sk/index.ts | 5 +- interface/src/i18n/sv/index.ts | 5 +- interface/src/i18n/tr/index.ts | 5 +- interface/src/recovery/Dashboard.tsx | 380 ++++++++ interface/src/recovery/FirmwareUpload.tsx | 208 +++++ interface/src/recovery/RecoveryApp.tsx | 132 +++ interface/src/recovery/RestartMonitor.tsx | 149 ++++ interface/src/recovery/SignIn.tsx | 142 +++ interface/src/recovery/api.ts | 107 +++ interface/src/recovery/index.tsx | 10 + interface/src/recovery/types.ts | 54 ++ interface/src/types/system.ts | 1 + interface/vite.config.ts | 60 ++ lib/OtaUpdater/OtaUpdater.cpp | 236 +++++ lib/OtaUpdater/OtaUpdater.h | 76 ++ mock-api/package.json | 2 +- mock-api/pnpm-lock.yaml | 122 +-- mock-api/recoveryMock.js | 214 +++++ mock-api/restServer.ts | 10 + platformio.ini | 65 +- project-words.txt | 6 +- recovery/main.cpp | 840 ++++++++++++++++++ recovery/recovery_version.h | 1 + scripts/build_recovery_interface.py | 59 ++ scripts/rename_fw.py | 14 +- scripts/set_app_desc.py | 69 ++ scripts/update_all.sh | 13 +- scripts/upload_factory.py | 28 + src/ESP32React/UploadFileService.cpp | 175 ++-- src/ESP32React/UploadFileService.h | 14 +- src/core/emsesp.cpp | 2 + src/core/emsesp.h | 2 + src/core/main.cpp | 20 + src/core/system.cpp | 117 +++ src/core/system.h | 13 + src/web/WebStatusService.cpp | 3 + 59 files changed, 3595 insertions(+), 339 deletions(-) create mode 100644 docs/Recovery-Testing.md create mode 100644 interface/recovery.html create mode 100644 interface/src/recovery/Dashboard.tsx create mode 100644 interface/src/recovery/FirmwareUpload.tsx create mode 100644 interface/src/recovery/RecoveryApp.tsx create mode 100644 interface/src/recovery/RestartMonitor.tsx create mode 100644 interface/src/recovery/SignIn.tsx create mode 100644 interface/src/recovery/api.ts create mode 100644 interface/src/recovery/index.tsx create mode 100644 interface/src/recovery/types.ts create mode 100644 lib/OtaUpdater/OtaUpdater.cpp create mode 100644 lib/OtaUpdater/OtaUpdater.h create mode 100644 mock-api/recoveryMock.js create mode 100644 recovery/main.cpp create mode 100644 recovery/recovery_version.h create mode 100644 scripts/build_recovery_interface.py create mode 100644 scripts/set_app_desc.py create mode 100644 scripts/upload_factory.py diff --git a/.github/workflows/dev_release.yml b/.github/workflows/dev_release.yml index f518634e4..20e7b480d 100644 --- a/.github/workflows/dev_release.yml +++ b/.github/workflows/dev_release.yml @@ -71,6 +71,10 @@ jobs: run: | platformio run + - name: Build the recovery firmware for the 16MB boards + run: | + platformio run -e recovery_s_16M -e recovery_s_16M_P -e recovery_s3_16M_P + - name: Commit the generated files uses: stefanzweifel/git-auto-commit-action@v7 with: diff --git a/.github/workflows/stable_release.yml b/.github/workflows/stable_release.yml index f1f3b7dfe..c96af1acb 100644 --- a/.github/workflows/stable_release.yml +++ b/.github/workflows/stable_release.yml @@ -60,6 +60,10 @@ jobs: run: | platformio run + - name: Build the recovery firmware for the 16MB boards + run: | + platformio run -e recovery_s_16M -e recovery_s_16M_P -e recovery_s3_16M_P + - name: Create GitHub Release uses: emsesp/action-automatic-releases@v1.0.1 with: diff --git a/.github/workflows/test_release.yml b/.github/workflows/test_release.yml index ff961b26a..cc46c6a2c 100644 --- a/.github/workflows/test_release.yml +++ b/.github/workflows/test_release.yml @@ -61,6 +61,10 @@ jobs: run: | platformio run + - name: Build the recovery firmware for the 16MB boards + run: | + platformio run -e recovery_s_16M -e recovery_s_16M_P -e recovery_s3_16M_P + - name: Create GitHub Release id: 'automatic_releases' uses: emsesp/action-automatic-releases@v1.0.1 diff --git a/.gitignore b/.gitignore index 4039aeca4..28a1b7355 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,8 @@ analyse.html interface/vite.config.ts.timestamp* *.local src/ESP32React/WWWData.h +recovery/WWWData.h +/interface/dist-recovery # i18n generated files interface/src/i18n/i18n-react.tsx diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 78089d484..132ca0314 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -20,6 +20,11 @@ This release is based on the latest Espressif/Arduino core version 3. It brings - new Application Setting "Automatically check for firmware updates", off by default. When enabled EMS-ESP asks emsesp.org for the latest version once a day on its own, otherwise it only asks when the WebUI wants to show it, so an unattended system never contacts emsesp.org - Automatically check and convert older 3.8.x filesystem to the new 3.9.0 format - heatpump pool: `poolon` (switch, 0x48A), `hppoolon` (pool heating active, 0x488), MP100 `poolshuntset` (0x5C4) and `poolrequest` (0x5BA), shorter pool names +- EMS-ESP Recovery, a small firmware for the factory (`boot`) partition on 16MB boards. It starts a `-recovery` access point and connects to the network with the saved EMS-ESP settings (Ethernet if configured, otherwise WiFi, using the static IP if one is set), and has a WebUI to sign in with an existing admin user, upload a new firmware into either OTA partition, or start one of the installed firmwares. It only reads the EMS-ESP settings, never changes them. Released as `EMS-ESP-Recovery---16MB[+].bin`, and installed by uploading it in the EMS-ESP WebUI like a normal firmware, or flashed with `pio run -e recovery_s3_16M_P -t upload` +- firmware rollback: a newly installed firmware is only kept once it has run for 2 minutes. If it crashes or restarts before then, the device goes back to the previous firmware, or to the Recovery if there is none +- on 16MB boards with the Recovery installed, EMS-ESP switches to it after crashing 5 times in a row. The Recovery shows why it was started and which firmware failed to start +- the Version page shows the installed Recovery version on 16MB boards +- crash test builds to try out the rollback and recovery, see `[env:crashtest_s3_16M_P]` in `platformio.ini` ## Fixed diff --git a/docs/Recovery-Testing.md b/docs/Recovery-Testing.md new file mode 100644 index 000000000..2177451a5 --- /dev/null +++ b/docs/Recovery-Testing.md @@ -0,0 +1,156 @@ +# Testing the Recovery Firmware, Rollback and Crash-Loop Fallback + +This guide covers testing on hardware of: + +- the EMS-ESP Recovery firmware in the factory `boot` partition (16MB boards only); +- installing the recovery from the EMS-ESP WebUI; +- the bootloader rollback of a new firmware that fails to start; +- the fallback to the recovery after repeated crashes; +- Ethernet and static IP support in the recovery. + +It's written for an ESP32-S3 16MB board, since the crash test build is only defined for `s3_16M_P`. Ethernet testing needs an E32V2. Keep a USB serial cable connected with a serial monitor open throughout, as most of the checks are log lines. + +## 0. Preparation + +Build everything: + +```bash +pio run -e s3_16M_P -e crashtest_s3_16M_P -e recovery_s3_16M_P +pio run -e s_16M -e s_16M_P -e s_4M -e recovery_s_16M -e recovery_s_16M_P +``` + +The firmware files are written to `build/firmware/`: + +| File | What it is | +| --- | --- | +| `EMS-ESP--ESP32S3-16MB+.bin` | EMS-ESP | +| `EMS-ESP-CrashTest--ESP32S3-16MB+.bin` | crash test build | +| `EMS-ESP-Recovery--ESP32S3-16MB+.bin` | the recovery | + +Each has a matching `.md5` file. + +Then: + +1. Run the unit tests with `pio run -e native-test -t exec`. All tests should pass. +2. Optionally, check the recovery UI against mock data first: `cd interface && pnpm recovery`, then open . +3. Open the serial monitor with `pio device monitor -e s3_16M_P`. Recovery log lines start with `[recovery]`. + +The crash counter is kept in RTC memory. It survives crashes and software restarts but not a power cycle, so don't unplug the board during the crash tests. + +## 1. Baseline: EMS-ESP over serial, no recovery + +1. Flash with `pio run -e s3_16M_P -t upload`. This also writes the current bootloader, which has rollback enabled. Boards flashed with an older bootloader don't roll back until they've been flashed over serial once. +2. In the WebUI, open **Settings → Version**. Check that: + - the **Recovery** row shows "not installed"; + - the firmware partition list doesn't include `boot`. +3. Wait more than 2 minutes. "New firmware confirmed as working" should **not** appear in the log, because a serial flash isn't in the pending-verify state. + +## 2. Install the recovery from the EMS-ESP WebUI + +1. On **Settings → Version**, upload `EMS-ESP-Recovery-…bin`. Expect: + - a "recovery installed" toast; + - **no** restart; + - the Recovery row now shows the recovery version; + - the install logged. +2. Repeat, uploading the `.md5` first and then the `.bin`. The MD5 check should pass. +3. Negative tests: + - Upload the recovery built for another chip, e.g. the ESP32 file on an S3. It should be rejected, and nothing should be written. + - Start a recovery upload and close the browser tab halfway through. EMS-ESP should keep running and the Recovery row should show "not installed". Reinstall it properly afterwards. +4. Restart EMS-ESP normally. It should boot EMS-ESP again, not the recovery, because installing the recovery doesn't change the boot partition. + +## 3. Enter the recovery on request + +1. Enter the recovery in one of these ways: + - in the console (telnet or serial) as admin, run `restart boot`; + - long-press the button. +2. On the serial monitor, check that: + - `[recovery] EMS-ESP Recovery v…` is logged; + - LittleFS is mounted; + - the access point has started; + - WiFi connects. +3. Join the access point. Its name is the AP SSID plus `-recovery` (default `ems-esp-recovery`), and it uses the AP password (default `ems-esp-neo`). Open ; a captive portal page may open by itself. Alternatively, use the device's normal IP or `http://.local` from the LAN. +4. Sign in with an EMS-ESP admin account (default `admin`/`admin`). A non-admin user must be refused. +5. On the dashboard, check that: + - there's **no** red reason box, because the restart was requested; + - `Recovery (boot)` has the "running" chip; + - the installed firmware shows the correct version; + - the System section shows the chip, flash, MAC, access point, and WiFi with its IP. +6. Click **Restart**. It should come back into the recovery, still without a reason box, since the reason is only shown once. +7. Click **Start** on the EMS-ESP slot. EMS-ESP should boot, and the Version page should still show the recovery version. + +## 4. Upload firmware from the recovery + +1. Enter the recovery again with `restart boot`. +2. Check the "upload target" chip: + - if there's an empty slot, that slot is chosen; + - if both slots hold a firmware, the one with the older install date is chosen, so the newest firmware is kept. +3. Upload the `.md5`, then the EMS-ESP `.bin`. EMS-ESP should start from that slot. About 2 minutes after it boots, "New firmware confirmed as working" should appear in the log. +4. The recovery must refuse these uploads: + - a recovery `.bin`: a 409 with a message that it can't install itself; + - a settings `.json`: a 406; + - an EMS-ESP `.bin` for another chip: rejected as incompatible. +5. In **Write to**, pick the other slot and upload there. That should also work. + +## 5. Bootloader rollback (crash test mode 1) + +`platformio.ini` ships with `-D EMSESP_CRASH_TEST=1`. + +1. Boot a working EMS-ESP and let it run for at least 2 minutes so it's confirmed. +2. Upload `EMS-ESP-CrashTest-…bin` from the **WebUI**, not over serial. +3. On the serial monitor you should see: + - `Crash test, aborting`, a panic, and a restart; + - the bootloader rolling back to the previous slot, which then starts normally. +4. In the EMS-ESP log (serial, or **Status → System Log**) you should see: + - `Restarted after a crash (1 in a row)`; + - `Firmware in partition appX failed to start and was rolled back`. +5. Enter the recovery with `restart boot`. Check that: + - the red box says the firmware in appX failed to start; + - that slot has the "failed to start" chip; + - that slot is the upload target. +6. Click **Start** on the failed slot. The dialog should show a warning; cancel it. +7. Start the good slot. + +If step 3 ends in a crash loop instead of a rollback, the bootloader on the board doesn't have rollback enabled. Flash over serial as in section 1, step 1. + +## 6. Crash-loop fallback to the recovery (crash test mode 2) + +1. In `platformio.ini`, change `-D EMSESP_CRASH_TEST=1` to `=2`, then run `pio run -e crashtest_s3_16M_P`. +2. Upload the crash test build from the WebUI. It runs normally. +3. Wait for "New firmware confirmed as working", about 2 minutes after boot. +4. Restart it from the WebUI. It should crash 5 times in a row, logging the "N in a row" count each time. +5. After the 5th crash you should see `Crashed 5 times in a row, restarting into the boot partition`, and the recovery starts. +6. In the recovery: + - the red box should say "EMS-ESP crashed repeatedly and switched to the recovery"; + - after restarting the recovery once, the box should be gone. +7. Clean up: in **Write to**, pick the crash test slot **by hand** and upload a good EMS-ESP, or Start the good slot. + - Switching to the recovery wipes the per-slot rollback states, so the default upload target may be the slot with the good firmware. +8. Change the flag back to `=1`. + +Optional, without a recovery installed: + +1. Erase the boot partition with `esptool --chip esp32s3 erase-region 0x10000 0x480000`. Older esptool versions use `erase_region`. +2. Repeat steps 2 to 4. It should keep crashing past 5, and needs to be reflashed over serial. + +## 7. Network in the recovery + +| Test | Setup | Expected in the recovery | +| --- | --- | --- | +| WiFi with static IP | Enable a static IP in the EMS-ESP Network settings, then `restart boot` | Same IP as EMS-ESP, and the WiFi row ends with ", static IP" | +| Ethernet (E32V2) | Cable plugged in, `recovery_s_16M_P` installed, then `restart boot` | Log shows "Ethernet started" and "Ethernet connected, IP …". The Ethernet row shows "connected", and WiFi shows "not used, Ethernet is connected" | +| Ethernet with static IP | As above, with a static IP set | Ethernet uses the static IP and WiFi isn't started | +| No cable | Unplugged, then `restart boot` | Ethernet shows "no cable connected" and WiFi shows "waiting for Ethernet". After about 15 seconds the log shows "No Ethernet connection" and WiFi connects | +| Cable plugged in later | Plug in after WiFi has joined | Ethernet gets an IP as well, and WiFi stays connected | +| Access point | Any of the above | `ems-esp-recovery` is always reachable on 192.168.4.1 | + +## 8. Other checks + +- **Online update during the pending window:** after a WebUI upgrade, start an online update from the Version page within 2 minutes. It should install, not fail. +- **4MB boards:** flash `s_4M` and check that: + - there's no Recovery row; + - a normal WebUI upgrade still gets confirmed after 2 minutes. +- **Translations:** switch the WebUI language and check the Recovery row and toast. +- **CI:** run the dev release workflow manually (`workflow_dispatch`) and check that the `EMS-ESP-Recovery-*` files for all three 16MB boards are among the release assets. + +## Reset to a clean state + +`pio run -e s3_16M_P -t upload` restores EMS-ESP at any point. It leaves the recovery in `boot` and the settings untouched. diff --git a/docs/dump_telegrams.csv b/docs/dump_telegrams.csv index dc630de2a..8686d8ef6 100644 --- a/docs/dump_telegrams.csv +++ b/docs/dump_telegrams.csv @@ -29,7 +29,7 @@ telegram_type_id,name,is_fetched 0x3B,Energy, 0x3D,RC35Set, 0x3E,RC35Monitor, -0x3F,RC30Timer, +0x3F,RC35Timer, 0x40,RC30Temp, 0x41,RC30Monitor, 0x42,RC35Timer2, @@ -112,9 +112,9 @@ telegram_type_id,name,is_fetched 0x02A0,RC300Curves, 0x02A1,RC300Curves, 0x02A2,RC300Curves, -0x02A5,CRFMonitor, -0x02A6,RC300Monitor, -0x02A7,RC300Monitor, +0x02A5,RC300Monitor, +0x02A6,CRFMonitor, +0x02A7,CRFMonitor, 0x02A8,RC300Monitor, 0x02A9,RC300Monitor, 0x02AA,RC300Monitor, diff --git a/interface/.prettierignore b/interface/.prettierignore index 920369742..0bc827e2a 100644 --- a/interface/.prettierignore +++ b/interface/.prettierignore @@ -1,6 +1,7 @@ node_modules/ build/ dist/ +dist-recovery/ src/i18n/* .prettierrc diff --git a/interface/eslint.config.js b/interface/eslint.config.js index bacff3965..42b5c483f 100644 --- a/interface/eslint.config.js +++ b/interface/eslint.config.js @@ -18,6 +18,7 @@ export default defineConfig( { ignores: [ 'dist/*', + 'dist-recovery/*', '*.mjs', 'build/*', '*.js', diff --git a/interface/package.json b/interface/package.json index 0426a9136..ce0e5cd1d 100644 --- a/interface/package.json +++ b/interface/package.json @@ -18,6 +18,8 @@ "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", + "recovery": "vite dev --mode recovery", + "build-recovery": "vite build --mode recovery && node progmem-generator.js --src ./dist-recovery --out ../recovery/WWWData.h --index recovery.html", "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\"" @@ -54,9 +56,9 @@ "rollup-plugin-visualizer": "^7.1.1", "terser": "^5.51.2", "typescript": "^6.0.3", - "typescript-eslint": "^8.71.0", + "typescript-eslint": "^8.71.1", "vite": "^8.3.2", "vite-plugin-imagemin": "^0.6.1" }, - "packageManager": "pnpm@12.8.1" + "packageManager": "pnpm@12.9.1" } diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index faaee8b4f..eab249366 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -7,153 +7,153 @@ importers: configDependencies: {} packageManagerDependencies: pnpm: - specifier: 12.8.1 - version: 12.8.1 + specifier: 12.9.1 + version: 12.9.1 packages: - '@pnpm/exe.android-arm64@12.8.1': - resolution: {integrity: sha512-siDxcidfz5eM6L2tJfik+i2bbUEw8UC7MZ3Yl2HYdRmqbdhHGAOQACtOOu6QVW4Jul4/w5wVKm+wM8ACtgh1Pg==} + '@pnpm/exe.android-arm64@12.9.1': + resolution: {integrity: sha512-Hgm1XdqMTfBC8PdGLL+NjZWv4xyi7D6XNrN9fb24XGYlyTBmUtdCefKnCLmHujShRD8BEO1zqM30SNcKBDLysw==} cpu: [arm64] os: [android] - '@pnpm/exe.android-x64@12.8.1': - resolution: {integrity: sha512-0F/uqPRc3aN4vLHsa0f+6fTtmsigFQ9/yxEU43fionF//pNHEd5e97b3w/nKIgqYMCUQCJphmBRMA9Q8/wlo9Q==} + '@pnpm/exe.android-x64@12.9.1': + resolution: {integrity: sha512-WDGCe6jZRVZP3RC/q6hOkZylkPkIQIi1/GcrR/d/YzbihhAHXCczrk+UYnV5TgbsEnAYO7Cx+2rX3nfhHvy24w==} cpu: [x64] os: [android] - '@pnpm/exe.darwin-arm64@12.8.1': - resolution: {integrity: sha512-/rwavvMQJsl2RIxOHBnDF+4Gk+fhQFAY4M3PQZoKskJOEnaJcygG9p1xby6wcQcbS4d9dIubv09CQhufTgfmpw==} + '@pnpm/exe.darwin-arm64@12.9.1': + resolution: {integrity: sha512-+7iiEEBgYN9szPWUnAuN6eOVMTI6Hrki5bcuC9n9xl9tTnT53Tpxpo45Hml+W4IrAU0d+Tmd0sPnVIbX59PD6w==} cpu: [arm64] os: [darwin] - '@pnpm/exe.darwin-x64@12.8.1': - resolution: {integrity: sha512-htYt2gN7zqJKLhC99Ft6EUiO7myjZAZXfmGCTJUL1v+o7vE9hZdE1+fAkk4Oj1ZHNRti6b2woOxEkRkAusi8OQ==} + '@pnpm/exe.darwin-x64@12.9.1': + resolution: {integrity: sha512-SK7TxJiR12GbJZGffRFHItkc+Mx+99v6xMMJ9/X//8NwWV1wo17a2bwfGI8qZpl17YwsrmPEFOOqhzE1GIlrtQ==} cpu: [x64] os: [darwin] - '@pnpm/exe.freebsd-x64@12.8.1': - resolution: {integrity: sha512-PB5BULNgytxvExoOXUUeseS/DcpPENs+cg3iA6xHHeaLT4ctEGKSGXEbuj7USeqvo8JBpAx039hivnbzGqDwnA==} + '@pnpm/exe.freebsd-x64@12.9.1': + resolution: {integrity: sha512-4AjLk6uvTs2iO6wMit2hcxJ2M32xb7OV5SNFk+w6G8/NzcjcMB7ENEpyeXyLiP0kcnp8uaCGUct2NfrLCJ35eQ==} cpu: [x64] os: [freebsd] - '@pnpm/exe.linux-arm64-musl@12.8.1': - resolution: {integrity: sha512-kKeyC/ArjrgdciQRBrOL0j9HtOI4gDRgoyP+eJ1CQKyadpKlf/DhDDyspXe07R3B9KagTVLUF2nlt6Dr5quFIg==} + '@pnpm/exe.linux-arm64-musl@12.9.1': + resolution: {integrity: sha512-dZL2ES1ckDWM9v+EtxoOklZ0WNdtayooi9iLiDUubopudX3zXPNR2mlrxBRgjbDgECOndQen2SmyxL5eZiBuKw==} cpu: [arm64] os: [linux] libc: [musl] - '@pnpm/exe.linux-arm64@12.8.1': - resolution: {integrity: sha512-q4s9a9X2O3N9aeUFooW24orNrxvu20+jyVUFR5RanPCqOKKPBrgs2iywMkBBx1aXkkzdWT54/mfz8Be8sJlWEw==} + '@pnpm/exe.linux-arm64@12.9.1': + resolution: {integrity: sha512-cx+uF6xqwEtm7B8NV+1ve0xBg9gcuzQZ5R+0WgOWvKG/h978UljS6BgWs1ipIGuGgUdeVhm3PKmBltXIcczLXA==} cpu: [arm64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-ppc64@12.8.1': - resolution: {integrity: sha512-F7XSjKJthwCh/L6abZiMpAfo2Cm61SZIT3e4dfgiIjESndlWaXCnfLKngSgZ/SEMsdmHT6dud3+kWIB3tw0/xQ==} + '@pnpm/exe.linux-ppc64@12.9.1': + resolution: {integrity: sha512-MpjPsy4XR17zAtLziQZfsN+wveWa/bUJggZtwfo3+SuyRmXnSvVkFD4+v8/3RTWyYaM6mwLUTjZDJ+g3urL+ew==} cpu: [ppc64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-riscv64@12.8.1': - resolution: {integrity: sha512-z1ecpIK/ZY08Unk69KWWE9867oaKUytGUjrHnBoGFAAhsK+q+0cfvBH+f5fWobJ7FX97leMlLO+gkJolddM45Q==} + '@pnpm/exe.linux-riscv64@12.9.1': + resolution: {integrity: sha512-Oo67TKqqH+Bno+L6X7Xyorwp1QG82zKIkL0vbo1x2kcPTDiyPbdM+d6lIs4+hzeB1KHT5FDoGzZj2dad7Ft+eg==} cpu: [riscv64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-s390x@12.8.1': - resolution: {integrity: sha512-KU6tnrBfu4uKXTq6N5qJwSm8FSrs9Wc8b5AUEsHK9bRXwNdsZ1/lRxG1++X29SKRW9OSNuDSjxASv5mAvGo1gA==} + '@pnpm/exe.linux-s390x@12.9.1': + resolution: {integrity: sha512-QAD5FRCdW36HfD58BV7DoDm6z8yv+GgSqcUV1+ERwYjpVQuG6ZTpf5o0x3KDas8eTLIW7MLYVdDdlAurWeArEg==} cpu: [s390x] os: [linux] libc: [glibc] - '@pnpm/exe.linux-x64-musl@12.8.1': - resolution: {integrity: sha512-eUE8BWJkDr2tJb/yrk0yVnszlmNqFarVxUlqiZ9BAkct28Nq/5g2H0tvMDmPA7fAQW3STNj+omJPPRVT+4s5sQ==} + '@pnpm/exe.linux-x64-musl@12.9.1': + resolution: {integrity: sha512-mQDhBsGqcTkrLQM4q5igmRFcr6EAl4UM/FGawY+0CWGcqPpUmYUvDy9LHy80xxkHIWVJ886gvvso2XOjfav1Jw==} cpu: [x64] os: [linux] libc: [musl] - '@pnpm/exe.linux-x64@12.8.1': - resolution: {integrity: sha512-8bDZ0lZlCdi2rvnFul7EYgcC7zKeWSe76y8JV2oXobaS8p9i9d6PSf6LgLtTM0fI7R9Oh4eLCbveXyNDMmvZ+g==} + '@pnpm/exe.linux-x64@12.9.1': + resolution: {integrity: sha512-+M5N74hM4fc87AAckxx/UIW+dUnWf2eko+HchJs/NZUxehLhekNyMI/GNaNXlvd+kWR+97XXBD51XRkkNiUtrA==} cpu: [x64] os: [linux] libc: [glibc] - '@pnpm/exe.win32-arm64@12.8.1': - resolution: {integrity: sha512-MsT0dlrRxnCRCHCaosNbhWpEiAFnFuMEu3KuDJDU41BXgTwiINxU8goloUSUDejWZUqKaUqNC/qUTihl9nFtqg==} + '@pnpm/exe.win32-arm64@12.9.1': + resolution: {integrity: sha512-mI28C2wxobrDi6x1OYhBRyG10hnDq/4sEIyy5RzoX6LB4kLuv6K/d25HOpMwlW20cuM4M72k9NZpOdcmUxMbEA==} cpu: [arm64] os: [win32] - '@pnpm/exe.win32-x64@12.8.1': - resolution: {integrity: sha512-SWtPe0PsbTTk//gJND10tMdOfCYjrkq5+qV49hzVhY7xz2iJ339Rc+xwASlcvbwTfrvH39YNqpKYibD+CRGLwA==} + '@pnpm/exe.win32-x64@12.9.1': + resolution: {integrity: sha512-SWoDMT0oD7NrDSIoPpkKD09D9fAQKNjwFZ3lezlCUhAfXxMv70zsfrNT2/P+GoCK2kefXF9OysUZkH1l5vvvfA==} cpu: [x64] os: [win32] - pnpm@12.8.1: - resolution: {integrity: sha512-9kupB1B/XOr+BsjTjmBS0BeURFgOwSed3Vv8EctIqoomRLZlmOB+dh2oSHKp/FfV+QK4f6SdAkGY1VhhKqu+RQ==} + pnpm@12.9.1: + resolution: {integrity: sha512-BrBV//XNINwSeB3hc87TMQzglRvy7GICEaFgRdVETVyTpmMhB2TvKaZTphBFm6A2jw50+E2AxUcjz5Wq57wNbQ==} engines: {node: '>=18.*'} hasBin: true snapshots: - '@pnpm/exe.android-arm64@12.8.1': + '@pnpm/exe.android-arm64@12.9.1': optional: true - '@pnpm/exe.android-x64@12.8.1': + '@pnpm/exe.android-x64@12.9.1': optional: true - '@pnpm/exe.darwin-arm64@12.8.1': + '@pnpm/exe.darwin-arm64@12.9.1': optional: true - '@pnpm/exe.darwin-x64@12.8.1': + '@pnpm/exe.darwin-x64@12.9.1': optional: true - '@pnpm/exe.freebsd-x64@12.8.1': + '@pnpm/exe.freebsd-x64@12.9.1': optional: true - '@pnpm/exe.linux-arm64-musl@12.8.1': + '@pnpm/exe.linux-arm64-musl@12.9.1': optional: true - '@pnpm/exe.linux-arm64@12.8.1': + '@pnpm/exe.linux-arm64@12.9.1': optional: true - '@pnpm/exe.linux-ppc64@12.8.1': + '@pnpm/exe.linux-ppc64@12.9.1': optional: true - '@pnpm/exe.linux-riscv64@12.8.1': + '@pnpm/exe.linux-riscv64@12.9.1': optional: true - '@pnpm/exe.linux-s390x@12.8.1': + '@pnpm/exe.linux-s390x@12.9.1': optional: true - '@pnpm/exe.linux-x64-musl@12.8.1': + '@pnpm/exe.linux-x64-musl@12.9.1': optional: true - '@pnpm/exe.linux-x64@12.8.1': + '@pnpm/exe.linux-x64@12.9.1': optional: true - '@pnpm/exe.win32-arm64@12.8.1': + '@pnpm/exe.win32-arm64@12.9.1': optional: true - '@pnpm/exe.win32-x64@12.8.1': + '@pnpm/exe.win32-x64@12.9.1': optional: true - pnpm@12.8.1: + pnpm@12.9.1: optionalDependencies: - '@pnpm/exe.android-arm64': 12.8.1 - '@pnpm/exe.android-x64': 12.8.1 - '@pnpm/exe.darwin-arm64': 12.8.1 - '@pnpm/exe.darwin-x64': 12.8.1 - '@pnpm/exe.freebsd-x64': 12.8.1 - '@pnpm/exe.linux-arm64': 12.8.1 - '@pnpm/exe.linux-arm64-musl': 12.8.1 - '@pnpm/exe.linux-ppc64': 12.8.1 - '@pnpm/exe.linux-riscv64': 12.8.1 - '@pnpm/exe.linux-s390x': 12.8.1 - '@pnpm/exe.linux-x64': 12.8.1 - '@pnpm/exe.linux-x64-musl': 12.8.1 - '@pnpm/exe.win32-arm64': 12.8.1 - '@pnpm/exe.win32-x64': 12.8.1 + '@pnpm/exe.android-arm64': 12.9.1 + '@pnpm/exe.android-x64': 12.9.1 + '@pnpm/exe.darwin-arm64': 12.9.1 + '@pnpm/exe.darwin-x64': 12.9.1 + '@pnpm/exe.freebsd-x64': 12.9.1 + '@pnpm/exe.linux-arm64': 12.9.1 + '@pnpm/exe.linux-arm64-musl': 12.9.1 + '@pnpm/exe.linux-ppc64': 12.9.1 + '@pnpm/exe.linux-riscv64': 12.9.1 + '@pnpm/exe.linux-s390x': 12.9.1 + '@pnpm/exe.linux-x64': 12.9.1 + '@pnpm/exe.linux-x64-musl': 12.9.1 + '@pnpm/exe.win32-arm64': 12.9.1 + '@pnpm/exe.win32-x64': 12.9.1 --- lockfileVersion: '9.0' @@ -255,8 +255,8 @@ importers: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.71.0 - version: 8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + specifier: ^8.71.1 + version: 8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) vite: specifier: ^8.3.2 version: 8.3.2(@types/node@26.6.4)(terser@5.51.2) @@ -870,63 +870,63 @@ packages: '@types/svgo@2.6.4': resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==} - '@typescript-eslint/eslint-plugin@8.71.0': - resolution: {integrity: sha512-pqcS9c1HxZTHt7End4nXqd0s5lJrrFzrgCkKFJrsbUnaL6M3+6oBFZaslg6Gjsl3argl2DDRFROnXARaZ2e4Nw==} + '@typescript-eslint/eslint-plugin@8.71.1': + resolution: {integrity: sha512-nNlBf6HuotqMgZvSkWD5hNdemiBIxQ2NmrlgfcUIeZRs+BbakjscCQRq/Hb74EFVnFiSWWdL12JruqwBy3ERDw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.71.0 + '@typescript-eslint/parser': ^8.71.1 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.71.0': - resolution: {integrity: sha512-CG4nPk1f2zc8yw4pALqHsFYH2hdo+h1T9daSp21+Hnxi9LOE3GT9hAfTKJCBXVNM2GmYs1eMEP615wPoeOgk3A==} + '@typescript-eslint/parser@8.71.1': + resolution: {integrity: sha512-oM/5sAqz/l1v/zYK1qTOPrn2+JIrBGC1V6uNYucRO5gh6eT9vWJ/RhPbGE59byvZEUQ4VP6XkLBaS5Jti5jpvw==} 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.71.0': - resolution: {integrity: sha512-aABjw5rjBacYONVPaPiWOCjJu0vEF4a25iQuodlmQYL1trtLZ0X/y+2Vzl3BKI1odM4LnwLE1oUDXYp1wzx1TQ==} + '@typescript-eslint/project-service@8.71.1': + resolution: {integrity: sha512-Oijc9RUsohHjncg6iGi7gCtjnEjYt9FWv9u6ygK8uKcHK5eLjLAkqERQ9BaytbpceOFdk6kifPCS/zAZE+A99g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.71.0': - resolution: {integrity: sha512-gWF0BhUcnjZxSpLE8ngS/59n2SB0J3YqRxvX1+2aoRJk9hNtHSLOV+TcarFiOr5ipXm3yc1QrI4c9YZc8zyCxw==} + '@typescript-eslint/scope-manager@8.71.1': + resolution: {integrity: sha512-1YUDZXdTnXLlob03SFHBipdyMBsDVm7zoSz0ytTJ39dk5J1TgsTK03VlR/dLXG/RLLUrPcYbD4rp23BmHxHP0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.71.0': - resolution: {integrity: sha512-Z1UlWHADEK2Mlb9NpWfDeSjqoZ5EyrOv4R3eQpbkzqn/EwaIdOpXXupEA1+0ZIOSJSZZDBHG0BrQyN8zUG6Pwg==} + '@typescript-eslint/tsconfig-utils@8.71.1': + resolution: {integrity: sha512-oTvkml5SxXhgg+WWKhod5qWQICDXtOB+/Hi9VdPKFAANJ2b7YOgMffgvzXuqog7R6A/JtrzRf128dsxummyWhg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.71.0': - resolution: {integrity: sha512-i8uO1qbdxeKgRnS5sCRt6On3/nfo2d2DwQe3Yvjx543zLy7r8ySqRuPPiIIXAhS03U0v5NfAFx+rUgxFzKKwNw==} + '@typescript-eslint/type-utils@8.71.1': + resolution: {integrity: sha512-kH3t3jZCYv2PZSBEWPKTariLrCaoF1CLoPitYFBJOhAGEwWnSRAtGEifrfrpBa4K9JlwWNZotgA5w3/wLSk/FQ==} 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.71.0': - resolution: {integrity: sha512-cJ4OoxPGWvFnBTnSZyaU+qJzGTqPTGJY+gDchj6cRyLRdmIdt4rcsE4twj+zPfrNiWuVi38wijHzShL++Z9atQ==} + '@typescript-eslint/types@8.71.1': + resolution: {integrity: sha512-ybYnPTUwg3VQQOFEiBPLs8Jxl1ry2vXdn1kVKguomBbvxpetdu3MKTNDqFNUrlG8ylP9MpZosmXMFYlGQHk1oQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.71.0': - resolution: {integrity: sha512-PEEF4G5sLLWAS5BpPrUvms4ySZkiBQQZM4z+3ReI46axK5Vqr/vXBQatJQIZZOYdGyPUAKTtsrWzpqKuU+3DEw==} + '@typescript-eslint/typescript-estree@8.71.1': + resolution: {integrity: sha512-pSKSEK1JJpHs6KiKVtABCE4iJK5d7FLFzDXQNBQ2oRY7LEd3UwOt3TZemTgu9syTIf56dJWlTn/pdmrO9oKUXQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.71.0': - resolution: {integrity: sha512-pKR/tEMVrXZG23UFKUn5BQf3zfmfk7KQceI2cGzywZ5nxM5Eu3hEJU1utjWzydtzBbcJAQhHN8iPCxobHpPcZQ==} + '@typescript-eslint/utils@8.71.1': + resolution: {integrity: sha512-CBjT6gfAz3DW2j9Q4moFnqt208Aq+506sVGXfpRcyAeqn0EpayL0mjdWoCO2t3RC7GewNrFxdeehuEaPg6DMzQ==} 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.71.0': - resolution: {integrity: sha512-8eQ9R218XORK+KLosnf4bu/QsUXvUyVwTbArg7/0NMB1Pu87OJKvj4nhFblkYE8gQV73mW1dx1ptlPCkwRGa7A==} + '@typescript-eslint/visitor-keys@8.71.1': + resolution: {integrity: sha512-0GxiUGqMU0qXJt58cBsiG3DP8lUmBaFo2vChtUX+CT7PnR3v/VGLLrzVP4K9r1lNiZXjHYefMBbPunplr09v6w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} acorn-jsx@5.3.2: @@ -934,8 +934,8 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.18.0: - resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==} + acorn@8.19.0: + resolution: {integrity: sha512-oJlA3XiRm7Cyk6qFD2Jn8ak9B7jSy0qy00ADO3+8dpT0LSjFihQYv4C02LFCSYJV3Q37xYwwRy5m+IpIiUzqWw==} engines: {node: '>=0.4.0'} hasBin: true @@ -2304,8 +2304,8 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - nanoid@3.3.19: - resolution: {integrity: sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug==} + nanoid@3.3.20: + resolution: {integrity: sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -2523,8 +2523,8 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} - postcss@8.5.28: - resolution: {integrity: sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==} + postcss@8.5.29: + resolution: {integrity: sha512-49cGhUbXj8Qenv0iTMxA1cFBzxXoctpC9Ujd77t1WcbJIr6nF/eI7g/8MgxrYldFRuAXvja7xQRwavoW7kgrxQ==} engines: {node: ^10 || ^12 || >=14} powershell-utils@0.2.1: @@ -2993,8 +2993,8 @@ packages: peerDependencies: typescript: '>=3.5.1' - typescript-eslint@8.71.0: - resolution: {integrity: sha512-fBdHYiqQ14RW6mOMXD14Svn82ZsCYAoQSzGRzyEjR59S5A2Krh/l7fGTOQ7iCr8gGy/mHVXtEF7s5fgjEdV0Pw==} + typescript-eslint@8.71.1: + resolution: {integrity: sha512-oiNVPC3/NbV1FpaHU07l8O6ynqG9v4PAiW2WvTrAmZdR0f2HI/gE668ElMLCK7Xbsu5k2fK5C4fXNiq05j7/nQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -3791,14 +3791,14 @@ snapshots: dependencies: '@types/node': 26.6.4 - '@typescript-eslint/eslint-plugin@8.71.0(@typescript-eslint/parser@8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.71.1(@typescript-eslint/parser@8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.71.0 - '@typescript-eslint/type-utils': 8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/utils': 8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.71.0 + '@typescript-eslint/parser': 8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.71.1 + '@typescript-eslint/type-utils': 8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/utils': 8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.71.1 eslint: 10.12.0(supports-color@10.2.2) ignore: 7.0.12 natural-compare: 1.4.0 @@ -3807,41 +3807,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/parser@8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/scope-manager': 8.71.0 - '@typescript-eslint/types': 8.71.0 - '@typescript-eslint/typescript-estree': 8.71.0(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.71.0 + '@typescript-eslint/scope-manager': 8.71.1 + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/typescript-estree': 8.71.1(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.71.1 debug: 4.4.3(supports-color@10.2.2) eslint: 10.12.0(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.71.0(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/project-service@8.71.1(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.71.0(typescript@6.0.3) - '@typescript-eslint/types': 8.71.0 + '@typescript-eslint/tsconfig-utils': 8.71.1(typescript@6.0.3) + '@typescript-eslint/types': 8.71.1 debug: 4.4.3(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.71.0': + '@typescript-eslint/scope-manager@8.71.1': dependencies: - '@typescript-eslint/types': 8.71.0 - '@typescript-eslint/visitor-keys': 8.71.0 + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/visitor-keys': 8.71.1 - '@typescript-eslint/tsconfig-utils@8.71.0(typescript@6.0.3)': + '@typescript-eslint/tsconfig-utils@8.71.1(typescript@6.0.3)': dependencies: typescript: 6.0.3 - '@typescript-eslint/type-utils@8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/types': 8.71.0 - '@typescript-eslint/typescript-estree': 8.71.0(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/utils': 8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/typescript-estree': 8.71.1(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/utils': 8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) debug: 4.4.3(supports-color@10.2.2) eslint: 10.12.0(supports-color@10.2.2) ts-api-utils: 2.5.0(typescript@6.0.3) @@ -3849,14 +3849,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.71.0': {} + '@typescript-eslint/types@8.71.1': {} - '@typescript-eslint/typescript-estree@8.71.0(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/typescript-estree@8.71.1(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/project-service': 8.71.0(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.71.0(typescript@6.0.3) - '@typescript-eslint/types': 8.71.0 - '@typescript-eslint/visitor-keys': 8.71.0 + '@typescript-eslint/project-service': 8.71.1(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.71.1(typescript@6.0.3) + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/visitor-keys': 8.71.1 debug: 4.4.3(supports-color@10.2.2) minimatch: 10.2.6 semver: 7.8.5 @@ -3866,27 +3866,27 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/utils@8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: '@eslint-community/eslint-utils': 4.10.1(eslint@10.12.0(supports-color@10.2.2)) - '@typescript-eslint/scope-manager': 8.71.0 - '@typescript-eslint/types': 8.71.0 - '@typescript-eslint/typescript-estree': 8.71.0(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.71.1 + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/typescript-estree': 8.71.1(supports-color@10.2.2)(typescript@6.0.3) eslint: 10.12.0(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.71.0': + '@typescript-eslint/visitor-keys@8.71.1': dependencies: - '@typescript-eslint/types': 8.71.0 + '@typescript-eslint/types': 8.71.1 eslint-visitor-keys: 5.0.1 - acorn-jsx@5.3.2(acorn@8.18.0): + acorn-jsx@5.3.2(acorn@8.19.0): dependencies: - acorn: 8.18.0 + acorn: 8.19.0 - acorn@8.18.0: {} + acorn@8.19.0: {} ajv@6.15.0: dependencies: @@ -4536,8 +4536,8 @@ snapshots: espree@11.2.0: dependencies: - acorn: 8.18.0 - acorn-jsx: 5.3.2(acorn@8.18.0) + acorn: 8.19.0 + acorn-jsx: 5.3.2(acorn@8.19.0) eslint-visitor-keys: 5.0.1 esquery@1.7.0: @@ -5296,7 +5296,7 @@ snapshots: ms@2.1.3: {} - nanoid@3.3.19: {} + nanoid@3.3.20: {} natural-compare@1.4.0: {} @@ -5493,9 +5493,9 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss@8.5.28: + postcss@8.5.29: dependencies: - nanoid: 3.3.19 + nanoid: 3.3.20 picocolors: 1.1.1 source-map-js: 1.2.2 @@ -5874,7 +5874,7 @@ snapshots: terser@5.51.2: dependencies: '@jridgewell/source-map': 0.3.11 - acorn: 8.18.0 + acorn: 8.19.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -5931,12 +5931,12 @@ snapshots: dependencies: typescript: 6.0.3 - typescript-eslint@8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3): + typescript-eslint@8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.71.0(@typescript-eslint/parser@8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/parser': 8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.71.0(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/utils': 8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/eslint-plugin': 8.71.1(@typescript-eslint/parser@8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/parser': 8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.71.1(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/utils': 8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) eslint: 10.12.0(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: @@ -6025,7 +6025,7 @@ snapshots: dependencies: lightningcss: 1.33.0 picomatch: 4.0.7 - postcss: 8.5.28 + postcss: 8.5.29 rolldown: 1.2.12 tinyglobby: 0.2.17 optionalDependencies: diff --git a/interface/progmem-generator.js b/interface/progmem-generator.js index 211721a2c..74cbae222 100644 --- a/interface/progmem-generator.js +++ b/interface/progmem-generator.js @@ -10,10 +10,17 @@ import mime from 'mime-types'; import { relative, resolve, sep } from 'path'; import zlib from 'zlib'; +// optional args: --src --out --index +const getArg = (name, fallback) => { + const i = process.argv.indexOf(name); + return i !== -1 && process.argv[i + 1] ? process.argv[i + 1] : fallback; +}; + const ARDUINO_INCLUDES = '#include \n\n'; const INDENT = ' '; -const outputPath = '../src/ESP32React/WWWData.h'; -const sourcePath = './dist'; +const outputPath = getArg('--out', '../src/ESP32React/WWWData.h'); +const sourcePath = getArg('--src', './dist'); +const indexFile = getArg('--index', 'index.html'); const bytesPerLine = 20; let totalSize = 0; let bundleStats = { @@ -129,7 +136,10 @@ const writeFile = (relativeFilePath, buffer) => { bundleStats[fileType].compressed += zipBuffer.length; fileInfo.push({ - uri: '/' + relativeFilePath.replace(sep, '/'), + uri: + relativeFilePath === indexFile + ? '/index.html' + : '/' + relativeFilePath.replace(sep, '/'), mimeType, variable, size, diff --git a/interface/recovery.html b/interface/recovery.html new file mode 100644 index 000000000..59ffcf406 --- /dev/null +++ b/interface/recovery.html @@ -0,0 +1,13 @@ + + + + + + + EMS-ESP Recovery + + +
+ + + diff --git a/interface/src/app/settings/Version.tsx b/interface/src/app/settings/Version.tsx index e45a1c46c..a7d68e82b 100644 --- a/interface/src/app/settings/Version.tsx +++ b/interface/src/app/settings/Version.tsx @@ -71,6 +71,7 @@ interface VersionData { build_flags?: string; partition: string; partitions: PartitionData[]; + recovery_version?: string; // only on boards with a factory partition, empty if not installed developer_mode: boolean; disable_reset: boolean; } @@ -721,6 +722,19 @@ const Version = () => { + + {data.recovery_version !== undefined && ( + <> + + {LL.RECOVERY()} + + + + {data.recovery_version || LL.RECOVERY_NOT_INSTALLED()} + + + + )} {internetLive ? ( @@ -848,7 +862,11 @@ const Version = () => { {LL.UPLOAD()} - + void loadData()} + /> )} diff --git a/interface/src/components/upload/SingleUpload.tsx b/interface/src/components/upload/SingleUpload.tsx index 781994e28..30a521256 100644 --- a/interface/src/components/upload/SingleUpload.tsx +++ b/interface/src/components/upload/SingleUpload.tsx @@ -14,10 +14,15 @@ import { LinearProgressWithLabel } from './LinearProgressWithLabel'; interface SingleUploadProps { doRestart: () => void; + onRecoveryInstalled?: () => void; text: string; } -const SingleUpload = ({ doRestart, text }: SingleUploadProps) => { +const SingleUpload = ({ + doRestart, + onRecoveryInstalled, + text +}: SingleUploadProps) => { const [md5, setMd5] = useState(); const [file, setFile] = useState(); const { LL } = useI18nContext(); @@ -42,6 +47,12 @@ const SingleUpload = ({ doRestart, text }: SingleUploadProps) => { setMd5((payload as { md5: string }).md5); toast.success(LL.UPLOAD_MD5_RECEIVED()); setFile(undefined); + } else if (payload && typeof payload === 'object' && 'recovery' in payload) { + // written to the factory partition, EMS-ESP keeps running + toast.success(LL.RECOVERY_INSTALLED()); + setMd5(undefined); + setFile(undefined); + onRecoveryInstalled?.(); } else { if (payload && typeof payload === 'object' && 'md5_ok' in payload) { toast.success(LL.UPLOAD_MD5_MATCHED()); diff --git a/interface/src/i18n/cs/index.ts b/interface/src/i18n/cs/index.ts index ec1c474c5..76284dbee 100644 --- a/interface/src/i18n/cs/index.ts +++ b/interface/src/i18n/cs/index.ts @@ -352,7 +352,10 @@ const cs: Translation = { UPLOAD_BACKUP_TEXT: 'Klikněte, abyste vybrali, nebo drop soubor zálohy (.json) sem', UPLOAD_FIRMWARE_TEXT: 'Klikněte, abyste vybrali, nebo drop soubor firmware .bin/.md5 sem', UPLOAD_MD5_RECEIVED: 'Digest přijat, nyní nahrajte firmware .bin', - UPLOAD_MD5_MATCHED: 'MD5 souhlasí, firmware se instaluje...' + UPLOAD_MD5_MATCHED: 'MD5 souhlasí, firmware se instaluje...', + RECOVERY: 'Obnova', + RECOVERY_NOT_INSTALLED: 'Nenainstalováno', + RECOVERY_INSTALLED: 'Firmware pro obnovu nainstalován' }; export default cs; diff --git a/interface/src/i18n/de/index.ts b/interface/src/i18n/de/index.ts index 9254364cc..352de1152 100644 --- a/interface/src/i18n/de/index.ts +++ b/interface/src/i18n/de/index.ts @@ -352,7 +352,10 @@ const de: Translation = { UPLOAD_BACKUP_TEXT: 'Klicken Sie, um eine Sicherungsdatei (.json) auszuwählen, oder drop ein', UPLOAD_FIRMWARE_TEXT: 'Klicken Sie, um eine Firmware-Datei (.bin/.md5) auszuwählen, oder drop ein', UPLOAD_MD5_RECEIVED: 'Prüfsumme empfangen, jetzt die Firmware-Datei (.bin) hochladen', - UPLOAD_MD5_MATCHED: 'MD5 stimmt überein, Firmware wird installiert...' + UPLOAD_MD5_MATCHED: 'MD5 stimmt überein, Firmware wird installiert...', + RECOVERY: 'Wiederherstellung', + RECOVERY_NOT_INSTALLED: 'Nicht installiert', + RECOVERY_INSTALLED: 'Wiederherstellungs-Firmware installiert' }; export default de; diff --git a/interface/src/i18n/en/index.ts b/interface/src/i18n/en/index.ts index 390ced0f2..49c3878b1 100644 --- a/interface/src/i18n/en/index.ts +++ b/interface/src/i18n/en/index.ts @@ -352,7 +352,10 @@ const en: Translation = { UPLOAD_BACKUP_TEXT: 'Click to select, or drop a backup file (.json) here', UPLOAD_FIRMWARE_TEXT: 'Click to select, or drop a firmware .bin/.md5 file here', UPLOAD_MD5_RECEIVED: 'Digest received, now upload the firmware .bin file', - UPLOAD_MD5_MATCHED: 'MD5 matches, installing firmware...' + UPLOAD_MD5_MATCHED: 'MD5 matches, installing firmware...', + RECOVERY: 'Recovery', + RECOVERY_NOT_INSTALLED: 'Not installed', + RECOVERY_INSTALLED: 'Recovery firmware installed' }; export default en; diff --git a/interface/src/i18n/fr/index.ts b/interface/src/i18n/fr/index.ts index e3df37e48..303f23510 100644 --- a/interface/src/i18n/fr/index.ts +++ b/interface/src/i18n/fr/index.ts @@ -352,7 +352,10 @@ const fr: Translation = { UPLOAD_BACKUP_TEXT: 'Cliquez pour sélectionner, ou drop un fichier de sauvegarde (.json) ici', UPLOAD_FIRMWARE_TEXT: 'Cliquez pour sélectionner, ou drop un fichier firmware .bin/.md5 ici', UPLOAD_MD5_RECEIVED: 'Empreinte reçue, téléversez maintenant le fichier firmware .bin', - UPLOAD_MD5_MATCHED: 'MD5 concordant, installation du firmware...' + UPLOAD_MD5_MATCHED: 'MD5 concordant, installation du firmware...', + RECOVERY: 'Récupération', + RECOVERY_NOT_INSTALLED: 'Non installé', + RECOVERY_INSTALLED: 'Firmware de récupération installé' }; export default fr; diff --git a/interface/src/i18n/it/index.ts b/interface/src/i18n/it/index.ts index 75ed58542..39654977c 100644 --- a/interface/src/i18n/it/index.ts +++ b/interface/src/i18n/it/index.ts @@ -352,7 +352,10 @@ const it: Translation = { UPLOAD_BACKUP_TEXT: 'Klik per selezionare, o drop un file di backup (.json) qui', UPLOAD_FIRMWARE_TEXT: 'Klik per selezionare, o drop un file firmware .bin/.md5 qui', UPLOAD_MD5_RECEIVED: 'Digest ricevuto, ora caricare il file firmware .bin', - UPLOAD_MD5_MATCHED: 'MD5 corrispondente, installazione firmware...' + UPLOAD_MD5_MATCHED: 'MD5 corrispondente, installazione firmware...', + RECOVERY: 'Ripristino', + RECOVERY_NOT_INSTALLED: 'Non installato', + RECOVERY_INSTALLED: 'Firmware di ripristino installato' }; export default it; diff --git a/interface/src/i18n/nl/index.ts b/interface/src/i18n/nl/index.ts index 2e9e39d37..15e764226 100644 --- a/interface/src/i18n/nl/index.ts +++ b/interface/src/i18n/nl/index.ts @@ -352,7 +352,10 @@ const nl: Translation = { UPLOAD_BACKUP_TEXT: 'Klik voor selecteren, of drop een back-upbestand (.json) hier', UPLOAD_FIRMWARE_TEXT: 'Klik voor selecteren, of drop een firmware .bin/.md5 bestand hier', UPLOAD_MD5_RECEIVED: 'Digest ontvangen, upload nu het firmware .bin-bestand', - UPLOAD_MD5_MATCHED: 'MD5 komt overeen, firmware wordt geïnstalleerd...' + UPLOAD_MD5_MATCHED: 'MD5 komt overeen, firmware wordt geïnstalleerd...', + RECOVERY: 'Herstel', + RECOVERY_NOT_INSTALLED: 'Niet geïnstalleerd', + RECOVERY_INSTALLED: 'Herstelfirmware geïnstalleerd' }; export default nl; diff --git a/interface/src/i18n/no/index.ts b/interface/src/i18n/no/index.ts index e0824ac2e..788ee326b 100644 --- a/interface/src/i18n/no/index.ts +++ b/interface/src/i18n/no/index.ts @@ -352,7 +352,10 @@ const no: Translation = { UPLOAD_BACKUP_TEXT: 'Klikk for å velge, eller drop en sikkerhetskopi (.json) her', UPLOAD_FIRMWARE_TEXT: 'Klikk for å velge, eller drop en firmware .bin/.md5 her', UPLOAD_MD5_RECEIVED: 'MD5 mottatt, last nå opp firmware .bin-filen', - UPLOAD_MD5_MATCHED: 'MD5 stemmer, firmware installeres...' + UPLOAD_MD5_MATCHED: 'MD5 stemmer, firmware installeres...', + RECOVERY: 'Gjenoppretting', + RECOVERY_NOT_INSTALLED: 'Ikke installert', + RECOVERY_INSTALLED: 'Gjenopprettingsfirmware installert' }; export default no; diff --git a/interface/src/i18n/pl/index.ts b/interface/src/i18n/pl/index.ts index 89ef48b5e..3f6c47e62 100644 --- a/interface/src/i18n/pl/index.ts +++ b/interface/src/i18n/pl/index.ts @@ -352,7 +352,10 @@ const pl: BaseTranslation = { UPLOAD_BACKUP_TEXT: 'Kliknij, aby wybrać, lub drop plik kopii zapasowej (.json) tutaj', UPLOAD_FIRMWARE_TEXT: 'Kliknij, aby wybrać, lub drop plik firmware .bin/.md5 tutaj', UPLOAD_MD5_RECEIVED: 'Suma MD5 odebrana, teraz wgraj plik firmware .bin', - UPLOAD_MD5_MATCHED: 'MD5 zgodne, instalowanie firmware...' + UPLOAD_MD5_MATCHED: 'MD5 zgodne, instalowanie firmware...', + RECOVERY: 'Odzyskiwanie', + RECOVERY_NOT_INSTALLED: 'Nie zainstalowano', + RECOVERY_INSTALLED: 'Zainstalowano firmware odzyskiwania' }; export default pl; diff --git a/interface/src/i18n/sk/index.ts b/interface/src/i18n/sk/index.ts index 1d2940aef..f8a8bcf9e 100644 --- a/interface/src/i18n/sk/index.ts +++ b/interface/src/i18n/sk/index.ts @@ -352,7 +352,10 @@ const sk: Translation = { UPLOAD_BACKUP_TEXT: 'Kliknite, aby ste vybrali, alebo drop súbor zálohy (.json) sem', UPLOAD_FIRMWARE_TEXT: 'Kliknite, aby ste vybrali, alebo drop súbor firmware .bin/.md5 sem', UPLOAD_MD5_RECEIVED: 'Suma MD5 prijatá, teraz nahrajte firmware .bin', - UPLOAD_MD5_MATCHED: 'MD5 súhlasí, firmvér sa inštaluje...' + UPLOAD_MD5_MATCHED: 'MD5 súhlasí, firmvér sa inštaluje...', + RECOVERY: 'Obnova', + RECOVERY_NOT_INSTALLED: 'Nenainštalované', + RECOVERY_INSTALLED: 'Firmvér obnovy nainštalovaný' }; export default sk; diff --git a/interface/src/i18n/sv/index.ts b/interface/src/i18n/sv/index.ts index 384351dab..049c73eda 100644 --- a/interface/src/i18n/sv/index.ts +++ b/interface/src/i18n/sv/index.ts @@ -352,7 +352,10 @@ const sv: Translation = { UPLOAD_BACKUP_TEXT: 'Klicka för att välja, eller drop en säkerhetskopia (.json) här', UPLOAD_FIRMWARE_TEXT: 'Klicka för att välja, eller drop en firmware .bin/.md5 här', UPLOAD_MD5_RECEIVED: 'MD5 mottagen, ladda nu upp firmware .bin-filen', - UPLOAD_MD5_MATCHED: 'MD5 stämmer, firmware installeras...' + UPLOAD_MD5_MATCHED: 'MD5 stämmer, firmware installeras...', + RECOVERY: 'Återställning', + RECOVERY_NOT_INSTALLED: 'Inte installerad', + RECOVERY_INSTALLED: 'Återställningsfirmware installerad' }; export default sv; diff --git a/interface/src/i18n/tr/index.ts b/interface/src/i18n/tr/index.ts index 8449843a7..d95885513 100644 --- a/interface/src/i18n/tr/index.ts +++ b/interface/src/i18n/tr/index.ts @@ -352,7 +352,10 @@ const tr: Translation = { UPLOAD_BACKUP_TEXT: 'Bir yedek dosyası (.json), buraya drop yapın', UPLOAD_FIRMWARE_TEXT: 'Bir firmware .bin dosyası, buraya drop yapın', UPLOAD_MD5_RECEIVED: 'Özet alındı, şimdi firmware .bin dosyasını yükleyin', - UPLOAD_MD5_MATCHED: 'MD5 eşleşti, firmware yükleniyor...' + UPLOAD_MD5_MATCHED: 'MD5 eşleşti, firmware yükleniyor...', + RECOVERY: 'Kurtarma', + RECOVERY_NOT_INSTALLED: 'Yüklü değil', + RECOVERY_INSTALLED: 'Kurtarma firmware yüklendi' }; export default tr; diff --git a/interface/src/recovery/Dashboard.tsx b/interface/src/recovery/Dashboard.tsx new file mode 100644 index 000000000..3ae9ba806 --- /dev/null +++ b/interface/src/recovery/Dashboard.tsx @@ -0,0 +1,380 @@ +import { type ReactNode, useState } from 'react'; + +import CancelIcon from '@mui/icons-material/Cancel'; +import HealthAndSafetyIcon from '@mui/icons-material/HealthAndSafety'; +import LogoutIcon from '@mui/icons-material/Logout'; +import MemoryIcon from '@mui/icons-material/Memory'; +import PlayArrowIcon from '@mui/icons-material/PlayArrow'; +import RestartAltIcon from '@mui/icons-material/RestartAlt'; +import { + Avatar, + Box, + Button, + Chip, + Dialog, + DialogActions, + DialogContent, + DialogTitle, + Divider, + List, + ListItem, + ListItemAvatar, + ListItemText, + MenuItem, + TextField, + Typography +} from '@mui/material'; + +import { dialogStyle } from 'CustomTheme'; +import ButtonRow from 'components/ButtonRow'; +import MessageBox from 'components/MessageBox'; +import SectionContent from 'components/SectionContent'; +import { toast } from 'components/toast'; + +import FirmwareUpload from './FirmwareUpload'; +import { HttpError, restart, setBootPartition } from './api'; +import type { RecoveryPartition, RecoveryStatus } from './types'; + +const formatMB = (bytes: number) => `${(bytes / 1048576).toFixed(2)} MB`; + +const formatUptime = (seconds: number) => { + const h = Math.floor(seconds / 3600); + const m = Math.floor((seconds % 3600) / 60); + const s = seconds % 60; + return `${h}h ${m}m ${s}s`; +}; + +const ETH_STATE_TEXT: Record< + Exclude, + string +> = { + disabled: 'disabled, the clock mode conflicts with PSRAM', + failed: 'failed to start, no PHY found', + no_link: 'no cable connected', + connecting: 'waiting for an IP address' +}; + +const failedToStart = (p: RecoveryPartition) => + p.ota_state === 'aborted' || p.ota_state === 'invalid'; + +// why the device is running the recovery, if it can be worked out +const recoveryReason = (status: RecoveryStatus, failed: RecoveryPartition[]) => { + if (status.reason === 'crash') { + return 'EMS-ESP crashed repeatedly and switched to the recovery.'; + } + if (status.reason === 'request') { + return undefined; // started on purpose from EMS-ESP, e.g. a long press of the button + } + if (failed.length > 0) { + return `The firmware in ${failed.map((p) => p.label).join(' and ')} failed to start.`; + } + if (status.reset_reason === 'panic' || status.reset_reason === 'watchdog') { + return 'EMS-ESP crashed while starting.'; + } + return undefined; +}; + +const SectionTitle = ({ children }: { children: ReactNode }) => ( + + {children} + +); + +const InfoRow = ({ label, value }: { label: string; value: ReactNode }) => ( + + + {label} + + {value} + +); + +interface DashboardProps { + status: RecoveryStatus; + onRestarting: (target: string) => void; + onSignOut: () => void; +} + +const Dashboard = ({ status, onRestarting, onSignOut }: DashboardProps) => { + const [confirmBoot, setConfirmBoot] = useState(); + const [pickedTarget, setPickedTarget] = useState(); + const uploadTarget = pickedTarget ?? status.upload_target; + + const handleError = (error: unknown) => { + if (error instanceof HttpError && error.status === 401) { + toast.warning('Session expired, please sign in again'); + onSignOut(); + } else { + toast.error((error as Error).message); + } + }; + + const doBoot = async (partition: RecoveryPartition) => { + setConfirmBoot(undefined); + try { + await setBootPartition(partition.label); + onRestarting(partition.label); + } catch (error) { + if (error instanceof HttpError && error.status === 400) { + toast.error(`${partition.label} does not contain a bootable firmware`); + } else { + handleError(error); + } + } + }; + + const doRestart = async (target: string) => { + try { + await restart(); + onRestarting(target); + } catch (error) { + handleError(error); + } + }; + + const otaPartitions = status.partitions.filter((p) => !p.factory); + const hasFirmware = otaPartitions.some((p) => p.valid); + const reason = recoveryReason( + status, + otaPartitions.filter((p) => p.valid && failedToStart(p)) + ); + + return ( + <> + + {reason && } + + {hasFirmware + ? 'This device is running the EMS-ESP Recovery. Start one of the installed firmwares, or upload a new one.' + : 'No EMS-ESP firmware is installed. Upload a firmware to continue.'} + + + + + Firmware + + {status.partitions.map((p, index) => ( + + {index > 0 && } + } + variant="outlined" + color="primary" + size="small" + onClick={() => setConfirmBoot(p)} + > + Start + + ) + } + > + + + {p.factory ? : } + + + + {p.factory ? `Recovery (${p.label})` : p.label} + {p.label === status.running && ( + + )} + {p.label === status.boot && p.label !== status.running && ( + + )} + {p.label === uploadTarget && ( + + )} + {!p.valid && ( + + )} + {p.valid && failedToStart(p) && ( + + )} + {p.valid && p.ota_state === 'pending' && ( + + )} + + } + secondary={ + p.valid + ? `${p.version ? 'v' + p.version + ' · ' : ''}${formatMB(p.image_size)} of ${formatMB(p.size)}` + : formatMB(p.size) + } + /> + + + ))} + + + + + Upload Firmware + + The firmware is started automatically after the upload. To enable the MD5 + check, upload the matching .md5 file first. + + setPickedTarget(e.target.value)} + > + {otaPartitions.map((p) => ( + + {p.label} + {p.valid + ? ` (replaces ${p.version ? 'v' + p.version : 'installed firmware'})` + : ' (empty)'} + + ))} + + void doRestart(uploadTarget)} + onUnauthorized={onSignOut} + /> + + + + System + + + + + + + {status.eth_state && ( + + )} + + + + + + + + + + setConfirmBoot(undefined)} + > + Start Firmware + + Restart and run + {confirmBoot?.version ? ` EMS-ESP v${confirmBoot.version}` : ''} from{' '} + {confirmBoot?.label}? + {confirmBoot && failedToStart(confirmBoot) && ( + + )} + + + + + + + + ); +}; + +export default Dashboard; diff --git a/interface/src/recovery/FirmwareUpload.tsx b/interface/src/recovery/FirmwareUpload.tsx new file mode 100644 index 000000000..b4d3822a6 --- /dev/null +++ b/interface/src/recovery/FirmwareUpload.tsx @@ -0,0 +1,208 @@ +import { type ChangeEvent, type DragEvent, useRef, useState } from 'react'; + +import CancelIcon from '@mui/icons-material/Cancel'; +import CloudUploadIcon from '@mui/icons-material/CloudUpload'; +import UploadIcon from '@mui/icons-material/Upload'; +import { Box, Button, Typography, styled } from '@mui/material'; + +import { toast } from 'components/toast'; +import { LinearProgressWithLabel } from 'components/upload/LinearProgressWithLabel'; + +import { HttpError, type UploadHandle, uploadFile } from './api'; + +const DocumentUploader = styled(Box)<{ active?: boolean }>(({ theme, active }) => ({ + border: `2px dashed ${active ? '#6dc24b' : '#4282fe'}`, + backgroundColor: '#2e3339', + padding: theme.spacing(1.25), + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', + borderRadius: theme.spacing(1), + cursor: 'pointer', + minHeight: '120px', + transition: 'border-color 0.2s ease-in-out' +})); + +const uploadErrorMessage = (status: number, chip: string) => { + switch (status) { + case 400: + return 'Invalid target partition'; + case 401: + case 403: + return 'Not authorized, please sign in again'; + case 409: + return 'This is the recovery firmware, it can only be installed from EMS-ESP'; + case 503: + return `This firmware is not built for the ${chip}`; + case 507: + return 'The firmware does not fit in the partition'; + case 500: + return 'Upload failed, flash write error or MD5 mismatch'; + default: + return 'Upload failed. Only EMS-ESP firmware .bin and .md5 files are accepted'; + } +}; + +interface FirmwareUploadProps { + target: string; + chip: string; + onUploaded: () => void; + onUnauthorized: () => void; +} + +const FirmwareUpload = ({ + target, + chip, + onUploaded, + onUnauthorized +}: FirmwareUploadProps) => { + const [file, setFile] = useState(); + const [dragged, setDragged] = useState(false); + const [md5, setMd5] = useState(); + const [progress, setProgress] = useState(); + const uploadRef = useRef(null); + const inputRef = useRef(null); + + const selectFile = (selected?: File) => { + if (!selected) return; + if (/\.(bin|md5)$/i.test(selected.name)) { + setFile(selected); + } else { + toast.warning('Please select an EMS-ESP firmware .bin or .md5 file'); + } + }; + + const onFileChange = (e: ChangeEvent) => { + selectFile(e.target.files?.[0]); + e.target.value = ''; // allow the same file to be selected again + }; + + const onDrop = (e: DragEvent) => { + e.preventDefault(); + setDragged(false); + selectFile(e.dataTransfer.files[0]); + }; + + const startUpload = async () => { + if (!file) return; + setProgress(0); + uploadRef.current = uploadFile(file, target, setProgress); + try { + const result = await uploadRef.current.promise; + if (result.md5) { + setMd5(result.md5); + toast.success('MD5 received, now upload the firmware .bin'); + } else { + if (result.md5_ok) { + toast.success('Firmware MD5 matches'); + } + toast.success(`Firmware written to ${target}`); + onUploaded(); + } + } catch (error) { + const status = error instanceof HttpError ? error.status : 0; + if (status === -1) { + toast.warning('Upload aborted'); + } else { + toast.error(uploadErrorMessage(status, chip)); + if (status === 401 || status === 403) onUnauthorized(); + } + } finally { + uploadRef.current = null; + setProgress(undefined); + setFile(undefined); + } + }; + + if (progress !== undefined) { + return ( + <> + + Uploading {file?.name} to {target}… + + + + + ); + } + + return ( + <> + { + e.preventDefault(); + setDragged(true); + }} + onDragLeave={() => setDragged(false)} + onClick={() => inputRef.current?.click()} + > + + + + {md5 + ? 'MD5 received. Now drop the firmware .bin file here, or click to browse' + : 'Drop an EMS-ESP firmware .bin file here, or click to browse'} + + + + {file && ( + <> + + {file.name} + + + + + + + )} + + {md5 && ( + + {'MD5: ' + md5} + + )} + + ); +}; + +export default FirmwareUpload; diff --git a/interface/src/recovery/RecoveryApp.tsx b/interface/src/recovery/RecoveryApp.tsx new file mode 100644 index 000000000..22fb89372 --- /dev/null +++ b/interface/src/recovery/RecoveryApp.tsx @@ -0,0 +1,132 @@ +import { useCallback, useEffect, useState } from 'react'; + +import RefreshIcon from '@mui/icons-material/Refresh'; +import { + AppBar, + Box, + Button, + CircularProgress, + Toolbar, + Typography +} from '@mui/material'; + +import CustomTheme from 'CustomTheme'; +import MessageBox from 'components/MessageBox'; +import SectionContent from 'components/SectionContent'; +import { Toaster } from 'components/toast'; + +import Dashboard from './Dashboard'; +import RestartMonitor from './RestartMonitor'; +import SignIn from './SignIn'; +import { getToken, readStatus, setToken } from './api'; +import type { RecoveryStatus } from './types'; + +const STATUS_REFRESH_MS = 5000; + +const RecoveryApp = () => { + const [status, setStatus] = useState(); + const [error, setError] = useState(); + const [restartTarget, setRestartTarget] = useState(); + + const loadStatus = useCallback(async () => { + try { + const data = await readStatus(); + if (!data.authenticated && getToken()) { + setToken(null); // stale token, e.g. after the device restarted + } + setStatus(data); + setError(undefined); + } catch (e) { + setError((e as Error).message); + } + }, []); + + useEffect(() => { + void loadStatus(); + }, [loadStatus]); + + useEffect(() => { + if (!status?.authenticated || restartTarget !== undefined) return; + const timer = setInterval(() => void loadStatus(), STATUS_REFRESH_MS); + return () => clearInterval(timer); + }, [status?.authenticated, restartTarget, loadStatus]); + + const signOut = () => { + setToken(null); + void loadStatus(); + }; + + let content; + if (restartTarget !== undefined && status) { + content = ( + + ); + } else if (!status) { + content = ( + + {error ? ( + + + + ) : ( + + + + )} + + ); + } else if (!status.authenticated) { + content = void loadStatus()} />; + } else { + content = ( + <> + + + EMS-ESP + EMS-ESP + +   |   + + Recovery + + + + + + + + ); + } + + return ( + + {content} + + + ); +}; + +export default RecoveryApp; diff --git a/interface/src/recovery/RestartMonitor.tsx b/interface/src/recovery/RestartMonitor.tsx new file mode 100644 index 000000000..9e6e64088 --- /dev/null +++ b/interface/src/recovery/RestartMonitor.tsx @@ -0,0 +1,149 @@ +import { useEffect, useState } from 'react'; + +import RefreshIcon from '@mui/icons-material/Refresh'; +import { Box, Button, LinearProgress, Typography } from '@mui/material'; + +import MessageBox from 'components/MessageBox'; + +import { STATUS_URL } from './api'; + +const POLL_INTERVAL_MS = 1000; +const POLL_TIMEOUT_MS = 3000; +const FIRST_POLL_DELAY_MS = 1500; +// reload anyway if the device never appeared to go down +const NO_DOWNTIME_RELOAD_MS = 20000; +const GIVE_UP_MS = 90000; + +interface RestartMonitorProps { + target: string; + viaAccessPoint: boolean; + hostname: string; +} + +// Waits for the device to go down and come back, then reloads the page. Both the recovery app +// and EMS-ESP answer on STATUS_URL (EMS-ESP serves its WebUI for unknown GETs). +const RestartMonitor = ({ + target, + viaAccessPoint, + hostname +}: RestartMonitorProps) => { + const [gaveUp, setGaveUp] = useState(false); + + useEffect(() => { + const started = Date.now(); + let seenDown = false; + let timer: ReturnType; + let cancelled = false; + + const poll = async () => { + let up: boolean; + try { + const response = await fetch(STATUS_URL, { + cache: 'no-store', + signal: AbortSignal.timeout(POLL_TIMEOUT_MS) + }); + up = response.ok; + } catch { + up = false; + } + if (cancelled) return; + + const elapsed = Date.now() - started; + if (!up) { + seenDown = true; + } else if (seenDown || elapsed > NO_DOWNTIME_RELOAD_MS) { + window.location.reload(); + return; + } + if (elapsed > GIVE_UP_MS) { + setGaveUp(true); + return; + } + timer = setTimeout(() => void poll(), POLL_INTERVAL_MS); + }; + + timer = setTimeout(() => void poll(), FIRST_POLL_DELAY_MS); + return () => { + cancelled = true; + clearTimeout(timer); + }; + }, []); + + return ( + + + EMS-ESP + + Restarting{target ? ` from ${target}` : ''} + + + {gaveUp ? ( + <> + + The device has not come back on this address. + {viaAccessPoint && + ` If you were connected to the recovery access point, reconnect to your normal network and open http://${hostname}.local`} + + + + ) : ( + <> + + Please wait… + + + + + {viaAccessPoint && ( + + EMS-ESP does not use the recovery access point. If this page does not + reload, reconnect to your normal network and open http://{hostname} + .local + + )} + + )} + + + ); +}; + +export default RestartMonitor; diff --git a/interface/src/recovery/SignIn.tsx b/interface/src/recovery/SignIn.tsx new file mode 100644 index 000000000..3fbd10285 --- /dev/null +++ b/interface/src/recovery/SignIn.tsx @@ -0,0 +1,142 @@ +import { type KeyboardEvent, useState } from 'react'; + +import ForwardIcon from '@mui/icons-material/Forward'; +import VisibilityIcon from '@mui/icons-material/Visibility'; +import VisibilityOffIcon from '@mui/icons-material/VisibilityOff'; +import { + Box, + Button, + IconButton, + InputAdornment, + Paper, + TextField, + Typography +} from '@mui/material'; +import type { Theme } from '@mui/material/styles'; + +import { toast } from 'components/toast'; + +import { HttpError, setToken, signIn } from './api'; + +interface SignInProps { + onSignedIn: () => void; +} + +const SignIn = ({ onSignedIn }: SignInProps) => { + const [username, setUsername] = useState(''); + const [password, setPassword] = useState(''); + const [showPassword, setShowPassword] = useState(false); + const [processing, setProcessing] = useState(false); + + const doSignIn = async () => { + if (!username || !password) { + toast.warning('Please enter the admin username and password'); + return; + } + setProcessing(true); + try { + const { access_token } = await signIn(username, password); + setToken(access_token); + onSignedIn(); + } catch (error) { + if (error instanceof HttpError && error.status === 401) { + toast.warning('Invalid login details'); + } else { + toast.error('Error: ' + (error as Error).message); + } + setProcessing(false); + } + }; + + const onKeyDown = (event: KeyboardEvent) => { + if (event.key === 'Enter') { + void doSignIn(); + } + }; + + return ( + ({ + display: 'flex', + height: '100vh', + margin: 'auto', + padding: 2, + justifyContent: 'center', + flexDirection: 'column', + maxWidth: theme.breakpoints.values.sm + })} + > + ({ + textAlign: 'center', + padding: theme.spacing(2), + paddingTop: '172px', + backgroundImage: 'url("/app/icon.png")', + backgroundRepeat: 'no-repeat', + backgroundPosition: '50% ' + theme.spacing(2), + width: '100%' + })} + > + EMS-ESP + + Recovery + + + setUsername(e.target.value)} + slotProps={{ input: { autoCapitalize: 'none', autoCorrect: 'off' } }} + /> + setPassword(e.target.value)} + onKeyDown={onKeyDown} + slotProps={{ + input: { + endAdornment: ( + + setShowPassword(!showPassword)} + edge="end" + > + {showPassword ? : } + + + ) + } + }} + /> + + + + + + ); +}; + +export default SignIn; diff --git a/interface/src/recovery/api.ts b/interface/src/recovery/api.ts new file mode 100644 index 000000000..4ce7a3dd6 --- /dev/null +++ b/interface/src/recovery/api.ts @@ -0,0 +1,107 @@ +import type { RecoveryStatus, UploadResult } from './types'; + +const TOKEN_KEY = 'recovery_token'; + +export const getToken = (): string | null => sessionStorage.getItem(TOKEN_KEY); + +export const setToken = (token: string | null): void => { + if (token) { + sessionStorage.setItem(TOKEN_KEY, token); + } else { + sessionStorage.removeItem(TOKEN_KEY); + } +}; + +export class HttpError extends Error { + readonly status: number; + + constructor(status: number, message: string) { + super(message); + this.status = status; + } +} + +const authHeaders = (): Record => { + const token = getToken(); + return token ? { Authorization: `Bearer ${token}` } : {}; +}; + +const request = async ( + method: string, + url: string, + body?: unknown +): Promise => { + const init: RequestInit = { method, headers: authHeaders(), cache: 'no-store' }; + if (body !== undefined) { + init.headers = { ...authHeaders(), 'Content-Type': 'application/json' }; + init.body = JSON.stringify(body); + } + const response = await fetch(url, init); + if (!response.ok) { + throw new HttpError( + response.status, + response.statusText || `HTTP ${response.status}` + ); + } + const text = await response.text(); + return (text ? JSON.parse(text) : undefined) as T; +}; + +export const STATUS_URL = '/rest/recovery/status'; + +export const readStatus = () => request('GET', STATUS_URL); + +export const signIn = (username: string, password: string) => + request<{ access_token: string }>('POST', '/rest/signIn', { username, password }); + +export const setBootPartition = (partition: string) => + request('POST', '/rest/recovery/boot', { partition }); + +export const restart = () => request('POST', '/rest/recovery/restart'); + +export interface UploadHandle { + promise: Promise; + abort: () => void; +} + +// XHR instead of fetch, for upload progress events +export const uploadFile = ( + file: File, + partition: string, + onProgress: (percent: number) => void +): UploadHandle => { + const xhr = new XMLHttpRequest(); + const promise = new Promise((resolve, reject) => { + xhr.upload.onprogress = (event) => { + if (event.lengthComputable && event.total > 0) { + onProgress(Math.round((event.loaded * 100) / event.total)); + } + }; + xhr.onload = () => { + if (xhr.status >= 200 && xhr.status < 300) { + try { + resolve( + (xhr.responseText ? JSON.parse(xhr.responseText) : {}) as UploadResult + ); + } catch { + resolve({}); + } + } else { + reject(new HttpError(xhr.status, xhr.statusText)); + } + }; + // the device closes the connection on unsupported files, so there is no status code + xhr.onerror = () => reject(new HttpError(0, 'Connection closed')); + xhr.onabort = () => reject(new HttpError(-1, 'Aborted')); + }); + + const formData = new FormData(); + formData.append('file', file); + xhr.open('POST', `/rest/uploadFile?partition=${encodeURIComponent(partition)}`); + for (const [key, value] of Object.entries(authHeaders())) { + xhr.setRequestHeader(key, value); + } + xhr.send(formData); + + return { promise, abort: () => xhr.abort() }; +}; diff --git a/interface/src/recovery/index.tsx b/interface/src/recovery/index.tsx new file mode 100644 index 000000000..6f0b5afd4 --- /dev/null +++ b/interface/src/recovery/index.tsx @@ -0,0 +1,10 @@ +import { StrictMode } from 'react'; +import { createRoot } from 'react-dom/client'; + +import RecoveryApp from './RecoveryApp'; + +createRoot(document.getElementById('root')!).render( + + + +); diff --git a/interface/src/recovery/types.ts b/interface/src/recovery/types.ts new file mode 100644 index 000000000..fa1ac57df --- /dev/null +++ b/interface/src/recovery/types.ts @@ -0,0 +1,54 @@ +export interface RecoveryPartition { + label: string; + factory: boolean; + address: number; + size: number; + valid: boolean; + image_size: number; + version: string; + install_date: number; + // bootloader rollback state, empty if the partition has never been selected + ota_state: '' | 'new' | 'pending' | 'valid' | 'invalid' | 'aborted'; +} + +export interface RecoveryStatus { + recovery_version: string; + authenticated: boolean; + hostname: string; + chip: string; + flash_size: number; + psram_size: number; + free_heap: number; + mac: string; + uptime: number; + reason: '' | 'crash' | 'request'; // why EMS-ESP switched to the recovery + reset_reason: + | 'power_on' + | 'external' + | 'software' + | 'panic' + | 'watchdog' + | 'brownout' + | 'other'; + ap_ssid: string; + ap_ip: string; + ap_clients: number; + wifi_ssid: string; + wifi_started: boolean; // false while waiting for Ethernet, or when Ethernet is connected + wifi_connected: boolean; + wifi_ip?: string; + wifi_rssi?: number; + static_ip: boolean; + // only on boards with Ethernet configured + eth_state?: 'disabled' | 'failed' | 'no_link' | 'connecting' | 'connected'; + eth_ip?: string; + running: string; + boot: string; + upload_target: string; + partitions: RecoveryPartition[]; +} + +export interface UploadResult { + md5?: string; + md5_ok?: boolean; +} diff --git a/interface/src/types/system.ts b/interface/src/types/system.ts index 32538bc5b..94e8d62f2 100644 --- a/interface/src/types/system.ts +++ b/interface/src/types/system.ts @@ -52,6 +52,7 @@ export interface SystemStatus { model: string; board: string; has_loader: boolean; + recovery_version?: string; has_partition: boolean; partitions: { partition: string; diff --git a/interface/vite.config.ts b/interface/vite.config.ts index c87ab4e41..d788d153a 100644 --- a/interface/vite.config.ts +++ b/interface/vite.config.ts @@ -12,6 +12,7 @@ const KB_DIVISOR = 1024; const REPEAT_CHAR = '='; const REPEAT_COUNT = 50; const DEFAULT_OUT_DIR = 'dist'; +const RECOVERY_OUT_DIR = 'dist-recovery'; const ES_TARGET = 'es2020'; const CHUNK_SIZE_WARNING_LIMIT = 1024; const ASSETS_INLINE_LIMIT = 4096; @@ -205,6 +206,65 @@ const imageOptimizationPlugin = { export default defineConfig( async ({ command, mode }: { command: string; mode: string }) => { + if (command === 'serve' && mode === 'recovery') { + console.log('Preparing Recovery WebUI with mock server'); + const recoveryMockUrl = pathToFileURL( + path.resolve(import.meta.dirname, '../mock-api/recoveryMock.js') + ).href; + const { default: recoveryMock } = (await import( + /* @vite-ignore */ recoveryMockUrl + )) as { default: () => PluginOption }; + return { + plugins: [...createBasePlugins(true, false), recoveryMock()], + resolve: { + alias: RESOLVE_ALIASES, + extensions: RESOLVE_EXTENSIONS, + tsconfigPaths: true + }, + server: { + open: '/recovery.html', + port: 3001 + } + }; + } + + if (mode === 'recovery') { + console.log('Preparing for Recovery WebUI, optimized build'); + return { + plugins: [...createBasePlugins(false, true), imageOptimizationPlugin], + resolve: { + alias: RESOLVE_ALIASES, + extensions: RESOLVE_EXTENSIONS, + tsconfigPaths: true + }, + build: { + ...createBaseBuildConfig(), + outDir: RECOVERY_OUT_DIR, + emptyOutDir: true, + minify: 'terser' as const, + terserOptions: createProductionTerserOptions(), + rollupOptions: { + input: path.resolve(import.meta.dirname, 'recovery.html'), + checks: { + pluginTimings: false + }, + treeshake: { + moduleSideEffects: false, + propertyReadSideEffects: false as const, + unknownGlobalSideEffects: false + }, + output: { + chunkFileNames: 'assets/[name]-[hash].js', + entryFileNames: 'assets/[name]-[hash].js', + assetFileNames: 'assets/[name]-[hash].[ext]', + manualChunks, + sourcemap: false + } + } + } + }; + } + if (command === 'serve') { console.log(`Preparing for standalone build with server, mode=${mode}`); const mockServerUrl = pathToFileURL( diff --git a/lib/OtaUpdater/OtaUpdater.cpp b/lib/OtaUpdater/OtaUpdater.cpp new file mode 100644 index 000000000..c94f07084 --- /dev/null +++ b/lib/OtaUpdater/OtaUpdater.cpp @@ -0,0 +1,236 @@ +#include "OtaUpdater.h" + +#include +#include +#include + +#include + +static String getFilenameExtension(const String & filename) { + const auto pos = filename.lastIndexOf('.'); + if (pos != -1) { + return filename.substring(static_cast(pos) + 1); + } + return {}; +} + +OtaUpdater::FileType OtaUpdater::classify(const String & filename, size_t filesize, size_t min_firmware_size) { + const String extension = getFilenameExtension(filename); + if (extension == "bin" && filename.endsWith("littlefs.bin")) { + return FileType::FILESYSTEM; + } + if (extension == "bin" && filesize >= min_firmware_size) { + return FileType::FIRMWARE; + } + if (extension == "json") { + return FileType::JSON; + } + if (extension == "md5") { + return FileType::MD5; + } + return FileType::UNSUPPORTED; +} + +bool OtaUpdater::isCompatibleFirmware(const uint8_t * data, size_t len) { + // 0xE9 magic at offset 0 indicates an esp bin, chip id at offset 12 +#if CONFIG_IDF_TARGET_ESP32 + constexpr uint8_t chip_id = ESP_CHIP_ID_ESP32; +#elif CONFIG_IDF_TARGET_ESP32S2 + constexpr uint8_t chip_id = ESP_CHIP_ID_ESP32S2; +#elif CONFIG_IDF_TARGET_ESP32C3 + constexpr uint8_t chip_id = ESP_CHIP_ID_ESP32C3; +#elif CONFIG_IDF_TARGET_ESP32S3 + constexpr uint8_t chip_id = ESP_CHIP_ID_ESP32S3; +#elif CONFIG_IDF_TARGET_ESP32C6 + constexpr uint8_t chip_id = ESP_CHIP_ID_ESP32C6; +#else + return true; +#endif + return len <= 12 || (data[0] == ESP_IMAGE_HEADER_MAGIC && data[12] == chip_id); +} + +bool OtaUpdater::isRecoveryFirmware(const uint8_t * data, size_t len) { + constexpr size_t offset = sizeof(esp_image_header_t) + sizeof(esp_image_segment_header_t); + if (len < offset + offsetof(esp_app_desc_t, time)) { + return false; + } + esp_app_desc_t desc; + memcpy(&desc, data + offset, offsetof(esp_app_desc_t, time)); + return desc.magic_word == ESP_APP_DESC_MAGIC_WORD && strncmp(desc.project_name, RECOVERY_PROJECT_NAME, sizeof(desc.project_name)) == 0; +} + +bool OtaUpdater::isRecoveryPartition(const esp_partition_t * partition, esp_app_desc_t * desc) { + esp_app_desc_t d; + if (partition == nullptr || esp_ota_get_partition_description(partition, &d) != ESP_OK + || strncmp(d.project_name, RECOVERY_PROJECT_NAME, sizeof(d.project_name)) != 0) { + return false; + } + if (desc != nullptr) { + *desc = d; + } + return true; +} + +bool OtaUpdater::parseMd5Digest(const uint8_t * data, size_t len, std::array & out) { + size_t i = 0; + while (i < len && (data[i] == ' ' || data[i] == '\t' || data[i] == '\r' || data[i] == '\n')) { + ++i; + } + if (len - i < 32) { + return false; + } + for (size_t n = 0; n < 32; n++) { + const char c = static_cast(data[i + n]); + const bool hex = (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'); + if (!hex) { + return false; + } + out[n] = (c >= 'A' && c <= 'F') ? static_cast(c - 'A' + 'a') : c; + } + out[32] = '\0'; + return true; +} + +bool OtaUpdater::confirmRunningApp() { +#ifdef CONFIG_APP_ROLLBACK_ENABLE + esp_ota_img_states_t state; + if (esp_ota_get_state_partition(esp_ota_get_running_partition(), &state) == ESP_OK && state == ESP_OTA_IMG_PENDING_VERIFY) { + return esp_ota_mark_app_valid_cancel_rollback() == ESP_OK; + } +#endif + return false; +} + +bool OtaUpdater::setMd5(const uint8_t * data, size_t len) { + return parseMd5Digest(data, len, _md5); +} + +void OtaUpdater::clearMd5() { + _md5.front() = '\0'; + _md5_applied = false; +} + +bool OtaUpdater::hasMd5() const { + return strlen(_md5.data()) == _md5.size() - 1; +} + +bool OtaUpdater::beginFirmware(size_t filesize, const esp_partition_t * target, bool set_boot) { + _md5_applied = false; + _error = ""; + + confirmRunningApp(); + + if (target != nullptr) { +#ifdef OTA_UPDATER_ANY_PARTITION + if (filesize > target->size + 4096) { // allow for the multipart overhead + _error = "Firmware does not fit in the partition"; + return false; + } + const esp_err_t err = esp_ota_begin(target, OTA_WITH_SEQUENTIAL_WRITES, &_handle); + if (err != ESP_OK) { + _error = esp_err_to_name(err); + return false; + } + _target = target; + _written = 0; + _set_boot = set_boot; + if (hasMd5()) { + _md5Builder.begin(); + _md5_applied = true; + } + return true; +#else + _error = "Writing to a specific partition is not supported"; + return false; +#endif + } + + if (!Update.begin(filesize - sizeof(esp_image_header_t))) { + return false; + } + if (hasMd5()) { + Update.setMD5(_md5.data()); + _md5_applied = true; + } + return true; +} + +bool OtaUpdater::beginFilesystem() { + clearMd5(); // so Update.end() doesn't compare against a stale digest + _error = ""; + // the HTTP content length is the multipart body size, not the file size, so it can exceed + // the partition by a few hundred bytes. Let the Update library size against the whole partition. + return Update.begin(UPDATE_SIZE_UNKNOWN, U_SPIFFS); +} + +bool OtaUpdater::write(const uint8_t * data, size_t len) { +#ifdef OTA_UPDATER_ANY_PARTITION + if (_target != nullptr) { + const esp_err_t err = esp_ota_write(_handle, data, len); + if (err != ESP_OK) { + _error = esp_err_to_name(err); + return false; + } + if (_md5_applied) { + _md5Builder.add(data, len); + } + _written += len; + return true; + } +#endif + return Update.write(const_cast(data), len) == len; +} + +bool OtaUpdater::end() { +#ifdef OTA_UPDATER_ANY_PARTITION + if (_target != nullptr) { + const esp_partition_t * target = _target; + _target = nullptr; + + if (_md5_applied) { + _md5Builder.calculate(); + if (strcmp(_md5Builder.toString().c_str(), _md5.data()) != 0) { + esp_ota_abort(_handle); + _error = "MD5 check failed"; + return false; + } + } + + // esp_ota_end() validates the image + esp_err_t err = esp_ota_end(_handle); + if (err == ESP_OK && _set_boot) { + err = esp_ota_set_boot_partition(target); + } + if (err != ESP_OK) { + _error = esp_err_to_name(err); + return false; + } + return true; + } +#endif + return Update.end(true); +} + +void OtaUpdater::abort() { +#ifdef OTA_UPDATER_ANY_PARTITION + if (_target != nullptr) { + esp_ota_abort(_handle); + _target = nullptr; + return; + } +#endif + Update.abort(); +} + +size_t OtaUpdater::progress() const { +#ifdef OTA_UPDATER_ANY_PARTITION + if (_target != nullptr) { + return _written; + } +#endif + return Update.progress(); +} + +const char * OtaUpdater::errorString() const { + return _error[0] != '\0' ? _error : Update.errorString(); +} diff --git a/lib/OtaUpdater/OtaUpdater.h b/lib/OtaUpdater/OtaUpdater.h new file mode 100644 index 000000000..e35c512c2 --- /dev/null +++ b/lib/OtaUpdater/OtaUpdater.h @@ -0,0 +1,76 @@ +#ifndef OtaUpdater_h +#define OtaUpdater_h + +#include +#include + +#include + +#ifdef OTA_UPDATER_ANY_PARTITION +#include +#endif + +// Validates and streams firmware (.bin), LittleFS images (*littlefs.bin) and MD5 digests (.md5) into flash. +// Shared between the EMS-ESP application and the recovery application. +class OtaUpdater { + public: + enum class FileType : uint8_t { UNSUPPORTED, FIRMWARE, FILESYSTEM, JSON, MD5 }; + + static FileType classify(const String & filename, size_t filesize, size_t min_firmware_size); + + // project name in the app description of the recovery firmware, set by custom_fw_name in platformio.ini + static constexpr char RECOVERY_PROJECT_NAME[] = "EMS-ESP-Recovery"; + + // checks the ESP image magic byte and that the chip id matches the chip we're running on + static bool isCompatibleFirmware(const uint8_t * data, size_t len); + + // checks the app description at the start of an image, needs the first 112 bytes + static bool isRecoveryFirmware(const uint8_t * data, size_t len); + // fills in desc if the partition holds the recovery firmware + static bool isRecoveryPartition(const esp_partition_t * partition, esp_app_desc_t * desc = nullptr); + + // Accepts a raw 32-char hex digest, optionally with trailing newline or a GNU "hash filename" suffix. + static bool parseMd5Digest(const uint8_t * data, size_t len, std::array & out); + + // With bootloader rollback a new image boots as pending verification until confirmed, and the + // IDF refuses to start another firmware update until then. Returns true if it was pending. + static bool confirmRunningApp(); + + bool setMd5(const uint8_t * data, size_t len); + void clearMd5(); + bool hasMd5() const; + bool md5Applied() const { + return _md5_applied; + } + const char * md5() const { + return _md5.data(); + } + + // filesize is the HTTP content length, which is slightly bigger than the image. + // Without a target the image goes to the next OTA partition after the running one. Writing to a + // specific partition needs OTA_UPDATER_ANY_PARTITION, which adds ~1.7KB. + bool beginFirmware(size_t filesize, const esp_partition_t * target = nullptr, bool set_boot = true); + bool beginFilesystem(); + bool write(const uint8_t * data, size_t len); + bool end(); // on success the new firmware becomes the boot partition, unless set_boot was false + void abort(); + + size_t progress() const; + const char * errorString() const; + + private: + std::array _md5{}; + bool _md5_applied = false; + const char * _error = ""; + +#ifdef OTA_UPDATER_ANY_PARTITION + // set when writing to an explicit target partition with the IDF OTA API instead of Update + const esp_partition_t * _target = nullptr; + esp_ota_handle_t _handle = 0; + size_t _written = 0; + bool _set_boot = true; + MD5Builder _md5Builder; +#endif +}; + +#endif diff --git a/mock-api/package.json b/mock-api/package.json index 64a729272..799c6f2d1 100644 --- a/mock-api/package.json +++ b/mock-api/package.json @@ -17,5 +17,5 @@ "@trivago/prettier-plugin-sort-imports": "^6.0.2", "prettier": "^3.9.9" }, - "packageManager": "pnpm@12.8.1" + "packageManager": "pnpm@12.9.1" } diff --git a/mock-api/pnpm-lock.yaml b/mock-api/pnpm-lock.yaml index a0c58b979..b431bd0a6 100644 --- a/mock-api/pnpm-lock.yaml +++ b/mock-api/pnpm-lock.yaml @@ -7,153 +7,153 @@ importers: configDependencies: {} packageManagerDependencies: pnpm: - specifier: 12.8.1 - version: 12.8.1 + specifier: 12.9.1 + version: 12.9.1 packages: - '@pnpm/exe.android-arm64@12.8.1': - resolution: {integrity: sha512-siDxcidfz5eM6L2tJfik+i2bbUEw8UC7MZ3Yl2HYdRmqbdhHGAOQACtOOu6QVW4Jul4/w5wVKm+wM8ACtgh1Pg==} + '@pnpm/exe.android-arm64@12.9.1': + resolution: {integrity: sha512-Hgm1XdqMTfBC8PdGLL+NjZWv4xyi7D6XNrN9fb24XGYlyTBmUtdCefKnCLmHujShRD8BEO1zqM30SNcKBDLysw==} cpu: [arm64] os: [android] - '@pnpm/exe.android-x64@12.8.1': - resolution: {integrity: sha512-0F/uqPRc3aN4vLHsa0f+6fTtmsigFQ9/yxEU43fionF//pNHEd5e97b3w/nKIgqYMCUQCJphmBRMA9Q8/wlo9Q==} + '@pnpm/exe.android-x64@12.9.1': + resolution: {integrity: sha512-WDGCe6jZRVZP3RC/q6hOkZylkPkIQIi1/GcrR/d/YzbihhAHXCczrk+UYnV5TgbsEnAYO7Cx+2rX3nfhHvy24w==} cpu: [x64] os: [android] - '@pnpm/exe.darwin-arm64@12.8.1': - resolution: {integrity: sha512-/rwavvMQJsl2RIxOHBnDF+4Gk+fhQFAY4M3PQZoKskJOEnaJcygG9p1xby6wcQcbS4d9dIubv09CQhufTgfmpw==} + '@pnpm/exe.darwin-arm64@12.9.1': + resolution: {integrity: sha512-+7iiEEBgYN9szPWUnAuN6eOVMTI6Hrki5bcuC9n9xl9tTnT53Tpxpo45Hml+W4IrAU0d+Tmd0sPnVIbX59PD6w==} cpu: [arm64] os: [darwin] - '@pnpm/exe.darwin-x64@12.8.1': - resolution: {integrity: sha512-htYt2gN7zqJKLhC99Ft6EUiO7myjZAZXfmGCTJUL1v+o7vE9hZdE1+fAkk4Oj1ZHNRti6b2woOxEkRkAusi8OQ==} + '@pnpm/exe.darwin-x64@12.9.1': + resolution: {integrity: sha512-SK7TxJiR12GbJZGffRFHItkc+Mx+99v6xMMJ9/X//8NwWV1wo17a2bwfGI8qZpl17YwsrmPEFOOqhzE1GIlrtQ==} cpu: [x64] os: [darwin] - '@pnpm/exe.freebsd-x64@12.8.1': - resolution: {integrity: sha512-PB5BULNgytxvExoOXUUeseS/DcpPENs+cg3iA6xHHeaLT4ctEGKSGXEbuj7USeqvo8JBpAx039hivnbzGqDwnA==} + '@pnpm/exe.freebsd-x64@12.9.1': + resolution: {integrity: sha512-4AjLk6uvTs2iO6wMit2hcxJ2M32xb7OV5SNFk+w6G8/NzcjcMB7ENEpyeXyLiP0kcnp8uaCGUct2NfrLCJ35eQ==} cpu: [x64] os: [freebsd] - '@pnpm/exe.linux-arm64-musl@12.8.1': - resolution: {integrity: sha512-kKeyC/ArjrgdciQRBrOL0j9HtOI4gDRgoyP+eJ1CQKyadpKlf/DhDDyspXe07R3B9KagTVLUF2nlt6Dr5quFIg==} + '@pnpm/exe.linux-arm64-musl@12.9.1': + resolution: {integrity: sha512-dZL2ES1ckDWM9v+EtxoOklZ0WNdtayooi9iLiDUubopudX3zXPNR2mlrxBRgjbDgECOndQen2SmyxL5eZiBuKw==} cpu: [arm64] os: [linux] libc: [musl] - '@pnpm/exe.linux-arm64@12.8.1': - resolution: {integrity: sha512-q4s9a9X2O3N9aeUFooW24orNrxvu20+jyVUFR5RanPCqOKKPBrgs2iywMkBBx1aXkkzdWT54/mfz8Be8sJlWEw==} + '@pnpm/exe.linux-arm64@12.9.1': + resolution: {integrity: sha512-cx+uF6xqwEtm7B8NV+1ve0xBg9gcuzQZ5R+0WgOWvKG/h978UljS6BgWs1ipIGuGgUdeVhm3PKmBltXIcczLXA==} cpu: [arm64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-ppc64@12.8.1': - resolution: {integrity: sha512-F7XSjKJthwCh/L6abZiMpAfo2Cm61SZIT3e4dfgiIjESndlWaXCnfLKngSgZ/SEMsdmHT6dud3+kWIB3tw0/xQ==} + '@pnpm/exe.linux-ppc64@12.9.1': + resolution: {integrity: sha512-MpjPsy4XR17zAtLziQZfsN+wveWa/bUJggZtwfo3+SuyRmXnSvVkFD4+v8/3RTWyYaM6mwLUTjZDJ+g3urL+ew==} cpu: [ppc64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-riscv64@12.8.1': - resolution: {integrity: sha512-z1ecpIK/ZY08Unk69KWWE9867oaKUytGUjrHnBoGFAAhsK+q+0cfvBH+f5fWobJ7FX97leMlLO+gkJolddM45Q==} + '@pnpm/exe.linux-riscv64@12.9.1': + resolution: {integrity: sha512-Oo67TKqqH+Bno+L6X7Xyorwp1QG82zKIkL0vbo1x2kcPTDiyPbdM+d6lIs4+hzeB1KHT5FDoGzZj2dad7Ft+eg==} cpu: [riscv64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-s390x@12.8.1': - resolution: {integrity: sha512-KU6tnrBfu4uKXTq6N5qJwSm8FSrs9Wc8b5AUEsHK9bRXwNdsZ1/lRxG1++X29SKRW9OSNuDSjxASv5mAvGo1gA==} + '@pnpm/exe.linux-s390x@12.9.1': + resolution: {integrity: sha512-QAD5FRCdW36HfD58BV7DoDm6z8yv+GgSqcUV1+ERwYjpVQuG6ZTpf5o0x3KDas8eTLIW7MLYVdDdlAurWeArEg==} cpu: [s390x] os: [linux] libc: [glibc] - '@pnpm/exe.linux-x64-musl@12.8.1': - resolution: {integrity: sha512-eUE8BWJkDr2tJb/yrk0yVnszlmNqFarVxUlqiZ9BAkct28Nq/5g2H0tvMDmPA7fAQW3STNj+omJPPRVT+4s5sQ==} + '@pnpm/exe.linux-x64-musl@12.9.1': + resolution: {integrity: sha512-mQDhBsGqcTkrLQM4q5igmRFcr6EAl4UM/FGawY+0CWGcqPpUmYUvDy9LHy80xxkHIWVJ886gvvso2XOjfav1Jw==} cpu: [x64] os: [linux] libc: [musl] - '@pnpm/exe.linux-x64@12.8.1': - resolution: {integrity: sha512-8bDZ0lZlCdi2rvnFul7EYgcC7zKeWSe76y8JV2oXobaS8p9i9d6PSf6LgLtTM0fI7R9Oh4eLCbveXyNDMmvZ+g==} + '@pnpm/exe.linux-x64@12.9.1': + resolution: {integrity: sha512-+M5N74hM4fc87AAckxx/UIW+dUnWf2eko+HchJs/NZUxehLhekNyMI/GNaNXlvd+kWR+97XXBD51XRkkNiUtrA==} cpu: [x64] os: [linux] libc: [glibc] - '@pnpm/exe.win32-arm64@12.8.1': - resolution: {integrity: sha512-MsT0dlrRxnCRCHCaosNbhWpEiAFnFuMEu3KuDJDU41BXgTwiINxU8goloUSUDejWZUqKaUqNC/qUTihl9nFtqg==} + '@pnpm/exe.win32-arm64@12.9.1': + resolution: {integrity: sha512-mI28C2wxobrDi6x1OYhBRyG10hnDq/4sEIyy5RzoX6LB4kLuv6K/d25HOpMwlW20cuM4M72k9NZpOdcmUxMbEA==} cpu: [arm64] os: [win32] - '@pnpm/exe.win32-x64@12.8.1': - resolution: {integrity: sha512-SWtPe0PsbTTk//gJND10tMdOfCYjrkq5+qV49hzVhY7xz2iJ339Rc+xwASlcvbwTfrvH39YNqpKYibD+CRGLwA==} + '@pnpm/exe.win32-x64@12.9.1': + resolution: {integrity: sha512-SWoDMT0oD7NrDSIoPpkKD09D9fAQKNjwFZ3lezlCUhAfXxMv70zsfrNT2/P+GoCK2kefXF9OysUZkH1l5vvvfA==} cpu: [x64] os: [win32] - pnpm@12.8.1: - resolution: {integrity: sha512-9kupB1B/XOr+BsjTjmBS0BeURFgOwSed3Vv8EctIqoomRLZlmOB+dh2oSHKp/FfV+QK4f6SdAkGY1VhhKqu+RQ==} + pnpm@12.9.1: + resolution: {integrity: sha512-BrBV//XNINwSeB3hc87TMQzglRvy7GICEaFgRdVETVyTpmMhB2TvKaZTphBFm6A2jw50+E2AxUcjz5Wq57wNbQ==} engines: {node: '>=18.*'} hasBin: true snapshots: - '@pnpm/exe.android-arm64@12.8.1': + '@pnpm/exe.android-arm64@12.9.1': optional: true - '@pnpm/exe.android-x64@12.8.1': + '@pnpm/exe.android-x64@12.9.1': optional: true - '@pnpm/exe.darwin-arm64@12.8.1': + '@pnpm/exe.darwin-arm64@12.9.1': optional: true - '@pnpm/exe.darwin-x64@12.8.1': + '@pnpm/exe.darwin-x64@12.9.1': optional: true - '@pnpm/exe.freebsd-x64@12.8.1': + '@pnpm/exe.freebsd-x64@12.9.1': optional: true - '@pnpm/exe.linux-arm64-musl@12.8.1': + '@pnpm/exe.linux-arm64-musl@12.9.1': optional: true - '@pnpm/exe.linux-arm64@12.8.1': + '@pnpm/exe.linux-arm64@12.9.1': optional: true - '@pnpm/exe.linux-ppc64@12.8.1': + '@pnpm/exe.linux-ppc64@12.9.1': optional: true - '@pnpm/exe.linux-riscv64@12.8.1': + '@pnpm/exe.linux-riscv64@12.9.1': optional: true - '@pnpm/exe.linux-s390x@12.8.1': + '@pnpm/exe.linux-s390x@12.9.1': optional: true - '@pnpm/exe.linux-x64-musl@12.8.1': + '@pnpm/exe.linux-x64-musl@12.9.1': optional: true - '@pnpm/exe.linux-x64@12.8.1': + '@pnpm/exe.linux-x64@12.9.1': optional: true - '@pnpm/exe.win32-arm64@12.8.1': + '@pnpm/exe.win32-arm64@12.9.1': optional: true - '@pnpm/exe.win32-x64@12.8.1': + '@pnpm/exe.win32-x64@12.9.1': optional: true - pnpm@12.8.1: + pnpm@12.9.1: optionalDependencies: - '@pnpm/exe.android-arm64': 12.8.1 - '@pnpm/exe.android-x64': 12.8.1 - '@pnpm/exe.darwin-arm64': 12.8.1 - '@pnpm/exe.darwin-x64': 12.8.1 - '@pnpm/exe.freebsd-x64': 12.8.1 - '@pnpm/exe.linux-arm64': 12.8.1 - '@pnpm/exe.linux-arm64-musl': 12.8.1 - '@pnpm/exe.linux-ppc64': 12.8.1 - '@pnpm/exe.linux-riscv64': 12.8.1 - '@pnpm/exe.linux-s390x': 12.8.1 - '@pnpm/exe.linux-x64': 12.8.1 - '@pnpm/exe.linux-x64-musl': 12.8.1 - '@pnpm/exe.win32-arm64': 12.8.1 - '@pnpm/exe.win32-x64': 12.8.1 + '@pnpm/exe.android-arm64': 12.9.1 + '@pnpm/exe.android-x64': 12.9.1 + '@pnpm/exe.darwin-arm64': 12.9.1 + '@pnpm/exe.darwin-x64': 12.9.1 + '@pnpm/exe.freebsd-x64': 12.9.1 + '@pnpm/exe.linux-arm64': 12.9.1 + '@pnpm/exe.linux-arm64-musl': 12.9.1 + '@pnpm/exe.linux-ppc64': 12.9.1 + '@pnpm/exe.linux-riscv64': 12.9.1 + '@pnpm/exe.linux-s390x': 12.9.1 + '@pnpm/exe.linux-x64': 12.9.1 + '@pnpm/exe.linux-x64-musl': 12.9.1 + '@pnpm/exe.win32-arm64': 12.9.1 + '@pnpm/exe.win32-x64': 12.9.1 --- lockfileVersion: '9.0' diff --git a/mock-api/recoveryMock.js b/mock-api/recoveryMock.js new file mode 100644 index 000000000..a6aeb82b7 --- /dev/null +++ b/mock-api/recoveryMock.js @@ -0,0 +1,214 @@ +// Vite plugin that mocks the EMS-ESP Recovery firmware REST API, used by `pnpm recovery` +// Sign in with admin/admin. Uploading any *.bin >= 512KB "flashes" it into the next OTA partition. +// It starts as if an update in app1 failed to start and the bootloader fell back to the recovery. + +const MIN_FIRMWARE_SIZE = 512 * 1024; +const RESTART_DOWNTIME_MS = 4000; +const TOKEN = 'mock-recovery-token'; +const MB = 1048576; + +const state = { + token: null, + boot: 'boot', + downUntil: 0, + md5: null, + partitions: [ + { + label: 'boot', + factory: true, + address: 0x10000, + size: 0x480000, + valid: true, + image_size: 0.8 * MB, + version: '1.0.0', + install_date: 0, + ota_state: '' + }, + { + label: 'app0', + factory: false, + address: 0x490000, + size: 0x490000, + valid: true, + image_size: 1.86 * MB, + version: '3.8.1', + install_date: 1767225600, + ota_state: 'valid' + }, + { + label: 'app1', + factory: false, + address: 0x920000, + size: 0x490000, + valid: true, + image_size: 1.91 * MB, + version: '3.9.0-dev.16', + install_date: 1790000000, + ota_state: 'aborted' + } + ] +}; + +const failedToStart = (p) => p.ota_state === 'aborted' || p.ota_state === 'invalid'; + +const started = Date.now(); + +// same rule as the firmware: an empty partition, then a failed one, otherwise the oldest install date +const nextUploadTarget = () => { + const ota = state.partitions.filter((p) => !p.factory); + const rank = (p) => (!p.valid ? 0 : failedToStart(p) ? 1 : 2); + return ota.reduce((a, b) => + rank(b) < rank(a) || (rank(b) === rank(a) && b.install_date < a.install_date) + ? b + : a + ).label; +}; + +const status = (authenticated) => ({ + recovery_version: '1.0.0', + authenticated, + hostname: 'ems-esp', + chip: 'ESP32', // a wired E32V2 with a static IP, WiFi is not used + flash_size: 16 * MB, + psram_size: 8 * MB, + free_heap: 245760, + mac: '24:0A:C4:00:00:01', + uptime: Math.floor((Date.now() - started) / 1000), + reason: '', + reset_reason: 'panic', + ap_ssid: 'ems-esp-recovery', + ap_ip: '192.168.4.1', + ap_clients: 1, + wifi_ssid: 'MyHomeWiFi', + wifi_started: false, + wifi_connected: false, + static_ip: true, + eth_state: 'connected', + eth_ip: '192.168.1.50', + running: 'boot', + boot: state.boot, + upload_target: nextUploadTarget(), + partitions: state.partitions +}); + +const readBody = (req) => + new Promise((resolve, reject) => { + const chunks = []; + req.on('data', (c) => chunks.push(c)); + req.on('end', () => resolve(Buffer.concat(chunks))); + req.on('error', reject); + }); + +const send = (res, code, body) => { + res.statusCode = code; + if (body !== undefined) { + res.setHeader('Content-Type', 'application/json'); + res.end(JSON.stringify(body)); + } else { + res.end(); + } +}; + +const isAuthorized = (req) => + state.token && req.headers.authorization === `Bearer ${state.token}`; + +const restart = () => { + state.token = null; + state.downUntil = Date.now() + RESTART_DOWNTIME_MS; +}; + +const uploadedFilename = (body) => { + const match = /filename="([^"]+)"/.exec(body.subarray(0, 1024).toString()); + return match ? match[1] : ''; +}; + +export default function recoveryMock() { + return { + name: 'recovery-mock', + configureServer(server) { + server.middlewares.use(async (req, res, next) => { + const [url, query] = req.url.split('?'); + const params = new URLSearchParams(query ?? ''); + if (!url.startsWith('/rest/')) { + return next(); + } + + if (Date.now() < state.downUntil) { + return send(res, 503); + } + + if (url === '/rest/recovery/status' && req.method === 'GET') { + return send(res, 200, status(!!isAuthorized(req))); + } + + if (url === '/rest/signIn' && req.method === 'POST') { + const { username, password } = JSON.parse( + (await readBody(req)).toString() || '{}' + ); + if (username === 'admin' && password === 'admin') { + state.token = TOKEN; + return send(res, 200, { access_token: TOKEN }); + } + return send(res, 401); + } + + if (!isAuthorized(req)) { + await readBody(req); + return send(res, 401); + } + + if (url === '/rest/recovery/restart' && req.method === 'POST') { + send(res, 200); + return restart(); + } + + if (url === '/rest/recovery/boot' && req.method === 'POST') { + const { partition } = JSON.parse((await readBody(req)).toString() || '{}'); + const p = state.partitions.find((x) => x.label === partition); + if (!p) return send(res, 404); + if (!p.valid) return send(res, 400); + if (!p.factory) p.ota_state = 'new'; + state.boot = partition; + send(res, 200); + return restart(); + } + + if (url === '/rest/uploadFile' && req.method === 'POST') { + const body = await readBody(req); + const filename = uploadedFilename(body); + if (filename.endsWith('.md5')) { + state.md5 = '0123456789abcdef0123456789abcdef'; + return send(res, 200, { md5: state.md5 }); + } + if ( + !filename.endsWith('.bin') || + filename.endsWith('littlefs.bin') || + body.length < MIN_FIRMWARE_SIZE + ) { + return send(res, 406); + } + if (filename.startsWith('EMS-ESP-Recovery')) { + return send(res, 409); + } + const target = state.partitions.find( + (x) => x.label === (params.get('partition') ?? nextUploadTarget()) + ); + if (!target || target.factory) return send(res, 400); + Object.assign(target, { + valid: true, + image_size: body.length, + version: '', + install_date: Math.floor(Date.now() / 1000), + ota_state: 'new' + }); + state.boot = target.label; + const md5_ok = !!state.md5; + state.md5 = null; + return md5_ok ? send(res, 200, { md5_ok }) : send(res, 200); + } + + return send(res, 404); + }); + } + }; +} diff --git a/mock-api/restServer.ts b/mock-api/restServer.ts index c606b951b..ea1fd57c0 100644 --- a/mock-api/restServer.ts +++ b/mock-api/restServer.ts @@ -117,6 +117,7 @@ let system_status = { psram_size: 8189, free_psram: 8166, has_loader: true, + recovery_version: '', // upload an EMS-ESP-Recovery-*.bin to set it has_partition: true, partitions: [ { @@ -4691,6 +4692,15 @@ router return { md5: digest }; } + // the firmware recognises the recovery image by its app description, the mock by its file name + if (fileExtension === 'bin' && fileName.startsWith('EMS-ESP-Recovery')) { + const md5_ok = pendingFirmwareMd5; + pendingFirmwareMd5 = false; + system_status.recovery_version = '1.0.0'; + console.log('Recovery firmware installed'); + return md5_ok ? { recovery: true, md5_ok } : { recovery: true }; + } + if (fileExtension === 'bin' && pendingFirmwareMd5) { pendingFirmwareMd5 = false; console.log('Firmware MD5 matches'); diff --git a/platformio.ini b/platformio.ini index 9fa302349..8a428a492 100644 --- a/platformio.ini +++ b/platformio.ini @@ -73,6 +73,10 @@ board_upload.flash_size = 16MB board_build.app_partition_name = app0 platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.05.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.8 based on IDF 5.5.4.260407 ; platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 +build_flags = + ${common.build_flags} + -D EMSESP_HAS_RECOVERY ; installs and falls back to the recovery firmware in the factory partition + -D OTA_UPDATER_ANY_PARTITION ; so the recovery firmware can be uploaded into the factory partition ; 32MB Flash variants [espressif32_base_32M] @@ -163,12 +167,69 @@ build_flags = ; XIAO ESP32C - 512KB SRAM & 4MB Flash - https://wiki.seeedstudio.com/xiao_esp32c6_getting_started/ [env:c6_xiao_4M] extends = espressif32_base_4M -board_build.app_partition_name = app0 board = seeed_xiao_esp32c6 build_flags = ${common.build_flags} -DEMSESP_EN_ONLY +; Crash test builds for the bootloader rollback and the recovery fallback. Install with the web upload, not over +; serial, since a serial flash boots the recovery. Change EMSESP_CRASH_TEST to pick the test: +; 1 crashes on every start, so the bootloader rolls back to the previous firmware +; 2 runs normally until it's confirmed after 2 minutes, then crashes on every start. After 5 crashes in a row +; it switches to the recovery firmware. Without one it keeps crashing until reflashed over serial +[env:crashtest_s3_16M_P] +extends = env:s3_16M_P +build_flags = + ${espressif32_base_16M.build_flags} + -D EMSESP_CRASH_TEST=1 +custom_fw_name = EMS-ESP-CrashTest + +; EMS-ESP Recovery - a small app for the factory (boot) partition with an access point and a firmware upload page. +; Only for boards with a factory partition (16MB). Sources are in ./recovery, the WebUI is built from ./interface. +; build: pio run -e recovery_s3_16M_P +; flash into the boot partition: pio run -e recovery_s3_16M_P -t upload +; run it from app0 like a normal app instead, add an [env:recovery_s3_16M_P] section to pio_local.ini with custom_app_offset = +; develop the WebUI with a mock: cd interface && pnpm recovery +[recovery_base] +extends = espressif32_base_16M +board_build.app_partition_name = boot +build_src_filter = -<*> +<../recovery/> +build_flags = + ${factory_settings.build_flags} + -std=gnu++20 -Os + -D OTA_UPDATER_ANY_PARTITION + -D CONFIG_ASYNC_TCP_RUNNING_CORE=1 + -D CONFIG_ASYNC_TCP_STACK_SIZE=8192 +build_unflags = + ${common.core_unbuild_flags} +lib_ldf_mode = chain +lib_deps = + bblanchon/ArduinoJson @ 7.4.3 + ESP32Async/AsyncTCP @ 3.5.0 + ESP32Async/ESPAsyncWebServer @ 3.12.1 +extra_scripts = + pre:scripts/build_recovery_interface.py + post:scripts/set_app_desc.py + post:scripts/rename_fw.py + post:scripts/upload_factory.py +upload_protocol = esptool +custom_app_offset = 0x10000 +custom_fw_name = EMS-ESP-Recovery +custom_version_file = recovery/recovery_version.h +custom_version_define = RECOVERY_VERSION + +[env:recovery_s_16M] +extends = recovery_base +board = s_16M + +[env:recovery_s_16M_P] +extends = recovery_base +board = s_16M_P + +[env:recovery_s3_16M_P] +extends = recovery_base +board = s3_16M_P + ; foundation for building and testing natively, standalone without an ESP32 ; use the `standalone` environment instead of `native` for testing [env:native] @@ -199,6 +260,7 @@ build_src_filter = -<../lib/uuid-syslog> -<../lib/eModbus> -<../lib/OneWire> + -<../lib/OtaUpdater> -<../src/core/ModuleLibrary.cpp> lib_ldf_mode = off lib_deps = @@ -242,6 +304,7 @@ build_src_filter = -<../lib/uuid-syslog> -<../lib/eModbus> -<../lib/OneWire> + -<../lib/OtaUpdater> -<../src/core/ModuleLibrary.cpp> lib_ldf_mode = off lib_deps = Unity diff --git a/project-words.txt b/project-words.txt index 15da3c6be..cdc228250 100644 --- a/project-words.txt +++ b/project-words.txt @@ -1351,4 +1351,8 @@ zyxwvutsrqponmlkjihgfedcba öffnen česky živanović -neopixel \ No newline at end of file +neopixel +firmwares +recognises +POWERON +crashtest diff --git a/recovery/main.cpp b/recovery/main.cpp new file mode 100644 index 000000000..5e3870927 --- /dev/null +++ b/recovery/main.cpp @@ -0,0 +1,840 @@ +// EMS-ESP Recovery +// +// Minimal application that lives in the factory ("boot") partition. It brings up a WiFi access point +// and connects to the network with the saved EMS-ESP settings (Ethernet, else WiFi, with the static IP +// if one is set), and serves a cut-down WebUI to upload a new EMS-ESP firmware into the OTA partitions +// or select which OTA partition to boot. +// +// The EMS-ESP settings in LittleFS are only ever read, never written. + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if CONFIG_IDF_TARGET_ESP32 +#include +#endif + +#include +#include +#include +#include + +#include + +#include "WWWData.h" // generated by `pnpm build-recovery` in ./interface +#include "recovery_version.h" + +#ifndef FACTORY_AP_CHANNEL +#define FACTORY_AP_CHANNEL 1 +#endif + +static constexpr size_t MIN_FIRMWARE_SIZE = 512 * 1024; +static constexpr uint32_t RESTART_DELAY_MS = 500; +static constexpr uint32_t ETH_WAIT_MS = 15000; // how long Ethernet gets to obtain an address before WiFi is tried +static constexpr char NVS_NAMESPACE[] = "ems-esp"; +static constexpr char NVS_FRESH_FW[] = "fresh_firmware"; // EMSESP_NVS_BOOT_NEW_FIRMWARE in emsesp.h +static constexpr char NVS_REASON[] = "rec_reason"; // EMSESP_NVS_RECOVERY_REASON in emsesp.h + +#define LOG(...) \ + do { \ + Serial.print("[recovery] "); \ + Serial.printf(__VA_ARGS__); \ + Serial.println(); \ + } while (0) + +struct AdminUser { + String username; + String password; +}; + +struct Settings { + String ap_ssid = FACTORY_AP_SSID; + String ap_password = FACTORY_AP_PASSWORD; + uint8_t ap_channel = FACTORY_AP_CHANNEL; + IPAddress ap_ip; + IPAddress ap_gateway; + IPAddress ap_subnet; + String wifi_ssid = FACTORY_WIFI_SSID; + String wifi_password = FACTORY_WIFI_PASSWORD; + String hostname = FACTORY_NETWORK_HOSTNAME; + bool static_ip = false; + IPAddress local_ip; + IPAddress gateway_ip; + IPAddress subnet_mask; + IPAddress dns_ip_1; + IPAddress dns_ip_2; + bool eth_10mbit = false; + uint8_t phy_type = 0; // PHY_type in src/core/system.h, 0 is no Ethernet + int8_t eth_power = -1; + uint8_t eth_phy_addr = 0; + uint8_t eth_clock_mode = 0; + std::vector admins; +}; + +struct PartitionInfo { + String label; + bool factory; + uint32_t address; + uint32_t size; + bool valid; + uint32_t image_size; + String version; + uint32_t install_date; // UTC epoch, 0 if unknown + String ota_state; // bootloader rollback state, empty if the partition has never been selected +}; + +static AsyncWebServer server(80); +static DNSServer dnsServer; +static Settings settings; +static OtaUpdater ota; + +static std::vector partitions; +static uint32_t restart_at = 0; +static String session_token; +static String ap_ssid; +static String recovery_reason; // set by EMS-ESP when it switched to the recovery +static const char * eth_state = ""; // "", "disabled", "failed" or "started" +static uint32_t wifi_join_at = 0; // when to try WiFi if Ethernet has no address, 0 if not waiting +static bool wifi_started = false; + +static bool ethConnected(); + +// upload state, only one upload at a time +static int upload_error = 0; +static bool upload_done = false; +static String upload_target; + +// ---------------------------------------------------------------------------- +// settings (read-only) +// ---------------------------------------------------------------------------- + +static bool readJsonFile(const char * path, JsonDocument & doc) { + File file = LittleFS.open(path, "r"); + if (!file) { + return false; + } + const DeserializationError error = deserializeJson(doc, file); + file.close(); + if (error) { + LOG("Failed to parse %s: %s", path, error.c_str()); + return false; + } + return true; +} + +static IPAddress parseIP(JsonVariantConst value, const char * fallback) { + IPAddress ip; + if (!ip.fromString(value | fallback)) { + ip.fromString(fallback); + } + return ip; +} + +static void loadSettings() { + // never format the filesystem, it holds the EMS-ESP settings + const bool mounted = LittleFS.begin(false); + LOG("LittleFS %s", mounted ? "mounted" : "not available, using factory settings"); + + JsonDocument doc; + if (mounted && readJsonFile("/config/apSettings.json", doc)) { + settings.ap_ssid = doc["ssid"] | FACTORY_AP_SSID; + settings.ap_password = doc["password"] | FACTORY_AP_PASSWORD; + settings.ap_channel = doc["channel"] | FACTORY_AP_CHANNEL; + } + settings.ap_ip = parseIP(doc["local_ip"], FACTORY_AP_LOCAL_IP); + settings.ap_gateway = parseIP(doc["gateway_ip"], FACTORY_AP_GATEWAY_IP); + settings.ap_subnet = parseIP(doc["subnet_mask"], FACTORY_AP_SUBNET_MASK); + + doc.clear(); + if (mounted && readJsonFile("/config/networkSettings.json", doc)) { + settings.wifi_ssid = doc["ssid"] | FACTORY_WIFI_SSID; + settings.wifi_password = doc["password"] | FACTORY_WIFI_PASSWORD; + settings.hostname = doc["hostname"] | FACTORY_NETWORK_HOSTNAME; + settings.eth_10mbit = doc["eth_10mbit"] | false; + settings.local_ip.fromString(doc["local_ip"] | ""); + settings.gateway_ip.fromString(doc["gateway_ip"] | ""); + settings.subnet_mask.fromString(doc["subnet_mask"] | ""); + settings.dns_ip_1.fromString(doc["dns_ip_1"] | ""); + settings.dns_ip_2.fromString(doc["dns_ip_2"] | ""); + settings.static_ip = (doc["static_ip_config"] | false) && settings.local_ip != IPAddress(); + } + + // the Ethernet PHY settings come from the board profile, stored with the EMS-ESP application settings + doc.clear(); + if (mounted && readJsonFile("/config/emsespSettings.json", doc)) { + settings.phy_type = doc["phy_type"] | 0; + settings.eth_power = doc["eth_power"] | -1; + settings.eth_phy_addr = doc["eth_phy_addr"] | 0; + settings.eth_clock_mode = doc["eth_clock_mode"] | 0; + } + + doc.clear(); + if (mounted && readJsonFile("/config/securitySettings.json", doc)) { + for (JsonObject user : doc["users"].as()) { + if (user["admin"] | false) { + settings.admins.push_back({user["username"] | "", user["password"] | ""}); + } + } + } + if (settings.admins.empty()) { + settings.admins.push_back({FACTORY_ADMIN_USERNAME, FACTORY_ADMIN_PASSWORD}); + } + + if (mounted) { + LittleFS.end(); + } +} + +// ---------------------------------------------------------------------------- +// partitions +// ---------------------------------------------------------------------------- + +static bool openNvs(Preferences & nvs, bool readOnly) { + if (esp_partition_find_first(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_DATA_NVS, "nvs1")) { + return nvs.begin(NVS_NAMESPACE, readOnly, "nvs1"); + } + return nvs.begin(NVS_NAMESPACE, readOnly, "nvs"); +} + +static const char * otaStateName(esp_ota_img_states_t state) { + switch (state) { + case ESP_OTA_IMG_NEW: + return "new"; + case ESP_OTA_IMG_PENDING_VERIFY: + return "pending"; + case ESP_OTA_IMG_VALID: + return "valid"; + case ESP_OTA_IMG_INVALID: + return "invalid"; + case ESP_OTA_IMG_ABORTED: + return "aborted"; + default: + return ""; + } +} + +static const char * resetReasonName(esp_reset_reason_t reason) { + switch (reason) { + case ESP_RST_POWERON: + return "power_on"; + case ESP_RST_EXT: + return "external"; + case ESP_RST_SW: + return "software"; + case ESP_RST_PANIC: + return "panic"; + case ESP_RST_INT_WDT: + case ESP_RST_TASK_WDT: + case ESP_RST_WDT: + return "watchdog"; + case ESP_RST_BROWNOUT: + return "brownout"; + default: + return "other"; + } +} + +// one-shot, so a later restart into the recovery doesn't show a stale reason +static void loadRecoveryReason() { + Preferences nvs; + if (!openNvs(nvs, false)) { + return; + } + if (nvs.isKey(NVS_REASON)) { + recovery_reason = nvs.getString(NVS_REASON); + nvs.remove(NVS_REASON); + } + nvs.end(); +} + +static void loadPartitions() { + partitions.clear(); + + Preferences nvs; + const bool has_nvs = openNvs(nvs, true); + + const esp_partition_t * running = esp_ota_get_running_partition(); + esp_partition_iterator_t it = esp_partition_find(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_ANY, nullptr); + for (; it != nullptr; it = esp_partition_next(it)) { + const esp_partition_t * part = esp_partition_get(it); + + PartitionInfo info; + info.label = part->label; + info.factory = part->subtype == ESP_PARTITION_SUBTYPE_APP_FACTORY; + info.address = part->address; + info.size = part->size; + info.image_size = 0; + info.install_date = 0; + + esp_image_metadata_t meta = {}; + esp_partition_pos_t pos = {.offset = part->address, .size = part->size}; + info.valid = esp_image_verify(ESP_IMAGE_VERIFY_SILENT, &pos, &meta) == ESP_OK; + if (info.valid) { + info.image_size = meta.image_len; + } + + esp_ota_img_states_t state; + if (!info.factory && esp_ota_get_state_partition(part, &state) == ESP_OK) { + info.ota_state = otaStateName(state); + } + + if (part == running) { + info.version = RECOVERY_VERSION; + } else if (info.valid) { + // EMS-ESP stores the version and install date of each partition in NVS, keyed by the label + if (has_nvs && nvs.isKey(part->label)) { + info.version = nvs.getString(part->label); + info.install_date = nvs.getULong(("d_" + info.label).c_str(), 0); + } + esp_app_desc_t desc; + if (info.version.isEmpty() && esp_ota_get_partition_description(part, &desc) == ESP_OK) { + info.version = desc.version; + } + } + + partitions.push_back(info); + } + esp_partition_iterator_release(it); + + if (has_nvs) { + nvs.end(); + } +} + +static const esp_partition_t * findAppPartition(const char * label) { + return esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_ANY, label); +} + +static bool failedToStart(const PartitionInfo & info) { + return info.ota_state == "aborted" || info.ota_state == "invalid"; +} + +// An empty OTA partition if there is one, then one whose firmware failed to start, so a working firmware +// is kept. Otherwise the one with the oldest install date, keeping the most recent firmware as a fallback. +static const esp_partition_t * defaultUploadTarget() { + const PartitionInfo * best = nullptr; + auto rank = [](const PartitionInfo & info) { return !info.valid ? 0 : failedToStart(info) ? 1 : 2; }; + for (const auto & info : partitions) { + if (info.factory) { + continue; + } + if (best == nullptr || rank(info) < rank(*best) || (rank(info) == rank(*best) && info.install_date < best->install_date)) { + best = &info; + } + } + return best ? findAppPartition(best->label.c_str()) : esp_ota_get_next_update_partition(nullptr); +} + +static const esp_partition_t * uploadTarget(AsyncWebServerRequest * request) { + if (!request->hasParam("partition")) { + return defaultUploadTarget(); + } + const esp_partition_t * part = findAppPartition(request->getParam("partition")->value().c_str()); + if (part == nullptr || part->subtype == ESP_PARTITION_SUBTYPE_APP_FACTORY || part == esp_ota_get_running_partition()) { + return nullptr; + } + return part; +} + +// tells EMS-ESP it's running a newly flashed firmware, and drops the now stale version info for that partition +static void markFreshFirmware(const String & label) { + Preferences nvs; + if (!openNvs(nvs, false)) { + return; + } + nvs.putBool(NVS_FRESH_FW, true); + if (!label.isEmpty()) { + nvs.remove(label.c_str()); + nvs.remove(("d_" + label).c_str()); + } + nvs.end(); +} + +// ---------------------------------------------------------------------------- +// authentication +// ---------------------------------------------------------------------------- + +static String generateToken() { + uint8_t bytes[16]; + esp_fill_random(bytes, sizeof(bytes)); + String token; + token.reserve(sizeof(bytes) * 2); + for (uint8_t b : bytes) { + char hex[3]; + snprintf(hex, sizeof(hex), "%02x", b); + token += hex; + } + return token; +} + +static bool isAuthorized(AsyncWebServerRequest * request) { + if (session_token.isEmpty() || !request->hasHeader("Authorization")) { + return false; + } + return request->header("Authorization") == "Bearer " + session_token; +} + +// ---------------------------------------------------------------------------- +// web handlers +// ---------------------------------------------------------------------------- + +class StaticContentHandler : public AsyncWebHandler { + public: + bool canHandle(AsyncWebServerRequest * request) const override { + return request->method() == HTTP_GET || request->method() == HTTP_HEAD; + } + + void handleRequest(AsyncWebServerRequest * request) override { + const WWWAsset * asset = lookup(request->url().c_str()); + if (asset == nullptr) { + asset = lookup("/index.html"); // SPA fallback, also catches captive portal probes + } + if (asset == nullptr) { + request->send(404); + return; + } + + 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); + request->send(response); + } + + private: + 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; + } +}; + +static void handleStatus(AsyncWebServerRequest * request) { + auto * response = new AsyncJsonResponse(); + JsonObject root = response->getRoot().to(); + + root["recovery_version"] = RECOVERY_VERSION; + root["authenticated"] = isAuthorized(request); + root["hostname"] = settings.hostname; + root["chip"] = ESP.getChipModel(); + root["flash_size"] = ESP.getFlashChipSize(); + root["psram_size"] = ESP.getPsramSize(); + root["free_heap"] = ESP.getFreeHeap(); + root["mac"] = WiFi.macAddress(); + root["uptime"] = millis() / 1000; + root["reason"] = recovery_reason; + root["reset_reason"] = resetReasonName(esp_reset_reason()); + root["ap_ssid"] = ap_ssid; + root["ap_ip"] = WiFi.softAPIP().toString(); + root["ap_clients"] = WiFi.softAPgetStationNum(); + root["wifi_ssid"] = settings.wifi_ssid; + root["wifi_connected"] = WiFi.isConnected(); + if (WiFi.isConnected()) { + root["wifi_ip"] = WiFi.localIP().toString(); + root["wifi_rssi"] = WiFi.RSSI(); + } + root["wifi_started"] = wifi_started; + root["static_ip"] = settings.static_ip; + + // only on boards with Ethernet configured + if (eth_state[0] != '\0') { +#if CONFIG_IDF_TARGET_ESP32 + if (ethConnected()) { + root["eth_state"] = "connected"; + root["eth_ip"] = ETH.localIP().toString(); + } else if (strcmp(eth_state, "started") == 0) { + root["eth_state"] = ETH.linkUp() ? "connecting" : "no_link"; + } else +#endif + { + root["eth_state"] = eth_state; + } + } + + const esp_partition_t * boot = esp_ota_get_boot_partition(); + const esp_partition_t * running = esp_ota_get_running_partition(); + const esp_partition_t * target = defaultUploadTarget(); + root["running"] = running ? running->label : ""; + root["boot"] = boot ? boot->label : ""; + root["upload_target"] = target ? target->label : ""; + + JsonArray parts = root["partitions"].to(); + for (const auto & info : partitions) { + JsonObject p = parts.add(); + p["label"] = info.label; + p["factory"] = info.factory; + p["address"] = info.address; + p["size"] = info.size; + p["valid"] = info.valid; + p["image_size"] = info.image_size; + p["version"] = info.version; + p["install_date"] = info.install_date; + p["ota_state"] = info.ota_state; + } + + response->setLength(); + request->send(response); +} + +static void handleSignIn(AsyncWebServerRequest * request, JsonVariant & json) { + const String username = json["username"] | ""; + const String password = json["password"] | ""; + + for (const auto & admin : settings.admins) { + if (admin.username == username && admin.password == password) { + session_token = generateToken(); + + auto * response = new AsyncJsonResponse(); + JsonObject root = response->getRoot().to(); + root["access_token"] = session_token; + response->setLength(); + request->send(response); + LOG("User %s signed in", username.c_str()); + return; + } + } + + LOG("Failed sign in for user %s", username.c_str()); + request->send(401); +} + +static void handleSetBoot(AsyncWebServerRequest * request, JsonVariant & json) { + if (!isAuthorized(request)) { + request->send(401); + return; + } + + const String label = json["partition"] | ""; + const esp_partition_t * part = findAppPartition(label.c_str()); + if (part == nullptr) { + request->send(404); + return; + } + + // esp_ota_set_boot_partition() validates the image first + const esp_err_t err = esp_ota_set_boot_partition(part); + if (err != ESP_OK) { + LOG("Cannot boot from %s: %s", part->label, esp_err_to_name(err)); + request->send(400); + return; + } + + LOG("Next boot from %s, restarting", part->label); + request->send(200); + restart_at = millis() + RESTART_DELAY_MS; +} + +static void handleRestart(AsyncWebServerRequest * request) { + if (!isAuthorized(request)) { + request->send(401); + return; + } + LOG("Restart requested"); + request->send(200); + restart_at = millis() + RESTART_DELAY_MS; +} + +static void uploadFail(AsyncWebServerRequest * request, int code) { + if (upload_error) { + return; + } + upload_error = code; + LOG("Upload error %d", code); + request->send(code); + if (code == 406) { + request->client()->close(); + } +} + +static void handleUpload(AsyncWebServerRequest * request, const String & filename, size_t index, uint8_t * data, size_t len, bool final) { + if (!index) { + upload_error = 0; + upload_done = false; + upload_target.clear(); + + if (!isAuthorized(request)) { + uploadFail(request, 403); + return; + } + + const size_t filesize = request->contentLength(); + switch (OtaUpdater::classify(filename, filesize, MIN_FIRMWARE_SIZE)) { + case OtaUpdater::FileType::FIRMWARE: + break; + case OtaUpdater::FileType::MD5: + if (ota.setMd5(data, len)) { + LOG("MD5 digest received (%s)", ota.md5()); + } else { + uploadFail(request, 406); + } + return; + default: + // the recovery app only flashes firmware, it never touches the settings + ota.clearMd5(); + LOG("Unsupported file %s (%u bytes)", filename.c_str(), static_cast(filesize)); + uploadFail(request, 406); + return; + } + + if (!OtaUpdater::isCompatibleFirmware(data, len)) { + uploadFail(request, 503); + return; + } + if (OtaUpdater::isRecoveryFirmware(data, len)) { + uploadFail(request, 409); + return; + } + + const esp_partition_t * target = uploadTarget(request); + if (target == nullptr) { + uploadFail(request, 400); + return; + } + if (!ota.beginFirmware(filesize, target)) { + LOG("Cannot write to %s: %s", target->label, ota.errorString()); + uploadFail(request, 507); + return; + } + upload_target = target->label; + LOG("Uploading %s (%uKB) to %s%s", filename.c_str(), static_cast(filesize / 1024), target->label, ota.md5Applied() ? ", MD5 check enabled" : ""); + + request->onDisconnect([] { + if (!upload_done && !upload_target.isEmpty()) { + ota.abort(); + } + }); + } + + if (upload_error || upload_target.isEmpty()) { + return; + } + + if (!ota.write(data, len)) { + LOG("Write failed at %u: %s", static_cast(ota.progress()), ota.errorString()); + ota.abort(); + uploadFail(request, 500); + return; + } + + if (final) { + // on success this also makes the new partition the boot partition + if (!ota.end()) { + LOG("Upload failed: %s", ota.errorString()); + uploadFail(request, 500); + return; + } + upload_done = true; + } +} + +static void handleUploadComplete(AsyncWebServerRequest * request) { + if (upload_error) { + return; // response already sent + } + + if (upload_done) { + LOG("Firmware written to %s", upload_target.c_str()); + markFreshFirmware(upload_target); + loadPartitions(); + // treat the new upload as the most recent, so it isn't the default target for the next one + for (auto & info : partitions) { + if (info.label == upload_target) { + info.install_date = UINT32_MAX; + } + } + + if (ota.md5Applied()) { + auto * response = new AsyncJsonResponse(); + JsonObject root = response->getRoot().to(); + root["md5_ok"] = true; + response->setLength(); + request->send(response); + } else { + request->send(200); + } + ota.clearMd5(); + return; + } + + if (ota.hasMd5()) { + auto * response = new AsyncJsonResponse(); + JsonObject root = response->getRoot().to(); + root["md5"] = ota.md5(); + response->setLength(); + request->send(response); + return; + } + + request->send(500); +} + +// ---------------------------------------------------------------------------- +// setup & loop +// ---------------------------------------------------------------------------- + +static void joinWiFi() { + wifi_join_at = 0; + if (settings.wifi_ssid.isEmpty()) { + return; + } + WiFi.mode(WIFI_AP_STA); + if (settings.static_ip) { + WiFi.config(settings.local_ip, settings.gateway_ip, settings.subnet_mask, settings.dns_ip_1, settings.dns_ip_2); + } + WiFi.begin(settings.wifi_ssid.c_str(), settings.wifi_password.c_str()); + wifi_started = true; + LOG("Connecting to WiFi %s%s", settings.wifi_ssid.c_str(), settings.static_ip ? (" with IP " + settings.local_ip.toString()).c_str() : ""); +} + +// same bring-up as Network::startEthernet() in src/core/network.cpp +static bool startEthernet() { +#if CONFIG_IDF_TARGET_ESP32 + if (settings.phy_type == 0) { + return false; + } + const auto clock = static_cast(settings.eth_clock_mode); + if (ESP.getPsramSize() && (clock == ETH_CLOCK_GPIO16_OUT || clock == ETH_CLOCK_GPIO17_OUT)) { + LOG("Ethernet clock mode %d conflicts with PSRAM, Ethernet disabled", settings.eth_clock_mode); + eth_state = "disabled"; + return false; + } + + // reset the PHY, it doesn't always start after a warm boot + if (settings.eth_power != -1) { + pinMode(settings.eth_power, OUTPUT); + digitalWrite(settings.eth_power, LOW); + delay(500); + digitalWrite(settings.eth_power, HIGH); + } + + if (settings.eth_10mbit) { + ETH.setAutoNegotiation(false); + ETH.setLinkSpeed(10); + ETH.setFullDuplex(false); + } + + const eth_phy_type_t type = settings.phy_type == 1 ? ETH_PHY_LAN8720 : settings.phy_type == 2 ? ETH_PHY_TLK110 : ETH_PHY_RTL8201; + if (!ETH.begin(type, settings.eth_phy_addr, 23, 18, settings.eth_power, clock)) { + LOG("Ethernet failed to start, no PHY found"); + eth_state = "failed"; + return false; + } + if (settings.static_ip) { + ETH.config(settings.local_ip, settings.gateway_ip, settings.subnet_mask, settings.dns_ip_1, settings.dns_ip_2); + } + eth_state = "started"; + LOG("Ethernet started%s", settings.static_ip ? (" with IP " + settings.local_ip.toString()).c_str() : ""); + return true; +#else + return false; +#endif +} + +static bool ethConnected() { +#if CONFIG_IDF_TARGET_ESP32 + return strcmp(eth_state, "started") == 0 && ETH.hasIP(); +#else + return false; +#endif +} + +static void startNetwork() { + WiFi.persistent(false); + WiFi.setHostname(settings.hostname.c_str()); // also the default for the Ethernet interface + WiFi.mode(WIFI_AP); + + // max SSID length is 32 + ap_ssid = settings.ap_ssid.substring(0, 23) + "-recovery"; + WiFi.softAPConfig(settings.ap_ip, settings.ap_gateway, settings.ap_subnet); + // WPA2 needs at least 8 characters, otherwise fall back to the factory password + const String & ap_password = settings.ap_password.length() >= 8 ? settings.ap_password : String(FACTORY_AP_PASSWORD); + WiFi.softAP(ap_ssid.c_str(), ap_password.c_str(), settings.ap_channel); + LOG("Access point %s started on %s", ap_ssid.c_str(), WiFi.softAPIP().toString().c_str()); + + // like EMS-ESP, Ethernet first and WiFi only if Ethernet doesn't get an address, as both share a static IP + if (startEthernet()) { + wifi_join_at = millis() + ETH_WAIT_MS; + } else { + joinWiFi(); + } + + dnsServer.start(53, "*", WiFi.softAPIP()); + + if (MDNS.begin(settings.hostname.c_str())) { + MDNS.addService("http", "tcp", 80); + } +} + +static void startWebServer() { + server.on("/rest/recovery/status", HTTP_GET, handleStatus); + server.on("/rest/recovery/restart", HTTP_POST, handleRestart); + server.on("/rest/uploadFile", HTTP_POST, handleUploadComplete, handleUpload); + server.addHandler(new AsyncCallbackJsonWebHandler("/rest/signIn", handleSignIn)); + server.addHandler(new AsyncCallbackJsonWebHandler("/rest/recovery/boot", handleSetBoot)); + server.addHandler(new StaticContentHandler()); // must be last + server.begin(); +} + +void setup() { + Serial.begin(115200); + LOG("EMS-ESP Recovery v%s", RECOVERY_VERSION); + + loadSettings(); + loadRecoveryReason(); + loadPartitions(); + startNetwork(); + startWebServer(); +} + +void loop() { + dnsServer.processNextRequest(); + + static bool was_connected = false; + if (WiFi.isConnected() != was_connected) { + was_connected = WiFi.isConnected(); + if (was_connected) { + LOG("WiFi connected, IP %s", WiFi.localIP().toString().c_str()); + } + } + +#if CONFIG_IDF_TARGET_ESP32 + static bool eth_was_connected = false; + if (ethConnected() != eth_was_connected) { + eth_was_connected = ethConnected(); + if (eth_was_connected) { + LOG("Ethernet connected, IP %s", ETH.localIP().toString().c_str()); + } + } +#endif + + if (wifi_join_at && (int32_t)(millis() - wifi_join_at) >= 0) { + if (ethConnected()) { + wifi_join_at = 0; + } else { + LOG("No Ethernet connection"); + joinWiFi(); + } + } + + if (restart_at && (int32_t)(millis() - restart_at) >= 0) { + ESP.restart(); + } + + delay(10); +} diff --git a/recovery/recovery_version.h b/recovery/recovery_version.h new file mode 100644 index 000000000..3b757c2a0 --- /dev/null +++ b/recovery/recovery_version.h @@ -0,0 +1 @@ +#define RECOVERY_VERSION "1.0.0" diff --git a/scripts/build_recovery_interface.py b/scripts/build_recovery_interface.py new file mode 100644 index 000000000..23a82bdde --- /dev/null +++ b/scripts/build_recovery_interface.py @@ -0,0 +1,59 @@ +# Builds the Recovery WebUI into recovery/WWWData.h when it's missing or older than its sources +from pathlib import Path +import os +import shutil +import subprocess + +Import("env") + +INTERFACE_DIR = Path("interface") +OUTPUT_FILE = Path("recovery") / "WWWData.h" +SOURCES = [ + INTERFACE_DIR / "recovery.html", + INTERFACE_DIR / "vite.config.ts", + INTERFACE_DIR / "progmem-generator.js", + INTERFACE_DIR / "src" / "recovery", + INTERFACE_DIR / "src" / "components", + INTERFACE_DIR / "src" / "CustomTheme.tsx", + INTERFACE_DIR / "public", +] + + +def newest_mtime(paths): + newest = 0.0 + for path in paths: + if path.is_dir(): + for f in path.rglob("*"): + if f.is_file(): + newest = max(newest, f.stat().st_mtime) + elif path.exists(): + newest = max(newest, path.stat().st_mtime) + return newest + + +def is_stale(): + if not OUTPUT_FILE.exists(): + return True + return newest_mtime(SOURCES) > OUTPUT_FILE.stat().st_mtime + + +def build(): + pnpm = next((n for n in ("pnpm", "pnpm.cmd", "pnpm.exe") if shutil.which(n)), None) + if pnpm is None: + print("Error: pnpm not found in PATH, cannot build the Recovery WebUI") + env.Exit(1) + + os.environ["CI"] = "true" + for command in (f"{pnpm} install", f"{pnpm} build-recovery"): + print(f"Running: {command}") + result = subprocess.run(command, shell=True, cwd=INTERFACE_DIR) + if result.returncode != 0: + print(f"Error: '{command}' failed") + env.Exit(1) + + +if is_stale(): + print("Building Recovery WebUI...") + build() +else: + print("Recovery WebUI is up to date") diff --git a/scripts/rename_fw.py b/scripts/rename_fw.py index d63ff2f97..847634433 100755 --- a/scripts/rename_fw.py +++ b/scripts/rename_fw.py @@ -11,14 +11,16 @@ OUTPUT_DIR = Path("build") def bin_copy(source, target, env): """Optimized firmware renaming and copying function.""" - # Get the application version from emsesp_version.h - version_file = Path('./src/emsesp_version.h') + # Get the application version, from emsesp_version.h unless overridden in the env + fw_name = env.GetProjectOption("custom_fw_name", "EMS-ESP") + version_file = Path(env.GetProjectOption("custom_version_file", "./src/emsesp_version.h")) + version_define = env.GetProjectOption("custom_version_define", "EMSESP_APP_VERSION") if not version_file.exists(): - print("Error: emsesp_version.h not found!") + print(f"Error: {version_file} not found!") return app_version = None - version_pattern = re.compile(r'^#define EMSESP_APP_VERSION\s+"(\S+)"') + version_pattern = re.compile(rf'^#define {version_define}\s+"(\S+)"') with version_file.open('r') as f: for line in f: @@ -28,7 +30,7 @@ def bin_copy(source, target, env): break if not app_version: - print("Error: Could not find EMSESP_APP_VERSION in emsesp_version.h!") + print(f"Error: Could not find {version_define} in {version_file}!") return # Get the chip type, in uppercase @@ -61,7 +63,7 @@ def bin_copy(source, target, env): # Convert . to _ so Windows doesn't complain # Format is EMS-ESP--- with + at the end if it has PSRAM - variant = f"EMS-ESP-{app_version.replace('.', '_')}-{mcu}-{flash_mem}{'+' if psram else ''}" + variant = f"{fw_name}-{app_version.replace('.', '_')}-{mcu}-{flash_mem}{'+' if psram else ''}" # Create output directories firmware_dir = OUTPUT_DIR / "firmware" diff --git a/scripts/set_app_desc.py b/scripts/set_app_desc.py new file mode 100644 index 000000000..05ba3f227 --- /dev/null +++ b/scripts/set_app_desc.py @@ -0,0 +1,69 @@ +# Writes the project name (custom_fw_name) and version (custom_version_file/custom_version_define) into the +# esp_app_desc_t of firmware.bin, which the prebuilt Arduino libraries leave empty. The application can then +# identify the image with esp_ota_get_partition_description(), or from the first bytes of an upload. +# Must run before rename_fw.py so the renamed copy and its MD5 include the change. + +import hashlib +import re +import struct +from pathlib import Path + +Import("env") + +IMAGE_HEADER_LEN = 24 +SEGMENT_HEADER_LEN = 8 +APP_DESC_OFFSET = IMAGE_HEADER_LEN + SEGMENT_HEADER_LEN +APP_DESC_MAGIC = 0xABCD5432 +HASH_APPENDED_OFFSET = 23 + + +def read_version(env): + version_file = Path(env.GetProjectOption("custom_version_file", "./src/emsesp_version.h")) + version_define = env.GetProjectOption("custom_version_define", "EMSESP_APP_VERSION") + pattern = re.compile(rf'^#define {version_define}\s+"(\S+)"') + for line in version_file.read_text().splitlines(): + match = pattern.match(line) + if match: + return match.group(1) + raise ValueError(f"{version_define} not found in {version_file}") + + +def put_string(image, offset, value): + encoded = value.encode()[:31] + image[offset:offset + 32] = encoded + b"\0" * (32 - len(encoded)) + + +def set_app_desc(source, target, env): + path = Path(target[0].get_abspath()) + image = bytearray(path.read_bytes()) + + (magic,) = struct.unpack_from(" -#include #include -static String getFilenameExtension(const String & filename) { - const auto pos = filename.lastIndexOf('.'); - if (pos != -1) { - return filename.substring(static_cast(pos) + 1); - } - return {}; -} - -// Accepts a raw 32-char hex digest, optionally with trailing newline or a GNU "hash filename" suffix. -static bool parseMd5Digest(const uint8_t * data, size_t len, std::array & out) { - size_t i = 0; - while (i < len && (data[i] == ' ' || data[i] == '\t' || data[i] == '\r' || data[i] == '\n')) { - ++i; - } - if (len - i < 32) { - return false; - } - for (size_t n = 0; n < 32; n++) { - const char c = static_cast(data[i + n]); - const bool hex = (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'); - if (!hex) { - return false; - } - out[n] = (c >= 'A' && c <= 'F') ? static_cast(c - 'A' + 'a') : c; - } - out[32] = '\0'; - return true; -} - UploadFileService::UploadFileService(AsyncWebServer * server, SecurityManager * securityManager) : _securityManager(securityManager) , _is_firmware(false) , _is_filesystem(false) - , _md5_applied(false) - , _md5() { + , _is_recovery(false) { server->on( UPLOAD_FILE_PATH, HTTP_POST, @@ -60,68 +29,60 @@ void UploadFileService::handleUpload(AsyncWebServerRequest * request, const Stri // at init if (!index) { // check details of the file, to see if its a valid bin or json file - const String extension = getFilenameExtension(filename); - const std::size_t filesize = request->contentLength(); + const std::size_t filesize = request->contentLength(); _is_firmware = false; _is_filesystem = false; + _is_recovery = false; - if (extension == "bin" && filename.endsWith("littlefs.bin")) { - // LittleFS filesystem image + switch (OtaUpdater::classify(filename, filesize, emsesp::System::MIN_FIRMWARE_SIZE)) { + case OtaUpdater::FileType::FILESYSTEM: _is_filesystem = true; - _md5[0] = '\0'; // clear any stale md5 so Update.end() doesn't compare against it - _md5_applied = false; - } else if ((extension == "bin") && (filesize >= emsesp::System::MIN_FIRMWARE_SIZE)) { + _ota.clearMd5(); // clear any stale md5 so Update.end() doesn't compare against it + break; + case OtaUpdater::FileType::FIRMWARE: _is_firmware = true; - } else if (extension == "json") { - _md5[0] = '\0'; // clear md5 - _md5_applied = false; - } else if (extension == "md5") { - if (!parseMd5Digest(data, len, _md5)) { + break; + case OtaUpdater::FileType::JSON: + _ota.clearMd5(); + break; + case OtaUpdater::FileType::MD5: + if (!_ota.setMd5(data, len)) { emsesp::EMSESP::logger().err("Invalid MD5 digest file"); handleError(request, 406); // Not Acceptable } else { - emsesp::EMSESP::logger().info("MD5 digest received (%s). Now upload the firmware BIN", _md5.data()); + emsesp::EMSESP::logger().info("MD5 digest received (%s). Now upload the firmware BIN", _ota.md5()); } return; - } else { - _md5.front() = '\0'; - _md5_applied = false; + default: + _ota.clearMd5(); emsesp::EMSESP::logger().err("Unsupported file type: %s, size: %u", filename.c_str(), filesize); handleError(request, 406); // Not Acceptable - unsupported file type return; } if (_is_firmware) { - // Check firmware header, 0xE9 magic offset 0 indicates esp bin, chip offset 12: esp32:0, S2:2, C3:5 -#if CONFIG_IDF_TARGET_ESP32 // ESP32/PICO-D4 - if (len > 12 && (data[0] != ESP_IMAGE_HEADER_MAGIC || data[12] != ESP_CHIP_ID_ESP32)) { - handleError(request, 503); // service unavailable - return; - } -#elif CONFIG_IDF_TARGET_ESP32S2 - if (len > 12 && (data[0] != ESP_IMAGE_HEADER_MAGIC || data[12] != ESP_CHIP_ID_ESP32S2)) { - handleError(request, 503); // service unavailable - return; - } -#elif CONFIG_IDF_TARGET_ESP32C3 - if (len > 12 && (data[0] != ESP_IMAGE_HEADER_MAGIC || data[12] != ESP_CHIP_ID_ESP32C3)) { - handleError(request, 503); // service unavailable - return; - } -#elif CONFIG_IDF_TARGET_ESP32S3 - if (len > 12 && (data[0] != ESP_IMAGE_HEADER_MAGIC || data[12] != ESP_CHIP_ID_ESP32S3)) { - handleError(request, 503); // service unavailable - return; - } -#elif CONFIG_IDF_TARGET_ESP32C6 - if (len > 12 && (data[0] != ESP_IMAGE_HEADER_MAGIC || data[12] != ESP_CHIP_ID_ESP32C6)) { + if (!OtaUpdater::isCompatibleFirmware(data, len)) { handleError(request, 503); // service unavailable return; } + + const esp_partition_t * target = nullptr; +#ifdef EMSESP_HAS_RECOVERY + if (OtaUpdater::isRecoveryFirmware(data, len)) { + target = esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_APP_FACTORY, nullptr); + if (target == nullptr || target == esp_ota_get_running_partition()) { + emsesp::EMSESP::logger().err("The recovery firmware can't be installed on this board"); + handleError(request, 406); + return; + } + _is_recovery = true; + emsesp::EMSESP::logger().info("Recovery firmware uploading to the %s partition (size: %dKB). Please wait...", target->label, filesize / 1024); + } else #endif - // it's firmware - initialize the ArduinoOTA updater - emsesp::EMSESP::logger().info("Firmware uploading (file %s, size: %dKB). Please wait...", filename.c_str(), filesize / 1024); + { + emsesp::EMSESP::logger().info("Firmware uploading (file %s, size: %dKB). Please wait...", filename.c_str(), filesize / 1024); + } // turn off UART to prevent interference with the upload emsesp::EMSuart::stop(); @@ -129,12 +90,9 @@ void UploadFileService::handleUpload(AsyncWebServerRequest * request, const Stri // tell main loop we're uploading so services as paused (e.g. MQTT) emsesp::EMSESP::system_.systemStatus(emsesp::SYSTEM_STATUS::SYSTEM_STATUS_UPLOADING); - if (Update.begin(filesize - sizeof(esp_image_header_t))) { - _md5_applied = false; - if (strlen(_md5.data()) == _md5.size() - 1) { - Update.setMD5(_md5.data()); - _md5_applied = true; - emsesp::EMSESP::logger().info("Firmware MD5 check enabled (%s)", _md5.data()); + if (_ota.beginFirmware(filesize, target, !_is_recovery)) { + if (_ota.md5Applied()) { + emsesp::EMSESP::logger().info("Firmware MD5 check enabled (%s)", _ota.md5()); } request->onDisconnect([this] { handleDisconnect(); }); // success, let's make sure we end the update if the client hangs up } else { @@ -147,14 +105,10 @@ void UploadFileService::handleUpload(AsyncWebServerRequest * request, const Stri 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())); + if (_ota.beginFilesystem()) { request->onDisconnect([this] { handleDisconnect(); }); } else { - emsesp::EMSESP::logger().err("Update.begin(U_SPIFFS) failed: %s", Update.errorString()); + emsesp::EMSESP::logger().err("Update.begin(U_SPIFFS) failed: %s", _ota.errorString()); handleError(request, 507); return; } @@ -167,17 +121,18 @@ void UploadFileService::handleUpload(AsyncWebServerRequest * request, const Stri if (_is_firmware || _is_filesystem) { if (!request->_tempObject) { //continue with the OTA update - if (Update.write(data, len) != len) { + if (!_ota.write(data, len)) { emsesp::EMSESP::logger().err("OTA update failed at offset %u (chunk %u): %s", - static_cast(Update.progress()), + static_cast(_ota.progress()), static_cast(len), - Update.errorString()); + _ota.errorString()); + _ota.abort(); handleError(request, 500); // internal error, failed return; } if (final) { - if (!Update.end(true)) { - emsesp::EMSESP::logger().err("OTA update failed: %s", Update.errorString()); + if (!_ota.end()) { + emsesp::EMSESP::logger().err("OTA update failed: %s", _ota.errorString()); handleError(request, 500); // internal error, failed return; } @@ -206,21 +161,39 @@ void UploadFileService::uploadComplete(AsyncWebServerRequest * request) { // check if it was a firmware or filesystem image upgrade // if no error, send the success response and request a restart +#ifdef EMSESP_HAS_RECOVERY + if (_is_recovery && !request->_tempObject) { + emsesp::EMSESP::system_.recovery_installed(); + auto * response = new emsesp::PsramAsyncJsonResponse(false); + JsonObject root = response->getRoot(); + root["recovery"] = true; + if (_ota.md5Applied()) { + emsesp::EMSESP::logger().info("Firmware MD5 matches"); + root["md5_ok"] = true; + } + response->setLength(); + request->send(response); + _ota.clearMd5(); + _is_recovery = false; + emsesp::EMSESP::system_.systemStatus(emsesp::SYSTEM_STATUS::SYSTEM_STATUS_NORMAL); // no restart needed + return; + } +#endif + 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); } - if (_is_firmware && _md5_applied) { + if (_is_firmware && _ota.md5Applied()) { emsesp::EMSESP::logger().info("Firmware MD5 matches"); auto * response = new emsesp::PsramAsyncJsonResponse(false); JsonObject root = response->getRoot(); root["md5_ok"] = true; response->setLength(); request->send(response); - _md5.front() = '\0'; - _md5_applied = false; + _ota.clearMd5(); } else { AsyncWebServerResponse * response = request->beginResponse(200); request->send(response); @@ -231,10 +204,10 @@ void UploadFileService::uploadComplete(AsyncWebServerRequest * request) { } // add MD5 to the response - if (strlen(_md5.data()) == _md5.size() - 1) { + if (_ota.hasMd5()) { auto * response = new emsesp::PsramAsyncJsonResponse(false); JsonObject root = response->getRoot(); - root["md5"] = _md5.data(); + root["md5"] = _ota.md5(); response->setLength(); request->send(response); return; @@ -262,7 +235,8 @@ void UploadFileService::handleError(AsyncWebServerRequest * request, int code) { request->client()->close(); _is_firmware = false; _is_filesystem = false; - Update.abort(); + _is_recovery = false; + _ota.abort(); } // if we aborted a filesystem upload, remount LittleFS so the device keeps working @@ -275,6 +249,15 @@ void UploadFileService::handleDisconnect() { emsesp::EMSESP::logger().info("Upload finished"); emsesp::EMSESP::system_.uart_init(); // re-enable UART +#ifdef EMSESP_HAS_RECOVERY + if (_is_recovery) { + // the client hung up before the upload completed + _ota.abort(); + emsesp::EMSESP::system_.systemStatus(emsesp::SYSTEM_STATUS::SYSTEM_STATUS_NORMAL); + } +#endif + _is_firmware = false; _is_filesystem = false; + _is_recovery = false; } diff --git a/src/ESP32React/UploadFileService.h b/src/ESP32React/UploadFileService.h index 9da611c7a..c3249b3c2 100644 --- a/src/ESP32React/UploadFileService.h +++ b/src/ESP32React/UploadFileService.h @@ -6,11 +6,9 @@ #include #include #include -#include +#include #include -#include - #define UPLOAD_FILE_PATH "/rest/uploadFile" #define TEMP_FILENAME_PATH "/pre_load.json" // for uploaded json files, handled by System::check_restore() @@ -20,11 +18,11 @@ class UploadFileService { UploadFileService(AsyncWebServer * server, SecurityManager * securityManager); private: - SecurityManager * _securityManager; - bool _is_firmware; - bool _is_filesystem; - bool _md5_applied; // true if an MD5 digest was applied to the current firmware upload - std::array _md5; + SecurityManager * _securityManager; + bool _is_firmware; + bool _is_filesystem; + bool _is_recovery; // firmware for the factory partition, which doesn't change the boot partition + OtaUpdater _ota; void handleUpload(AsyncWebServerRequest * request, const String & filename, size_t index, uint8_t * data, size_t len, bool final); void uploadComplete(AsyncWebServerRequest * request); diff --git a/src/core/emsesp.cpp b/src/core/emsesp.cpp index e460992f0..5ca642a76 100644 --- a/src/core/emsesp.cpp +++ b/src/core/emsesp.cpp @@ -1895,6 +1895,8 @@ void EMSESP::start() { nvs_.begin("ems-esp", false, "nvs"); #endif + System::check_crash_loop(); + // set valid GPIOs list based on ESP32 chip/platform type system_.set_valid_system_gpios(); diff --git a/src/core/emsesp.h b/src/core/emsesp.h index ac15d7fb5..638a6ad15 100644 --- a/src/core/emsesp.h +++ b/src/core/emsesp.h @@ -116,6 +116,8 @@ class EMSESPShell; class Shower; static constexpr const char * EMSESP_NVS_BOOT_NEW_FIRMWARE = "fresh_firmware"; // max 15 characters +// why EMS-ESP switched to the recovery firmware, read and removed by the recovery app (recovery/main.cpp) +static constexpr const char * EMSESP_NVS_RECOVERY_REASON = "rec_reason"; class EMSESP { public: diff --git a/src/core/main.cpp b/src/core/main.cpp index b7271ee31..72c4cd5af 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -18,12 +18,32 @@ #include "emsesp.h" +#ifdef EMSESP_CRASH_TEST +#include +#endif + using namespace emsesp; static EMSESP application; // the main application +#ifdef EMSESP_CRASH_TEST +// test builds for the bootloader rollback and the recovery fallback, see [env:crashtest_s3_16M_P] in platformio.ini +static void crash_test() { + esp_ota_img_states_t state = ESP_OTA_IMG_UNDEFINED; + esp_ota_get_state_partition(esp_ota_get_running_partition(), &state); + if (EMSESP_CRASH_TEST == 1 || state == ESP_OTA_IMG_VALID) { + Serial.println("Crash test, aborting"); + Serial.flush(); + abort(); + } +} +#endif + void setup() { application.start(); +#ifdef EMSESP_CRASH_TEST + crash_test(); +#endif } void loop() { diff --git a/src/core/system.cpp b/src/core/system.cpp index 3c65f7c82..28e1fb112 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -27,6 +27,7 @@ #include #include "esp_efuse.h" #include +#include #endif #include @@ -43,10 +44,24 @@ #define ENABLE_SMTP #include #include +#include + +// Keeps new firmware in the bootloader's pending verification state until System::check_firmware_health() +// confirms it, so a crash or restart before then rolls back to the previous image +extern "C" bool verifyRollbackLater() { + return true; +} #endif namespace emsesp { +#ifndef EMSESP_STANDALONE +// survives restarts, panics and watchdog resets but not a power cycle, hence the magic +static constexpr uint32_t CRASH_COUNT_MAGIC = 0x43524153; +RTC_NOINIT_ATTR static uint32_t crash_count_magic_; +RTC_NOINIT_ATTR static uint32_t crash_count_; +#endif + // Languages supported. Note: the order is important // and must match locale_translations.h and common.h #if defined(EMSESP_TEST) @@ -517,6 +532,10 @@ void System::get_partition_info() { } } +#ifdef EMSESP_HAS_RECOVERY + // the recovery firmware is shown separately + is_valid = is_valid && !OtaUpdater::isRecoveryPartition(part); +#endif // get the version from the NVS store, and add to map if (is_valid) { PartitionInfo p_info; @@ -547,6 +566,31 @@ void System::get_partition_info() { #endif } +void System::recovery_installed() { +#ifdef EMSESP_HAS_RECOVERY + // drop the version info of an EMS-ESP firmware that was in the factory partition before + const esp_partition_t * factory = esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_APP_FACTORY, nullptr); + if (factory != nullptr) { + char c[20]; + snprintf(c, sizeof(c), "d_%s", factory->label); + EMSESP::nvs_.remove(factory->label); + EMSESP::nvs_.remove(c); + partition_info_.erase(factory->label); // on the AsyncTCP task, same as the web handlers reading it + } + LOG_INFO("Recovery firmware v%s installed", recovery_version().c_str()); +#endif +} + +std::string System::recovery_version() const { +#ifdef EMSESP_HAS_RECOVERY + esp_app_desc_t desc; + if (OtaUpdater::isRecoveryPartition(esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_APP_FACTORY, nullptr), &desc)) { + return desc.version; + } +#endif + return ""; +} + // set install time/date for the current partition, in UTC // assumes NTP is connected and working void System::set_partition_install_date() { @@ -610,7 +654,13 @@ void System::system_restart(const char * partitionname) { // Factory partition - label will be "factory" const esp_partition_t * partition = esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_APP_FACTORY, NULL); if (partition && !strcmp(partition->label, partitionname)) { +#ifdef EMSESP_HAS_RECOVERY + if (esp_ota_set_boot_partition(partition) == ESP_OK) { + EMSESP::nvs_.putString(EMSESP_NVS_RECOVERY_REASON, "request"); + } +#else esp_ota_set_boot_partition(partition); +#endif } else // try and find the partition by name if (strcmp(esp_ota_get_running_partition()->label, partitionname)) { @@ -762,11 +812,74 @@ void System::store_settings(WebSettings & settings) { auto_fw_check_ = settings.auto_fw_check; } +// counts consecutive crashes and falls back to the recovery firmware in the factory partition (16MB boards) +void System::check_crash_loop() { +#ifndef EMSESP_STANDALONE + if (crash_count_magic_ != CRASH_COUNT_MAGIC) { + crash_count_magic_ = CRASH_COUNT_MAGIC; + crash_count_ = 0; + } + + switch (esp_reset_reason()) { + case ESP_RST_PANIC: + case ESP_RST_INT_WDT: + case ESP_RST_TASK_WDT: + case ESP_RST_WDT: + crash_count_++; + break; + default: + crash_count_ = 0; + return; + } + +#ifdef EMSESP_HAS_RECOVERY + if (crash_count_ < CRASH_LOOP_LIMIT) { + return; + } + + const esp_partition_t * factory = esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_APP_FACTORY, nullptr); + if (factory == nullptr || factory == esp_ota_get_running_partition()) { + return; + } + // fails if the factory partition doesn't hold a valid image, then keep trying the current one + if (esp_ota_set_boot_partition(factory) == ESP_OK) { + crash_count_ = 0; + EMSESP::nvs_.putString(EMSESP_NVS_RECOVERY_REASON, "crash"); + Serial.printf("Crashed %d times in a row, restarting into the %s partition\n", CRASH_LOOP_LIMIT, factory->label); + Serial.flush(); + esp_restart(); + } +#endif +#endif +} + +// once the firmware has run long enough, confirm it to the bootloader so it isn't rolled back +void System::check_firmware_health() { +#ifndef EMSESP_STANDALONE + if (firmware_healthy_ || uuid::get_uptime_sec() < FIRMWARE_HEALTHY_UPTIME) { + return; + } + firmware_healthy_ = true; + crash_count_ = 0; + if (OtaUpdater::confirmRunningApp()) { + LOG_INFO("New firmware confirmed as working"); + } +#endif +} + // Starts up core services void System::start() { get_partition_info(); // get the partition info #ifndef EMSESP_STANDALONE + if (crash_count_) { + LOG_WARNING("Restarted after a crash (%u in a row)", crash_count_); + } + const esp_partition_t * invalid = esp_ota_get_last_invalid_partition(); + if (invalid != nullptr) { + LOG_WARNING("Firmware in partition %s failed to start and was rolled back", invalid->label); + } + // disable bluetooth module // periph_module_disable(PERIPH_BT_MODULE); if (low_clock_) { @@ -1028,6 +1141,8 @@ void System::system_check() { if (!last_system_check_ || ((uint32_t)(current_uptime - last_system_check_) >= SYSTEM_CHECK_FREQUENCY)) { last_system_check_ = current_uptime; + check_firmware_health(); + #ifndef EMSESP_STANDALONE #if CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32S2 temperature_sensor_get_celsius(temperature_handle_, &temperature_); @@ -3346,6 +3461,8 @@ bool System::uploadFirmwareURL(const char * url) { return false; // error } + OtaUpdater::confirmRunningApp(); + // check we have enough space for the upload in the ota partition if (!Update.begin(firmware_size)) { LOG_ERROR("Firmware upload failed - no space"); diff --git a/src/core/system.h b/src/core/system.h index 66b1c8fc0..0793ba7cb 100644 --- a/src/core/system.h +++ b/src/core/system.h @@ -81,6 +81,11 @@ class System { void start(); bool loop(); // returns true if the LED flash is active + static void check_crash_loop(); // call at boot once NVS is open, may restart into the factory partition + + void recovery_installed(); // called on the AsyncTCP task after the recovery firmware was written + std::string recovery_version() const; // empty if there's no recovery firmware + // commands static bool command_read(const char * value, const int8_t id); static bool command_send(const char * value, const int8_t id); @@ -385,6 +390,14 @@ class System { void set_partition_install_date(); + // firmware is confirmed to the bootloader and the crash counter cleared once it has been up this long + static constexpr uint32_t FIRMWARE_HEALTHY_UPTIME = 120; // seconds + // consecutive crashes before falling back to the recovery firmware in the factory partition + static constexpr uint8_t CRASH_LOOP_LIMIT = 5; + + bool firmware_healthy_ = false; + void check_firmware_health(); + // button static PButton myPButton_; // PButton instance static void button_OnClick(PButton & b); diff --git a/src/web/WebStatusService.cpp b/src/web/WebStatusService.cpp index 642d84a52..fbc9f4874 100644 --- a/src/web/WebStatusService.cpp +++ b/src/web/WebStatusService.cpp @@ -137,6 +137,9 @@ void WebStatusService::systemStatus(AsyncWebServerRequest * request) { // check for a factory partition first const esp_partition_t * partition = esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_APP_FACTORY, nullptr); root["has_loader"] = partition != NULL && partition != esp_ota_get_running_partition(); + if (partition != NULL) { + root["recovery_version"] = EMSESP::system_.recovery_version(); // empty if not installed + } partition = esp_ota_get_next_update_partition(nullptr); if (partition) { uint64_t buffer; -- 2.54.0 From 965d93661abd8aaccf6ea4ba21731628bf26891b Mon Sep 17 00:00:00 2001 From: proddy Date: Wed, 7 Oct 2026 23:00:14 +0200 Subject: [PATCH 041/148] crashmode --- docs/Recovery-Testing.md | 29 +- docs/Recovery.md | 104 ++++++ interface/package.json | 2 +- interface/pnpm-lock.yaml | 42 +-- interface/src/app/main/UserProfile.tsx | 2 + .../src/app/settings/ApplicationSettings.tsx | 2 + interface/src/app/settings/Version.tsx | 333 +++++++++++------- interface/src/types/system.ts | 1 - lib/OtaUpdater/OtaUpdater.cpp | 104 ++++-- lib/OtaUpdater/OtaUpdater.h | 18 +- mock-api/restServer.ts | 46 +-- platformio.ini | 4 +- scripts/do_fresh_install.sh | 60 +++- src/ESP32React/UploadFileService.cpp | 48 ++- src/ESP32React/UploadFileService.h | 1 + src/core/system.cpp | 65 +++- src/core/system.h | 3 +- src/emsesp_version.h | 2 +- src/web/WebStatusService.cpp | 7 +- 19 files changed, 600 insertions(+), 273 deletions(-) create mode 100644 docs/Recovery.md diff --git a/docs/Recovery-Testing.md b/docs/Recovery-Testing.md index 2177451a5..7400c0686 100644 --- a/docs/Recovery-Testing.md +++ b/docs/Recovery-Testing.md @@ -8,24 +8,23 @@ This guide covers testing on hardware of: - the fallback to the recovery after repeated crashes; - Ethernet and static IP support in the recovery. -It's written for an ESP32-S3 16MB board, since the crash test build is only defined for `s3_16M_P`. Ethernet testing needs an E32V2. Keep a USB serial cable connected with a serial monitor open throughout, as most of the checks are log lines. +It's written for an ESP32 16MB board with PSRAM (`s_16M_P`, e.g. a BBQKees E32V2). Other 16MB boards (`s_16M`, `s3_16M_P`) follow the same steps with their matching PlatformIO envs; Ethernet is E32V2 only. Keep a USB serial cable connected with a serial monitor open throughout, as most of the checks are log lines. ## 0. Preparation Build everything: ```bash -pio run -e s3_16M_P -e crashtest_s3_16M_P -e recovery_s3_16M_P -pio run -e s_16M -e s_16M_P -e s_4M -e recovery_s_16M -e recovery_s_16M_P +pio run -e s_16M_P -e crashtest_s_16M_P -e recovery_s_16M_P ``` The firmware files are written to `build/firmware/`: | File | What it is | | --- | --- | -| `EMS-ESP--ESP32S3-16MB+.bin` | EMS-ESP | -| `EMS-ESP-CrashTest--ESP32S3-16MB+.bin` | crash test build | -| `EMS-ESP-Recovery--ESP32S3-16MB+.bin` | the recovery | +| `EMS-ESP--ESP32-16MB+.bin` | EMS-ESP | +| `EMS-ESP-CrashTest--ESP32-16MB+.bin` | crash test build | +| `EMS-ESP-Recovery--ESP32-16MB+.bin` | the recovery | Each has a matching `.md5` file. @@ -33,13 +32,13 @@ Then: 1. Run the unit tests with `pio run -e native-test -t exec`. All tests should pass. 2. Optionally, check the recovery UI against mock data first: `cd interface && pnpm recovery`, then open . -3. Open the serial monitor with `pio device monitor -e s3_16M_P`. Recovery log lines start with `[recovery]`. +3. Open the serial monitor with `pio device monitor -e s_16M_P`. Recovery log lines start with `[recovery]`. The crash counter is kept in RTC memory. It survives crashes and software restarts but not a power cycle, so don't unplug the board during the crash tests. ## 1. Baseline: EMS-ESP over serial, no recovery -1. Flash with `pio run -e s3_16M_P -t upload`. This also writes the current bootloader, which has rollback enabled. Boards flashed with an older bootloader don't roll back until they've been flashed over serial once. +1. Flash with `pio run -e s_16M_P -t upload`. This also writes the current bootloader, which has rollback enabled. Boards flashed with an older bootloader don't roll back until they've been flashed over serial once. 2. In the WebUI, open **Settings → Version**. Check that: - the **Recovery** row shows "not installed"; - the firmware partition list doesn't include `boot`. @@ -54,7 +53,7 @@ The crash counter is kept in RTC memory. It survives crashes and software restar - the install logged. 2. Repeat, uploading the `.md5` first and then the `.bin`. The MD5 check should pass. 3. Negative tests: - - Upload the recovery built for another chip, e.g. the ESP32 file on an S3. It should be rejected, and nothing should be written. + - Upload the recovery built for another chip, e.g. the ESP32-S3 file on this ESP32. It should be rejected, and nothing should be written. - Start a recovery upload and close the browser tab halfway through. EMS-ESP should keep running and the Recovery row should show "not installed". Reinstall it properly afterwards. 4. Restart EMS-ESP normally. It should boot EMS-ESP again, not the recovery, because installing the recovery doesn't change the boot partition. @@ -67,14 +66,14 @@ The crash counter is kept in RTC memory. It survives crashes and software restar - `[recovery] EMS-ESP Recovery v…` is logged; - LittleFS is mounted; - the access point has started; - - WiFi connects. + - Ethernet or WiFi connects. 3. Join the access point. Its name is the AP SSID plus `-recovery` (default `ems-esp-recovery`), and it uses the AP password (default `ems-esp-neo`). Open ; a captive portal page may open by itself. Alternatively, use the device's normal IP or `http://.local` from the LAN. 4. Sign in with an EMS-ESP admin account (default `admin`/`admin`). A non-admin user must be refused. 5. On the dashboard, check that: - there's **no** red reason box, because the restart was requested; - `Recovery (boot)` has the "running" chip; - the installed firmware shows the correct version; - - the System section shows the chip, flash, MAC, access point, and WiFi with its IP. + - the System section shows the chip, flash, MAC, access point, and the active network (Ethernet or WiFi) with its IP. 6. Click **Restart**. It should come back into the recovery, still without a reason box, since the reason is only shown once. 7. Click **Start** on the EMS-ESP slot. EMS-ESP should boot, and the Version page should still show the recovery version. @@ -114,7 +113,7 @@ If step 3 ends in a crash loop instead of a rollback, the bootloader on the boar ## 6. Crash-loop fallback to the recovery (crash test mode 2) -1. In `platformio.ini`, change `-D EMSESP_CRASH_TEST=1` to `=2`, then run `pio run -e crashtest_s3_16M_P`. +1. In `platformio.ini`, change `-D EMSESP_CRASH_TEST=1` to `=2`, then run `pio run -e crashtest_s_16M_P`. 2. Upload the crash test build from the WebUI. It runs normally. 3. Wait for "New firmware confirmed as working", about 2 minutes after boot. 4. Restart it from the WebUI. It should crash 5 times in a row, logging the "N in a row" count each time. @@ -128,7 +127,7 @@ If step 3 ends in a crash loop instead of a rollback, the bootloader on the boar Optional, without a recovery installed: -1. Erase the boot partition with `esptool --chip esp32s3 erase-region 0x10000 0x480000`. Older esptool versions use `erase_region`. +1. Erase the boot partition with `esptool --chip esp32 erase-region 0x10000 0x480000`. Older esptool versions use `erase_region`. 2. Repeat steps 2 to 4. It should keep crashing past 5, and needs to be reflashed over serial. ## 7. Network in the recovery @@ -136,7 +135,7 @@ Optional, without a recovery installed: | Test | Setup | Expected in the recovery | | --- | --- | --- | | WiFi with static IP | Enable a static IP in the EMS-ESP Network settings, then `restart boot` | Same IP as EMS-ESP, and the WiFi row ends with ", static IP" | -| Ethernet (E32V2) | Cable plugged in, `recovery_s_16M_P` installed, then `restart boot` | Log shows "Ethernet started" and "Ethernet connected, IP …". The Ethernet row shows "connected", and WiFi shows "not used, Ethernet is connected" | +| Ethernet | Cable plugged in, then `restart boot` | Log shows "Ethernet started" and "Ethernet connected, IP …". The Ethernet row shows "connected", and WiFi shows "not used, Ethernet is connected" | | Ethernet with static IP | As above, with a static IP set | Ethernet uses the static IP and WiFi isn't started | | No cable | Unplugged, then `restart boot` | Ethernet shows "no cable connected" and WiFi shows "waiting for Ethernet". After about 15 seconds the log shows "No Ethernet connection" and WiFi connects | | Cable plugged in later | Plug in after WiFi has joined | Ethernet gets an IP as well, and WiFi stays connected | @@ -153,4 +152,4 @@ Optional, without a recovery installed: ## Reset to a clean state -`pio run -e s3_16M_P -t upload` restores EMS-ESP at any point. It leaves the recovery in `boot` and the settings untouched. +`pio run -e s_16M_P -t upload` restores EMS-ESP at any point. It leaves the recovery in `boot` and the settings untouched. diff --git a/docs/Recovery.md b/docs/Recovery.md new file mode 100644 index 000000000..603c06030 --- /dev/null +++ b/docs/Recovery.md @@ -0,0 +1,104 @@ +# EMS-ESP Recovery Firmware + +Small standalone app that lives in the factory (`boot`) partition on **16MB** boards. If EMS-ESP will not start, the recovery still can: it brings up an access point (and the saved WiFi/Ethernet if it can) and serves a cut-down WebUI to upload a new EMS-ESP image into `app0`/`app1` or choose which slot to boot. + +4MB boards have no factory partition and no recovery. + +Hardware test steps are in [Recovery-Testing.md](Recovery-Testing.md). + +## Why it exists + +ESP-IDF already rolls a failed OTA back to the **other** OTA slot (`app0` ↔ `app1`). That does not help when: + +- both OTA slots are empty, corrupt, or crash on start +- a serial flash left otadata pointing at an empty slot +- the user needs a known-good way back in without a USB cable + +Recovery is a third, smaller image that EMS-ESP does not overwrite during a normal upgrade. Installing it does **not** change which app boots. + +## Partitions (16MB) + +From `partitions/esp32_partition_16M.csv`: + +| Label | Subtype | Role | +| --- | --- | --- | +| `boot` | factory | Recovery image | +| `app0` | ota_0 | EMS-ESP | +| `app1` | ota_1 | EMS-ESP (the other OTA slot) | +| `otadata` | ota | Which OTA slot the bootloader starts | + +The bootloader reads **otadata**, not “whatever was flashed last”: + +1. Blank otadata (`0xFF`, e.g. after `erase-flash` or a recovery serial upload) → start **factory** (`boot`). +2. Valid otadata → start that OTA slot (`app0` or `app1`). +3. If that image is invalid, it walks **down** toward factory, then **up** through remaining OTA slots. A valid recovery in `boot` is therefore preferred over a valid image sitting only in `app1` while otadata still points at empty `app0`. + +PlatformIO’s `boot_app0.bin` always selects `app0`. The recovery upload script (`scripts/upload_factory.py`) replaces it with a blank otadata so a serial flash of recovery actually boots recovery. + +A normal serial flash of EMS-ESP goes to `app0` and writes `boot_app0.bin`, so the board starts EMS-ESP. Recovery, if already in `boot`, is left in place. + +## How recovery is installed + +From a running EMS-ESP (**Settings → Version**, or the upload drop zone): + +- Drop `EMS-ESP-Recovery-*.bin` (optional `.md5` first). +- EMS-ESP recognises it from the app description (`project_name` = `EMS-ESP-Recovery`) and writes it to the factory partition **without** calling `esp_ota_set_boot_partition`. +- EMS-ESP keeps running. The Version page shows the recovery version once it is in flash. + +From serial, recovery must be written at **`0x10000`**, not at `0x1000` (that is the bootloader; the recovery `.bin` overlaps the partition table). See `scripts/do_fresh_install.sh`. + +The recovery app itself **refuses** to install a recovery image. It only writes EMS-ESP into `app0`/`app1`. + +## How EMS-ESP boots into recovery + +Only 16MB builds with `-DEMSESP_HAS_RECOVERY` and a valid recovery image in `boot`. + +| How | What happens | +| --- | --- | +| **Settings → Version** | Developer mode shows a Recovery row. If a version is installed, **Restart** confirms, then `setPartition("boot")`. | +| **Console** (serial or telnet, admin) | `restart boot` → `system_restart("boot")`. | +| **Button** | Long press ~3 s (not the ~10 s factory reset). | +| **Crash loop** | 5 panics or watchdog resets in a row (RTC counter; survives software restart, not a power cycle). | + +The first three record NVS `rec_reason=request`. The crash path records `crash`. Recovery reads that once and clears it, so a user-requested entry does not show the red crash banner. + +These do **not** enter recovery: + +- Uploading the recovery `.bin` (install only). +- `/api/system/restart` or MQTT `system/restart` (ignore any partition argument; reboot the current app). +- Bootloader rollback of a pending OTA (goes to the previous **OTA** slot). + +## What recovery does + +- Access point `ems-esp-recovery` (AP SSID plus `-recovery`), plus the saved LAN (Ethernet preferred, else WiFi, including a static IP if one is set). +- Sign-in with an EMS-ESP admin account (settings are read from LittleFS, never written). +- List `boot` / `app0` / `app1`, show which is running, which will boot next, and rollback state. +- Upload an EMS-ESP `.bin` into an OTA slot (empty slot, or the older of the two if both are filled) and boot it. +- **Start** a chosen OTA slot without uploading. + +After a WebUI/OTA install from recovery, the new EMS-ESP image is pending verification. After ~2 minutes of uptime it is confirmed so the bootloader will not roll it back. + +## Rough boot flow + +``` +reset + → ESP-IDF bootloader + otadata blank? → factory/boot (recovery) + otadata → app0/1 → that slot if the image is valid + selected image bad → try factory, then the other OTA slot + → recovery or EMS-ESP + +EMS-ESP, if it starts: + crash counter (RTC) + 5 crashes in a row + recovery present → set boot=factory, restart + healthy for 2 minutes → confirm OTA image, clear crash counter +``` + +## Builds + +| Env | Image | +| --- | --- | +| `recovery_s_16M` / `recovery_s_16M_P` / `recovery_s3_16M_P` | Recovery, flashed into `boot` at `0x10000` | +| `s_16M` / `s_16M_P` / `s3_16M_P` | EMS-ESP (`app0` on serial upload) | + +Firmware files land in `build/firmware/` as `EMS-ESP-Recovery---16MB[+].bin`. diff --git a/interface/package.json b/interface/package.json index ce0e5cd1d..475b26bc0 100644 --- a/interface/package.json +++ b/interface/package.json @@ -57,7 +57,7 @@ "terser": "^5.51.2", "typescript": "^6.0.3", "typescript-eslint": "^8.71.1", - "vite": "^8.3.2", + "vite": "^8.3.3", "vite-plugin-imagemin": "^0.6.1" }, "packageManager": "pnpm@12.9.1" diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index eab249366..94b15bac3 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -214,7 +214,7 @@ importers: version: 10.0.1(eslint@10.12.0(supports-color@10.2.2)) '@preact/preset-vite': specifier: ^2.10.6 - version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.2(@types/node@26.6.4)(terser@5.51.2)) + version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 version: 6.0.2(prettier@3.9.9)(supports-color@10.2.2) @@ -258,11 +258,11 @@ importers: specifier: ^8.71.1 version: 8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) vite: - specifier: ^8.3.2 - version: 8.3.2(@types/node@26.6.4)(terser@5.51.2) + specifier: ^8.3.3 + version: 8.3.3(@types/node@26.6.4)(terser@5.51.2) vite-plugin-imagemin: specifier: ^0.6.1 - version: 0.6.1(supports-color@10.2.2)(vite@8.3.2(@types/node@26.6.4)(terser@5.51.2)) + version: 0.6.1(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)) packages: @@ -1338,8 +1338,8 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.444: - resolution: {integrity: sha512-5ss/uJfoDYDHT0lfJzT6FbcskIzROIOPf0BbbFkGcvDzoJU7i//9GDrwwIHQVmIsrAGiF3ihpADBRIsrEFt1rQ==} + electron-to-chromium@1.5.445: + resolution: {integrity: sha512-iX7o1nF+qNb3Bv5mLYgqfgF9Znh9e/8MKXdmbb8Gv2Q47OKIzTwEPD1oda1HrgEwYatTLJj0wQjHvIFt8Db53Q==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -3057,8 +3057,8 @@ packages: peerDependencies: vite: 5.x || 6.x || 7.x || 8.x - vite@8.3.2: - resolution: {integrity: sha512-SQr1x6W5vVSbROg7vsyXIaxK9b0G7zsT68acdWWRmnBUsgDieLCRG+Rep9WdZgcposvv/GSnr4GUUBqB3vXq6w==} + vite@8.3.3: + resolution: {integrity: sha512-cTAldKPImjg6c+gk48U19POPn3GCBzZwpdsN8ZMEEcbpes+6/wvfqUd0C2y3qYY4wsj8PwgFwrZ/1jBPVttMSg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -3591,19 +3591,19 @@ snapshots: '@popperjs/core@2.11.8': {} - '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.2(@types/node@26.6.4)(terser@5.51.2))': + '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@prefresh/vite': 2.4.12(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.2(@types/node@26.6.4)(terser@5.51.2)) + '@prefresh/vite': 2.4.12(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)) '@rollup/pluginutils': 5.4.0 babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.7(supports-color@10.2.2)) debug: 4.4.3(supports-color@10.2.2) magic-string: 0.30.21 picocolors: 1.1.1 - vite: 8.3.2(@types/node@26.6.4)(terser@5.51.2) - vite-prerender-plugin: 0.5.14(vite@8.3.2(@types/node@26.6.4)(terser@5.51.2)) + vite: 8.3.3(@types/node@26.6.4)(terser@5.51.2) + vite-prerender-plugin: 0.5.14(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)) zimmerframe: 1.1.5 transitivePeerDependencies: - preact @@ -3620,7 +3620,7 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.12(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.2(@types/node@26.6.4)(terser@5.51.2))': + '@prefresh/vite@2.4.12(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@prefresh/babel-plugin': 0.5.4(@babel/core@7.29.7(supports-color@10.2.2)) @@ -3628,7 +3628,7 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 11.0.0 - vite: 8.3.2(@types/node@26.6.4)(terser@5.51.2) + vite: 8.3.3(@types/node@26.6.4)(terser@5.51.2) transitivePeerDependencies: - supports-color @@ -4005,7 +4005,7 @@ snapshots: dependencies: baseline-browser-mapping: 2.11.27 caniuse-lite: 1.0.30001814 - electron-to-chromium: 1.5.444 + electron-to-chromium: 1.5.445 node-releases: 2.0.57 update-browserslist-db: 1.3.3(browserslist@4.29.3) @@ -4370,7 +4370,7 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.444: {} + electron-to-chromium@1.5.445: {} emoji-regex@10.6.0: {} @@ -5982,7 +5982,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-imagemin@0.6.1(supports-color@10.2.2)(vite@8.3.2(@types/node@26.6.4)(terser@5.51.2)): + vite-plugin-imagemin@0.6.1(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)): dependencies: '@types/imagemin': 7.0.1 '@types/imagemin-gifsicle': 7.0.4 @@ -6007,11 +6007,11 @@ snapshots: imagemin-webp: 6.1.0 jpegtran-bin: 6.0.1 pathe: 0.2.0 - vite: 8.3.2(@types/node@26.6.4)(terser@5.51.2) + vite: 8.3.3(@types/node@26.6.4)(terser@5.51.2) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.14(vite@8.3.2(@types/node@26.6.4)(terser@5.51.2)): + vite-prerender-plugin@0.5.14(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -6019,9 +6019,9 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0 - vite: 8.3.2(@types/node@26.6.4)(terser@5.51.2) + vite: 8.3.3(@types/node@26.6.4)(terser@5.51.2) - vite@8.3.2(@types/node@26.6.4)(terser@5.51.2): + vite@8.3.3(@types/node@26.6.4)(terser@5.51.2): dependencies: lightningcss: 1.33.0 picomatch: 4.0.7 diff --git a/interface/src/app/main/UserProfile.tsx b/interface/src/app/main/UserProfile.tsx index ebcae0be3..bad7cbab8 100644 --- a/interface/src/app/main/UserProfile.tsx +++ b/interface/src/app/main/UserProfile.tsx @@ -1,5 +1,6 @@ import { memo, useContext } from 'react'; +import LogoutIcon from '@mui/icons-material/Logout'; import PersonIcon from '@mui/icons-material/Person'; import { Avatar, @@ -53,6 +54,7 @@ const UserProfileComponent = () => { @@ -665,77 +670,69 @@ const Version = () => { {LL.THIS_VERSION()} - - - {LL.VERSION()} - - - + {LL.VERSION()} + + {data.emsesp_version} {data.build_flags && ( - -   ({data.build_flags}) + +  ({data.build_flags}) )} - setPartitionVersionInfo(data.partition)} - aria-label={LL.FIRMWARE_VERSION_INFO()} - > - - - + setPartitionVersionInfo(data.partition)} + aria-label={LL.FIRMWARE_VERSION_INFO()} + sx={{ p: 0.5 }} + > + + + - - {LL.PLATFORM()} - - - - {platform} - -   ( - {data.psram ? ( - - ) : ( - - )} - PSRAM) - + {LL.PLATFORM()} + + {platform} + + ( + {data.psram ? ( + + ) : ( + + )} + PSRAM) - - - {data.recovery_version !== undefined && ( - <> - - {LL.RECOVERY()} - - - - {data.recovery_version || LL.RECOVERY_NOT_INSTALLED()} - - - - )} - + + {internetLive ? ( <> @@ -743,83 +740,147 @@ const Version = () => { {LL.AVAILABLE_VERSION()} - - {otherPartitions.length > 0 && data.developer_mode && ( + {data.developer_mode && ( <> - - {LL.STORED_VERSIONS()} - - - {otherPartitions.map((partition) => ( - - {partition.version} - - setPartitionVersionInfo(partition.partition) - } - aria-label={LL.FIRMWARE_VERSION_INFO()} - > - - - + {otherPartitions.length > 0 && ( + <> + + {LL.STORED_VERSIONS()} - ))} - + + {otherPartitions.map((partition) => ( + + + {partition.version} + + + setPartitionVersionInfo(partition.partition) + } + aria-label={LL.FIRMWARE_VERSION_INFO()} + sx={{ p: 0.5 }} + > + + + + + ))} + + + )} + {data.recovery_version !== undefined && ( + <> + {LL.RECOVERY()} + + + {data.recovery_version || LL.RECOVERY_NOT_INSTALLED()} + + {data.recovery_version && me.admin && ( + + )} + + + + )} )} - - {LL.STABLE()} - - - - {latestVersion?.version} - setShowVersionInfo(1)} - aria-label={LL.FIRMWARE_VERSION_INFO()} - > - - - {showButtons(false)} - - + {LL.STABLE()} + + {latestVersion?.version} + setShowVersionInfo(1)} + aria-label={LL.FIRMWARE_VERSION_INFO()} + sx={{ p: 0.5 }} + > + + + {showButtons(false)} + - - {LL.DEVELOPMENT()} - - - - {latestDevVersion?.version} - setShowVersionInfo(2)} - aria-label={LL.FIRMWARE_VERSION_INFO()} - > - - - {showButtons(true)} - - - + {LL.DEVELOPMENT()} + + {latestDevVersion?.version} + setShowVersionInfo(2)} + aria-label={LL.FIRMWARE_VERSION_INFO()} + sx={{ p: 0.5 }} + > + + + {showButtons(true)} + + ) : ( diff --git a/interface/src/types/system.ts b/interface/src/types/system.ts index 94e8d62f2..6aef9ed44 100644 --- a/interface/src/types/system.ts +++ b/interface/src/types/system.ts @@ -51,7 +51,6 @@ export interface SystemStatus { free_caps: number; model: string; board: string; - has_loader: boolean; recovery_version?: string; has_partition: boolean; partitions: { diff --git a/lib/OtaUpdater/OtaUpdater.cpp b/lib/OtaUpdater/OtaUpdater.cpp index c94f07084..df2c88b64 100644 --- a/lib/OtaUpdater/OtaUpdater.cpp +++ b/lib/OtaUpdater/OtaUpdater.cpp @@ -3,6 +3,10 @@ #include #include #include +#ifdef OTA_UPDATER_ANY_PARTITION +#include +#include +#endif #include @@ -19,8 +23,14 @@ OtaUpdater::FileType OtaUpdater::classify(const String & filename, size_t filesi if (extension == "bin" && filename.endsWith("littlefs.bin")) { return FileType::FILESYSTEM; } - if (extension == "bin" && filesize >= min_firmware_size) { - return FileType::FIRMWARE; + if (extension == "bin") { + String lower = filename; + lower.toLowerCase(); + const size_t min_size = + lower.indexOf("recovery") >= 0 ? MIN_RECOVERY_FIRMWARE_SIZE : min_firmware_size; + if (filesize >= min_size) { + return FileType::FIRMWARE; + } } if (extension == "json") { return FileType::JSON; @@ -114,6 +124,19 @@ bool OtaUpdater::hasMd5() const { return strlen(_md5.data()) == _md5.size() - 1; } +#ifdef OTA_UPDATER_ANY_PARTITION +void OtaUpdater::setError(esp_err_t err) { + snprintf(_error_buf, sizeof(_error_buf), "%s (0x%x)", esp_err_to_name(err), static_cast(err)); + _error = _error_buf; +} + +void OtaUpdater::releaseTarget() { + _target = nullptr; + heap_caps_free(_dram); + _dram = nullptr; +} +#endif + bool OtaUpdater::beginFirmware(size_t filesize, const esp_partition_t * target, bool set_boot) { _md5_applied = false; _error = ""; @@ -126,13 +149,14 @@ bool OtaUpdater::beginFirmware(size_t filesize, const esp_partition_t * target, _error = "Firmware does not fit in the partition"; return false; } - const esp_err_t err = esp_ota_begin(target, OTA_WITH_SEQUENTIAL_WRITES, &_handle); - if (err != ESP_OK) { - _error = esp_err_to_name(err); + _dram = static_cast(heap_caps_malloc(DRAM_CHUNK, MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT)); + if (_dram == nullptr) { + _error = "No internal RAM for OTA buffer"; return false; } _target = target; _written = 0; + _erased = 0; _set_boot = set_boot; if (hasMd5()) { _md5Builder.begin(); @@ -166,15 +190,39 @@ bool OtaUpdater::beginFilesystem() { bool OtaUpdater::write(const uint8_t * data, size_t len) { #ifdef OTA_UPDATER_ANY_PARTITION if (_target != nullptr) { - const esp_err_t err = esp_ota_write(_handle, data, len); - if (err != ESP_OK) { - _error = esp_err_to_name(err); - return false; + while (len) { + const size_t n = len < DRAM_CHUNK ? len : DRAM_CHUNK; + memcpy(_dram, data, n); + + const size_t need = _written + n; + if (need > _erased) { + size_t erase_to = (need + FLASH_SECTOR - 1) / FLASH_SECTOR * FLASH_SECTOR; + if (erase_to > _target->size) { + erase_to = _target->size; + } + const size_t erase_len = erase_to - _erased; + if (erase_len > 0) { + const esp_err_t err = esp_partition_erase_range(_target, _erased, erase_len); + if (err != ESP_OK) { + setError(err); + return false; + } + _erased = erase_to; + } + } + + const esp_err_t err = esp_partition_write(_target, _written, _dram, n); + if (err != ESP_OK) { + setError(err); + return false; + } + if (_md5_applied) { + _md5Builder.add(_dram, n); + } + _written += n; + data += n; + len -= n; } - if (_md5_applied) { - _md5Builder.add(data, len); - } - _written += len; return true; } #endif @@ -184,27 +232,32 @@ bool OtaUpdater::write(const uint8_t * data, size_t len) { bool OtaUpdater::end() { #ifdef OTA_UPDATER_ANY_PARTITION if (_target != nullptr) { - const esp_partition_t * target = _target; - _target = nullptr; + const esp_partition_t * target = _target; + const bool set_boot = _set_boot; + releaseTarget(); if (_md5_applied) { _md5Builder.calculate(); if (strcmp(_md5Builder.toString().c_str(), _md5.data()) != 0) { - esp_ota_abort(_handle); _error = "MD5 check failed"; return false; } } - // esp_ota_end() validates the image - esp_err_t err = esp_ota_end(_handle); - if (err == ESP_OK && _set_boot) { - err = esp_ota_set_boot_partition(target); - } + esp_image_metadata_t meta = {}; + esp_partition_pos_t part_pos = {.offset = target->address, .size = target->size}; + esp_err_t err = esp_image_verify(ESP_IMAGE_VERIFY_SILENT, &part_pos, &meta); if (err != ESP_OK) { - _error = esp_err_to_name(err); + setError(err); return false; } + if (set_boot) { + err = esp_ota_set_boot_partition(target); + if (err != ESP_OK) { + setError(err); + return false; + } + } return true; } #endif @@ -214,12 +267,13 @@ bool OtaUpdater::end() { void OtaUpdater::abort() { #ifdef OTA_UPDATER_ANY_PARTITION if (_target != nullptr) { - esp_ota_abort(_handle); - _target = nullptr; + releaseTarget(); return; } #endif - Update.abort(); + if (Update.isRunning()) { + Update.abort(); + } } size_t OtaUpdater::progress() const { diff --git a/lib/OtaUpdater/OtaUpdater.h b/lib/OtaUpdater/OtaUpdater.h index e35c512c2..d13f4bb3f 100644 --- a/lib/OtaUpdater/OtaUpdater.h +++ b/lib/OtaUpdater/OtaUpdater.h @@ -16,11 +16,16 @@ class OtaUpdater { public: enum class FileType : uint8_t { UNSUPPORTED, FIRMWARE, FILESYSTEM, JSON, MD5 }; + // min_firmware_size is for the main EMS-ESP image. Filenames containing "recovery" + // (case-insensitive) use MIN_RECOVERY_FIRMWARE_SIZE instead. static FileType classify(const String & filename, size_t filesize, size_t min_firmware_size); // project name in the app description of the recovery firmware, set by custom_fw_name in platformio.ini static constexpr char RECOVERY_PROJECT_NAME[] = "EMS-ESP-Recovery"; + // recovery firmware is much smaller than the main image (~512 KB–1 MB) + static constexpr size_t MIN_RECOVERY_FIRMWARE_SIZE = 512 * 1024; + // checks the ESP image magic byte and that the chip id matches the chip we're running on static bool isCompatibleFirmware(const uint8_t * data, size_t len); @@ -64,12 +69,21 @@ class OtaUpdater { const char * _error = ""; #ifdef OTA_UPDATER_ANY_PARTITION - // set when writing to an explicit target partition with the IDF OTA API instead of Update + // explicit target (factory/boot or an OTA slot) is written with the partition API; + // esp_ota_begin() returns ESP_ERR_INVALID_STATE (0x102) on the factory partition const esp_partition_t * _target = nullptr; - esp_ota_handle_t _handle = 0; size_t _written = 0; + size_t _erased = 0; bool _set_boot = true; MD5Builder _md5Builder; + // AsyncTCP may hand us PSRAM pointers; ESP32 flash DMA needs internal RAM + uint8_t * _dram = nullptr; + static constexpr size_t DRAM_CHUNK = 1024; + static constexpr size_t FLASH_SECTOR = 4096; + char _error_buf[48]{}; + + void setError(esp_err_t err); + void releaseTarget(); #endif }; diff --git a/mock-api/restServer.ts b/mock-api/restServer.ts index ea1fd57c0..633695866 100644 --- a/mock-api/restServer.ts +++ b/mock-api/restServer.ts @@ -116,8 +116,8 @@ let system_status = { psram: true, psram_size: 8189, free_psram: 8166, - has_loader: true, - recovery_version: '', // upload an EMS-ESP-Recovery-*.bin to set it + // recovery_version: '', // upload an EMS-ESP-Recovery-*.bin to set it + recovery_version: '1.0.0', has_partition: true, partitions: [ { @@ -152,12 +152,12 @@ let system_status = { let DEV_VERSION_IS_UPGRADEABLE: boolean; let STABLE_VERSION_IS_UPGRADEABLE: boolean; let THIS_VERSION: string; -let LATEST_STABLE_VERSION = '3.8.4'; +let LATEST_STABLE_VERSION = '3.8.6'; let LATEST_DEV_VERSION = '3.9.0-dev.1'; // scenarios for testing versioning -let version_test = 0; // on latest stable, or switch to dev -// let version_test = 1; // on latest dev, or switch back to stable +// let version_test = 0; // on latest stable, or switch to dev +let version_test = 1; // on latest dev, or switch back to stable // let version_test = 2; // upgrade an older stable to latest stable or switch to latest dev // let version_test = 3; // upgrade dev to latest, or switch to stable // let version_test = 4; // downgrade to an older dev, or switch back to stable @@ -344,10 +344,10 @@ function updateMask(entity: any, de: any, dd: any) { const old_custom_name = dd.nodes[dd_objIndex].cn; console.log( 'comparing names, old (' + - old_custom_name + - ') with new (' + - new_custom_name + - ')' + old_custom_name + + ') with new (' + + new_custom_name + + ')' ); if (old_custom_name !== new_custom_name) { changed = true; @@ -467,9 +467,9 @@ function upgradeImportantMessages(version: string) { console.log( 'upgradeImportantMessageType: version=' + - version + - ' type=' + - upgradeImportantMessageType_n + version + + ' type=' + + upgradeImportantMessageType_n ); return { upgradeImportantMessageType: upgradeImportantMessageType_n }; } @@ -520,17 +520,17 @@ function get_versions() { console.log( 'getVersions: current=' + - THIS_VERSION + - ' stable=' + - LATEST_STABLE_VERSION + - ' (upgradeable=' + - (STABLE_VERSION_IS_UPGRADEABLE ? 'YES' : 'NO') + - ') dev=' + - LATEST_DEV_VERSION + - ' (upgradeable=' + - (DEV_VERSION_IS_UPGRADEABLE ? 'YES' : 'NO') + - ')' + - (MOCK_OFFLINE ? ' [offline]' : '') + THIS_VERSION + + ' stable=' + + LATEST_STABLE_VERSION + + ' (upgradeable=' + + (STABLE_VERSION_IS_UPGRADEABLE ? 'YES' : 'NO') + + ') dev=' + + LATEST_DEV_VERSION + + ' (upgradeable=' + + (DEV_VERSION_IS_UPGRADEABLE ? 'YES' : 'NO') + + ')' + + (MOCK_OFFLINE ? ' [offline]' : '') ); return data; } diff --git a/platformio.ini b/platformio.ini index 8a428a492..4206ec789 100644 --- a/platformio.ini +++ b/platformio.ini @@ -177,8 +177,8 @@ build_flags = ; 1 crashes on every start, so the bootloader rolls back to the previous firmware ; 2 runs normally until it's confirmed after 2 minutes, then crashes on every start. After 5 crashes in a row ; it switches to the recovery firmware. Without one it keeps crashing until reflashed over serial -[env:crashtest_s3_16M_P] -extends = env:s3_16M_P +[env:crashtest_s_16M_P] +extends = env:s_16M_P build_flags = ${espressif32_base_16M.build_flags} -D EMSESP_CRASH_TEST=1 diff --git a/scripts/do_fresh_install.sh b/scripts/do_fresh_install.sh index 790ced624..35b27cbc0 100755 --- a/scripts/do_fresh_install.sh +++ b/scripts/do_fresh_install.sh @@ -1,26 +1,56 @@ +#!/usr/bin/env bash +# Full fresh install of EMS-ESP on an ESP32 16MB board (s_16M_P). +# +# Run from the scripts folder: +# ./do_fresh_install.sh +# +# Flash map (partitions/esp32_partition_16M.csv): +# 0x1000 bootloader +# 0x8000 partition table +# 0xe000 otadata (boot_app0.bin selects app0) +# 0x10000 recovery (factory / boot) +# 0x490000 EMS-ESP (app0) +# 0xdf0000 LittleFS +# +# Because otadata points at app0, the device boots EMS-ESP. Recovery stays +# installed in factory for fallback. Do not write recovery at 0x1000 — that +# is the bootloader, and the image overlaps the partition table at 0x8000. + +set -euo pipefail ESPTOOL=~/.platformio/penv/bin/esptool PORT=/dev/ttyUSB0 -BUILD=../.pio/build/s_16M_P +BAUD=${BAUD:-2000000} + +BUILD_BIN=../.pio/build/s_16M_P +RECOVERY_BIN=../.pio/build/recovery_s_16M_P BOOT_APP0=~/.platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin -# erase +for f in \ + "$BUILD_BIN/bootloader.bin" \ + "$BUILD_BIN/partitions.bin" \ + "$BUILD_BIN/firmware.bin" \ + "$RECOVERY_BIN/firmware.bin" \ + "$BOOT_APP0"; do + if [[ ! -f $f ]]; then + echo "Missing $f — build s_16M_P and recovery_s_16M_P first" >&2 + exit 1 + fi +done + +# full erase, stay in download mode $ESPTOOL --chip esp32 --port $PORT --after no-reset erase-flash -# create the filesystem -~/.platformio/penv/bin/python build_littlefs.py data $BUILD/littlefs.bin +# create the filesystem, in case it's needed +~/.platformio/penv/bin/python build_littlefs.py data $BUILD_BIN/littlefs.bin -# upload filesystem (spiffs partition @ 0xdf0000), leave halted so it doesn't boot yet -$ESPTOOL --chip esp32 --port $PORT --baud 460800 \ - --before default-reset --after no-reset \ - write-flash -z --flash-mode dio --flash-freq 80m --flash-size detect \ - 0xdf0000 $BUILD/littlefs.bin - -# flash bootloader + partition table + app (app0 @ 0x490000), then boot -$ESPTOOL --chip esp32 --port $PORT --baud 460800 \ +# bootloader, partitions, otadata, recovery, app, filesystem; then boot +$ESPTOOL --chip esp32 --port $PORT --baud $BAUD \ --before default-reset --after hard-reset \ write-flash -z --flash-mode dio --flash-freq 80m --flash-size detect \ - 0x1000 $BUILD/bootloader.bin \ - 0x8000 $BUILD/partitions.bin \ + 0x1000 $BUILD_BIN/bootloader.bin \ + 0x8000 $BUILD_BIN/partitions.bin \ 0xe000 $BOOT_APP0 \ - 0x490000 $BUILD/firmware.bin + 0x10000 $RECOVERY_BIN/firmware.bin \ + 0x490000 $BUILD_BIN/firmware.bin \ + 0xdf0000 $BUILD_BIN/littlefs.bin diff --git a/src/ESP32React/UploadFileService.cpp b/src/ESP32React/UploadFileService.cpp index 1abc063f3..801a67ffe 100644 --- a/src/ESP32React/UploadFileService.cpp +++ b/src/ESP32React/UploadFileService.cpp @@ -8,7 +8,8 @@ UploadFileService::UploadFileService(AsyncWebServer * server, SecurityManager * : _securityManager(securityManager) , _is_firmware(false) , _is_filesystem(false) - , _is_recovery(false) { + , _is_recovery(false) + , _response_sent(false) { server->on( UPLOAD_FILE_PATH, HTTP_POST, @@ -31,9 +32,10 @@ void UploadFileService::handleUpload(AsyncWebServerRequest * request, const Stri // check details of the file, to see if its a valid bin or json file const std::size_t filesize = request->contentLength(); - _is_firmware = false; - _is_filesystem = false; - _is_recovery = false; + _is_firmware = false; + _is_filesystem = false; + _is_recovery = false; + _response_sent = false; switch (OtaUpdater::classify(filename, filesize, emsesp::System::MIN_FIRMWARE_SIZE)) { case OtaUpdater::FileType::FILESYSTEM: @@ -96,6 +98,7 @@ void UploadFileService::handleUpload(AsyncWebServerRequest * request, const Stri } request->onDisconnect([this] { handleDisconnect(); }); // success, let's make sure we end the update if the client hangs up } else { + emsesp::EMSESP::logger().err("OTA begin failed: %s", _ota.errorString()); handleError(request, 507); // failed to begin, send an error response Insufficient Storage return; } @@ -147,6 +150,19 @@ void UploadFileService::handleUpload(AsyncWebServerRequest * request, const Stri } void UploadFileService::uploadComplete(AsyncWebServerRequest * request) { + if (request->_tempObject) { + const int code = static_cast(reinterpret_cast(request->_tempObject)); + if (!_response_sent && code >= 400) { + request->send(request->beginResponse(code)); + _response_sent = true; + } + _is_firmware = false; + _is_filesystem = false; + _is_recovery = false; + emsesp::EMSESP::system_.systemStatus(emsesp::SYSTEM_STATUS::SYSTEM_STATUS_NORMAL); + return; + } + emsesp::EMSESP::logger().info("Upload successful"); // did we just complete uploading a json file? @@ -217,26 +233,25 @@ void UploadFileService::uploadComplete(AsyncWebServerRequest * request) { } void UploadFileService::handleError(AsyncWebServerRequest * request, int code) { - emsesp::EMSESP::logger().info("Upload error: %d", code); - emsesp::EMSESP::system_.uart_init(); // re-enable UART - // if we have had an error already, do nothing if (request->_tempObject) { return; } + request->_tempObject = reinterpret_cast(static_cast(code)); // stop later chunks from retrying the write - // send the error code to the client and record the error code in the temp object - AsyncWebServerResponse * response = request->beginResponse(code); - request->send(response); + emsesp::EMSESP::logger().info("Upload error: %d", code); + emsesp::EMSESP::system_.uart_init(); // re-enable UART + _ota.abort(); - // check for invalid extension and immediately kill the connection, which will throw an error - // that is caught by the web code. Unfortunately the http error code is not sent to the client on fast network connections + // 406: the client sent a file we won't accept. Close now so the browser fails fast. + // Other codes wait for uploadComplete() to send, so we don't destroy the request mid-stream. if (code == 406) { + request->send(request->beginResponse(code)); + _response_sent = true; request->client()->close(); _is_firmware = false; _is_filesystem = false; _is_recovery = false; - _ota.abort(); } // if we aborted a filesystem upload, remount LittleFS so the device keeps working @@ -249,13 +264,10 @@ void UploadFileService::handleDisconnect() { emsesp::EMSESP::logger().info("Upload finished"); emsesp::EMSESP::system_.uart_init(); // re-enable UART -#ifdef EMSESP_HAS_RECOVERY - if (_is_recovery) { - // the client hung up before the upload completed - _ota.abort(); + _ota.abort(); + if (_is_recovery || _is_firmware || _is_filesystem) { emsesp::EMSESP::system_.systemStatus(emsesp::SYSTEM_STATUS::SYSTEM_STATUS_NORMAL); } -#endif _is_firmware = false; _is_filesystem = false; diff --git a/src/ESP32React/UploadFileService.h b/src/ESP32React/UploadFileService.h index c3249b3c2..75890dd08 100644 --- a/src/ESP32React/UploadFileService.h +++ b/src/ESP32React/UploadFileService.h @@ -22,6 +22,7 @@ class UploadFileService { bool _is_firmware; bool _is_filesystem; bool _is_recovery; // firmware for the factory partition, which doesn't change the boot partition + bool _response_sent; OtaUpdater _ota; void handleUpload(AsyncWebServerRequest * request, const String & filename, size_t index, uint8_t * data, size_t len, bool final); diff --git a/src/core/system.cpp b/src/core/system.cpp index 28e1fb112..b7ef78b9e 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -573,8 +573,12 @@ void System::recovery_installed() { if (factory != nullptr) { char c[20]; snprintf(c, sizeof(c), "d_%s", factory->label); - EMSESP::nvs_.remove(factory->label); - EMSESP::nvs_.remove(c); + if (EMSESP::nvs_.isKey(factory->label)) { + EMSESP::nvs_.remove(factory->label); + } + if (EMSESP::nvs_.isKey(c)) { + EMSESP::nvs_.remove(c); + } partition_info_.erase(factory->label); // on the AsyncTCP task, same as the web handlers reading it } LOG_INFO("Recovery firmware v%s installed", recovery_version().c_str()); @@ -639,6 +643,12 @@ bool System::set_partition([[maybe_unused]] const char * partitionname) { return false; } +#ifdef EMSESP_HAS_RECOVERY + if (partition->subtype == ESP_PARTITION_SUBTYPE_APP_FACTORY) { + EMSESP::nvs_.putString(EMSESP_NVS_RECOVERY_REASON, "request"); + } +#endif + // initiate the restart EMSESP::system_.systemStatus(SYSTEM_STATUS::SYSTEM_STATUS_RESTART_REQUESTED); return true; @@ -1323,6 +1333,16 @@ void System::show_system(uuid::console::Shell & shell) { shell.printfln(" [total %d]", available.size()); // List all partitions and their version info shell.println(" Partitions:"); +#ifndef EMSESP_STANDALONE + const esp_partition_t * running = esp_ota_get_running_partition(); + const esp_partition_t * boot = esp_ota_get_boot_partition(); + const char * running_label = running ? running->label : ""; + const char * boot_label = boot ? boot->label : ""; +#else + const char * running_label = ""; + const char * boot_label = ""; +#endif + bool boot_listed = false; for (const auto & partition : partition_info_) { if (partition.second.version.empty()) { continue; // no version, empty string @@ -1334,13 +1354,42 @@ void System::show_system(uuid::console::Shell & shell) { 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, - installed.c_str(), - (strcmp(esp_ota_get_running_partition()->label, partition.first.c_str()) == 0) ? "** active **" : ""); + const bool is_running = strcmp(running_label, partition.first.c_str()) == 0; + const bool is_boot = strcmp(boot_label, partition.first.c_str()) == 0; + if (is_boot) { + boot_listed = true; + } + const char * mark = is_running && is_boot ? "** active, boot **" : is_running ? "** active **" : is_boot ? "** boot **" : ""; + shell.printfln(" %s: v%s (%d KB%s) %s", partition.first.c_str(), partition.second.version.c_str(), partition.second.size, installed.c_str(), mark); } +#ifndef EMSESP_STANDALONE +#ifdef EMSESP_HAS_RECOVERY + // 16MB boards: factory ("boot") holds the recovery app and is omitted from partition_info_ + { + const esp_partition_t * factory = esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_APP_FACTORY, nullptr); + esp_app_desc_t desc; + if (OtaUpdater::isRecoveryPartition(factory, &desc)) { + const bool is_running = running && factory == running; + const bool is_boot = boot && factory == boot; + if (is_boot) { + boot_listed = true; + } + int size_kb = 0; + esp_image_metadata_t meta = {}; + esp_partition_pos_t part_pos = {.offset = factory->address, .size = factory->size}; + if (esp_image_verify(ESP_IMAGE_VERIFY_SILENT, &part_pos, &meta) == ESP_OK) { + size_kb = static_cast(meta.image_len / 1024); + } + const char * mark = is_running && is_boot ? "** active, boot **" : is_running ? "** active **" : is_boot ? "** boot **" : ""; + shell.printfln(" %s: Recovery v%s (%d KB) %s", factory->label, desc.version, size_kb, mark); + } + } +#endif + // recovery/factory is omitted from partition_info_, still show it if it's the boot target + if (!boot_listed && boot_label[0] != '\0') { + shell.printfln(" %s: ** boot **", boot_label); + } +#endif // List all NVS values #ifndef EMSESP_STANDALONE shell.println(" NVS values:"); diff --git a/src/core/system.h b/src/core/system.h index 0793ba7cb..7eb43a802 100644 --- a/src/core/system.h +++ b/src/core/system.h @@ -375,7 +375,8 @@ class System { static constexpr uint8_t HEALTHCHECK_NO_NETWORK = (1 << 1); // 2 static constexpr uint8_t HEALTHCHECK_RESET = (1 << 7); // 128 - // smallest .bin accepted as a firmware image, for both URL and web uploads - 1.6 MB + // smallest .bin accepted as a main firmware image, for both URL and web uploads - 1.6 MB + // recovery firmware uses OtaUpdater::MIN_RECOVERY_FIRMWARE_SIZE when the filename contains "recovery" static constexpr size_t MIN_FIRMWARE_SIZE = 1677721; private: diff --git a/src/emsesp_version.h b/src/emsesp_version.h index fc1c2c9d9..845c6c1ad 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.9.0-dev.16" +#define EMSESP_APP_VERSION "3.9.0-dev.17" diff --git a/src/web/WebStatusService.cpp b/src/web/WebStatusService.cpp index fbc9f4874..107cca941 100644 --- a/src/web/WebStatusService.cpp +++ b/src/web/WebStatusService.cpp @@ -134,13 +134,12 @@ void WebStatusService::systemStatus(AsyncWebServerRequest * request) { root["temperature"] = (int)Helpers::transformNumFloat(EMSESP::system_.temperature(), 0, EMSESP::system_.fahrenheit() ? 2 : 0); // only 2 decimal places #endif - // check for a factory partition first + // factory partition is only on 16MB boards; recovery_version is empty until a recovery .bin is installed const esp_partition_t * partition = esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_APP_FACTORY, nullptr); - root["has_loader"] = partition != NULL && partition != esp_ota_get_running_partition(); if (partition != NULL) { - root["recovery_version"] = EMSESP::system_.recovery_version(); // empty if not installed + root["recovery_version"] = EMSESP::system_.recovery_version(); } - partition = esp_ota_get_next_update_partition(nullptr); + partition = esp_ota_get_next_update_partition(nullptr); if (partition) { uint64_t buffer; esp_partition_read(partition, 0, &buffer, 8); -- 2.54.0 From 92e2a4b6c344defe64cff52c4ca43dfec9fa879b Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 8 Oct 2026 00:01:02 +0200 Subject: [PATCH 042/148] build recovery --- platformio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio.ini b/platformio.ini index 4206ec789..e07f18028 100644 --- a/platformio.ini +++ b/platformio.ini @@ -9,7 +9,7 @@ [platformio] ; build all supported targets. Use pio_local.ini to override and build specific targets. -default_envs = s_4M, s_16M, s_16M_P, s3_16M_P +default_envs = s_4M, s_16M, s_16M_P, s3_16M_P, recovery_s_16M_P, recovery_s3_16M_P description = EMS-ESP Firmware for the ESP32 src_dir = src -- 2.54.0 From c290543c7f3d6e4f9bcb31a0070eb595d7fe4653 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 8 Oct 2026 10:31:39 +0200 Subject: [PATCH 043/148] update pkg --- interface/package.json | 10 +- interface/pnpm-lock.yaml | 608 +++++++++++++++++++-------------------- 2 files changed, 306 insertions(+), 312 deletions(-) diff --git a/interface/package.json b/interface/package.json index cff3e1c8e..803d7a60b 100644 --- a/interface/package.json +++ b/interface/package.json @@ -42,11 +42,11 @@ "@eslint/js": "^10.0.1", "@preact/preset-vite": "^2.10.6", "@trivago/prettier-plugin-sort-imports": "^6.0.2", - "@types/node": "^26.6.3", + "@types/node": "^26.6.4", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", "concurrently": "^10.0.5", - "eslint": "^10.11.0", + "eslint": "^10.12.0", "eslint-config-prettier": "^10.1.8", "etag": "^1.8.1", "mime-types": "^3.0.2", @@ -54,9 +54,9 @@ "rollup-plugin-visualizer": "^7.1.1", "terser": "^5.51.2", "typescript": "^6.0.3", - "typescript-eslint": "^8.70.1", - "vite": "^8.3.1", + "typescript-eslint": "^8.71.1", + "vite": "^8.3.3", "vite-plugin-imagemin": "^0.6.1" }, - "packageManager": "pnpm@12.6.0" + "packageManager": "pnpm@12.9.1" } diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index d6507c3c5..8d58f437a 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -7,153 +7,153 @@ importers: configDependencies: {} packageManagerDependencies: pnpm: - specifier: 12.6.0 - version: 12.6.0 + specifier: 12.9.1 + version: 12.9.1 packages: - '@pnpm/exe.android-arm64@12.6.0': - resolution: {integrity: sha512-kviIHft9h02q+7N2In7tSL9T/HRUSGwYmU74YPtsWU5ee7vgqPyC0JT6RRX6miW+NxX1CvHgQxg69qq1qTLJYQ==} + '@pnpm/exe.android-arm64@12.9.1': + resolution: {integrity: sha512-Hgm1XdqMTfBC8PdGLL+NjZWv4xyi7D6XNrN9fb24XGYlyTBmUtdCefKnCLmHujShRD8BEO1zqM30SNcKBDLysw==} cpu: [arm64] os: [android] - '@pnpm/exe.android-x64@12.6.0': - resolution: {integrity: sha512-CT8aJKLq2mtZFE71pr4E5Z2xHL8uGnRGr+NclDqsXlVF4SVcQ2QAs14mWi0C8gjT4hbmi+Q0lJRRIkMAWfjjng==} + '@pnpm/exe.android-x64@12.9.1': + resolution: {integrity: sha512-WDGCe6jZRVZP3RC/q6hOkZylkPkIQIi1/GcrR/d/YzbihhAHXCczrk+UYnV5TgbsEnAYO7Cx+2rX3nfhHvy24w==} cpu: [x64] os: [android] - '@pnpm/exe.darwin-arm64@12.6.0': - resolution: {integrity: sha512-rafpVkjzugKBMxSvGQd5wK1x5eOTkD/+lcJIFHeQhvd+BJ8kDisOOvwhQDrpGd4vd2Fx+hhW0P2Ptt638OlhFg==} + '@pnpm/exe.darwin-arm64@12.9.1': + resolution: {integrity: sha512-+7iiEEBgYN9szPWUnAuN6eOVMTI6Hrki5bcuC9n9xl9tTnT53Tpxpo45Hml+W4IrAU0d+Tmd0sPnVIbX59PD6w==} cpu: [arm64] os: [darwin] - '@pnpm/exe.darwin-x64@12.6.0': - resolution: {integrity: sha512-72Jpuv1m24gI8zUNcaylYpBWEhBzz1VPhnDIU2GYM2eRP+KsOqVLwV78i+JrihI39zY2NNXmaN4eAKX1inpaDQ==} + '@pnpm/exe.darwin-x64@12.9.1': + resolution: {integrity: sha512-SK7TxJiR12GbJZGffRFHItkc+Mx+99v6xMMJ9/X//8NwWV1wo17a2bwfGI8qZpl17YwsrmPEFOOqhzE1GIlrtQ==} cpu: [x64] os: [darwin] - '@pnpm/exe.freebsd-x64@12.6.0': - resolution: {integrity: sha512-LON4QgNy1w/XF4uySZIyC/5hEB0oGdelXsY9tSKqstER+2j2X2oHz67skD11RRd/HWFRtMr64shQZ4I9ZoZ0zg==} + '@pnpm/exe.freebsd-x64@12.9.1': + resolution: {integrity: sha512-4AjLk6uvTs2iO6wMit2hcxJ2M32xb7OV5SNFk+w6G8/NzcjcMB7ENEpyeXyLiP0kcnp8uaCGUct2NfrLCJ35eQ==} cpu: [x64] os: [freebsd] - '@pnpm/exe.linux-arm64-musl@12.6.0': - resolution: {integrity: sha512-BdDpX+DeaMUc5x6WNcE6FkmFy36NwrBbBvwsZU737Zt3u1fTY+iKFPchjEQNCM4rT6q6xvF2oN3ZwExGsJCkxQ==} + '@pnpm/exe.linux-arm64-musl@12.9.1': + resolution: {integrity: sha512-dZL2ES1ckDWM9v+EtxoOklZ0WNdtayooi9iLiDUubopudX3zXPNR2mlrxBRgjbDgECOndQen2SmyxL5eZiBuKw==} cpu: [arm64] os: [linux] libc: [musl] - '@pnpm/exe.linux-arm64@12.6.0': - resolution: {integrity: sha512-8h2sNoIhHDpHDYqZZCh9PXr6krqW10btb0GHVGuw710muDHlFAHMtUG2ogmaHge6zJG1xgY4Y7mwX5g/LWvrYg==} + '@pnpm/exe.linux-arm64@12.9.1': + resolution: {integrity: sha512-cx+uF6xqwEtm7B8NV+1ve0xBg9gcuzQZ5R+0WgOWvKG/h978UljS6BgWs1ipIGuGgUdeVhm3PKmBltXIcczLXA==} cpu: [arm64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-ppc64@12.6.0': - resolution: {integrity: sha512-ld6xgcEhFCFrsVsJhbmdmR714PnsEspO/Ij8w0/D7OSiz2hYGu3fZd5tKRxOI5m6H6Gl0/RRFAPncTHbsgXVjQ==} + '@pnpm/exe.linux-ppc64@12.9.1': + resolution: {integrity: sha512-MpjPsy4XR17zAtLziQZfsN+wveWa/bUJggZtwfo3+SuyRmXnSvVkFD4+v8/3RTWyYaM6mwLUTjZDJ+g3urL+ew==} cpu: [ppc64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-riscv64@12.6.0': - resolution: {integrity: sha512-HIbImydoC3J8NFt+8MXfhTCf5rO6NjCMyinSAHac0VmV8uCHw+kbQkyAzxV84rzz9ZOzmBOnj0b1N461UIYGsw==} + '@pnpm/exe.linux-riscv64@12.9.1': + resolution: {integrity: sha512-Oo67TKqqH+Bno+L6X7Xyorwp1QG82zKIkL0vbo1x2kcPTDiyPbdM+d6lIs4+hzeB1KHT5FDoGzZj2dad7Ft+eg==} cpu: [riscv64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-s390x@12.6.0': - resolution: {integrity: sha512-DjSqT7+BZ/lWcDHwNMuzsRVfyxUimh+D54Xw4tSWbdVVQhtWtNMUyI93LVnwCmsoEpar2gC3SFeAgywx37svKQ==} + '@pnpm/exe.linux-s390x@12.9.1': + resolution: {integrity: sha512-QAD5FRCdW36HfD58BV7DoDm6z8yv+GgSqcUV1+ERwYjpVQuG6ZTpf5o0x3KDas8eTLIW7MLYVdDdlAurWeArEg==} cpu: [s390x] os: [linux] libc: [glibc] - '@pnpm/exe.linux-x64-musl@12.6.0': - resolution: {integrity: sha512-31lKeGPmRE6xfV6I3VjaEGVFRei14pl/zgoFDK4w+UkbJqOuNl2Ht3O1GuqNIg3Gl14qTEb4kZRAYFHXifDx9A==} + '@pnpm/exe.linux-x64-musl@12.9.1': + resolution: {integrity: sha512-mQDhBsGqcTkrLQM4q5igmRFcr6EAl4UM/FGawY+0CWGcqPpUmYUvDy9LHy80xxkHIWVJ886gvvso2XOjfav1Jw==} cpu: [x64] os: [linux] libc: [musl] - '@pnpm/exe.linux-x64@12.6.0': - resolution: {integrity: sha512-qFWBneHJAJ73W4whtbaFOL1M/7DBC6ILHXuxc7ZPtEhfPuT1zeZiGrmKHoMAfJA+mcm6xhOFljqVTUS+00Jabw==} + '@pnpm/exe.linux-x64@12.9.1': + resolution: {integrity: sha512-+M5N74hM4fc87AAckxx/UIW+dUnWf2eko+HchJs/NZUxehLhekNyMI/GNaNXlvd+kWR+97XXBD51XRkkNiUtrA==} cpu: [x64] os: [linux] libc: [glibc] - '@pnpm/exe.win32-arm64@12.6.0': - resolution: {integrity: sha512-OhfefXEEykZlslSUhR8PPRe6MVPV3Oink/dVfIecE5velpc7j80cZYsHlaDrtRDcm3TPwQHkaRW1SJ1efX9oFg==} + '@pnpm/exe.win32-arm64@12.9.1': + resolution: {integrity: sha512-mI28C2wxobrDi6x1OYhBRyG10hnDq/4sEIyy5RzoX6LB4kLuv6K/d25HOpMwlW20cuM4M72k9NZpOdcmUxMbEA==} cpu: [arm64] os: [win32] - '@pnpm/exe.win32-x64@12.6.0': - resolution: {integrity: sha512-L2tuyrD2+Imgxs3VK/ST/2L3xD6vDP0ktJQxM0TaGw7TbAQEMq+RMc8iK6Ew7Id579uzjJe8jSfJID2ZGsOHCA==} + '@pnpm/exe.win32-x64@12.9.1': + resolution: {integrity: sha512-SWoDMT0oD7NrDSIoPpkKD09D9fAQKNjwFZ3lezlCUhAfXxMv70zsfrNT2/P+GoCK2kefXF9OysUZkH1l5vvvfA==} cpu: [x64] os: [win32] - pnpm@12.6.0: - resolution: {integrity: sha512-PvaPlRyxEawgS0paFvCy3fDaVqluBBPoHYVdnwtV75JnFHCQKOHNAMQFwsX7e56OxNxGd3yAXQNzwvL/AP0g7A==} + pnpm@12.9.1: + resolution: {integrity: sha512-BrBV//XNINwSeB3hc87TMQzglRvy7GICEaFgRdVETVyTpmMhB2TvKaZTphBFm6A2jw50+E2AxUcjz5Wq57wNbQ==} engines: {node: '>=18.*'} hasBin: true snapshots: - '@pnpm/exe.android-arm64@12.6.0': + '@pnpm/exe.android-arm64@12.9.1': optional: true - '@pnpm/exe.android-x64@12.6.0': + '@pnpm/exe.android-x64@12.9.1': optional: true - '@pnpm/exe.darwin-arm64@12.6.0': + '@pnpm/exe.darwin-arm64@12.9.1': optional: true - '@pnpm/exe.darwin-x64@12.6.0': + '@pnpm/exe.darwin-x64@12.9.1': optional: true - '@pnpm/exe.freebsd-x64@12.6.0': + '@pnpm/exe.freebsd-x64@12.9.1': optional: true - '@pnpm/exe.linux-arm64-musl@12.6.0': + '@pnpm/exe.linux-arm64-musl@12.9.1': optional: true - '@pnpm/exe.linux-arm64@12.6.0': + '@pnpm/exe.linux-arm64@12.9.1': optional: true - '@pnpm/exe.linux-ppc64@12.6.0': + '@pnpm/exe.linux-ppc64@12.9.1': optional: true - '@pnpm/exe.linux-riscv64@12.6.0': + '@pnpm/exe.linux-riscv64@12.9.1': optional: true - '@pnpm/exe.linux-s390x@12.6.0': + '@pnpm/exe.linux-s390x@12.9.1': optional: true - '@pnpm/exe.linux-x64-musl@12.6.0': + '@pnpm/exe.linux-x64-musl@12.9.1': optional: true - '@pnpm/exe.linux-x64@12.6.0': + '@pnpm/exe.linux-x64@12.9.1': optional: true - '@pnpm/exe.win32-arm64@12.6.0': + '@pnpm/exe.win32-arm64@12.9.1': optional: true - '@pnpm/exe.win32-x64@12.6.0': + '@pnpm/exe.win32-x64@12.9.1': optional: true - pnpm@12.6.0: + pnpm@12.9.1: optionalDependencies: - '@pnpm/exe.android-arm64': 12.6.0 - '@pnpm/exe.android-x64': 12.6.0 - '@pnpm/exe.darwin-arm64': 12.6.0 - '@pnpm/exe.darwin-x64': 12.6.0 - '@pnpm/exe.freebsd-x64': 12.6.0 - '@pnpm/exe.linux-arm64': 12.6.0 - '@pnpm/exe.linux-arm64-musl': 12.6.0 - '@pnpm/exe.linux-ppc64': 12.6.0 - '@pnpm/exe.linux-riscv64': 12.6.0 - '@pnpm/exe.linux-s390x': 12.6.0 - '@pnpm/exe.linux-x64': 12.6.0 - '@pnpm/exe.linux-x64-musl': 12.6.0 - '@pnpm/exe.win32-arm64': 12.6.0 - '@pnpm/exe.win32-x64': 12.6.0 + '@pnpm/exe.android-arm64': 12.9.1 + '@pnpm/exe.android-x64': 12.9.1 + '@pnpm/exe.darwin-arm64': 12.9.1 + '@pnpm/exe.darwin-x64': 12.9.1 + '@pnpm/exe.freebsd-x64': 12.9.1 + '@pnpm/exe.linux-arm64': 12.9.1 + '@pnpm/exe.linux-arm64-musl': 12.9.1 + '@pnpm/exe.linux-ppc64': 12.9.1 + '@pnpm/exe.linux-riscv64': 12.9.1 + '@pnpm/exe.linux-s390x': 12.9.1 + '@pnpm/exe.linux-x64': 12.9.1 + '@pnpm/exe.linux-x64-musl': 12.9.1 + '@pnpm/exe.win32-arm64': 12.9.1 + '@pnpm/exe.win32-x64': 12.9.1 --- lockfileVersion: '9.0' @@ -211,16 +211,16 @@ importers: devDependencies: '@eslint/js': specifier: ^10.0.1 - version: 10.0.1(eslint@10.11.0(supports-color@10.2.2)) + version: 10.0.1(eslint@10.12.0(supports-color@10.2.2)) '@preact/preset-vite': specifier: ^2.10.6 - version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2)) + version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 version: 6.0.2(prettier@3.9.9)(supports-color@10.2.2) '@types/node': - specifier: ^26.6.3 - version: 26.6.3 + specifier: ^26.6.4 + version: 26.6.4 '@types/react': specifier: ^19.3.0 version: 19.3.0 @@ -231,11 +231,11 @@ importers: specifier: ^10.0.5 version: 10.0.5 eslint: - specifier: ^10.11.0 - version: 10.11.0(supports-color@10.2.2) + specifier: ^10.12.0 + version: 10.12.0(supports-color@10.2.2) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@10.11.0(supports-color@10.2.2)) + version: 10.1.8(eslint@10.12.0(supports-color@10.2.2)) etag: specifier: ^1.8.1 version: 1.8.1 @@ -247,7 +247,7 @@ importers: version: 3.9.9 rollup-plugin-visualizer: specifier: ^7.1.1 - version: 7.1.1(rolldown@1.2.11) + version: 7.1.1(rolldown@1.2.12) terser: specifier: ^5.51.2 version: 5.51.2 @@ -255,14 +255,14 @@ importers: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.70.1 - version: 8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + specifier: ^8.71.1 + version: 8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) vite: - specifier: ^8.3.1 - version: 8.3.1(@types/node@26.6.3)(terser@5.51.2) + specifier: ^8.3.3 + version: 8.3.3(@types/node@26.6.4)(terser@5.51.2) vite-plugin-imagemin: specifier: ^0.6.1 - version: 0.6.1(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2)) + version: 0.6.1(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)) packages: @@ -627,8 +627,8 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@oxc-project/types@0.151.0': - resolution: {integrity: sha512-J1yXrIlNDZVzE3ada310xeAw7nH8yCAyLPuUIsjKatFPmfn5bS1oW+cM+QsGOtVWd5nhSpbwZWx/rue+r5Z+PA==} + '@oxc-project/types@0.152.0': + resolution: {integrity: sha512-oM/5rLBm2tPkg0iBgkH/FOeR3PCDpY19GTgAZjMFM8h9WI9VW7cLgzp6nwtarYKmovavIQZ+Fe/RKX/8C8O/Rw==} '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} @@ -661,98 +661,98 @@ packages: '@remix-run/route-pattern@0.22.1': resolution: {integrity: sha512-czdGJWh09Lapvcqt7Vb09KlrU2PhRJ8xQaI+AItTuD9aDJ5MAgxnS38lnys6Ll+6RJEqPiaUqTwIQhVLwFvv+w==} - '@rolldown/binding-android-arm-eabi@1.2.11': - resolution: {integrity: sha512-A5kXfGKvKWWZE0TtPrfsvT+q4Y5d1QG8gGUzpYjGydM+fARM9MuX90PrXYXe0XbsDVgyxxNzHo6giCj90bsFNw==} + '@rolldown/binding-android-arm-eabi@1.2.12': + resolution: {integrity: sha512-dB/a1214qKfHMXCpgqR4OZT+jS4kTyEXbQGJPqzobt5EwH5rX080pxE37alt3RzvR1bf1Yz/yGqRfrYAxuPw0A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@rolldown/binding-android-arm64@1.2.11': - resolution: {integrity: sha512-z6cTycz+iJ4PVkuL4HHW4DfTfoeU/2nqYYuSOrTmH7yHK5Y0LCOnA03V4ZNxavyVaU1oOqUgIg2klN/s+USGOA==} + '@rolldown/binding-android-arm64@1.2.12': + resolution: {integrity: sha512-7KHFgQ5VJxIHcLlrwrc3Xbds7oTNQT7Pgi9gQCJKrd2VGab/UksIOYp6VD8MzCstGxOKMgNamPwUCfxPdP1OHg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.2.11': - resolution: {integrity: sha512-jShvqNtP6vDC6/A5JOAzbVV+DkgHqhl/ScVCJEbt+TUY6QYz7YnXcrg3sLtFBniro0f/Ld50ZwCWA6f7KYD1nQ==} + '@rolldown/binding-darwin-arm64@1.2.12': + resolution: {integrity: sha512-3YIhqHD96nA5SaYNRBR16HnGv4oavZvXfD/ayHM+oYZ0WD/8lBAtf6zQua4kEyAvpqrluKXl0lnOBoiNby7x9w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.2.11': - resolution: {integrity: sha512-f2i2xiNWq1Z1l2++q2fuhZRdLAT3aqxD6vRNm1RAxpUoBcdqNB3C0s1Bt+K+PbEx2F5F4gQp6hqKkphCY/xF9w==} + '@rolldown/binding-darwin-x64@1.2.12': + resolution: {integrity: sha512-UuuJ35MFw4gmFOrE9pEqIV+K3syIKveph+Qc1/ljHZVdoDW4pz/JHR/eMVom+TZGl/5OOvGJOWaOCVt3ZfqhxA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.2.11': - resolution: {integrity: sha512-4Ir5FSOKIAMr4r0kExpt1s3bMgzJU3rA45AYOHtQpls0oNeqcYBKrWMlckrYH4KCfGLfkfn1tN1dmZPMVsdXow==} + '@rolldown/binding-freebsd-x64@1.2.12': + resolution: {integrity: sha512-uMvssit0a4W+/7D8CbHUvG719mH3R2jwXAlh/XcPvuHTE0g++LymF88DCGNX0HM2rBOn0xrzgXktIB6fLSJBTQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.2.11': - resolution: {integrity: sha512-/gnRDM+39BROzAN/k1OZjDPnDMcZxB/0EUxKjONO5yVkNEvlsoMDrxGNKgZi/ttFriS2gwlDNzB65pvNbFOXIQ==} + '@rolldown/binding-linux-arm-gnueabihf@1.2.12': + resolution: {integrity: sha512-XcFu0R0xWnwzSf4IQgFH1rJIckPN1pLy2R+4r9IDB7Yfu/ys9cVqfa4pBrMHj7a3gl8mIR4nRNPg0e5IvEVs6g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.2.11': - resolution: {integrity: sha512-PFaK8HwvAHbaKbBcDNQihjMKYvFnA5hiENx/l5tphTDz1E0WFp32l0A7aq7lyUwGsRw/xSrNIy/gIK4thrSCrw==} + '@rolldown/binding-linux-arm64-gnu@1.2.12': + resolution: {integrity: sha512-260UrKgn8tz39ak+SMDOirKzr7V04M9dWPw5llW00SwBivCZoWcRBKV1d8cXnRkUmSZA3BdiUmBHWk7734Ulpw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.2.11': - resolution: {integrity: sha512-AskzJUIKRLPxkruR1wLKewGbOw+EYfU/9lOrBFj4AFrEA8hPpKFnODWNu2WLaNs0QNkEb9QIJufmVZZIL/bJlg==} + '@rolldown/binding-linux-arm64-musl@1.2.12': + resolution: {integrity: sha512-5YK1I9SqDkbPgc1IA8BgDl34suqUS2q0KWnBrirm0E51YjOs6eo6dV6jbQfNE/argHRSvd0QUGgtpIoYx+WWpw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.2.11': - resolution: {integrity: sha512-qlUGAheh2yh8afH7QBgx0PrRHN85hKnNd78x8MeMhXivuevgd8vgf6/CstOzmNKY/lLTHvNTrPy98cLnAugzJw==} + '@rolldown/binding-linux-ppc64-gnu@1.2.12': + resolution: {integrity: sha512-Rkcrmp7eFRg74yL5fXEU91JEWbdEPLevWwGtXpmhbjlD1StScbWTmO94Bhly+Mo+ketKYkdmM1vNUKeWSlx8cQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.2.11': - resolution: {integrity: sha512-secpEad+0vCbSfn8upFySkDskv+bGPk3THSDS9Y89yc4rb4kzqHp8Dmyd9BkQW4SnhNXBZCl/6CrO//hZahNJQ==} + '@rolldown/binding-linux-s390x-gnu@1.2.12': + resolution: {integrity: sha512-qvK4DuAsQc2BSjlx+Xr+IzOIvvxbGZqxFwdWfG6F518Erj0GGISyQbJ6pIappnOxlNPzNHvo/L0BwB30GZ+zVw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.2.11': - resolution: {integrity: sha512-mOVBT3dPpkWm8XBWPmU4bf+U6dYDLeMo/9ojUmis4N0L5uu10qra5vOyngZ7/PSdoE4G9KvRt4bloRxNjLas7A==} + '@rolldown/binding-linux-x64-gnu@1.2.12': + resolution: {integrity: sha512-Q9uLBO53Xd4QIq1WOycVQyPP1O4HhraEV2qqb3uTrnVw6QZih9duY4vNXOivL1xoUS1/z+W8eF4NMfl2a8Sdjw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.2.11': - resolution: {integrity: sha512-Is78i9A8Ui4SqcxUwFJ9uMmjDn58IbVTjFWYdQestFEgeuEmHMLGNriXnVJKkwG2YiZjw8cP0zCTyDMdDGtOOg==} + '@rolldown/binding-linux-x64-musl@1.2.12': + resolution: {integrity: sha512-3IBxWFMjbOZskDPKv8Lf9BCnahlKuHthWkYnyIxOH/QcJrFcS4EmcenthApkwr/5+nEqZlLzeYbxeMaX7A5u4g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.2.11': - resolution: {integrity: sha512-dUCXneZ87INUMyQ0D+C0HrEBNUPNXHaPmU5GTjyKTJEiussw9Kaj5Ln8UztPe4epV/ffvgNBEadksdYhmW6xJA==} + '@rolldown/binding-openharmony-arm64@1.2.12': + resolution: {integrity: sha512-xtX61xg4LKPkPWilZU1ynKClz5Gj4bf74LML4r3eVLWumKnGjoEr1OSHQhMdbBDoYTi+yjrujvpZe2pUnqCrrA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-win32-arm64-msvc@1.2.11': - resolution: {integrity: sha512-jByxb6qfd+bH1xUd0qnfFnb17i9sWBPY2tOavJ0l3tdr3OTu+Kvtm8cd/JV5nFt657b1VqGltxg9olOEfofXWw==} + '@rolldown/binding-win32-arm64-msvc@1.2.12': + resolution: {integrity: sha512-At7fPB6PCaIjzgIhEZFxuT+BBFqiQibJDT4d3PhiR3f4E7bbMZF4aKblbFfEM3sETRDd1YiQx/+U/g/B/ou5Ew==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.2.11': - resolution: {integrity: sha512-/PzKqzAJ03i19oy2ItPvyvaVjOjBCNnfaJs8yvUdGBKmiESgnrJSQ2awd81QzFbbnAmu7YO9ZnJrDCb9VSJPRA==} + '@rolldown/binding-win32-x64-msvc@1.2.12': + resolution: {integrity: sha512-WIw2haVKwjuYdXkHaoC0mF8Le71TuCBxjrdKqLbJGctbBABj+ClfmNvtbOnzpq3RokNo5+V1qhtSzJyXorsklQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -842,8 +842,8 @@ packages: '@types/minimatch@5.1.2': resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - '@types/node@26.6.3': - resolution: {integrity: sha512-dsqMQQoeTLqu9wynDD00q573mNzso3IdQOAfHRJqLCcmCFPoGo9A1bDpUcv/9tnKpErQWv9uKeGfl37EIS02Yg==} + '@types/node@26.6.4': + resolution: {integrity: sha512-ldVPDCzj7fsaGZrLB0NuHuTvJcsNasysBAqMolr/cgxrLd1xbqxIr3XJiPnHHJUCxj5sNF1vnRj9aWnrVh5Jcg==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -870,63 +870,63 @@ packages: '@types/svgo@2.6.4': resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==} - '@typescript-eslint/eslint-plugin@8.70.1': - resolution: {integrity: sha512-nDNrUQ/4ruSNYbu749TRY7cfrzPtoLHEXSNBI8aaNY32LlZCajixqRf3FqcKC4p5Cam4VOHYx/t+i5+nKXvrqA==} + '@typescript-eslint/eslint-plugin@8.71.1': + resolution: {integrity: sha512-nNlBf6HuotqMgZvSkWD5hNdemiBIxQ2NmrlgfcUIeZRs+BbakjscCQRq/Hb74EFVnFiSWWdL12JruqwBy3ERDw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.70.1 + '@typescript-eslint/parser': ^8.71.1 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.70.1': - resolution: {integrity: sha512-nO974WLllwhSFWQXnMLj6nDGa8f0khKEz1JzpPJ1u7Vm/4X1X6ZHajpoknU4bb41vJyMB0HHVyS2GqdhWfIXZw==} + '@typescript-eslint/parser@8.71.1': + resolution: {integrity: sha512-oM/5sAqz/l1v/zYK1qTOPrn2+JIrBGC1V6uNYucRO5gh6eT9vWJ/RhPbGE59byvZEUQ4VP6XkLBaS5Jti5jpvw==} 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.70.1': - resolution: {integrity: sha512-62xOgboPfwc3/IgPSX/W6oQR3ZbF04194FPGUGH8HL8iLFHbt/456/8Ph1wLNUgVF+s94FlHoipBsz+v7+LMnA==} + '@typescript-eslint/project-service@8.71.1': + resolution: {integrity: sha512-Oijc9RUsohHjncg6iGi7gCtjnEjYt9FWv9u6ygK8uKcHK5eLjLAkqERQ9BaytbpceOFdk6kifPCS/zAZE+A99g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.70.1': - resolution: {integrity: sha512-Pa0EeSeAusQc1WbjQMac+YfenewYTBu0KjgYvkUKwhXaHUKbFog23Dm/rp0DX/6tyYOQ3Xl1a+3EcFNZynGHCw==} + '@typescript-eslint/scope-manager@8.71.1': + resolution: {integrity: sha512-1YUDZXdTnXLlob03SFHBipdyMBsDVm7zoSz0ytTJ39dk5J1TgsTK03VlR/dLXG/RLLUrPcYbD4rp23BmHxHP0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.70.1': - resolution: {integrity: sha512-jumze1fPI+sDOaM2TWGQdn39PDxTr7TZGeuyLkAbNyx2vtMT3uRnVKChN0hfht5V2TugphJzF6bYXvBcE09qqg==} + '@typescript-eslint/tsconfig-utils@8.71.1': + resolution: {integrity: sha512-oTvkml5SxXhgg+WWKhod5qWQICDXtOB+/Hi9VdPKFAANJ2b7YOgMffgvzXuqog7R6A/JtrzRf128dsxummyWhg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.70.1': - resolution: {integrity: sha512-7zKTnyvaVWqzLZHPFQtX1hVHqgkMC+WebPWakNCSyrQVbIP1AM0L0TlBZtACldIRb6PptI8Odk+jyZ5kP3B1VA==} + '@typescript-eslint/type-utils@8.71.1': + resolution: {integrity: sha512-kH3t3jZCYv2PZSBEWPKTariLrCaoF1CLoPitYFBJOhAGEwWnSRAtGEifrfrpBa4K9JlwWNZotgA5w3/wLSk/FQ==} 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.70.1': - resolution: {integrity: sha512-Dm1ypdhhrGCTyyehxElhgJ6kgk8MVCv5qXdoOVqPr1uqk42jX8KjrZqhROvdShczA8qrDoYiOWn1ykWlx2k81Q==} + '@typescript-eslint/types@8.71.1': + resolution: {integrity: sha512-ybYnPTUwg3VQQOFEiBPLs8Jxl1ry2vXdn1kVKguomBbvxpetdu3MKTNDqFNUrlG8ylP9MpZosmXMFYlGQHk1oQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.70.1': - resolution: {integrity: sha512-TU8PwyGN0PQJUcE96mw8eCQ44SmxGdQlJmlWakHaHQ15eIuuvye5yNtmh/i6oS88jzXVQB71xdNkbkB/fMwL0g==} + '@typescript-eslint/typescript-estree@8.71.1': + resolution: {integrity: sha512-pSKSEK1JJpHs6KiKVtABCE4iJK5d7FLFzDXQNBQ2oRY7LEd3UwOt3TZemTgu9syTIf56dJWlTn/pdmrO9oKUXQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.70.1': - resolution: {integrity: sha512-Esgul8MsnKnRLdYU2Eb2cRV9bS5HJYtKj1ByJnOzzG2M58DGdSUQ1jUuILxipqcpB2h9WLrbD5GijIWUjX/Tqw==} + '@typescript-eslint/utils@8.71.1': + resolution: {integrity: sha512-CBjT6gfAz3DW2j9Q4moFnqt208Aq+506sVGXfpRcyAeqn0EpayL0mjdWoCO2t3RC7GewNrFxdeehuEaPg6DMzQ==} 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.70.1': - resolution: {integrity: sha512-Vwj9lUIW5Xq3wQ9w6gv3R86g1hMK8f2zNOdGTAgeXUMMXFK78G9ruCjjqutHMNJc0+CH7LYRnHeUB9IT8wFmcw==} + '@typescript-eslint/visitor-keys@8.71.1': + resolution: {integrity: sha512-0GxiUGqMU0qXJt58cBsiG3DP8lUmBaFo2vChtUX+CT7PnR3v/VGLLrzVP4K9r1lNiZXjHYefMBbPunplr09v6w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} acorn-jsx@5.3.2: @@ -934,8 +934,8 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.18.0: - resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==} + acorn@8.19.0: + resolution: {integrity: sha512-oJlA3XiRm7Cyk6qFD2Jn8ak9B7jSy0qy00ADO3+8dpT0LSjFihQYv4C02LFCSYJV3Q37xYwwRy5m+IpIiUzqWw==} engines: {node: '>=0.4.0'} hasBin: true @@ -950,8 +950,8 @@ packages: resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} engines: {node: '>=0.10.0'} - ansi-regex@6.3.0: - resolution: {integrity: sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ==} + ansi-regex@6.4.0: + resolution: {integrity: sha512-KzTVk2tCWAHtYrvvvaP8bJKJq2pVinhLcGEQdtLIYPbmNGNyYe8QwNaTUYQp2J7/vIsUKt5QCqAfUkYyG9DkOw==} engines: {node: '>=12'} ansi-styles@2.2.1: @@ -1004,8 +1004,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.11.26: - resolution: {integrity: sha512-GLQdD3y6UF8iVuMJl5fHgE4jdn/ua7n+toKfLgNlg3BqQtOZjpy68T8Tup8/wGWZCDlm7KMg7tPb4MPn7oN0TQ==} + baseline-browser-mapping@2.11.27: + resolution: {integrity: sha512-ElY12DaROGuan+lMmZ8Cvo/ZUbXPe7Enc/9VU/b1T3Kp4dwytRcNdR8DoSJN5SNJT/CuvcCA0DHDVmMOCePdRQ==} engines: {node: '>=6.0.0'} hasBin: true @@ -1049,8 +1049,8 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.29.1: - resolution: {integrity: sha512-AUdjuRyCNGUYtqpqfTmWyM4fXay8yIQhmLnvYe/THMGfT9B/34X7xQd3ifKxwyNPPpowVBjLb+64BN9Rn1mizw==} + browserslist@4.29.3: + resolution: {integrity: sha512-1R4kiYKXGViqEN0CnoDrXc1StD9niAwu+j2dukWzrD4bJgsD4lDmEp0CRbc6E/vYJIfTHwPmwyaKtVSudICdPA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -1106,8 +1106,8 @@ packages: resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} engines: {node: '>=0.10.0'} - caniuse-lite@1.0.30001812: - resolution: {integrity: sha512-qN+QNNBr93TCmFrmte0bBCjSDMuRvt78VlHT99qIGPszm4QsqCX8lnyWUFkHi8B7ZBAPq8SH+UqyXNy/odMdng==} + caniuse-lite@1.0.30001814: + resolution: {integrity: sha512-/Uaf1lAzr59XcMpW0o96WoEfr+VXK2OX4U9AgFoiSHsVJ4HppnIFUjtYzsyDH2+tgANaQb2/oxYGwCPapN1FpA==} caw@2.0.1: resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} @@ -1338,8 +1338,8 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.439: - resolution: {integrity: sha512-qu6QIPXhsb+CRcAiTMNjR4A1y/7tCYKkKjr5CZXRVih6qkDf79peZ2BpEU3qoDBNCRrcy3Mra3X9nG5oruuA7Q==} + electron-to-chromium@1.5.448: + resolution: {integrity: sha512-c3DEaf2iJbLz7XvmYGZQrzaxy6Azt2/NcWAV1r3GkibEyRNkVer6t3JevvwAQ6gW2JBGGY2N/MGMS/QV+77Ldw==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -1524,8 +1524,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.11.0: - resolution: {integrity: sha512-P7a6UEEqb9G95MYAtqkmsTbVXIYyzIfl6NGOIJk162PaahFxFyeGcrlXYFSiagECg4sEm8IseJdZBKR3rx6MsQ==} + eslint@10.12.0: + resolution: {integrity: sha512-npHjrHb2o4ehH3mE+YuxABR+0gyb0aVWCIolgJDArwCiHEIsonBm3ZKjel5b0U5+a+MbEvIyRCGCzD3eKKK2NA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -1869,8 +1869,8 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - ignore@7.0.10: - resolution: {integrity: sha512-HpbUakT7xp5miBUywCHf36ZEuAJNklBJDDsGpUIjMzOSmM8ELSfA9Sa/QDPeNeqeoN31u+UTCkL4klCOVvRm4Q==} + ignore@7.0.12: + resolution: {integrity: sha512-/8UvqAPU9DGTI9k4mxtf49U37Isfwr8Uts96+SBHIkFxPJnHS0Ew4f00sM4Scd8V8EjM0jUNtVDdv1kPdt35lg==} engines: {node: '>= 4'} imagemin-gifsicle@7.0.0: @@ -2304,8 +2304,8 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - nanoid@3.3.19: - resolution: {integrity: sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug==} + nanoid@3.3.20: + resolution: {integrity: sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -2523,14 +2523,10 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} - postcss@8.5.28: - resolution: {integrity: sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==} + postcss@8.5.29: + resolution: {integrity: sha512-49cGhUbXj8Qenv0iTMxA1cFBzxXoctpC9Ujd77t1WcbJIr6nF/eI7g/8MgxrYldFRuAXvja7xQRwavoW7kgrxQ==} engines: {node: ^10 || ^12 || >=14} - powershell-utils@0.1.0: - resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} - engines: {node: '>=20'} - powershell-utils@0.2.1: resolution: {integrity: sha512-C+y9x90UElAddDZmV4qOx9W53B61PO7cIqWz2dQsWlwswuq4mr8NEwytdGKboYbQlGZ3awrkTeNvcZiZNHnQ8A==} engines: {node: '>=20'} @@ -2669,8 +2665,8 @@ packages: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - resolve@1.22.12: - resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} + resolve@1.22.13: + resolution: {integrity: sha512-Dj/cW9zBV2aRj6XzCxuGIs3ESZKv02jixne3q6jFZYZ3/Tg09gHHviSMDL4kObh9pqSahdRHEnDoaP2gn8YLhA==} engines: {node: '>= 0.4'} hasBin: true @@ -2686,8 +2682,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rolldown@1.2.11: - resolution: {integrity: sha512-qpSwIyz0jHQq5qXBTNxFmE6664rJ7O+4TvPFOiOaBSrz8IOHc1koKKSqTM2H6u1UG1+TveuC6vaDHKXFOvb1Kw==} + rolldown@1.2.12: + resolution: {integrity: sha512-8wafseiaG80xmXSfqidUNqZcylTlhmPZZt+za2m+js2sFZ8dTNlhIOV2WcbIPx2hgwPBJpEUGFAMZ9bgBBLTSQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -2798,8 +2794,8 @@ packages: resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==} engines: {node: '>=4'} - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + source-map-js@1.2.2: + resolution: {integrity: sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==} engines: {node: '>=0.10.0'} source-map-support@0.5.21: @@ -2997,8 +2993,8 @@ packages: peerDependencies: typescript: '>=3.5.1' - typescript-eslint@8.70.1: - resolution: {integrity: sha512-AcWG7KDjZ2THNXsgwttMaGmzVi0VFRlFYfqFHYQRbDpF3owuYbuiL8c7UUrd2k8s3PoSfIQrWfrGXfcElrWLYA==} + typescript-eslint@8.71.1: + resolution: {integrity: sha512-oiNVPC3/NbV1FpaHU07l8O6ynqG9v4PAiW2WvTrAmZdR0f2HI/gE668ElMLCK7Xbsu5k2fK5C4fXNiq05j7/nQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -3061,8 +3057,8 @@ packages: peerDependencies: vite: 5.x || 6.x || 7.x || 8.x - vite@8.3.1: - resolution: {integrity: sha512-/bvH9E9tmCXRGp2uXY3WbOldqpTwFkbha/8ANaEQ6VkxhH60KyqLwgZq6lG2y+4uT55x9+9eUHMpQ7uGnOCKjA==} + vite@8.3.3: + resolution: {integrity: sha512-cTAldKPImjg6c+gk48U19POPn3GCBzZwpdsN8ZMEEcbpes+6/wvfqUd0C2y3qYY4wsj8PwgFwrZ/1jBPVttMSg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -3128,8 +3124,8 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - wsl-utils@1.0.0: - resolution: {integrity: sha512-Hl0ZOAs672vg+06kfujwRhoS6/jehvULrlFkuF2dRu6pHgA8U06h3xqNIqNNU1LTXPcedxByAR4GS6pwQK0mgA==} + wsl-utils@1.0.1: + resolution: {integrity: sha512-c16PKLIRxBYpR3jSWsdS7SFp0COm5SOQdiFjY818dYFHJbMGuLBszpF07LBWmOS1uzrHa9VGdynsEgoeKy0oOQ==} engines: {node: '>=20'} xtend@4.0.2: @@ -3225,7 +3221,7 @@ snapshots: dependencies: '@babel/compat-data': 7.29.7 '@babel/helper-validator-option': 7.29.7 - browserslist: 4.29.1 + browserslist: 4.29.3 lru-cache: 5.1.1 semver: 6.3.1 @@ -3410,9 +3406,9 @@ snapshots: '@esbuild/linux-loong64@0.14.54': optional: true - '@eslint-community/eslint-utils@4.10.1(eslint@10.11.0(supports-color@10.2.2))': + '@eslint-community/eslint-utils@4.10.1(eslint@10.12.0(supports-color@10.2.2))': dependencies: - eslint: 10.11.0(supports-color@10.2.2) + eslint: 10.12.0(supports-color@10.2.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} @@ -3433,9 +3429,9 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/js@10.0.1(eslint@10.11.0(supports-color@10.2.2))': + '@eslint/js@10.0.1(eslint@10.12.0(supports-color@10.2.2))': optionalDependencies: - eslint: 10.11.0(supports-color@10.2.2) + eslint: 10.12.0(supports-color@10.2.2) '@eslint/object-schema@3.0.5': {} @@ -3591,23 +3587,23 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.3 - '@oxc-project/types@0.151.0': {} + '@oxc-project/types@0.152.0': {} '@popperjs/core@2.11.8': {} - '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2))': + '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@prefresh/vite': 2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2)) + '@prefresh/vite': 2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)) '@rollup/pluginutils': 5.4.0 babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.7(supports-color@10.2.2)) debug: 4.4.3(supports-color@10.2.2) magic-string: 0.30.21 picocolors: 1.1.1 - vite: 8.3.1(@types/node@26.6.3)(terser@5.51.2) - vite-prerender-plugin: 0.5.14(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2)) + vite: 8.3.3(@types/node@26.6.4)(terser@5.51.2) + vite-prerender-plugin: 0.5.14(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)) zimmerframe: 1.1.5 transitivePeerDependencies: - preact @@ -3624,7 +3620,7 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2))': + '@prefresh/vite@2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@prefresh/babel-plugin': 0.5.4(@babel/core@7.29.7(supports-color@10.2.2)) @@ -3632,55 +3628,55 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 10.29.8 - vite: 8.3.1(@types/node@26.6.3)(terser@5.51.2) + vite: 8.3.3(@types/node@26.6.4)(terser@5.51.2) transitivePeerDependencies: - supports-color '@remix-run/route-pattern@0.22.1': {} - '@rolldown/binding-android-arm-eabi@1.2.11': + '@rolldown/binding-android-arm-eabi@1.2.12': optional: true - '@rolldown/binding-android-arm64@1.2.11': + '@rolldown/binding-android-arm64@1.2.12': optional: true - '@rolldown/binding-darwin-arm64@1.2.11': + '@rolldown/binding-darwin-arm64@1.2.12': optional: true - '@rolldown/binding-darwin-x64@1.2.11': + '@rolldown/binding-darwin-x64@1.2.12': optional: true - '@rolldown/binding-freebsd-x64@1.2.11': + '@rolldown/binding-freebsd-x64@1.2.12': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.2.11': + '@rolldown/binding-linux-arm-gnueabihf@1.2.12': optional: true - '@rolldown/binding-linux-arm64-gnu@1.2.11': + '@rolldown/binding-linux-arm64-gnu@1.2.12': optional: true - '@rolldown/binding-linux-arm64-musl@1.2.11': + '@rolldown/binding-linux-arm64-musl@1.2.12': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.2.11': + '@rolldown/binding-linux-ppc64-gnu@1.2.12': optional: true - '@rolldown/binding-linux-s390x-gnu@1.2.11': + '@rolldown/binding-linux-s390x-gnu@1.2.12': optional: true - '@rolldown/binding-linux-x64-gnu@1.2.11': + '@rolldown/binding-linux-x64-gnu@1.2.12': optional: true - '@rolldown/binding-linux-x64-musl@1.2.11': + '@rolldown/binding-linux-x64-musl@1.2.12': optional: true - '@rolldown/binding-openharmony-arm64@1.2.11': + '@rolldown/binding-openharmony-arm64@1.2.12': optional: true - '@rolldown/binding-win32-arm64-msvc@1.2.11': + '@rolldown/binding-win32-arm64-msvc@1.2.12': optional: true - '@rolldown/binding-win32-x64-msvc@1.2.11': + '@rolldown/binding-win32-x64-msvc@1.2.12': optional: true '@rolldown/pluginutils@1.0.1': {} @@ -3728,7 +3724,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 26.6.3 + '@types/node': 26.6.4 '@types/imagemin-gifsicle@7.0.4': dependencies: @@ -3757,17 +3753,17 @@ snapshots: '@types/imagemin@7.0.1': dependencies: - '@types/node': 26.6.3 + '@types/node': 26.6.4 '@types/json-schema@7.0.15': {} '@types/keyv@3.1.4': dependencies: - '@types/node': 26.6.3 + '@types/node': 26.6.4 '@types/minimatch@5.1.2': {} - '@types/node@26.6.3': + '@types/node@26.6.4': dependencies: undici-types: 8.9.0 @@ -3789,78 +3785,78 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 26.6.3 + '@types/node': 26.6.4 '@types/svgo@2.6.4': dependencies: - '@types/node': 26.6.3 + '@types/node': 26.6.4 - '@typescript-eslint/eslint-plugin@8.70.1(@typescript-eslint/parser@8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.71.1(@typescript-eslint/parser@8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.70.1 - '@typescript-eslint/type-utils': 8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/utils': 8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.70.1 - eslint: 10.11.0(supports-color@10.2.2) - ignore: 7.0.10 + '@typescript-eslint/parser': 8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.71.1 + '@typescript-eslint/type-utils': 8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/utils': 8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.71.1 + eslint: 10.12.0(supports-color@10.2.2) + ignore: 7.0.12 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/parser@8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/scope-manager': 8.70.1 - '@typescript-eslint/types': 8.70.1 - '@typescript-eslint/typescript-estree': 8.70.1(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.70.1 + '@typescript-eslint/scope-manager': 8.71.1 + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/typescript-estree': 8.71.1(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.71.1 debug: 4.4.3(supports-color@10.2.2) - eslint: 10.11.0(supports-color@10.2.2) + eslint: 10.12.0(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.70.1(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/project-service@8.71.1(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.70.1(typescript@6.0.3) - '@typescript-eslint/types': 8.70.1 + '@typescript-eslint/tsconfig-utils': 8.71.1(typescript@6.0.3) + '@typescript-eslint/types': 8.71.1 debug: 4.4.3(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.70.1': + '@typescript-eslint/scope-manager@8.71.1': dependencies: - '@typescript-eslint/types': 8.70.1 - '@typescript-eslint/visitor-keys': 8.70.1 + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/visitor-keys': 8.71.1 - '@typescript-eslint/tsconfig-utils@8.70.1(typescript@6.0.3)': + '@typescript-eslint/tsconfig-utils@8.71.1(typescript@6.0.3)': dependencies: typescript: 6.0.3 - '@typescript-eslint/type-utils@8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/types': 8.70.1 - '@typescript-eslint/typescript-estree': 8.70.1(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/utils': 8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/typescript-estree': 8.71.1(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/utils': 8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) debug: 4.4.3(supports-color@10.2.2) - eslint: 10.11.0(supports-color@10.2.2) + eslint: 10.12.0(supports-color@10.2.2) ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.70.1': {} + '@typescript-eslint/types@8.71.1': {} - '@typescript-eslint/typescript-estree@8.70.1(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/typescript-estree@8.71.1(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/project-service': 8.70.1(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.70.1(typescript@6.0.3) - '@typescript-eslint/types': 8.70.1 - '@typescript-eslint/visitor-keys': 8.70.1 + '@typescript-eslint/project-service': 8.71.1(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.71.1(typescript@6.0.3) + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/visitor-keys': 8.71.1 debug: 4.4.3(supports-color@10.2.2) minimatch: 10.2.6 semver: 7.8.5 @@ -3870,27 +3866,27 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/utils@8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@eslint-community/eslint-utils': 4.10.1(eslint@10.11.0(supports-color@10.2.2)) - '@typescript-eslint/scope-manager': 8.70.1 - '@typescript-eslint/types': 8.70.1 - '@typescript-eslint/typescript-estree': 8.70.1(supports-color@10.2.2)(typescript@6.0.3) - eslint: 10.11.0(supports-color@10.2.2) + '@eslint-community/eslint-utils': 4.10.1(eslint@10.12.0(supports-color@10.2.2)) + '@typescript-eslint/scope-manager': 8.71.1 + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/typescript-estree': 8.71.1(supports-color@10.2.2)(typescript@6.0.3) + eslint: 10.12.0(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.70.1': + '@typescript-eslint/visitor-keys@8.71.1': dependencies: - '@typescript-eslint/types': 8.70.1 + '@typescript-eslint/types': 8.71.1 eslint-visitor-keys: 5.0.1 - acorn-jsx@5.3.2(acorn@8.18.0): + acorn-jsx@5.3.2(acorn@8.19.0): dependencies: - acorn: 8.18.0 + acorn: 8.19.0 - acorn@8.18.0: {} + acorn@8.19.0: {} ajv@6.15.0: dependencies: @@ -3906,7 +3902,7 @@ snapshots: ansi-regex@2.1.1: {} - ansi-regex@6.3.0: {} + ansi-regex@6.4.0: {} ansi-styles@2.2.1: {} @@ -3934,7 +3930,7 @@ snapshots: dependencies: '@babel/runtime': 7.29.7 cosmiconfig: 7.1.0 - resolve: 1.22.12 + resolve: 1.22.13 babel-plugin-transform-hook-names@1.0.2(@babel/core@7.29.7(supports-color@10.2.2)): dependencies: @@ -3946,7 +3942,7 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.11.26: {} + baseline-browser-mapping@2.11.27: {} bin-build@3.0.0: dependencies: @@ -4005,13 +4001,13 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.29.1: + browserslist@4.29.3: dependencies: - baseline-browser-mapping: 2.11.26 - caniuse-lite: 1.0.30001812 - electron-to-chromium: 1.5.439 + baseline-browser-mapping: 2.11.27 + caniuse-lite: 1.0.30001814 + electron-to-chromium: 1.5.448 node-releases: 2.0.57 - update-browserslist-db: 1.3.3(browserslist@4.29.1) + update-browserslist-db: 1.3.3(browserslist@4.29.3) buffer-alloc-unsafe@1.1.0: {} @@ -4079,7 +4075,7 @@ snapshots: camelcase@2.1.1: {} - caniuse-lite@1.0.30001812: {} + caniuse-lite@1.0.30001814: {} caw@2.0.1: dependencies: @@ -4374,7 +4370,7 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.439: {} + electron-to-chromium@1.5.448: {} emoji-regex@10.6.0: {} @@ -4488,9 +4484,9 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@10.1.8(eslint@10.11.0(supports-color@10.2.2)): + eslint-config-prettier@10.1.8(eslint@10.12.0(supports-color@10.2.2)): dependencies: - eslint: 10.11.0(supports-color@10.2.2) + eslint: 10.12.0(supports-color@10.2.2) eslint-scope@9.1.2: dependencies: @@ -4503,9 +4499,9 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.11.0(supports-color@10.2.2): + eslint@10.12.0(supports-color@10.2.2): dependencies: - '@eslint-community/eslint-utils': 4.10.1(eslint@10.11.0(supports-color@10.2.2)) + '@eslint-community/eslint-utils': 4.10.1(eslint@10.12.0(supports-color@10.2.2)) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.23.5(supports-color@10.2.2) '@eslint/config-helpers': 0.7.0 @@ -4540,8 +4536,8 @@ snapshots: espree@11.2.0: dependencies: - acorn: 8.18.0 - acorn-jsx: 5.3.2(acorn@8.18.0) + acorn: 8.19.0 + acorn-jsx: 5.3.2(acorn@8.19.0) eslint-visitor-keys: 5.0.1 esquery@1.7.0: @@ -4917,7 +4913,7 @@ snapshots: ignore@5.3.2: {} - ignore@7.0.10: {} + ignore@7.0.12: {} imagemin-gifsicle@7.0.0: dependencies: @@ -5300,7 +5296,7 @@ snapshots: ms@2.1.3: {} - nanoid@3.3.19: {} + nanoid@3.3.20: {} natural-compare@1.4.0: {} @@ -5316,7 +5312,7 @@ snapshots: normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.12 + resolve: 1.22.13 semver: 5.7.2 validate-npm-package-license: 3.0.4 @@ -5360,7 +5356,7 @@ snapshots: is-in-ssh: 1.0.0 is-inside-container: 1.0.0 powershell-utils: 0.2.1 - wsl-utils: 1.0.0 + wsl-utils: 1.0.1 optionator@0.9.4: dependencies: @@ -5497,13 +5493,11 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss@8.5.28: + postcss@8.5.29: dependencies: - nanoid: 3.3.19 + nanoid: 3.3.20 picocolors: 1.1.1 - source-map-js: 1.2.1 - - powershell-utils@0.1.0: {} + source-map-js: 1.2.2 powershell-utils@0.2.1: {} @@ -5628,7 +5622,7 @@ snapshots: resolve-from@4.0.0: {} - resolve@1.22.12: + resolve@1.22.13: dependencies: es-errors: 1.3.0 is-core-module: 2.17.0 @@ -5645,35 +5639,35 @@ snapshots: dependencies: glob: 7.2.3 - rolldown@1.2.11: + rolldown@1.2.12: dependencies: - '@oxc-project/types': 0.151.0 + '@oxc-project/types': 0.152.0 '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm-eabi': 1.2.11 - '@rolldown/binding-android-arm64': 1.2.11 - '@rolldown/binding-darwin-arm64': 1.2.11 - '@rolldown/binding-darwin-x64': 1.2.11 - '@rolldown/binding-freebsd-x64': 1.2.11 - '@rolldown/binding-linux-arm-gnueabihf': 1.2.11 - '@rolldown/binding-linux-arm64-gnu': 1.2.11 - '@rolldown/binding-linux-arm64-musl': 1.2.11 - '@rolldown/binding-linux-ppc64-gnu': 1.2.11 - '@rolldown/binding-linux-s390x-gnu': 1.2.11 - '@rolldown/binding-linux-x64-gnu': 1.2.11 - '@rolldown/binding-linux-x64-musl': 1.2.11 - '@rolldown/binding-openharmony-arm64': 1.2.11 - '@rolldown/binding-win32-arm64-msvc': 1.2.11 - '@rolldown/binding-win32-x64-msvc': 1.2.11 + '@rolldown/binding-android-arm-eabi': 1.2.12 + '@rolldown/binding-android-arm64': 1.2.12 + '@rolldown/binding-darwin-arm64': 1.2.12 + '@rolldown/binding-darwin-x64': 1.2.12 + '@rolldown/binding-freebsd-x64': 1.2.12 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.12 + '@rolldown/binding-linux-arm64-gnu': 1.2.12 + '@rolldown/binding-linux-arm64-musl': 1.2.12 + '@rolldown/binding-linux-ppc64-gnu': 1.2.12 + '@rolldown/binding-linux-s390x-gnu': 1.2.12 + '@rolldown/binding-linux-x64-gnu': 1.2.12 + '@rolldown/binding-linux-x64-musl': 1.2.12 + '@rolldown/binding-openharmony-arm64': 1.2.12 + '@rolldown/binding-win32-arm64-msvc': 1.2.12 + '@rolldown/binding-win32-x64-msvc': 1.2.12 - rollup-plugin-visualizer@7.1.1(rolldown@1.2.11): + rollup-plugin-visualizer@7.1.1(rolldown@1.2.12): dependencies: open: 11.0.4 picomatch: 4.0.7 source-map: 0.8.0 yargs: 18.2.0 optionalDependencies: - rolldown: 1.2.11 + rolldown: 1.2.12 run-applescript@7.1.0: {} @@ -5752,7 +5746,7 @@ snapshots: dependencies: is-plain-obj: 1.1.0 - source-map-js@1.2.1: {} + source-map-js@1.2.2: {} source-map-support@0.5.21: dependencies: @@ -5814,7 +5808,7 @@ snapshots: strip-ansi@7.2.0: dependencies: - ansi-regex: 6.3.0 + ansi-regex: 6.4.0 strip-bom@2.0.0: dependencies: @@ -5880,7 +5874,7 @@ snapshots: terser@5.51.2: dependencies: '@jridgewell/source-map': 0.3.11 - acorn: 8.18.0 + acorn: 8.19.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -5937,13 +5931,13 @@ snapshots: dependencies: typescript: 6.0.3 - typescript-eslint@8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3): + typescript-eslint@8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.70.1(@typescript-eslint/parser@8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/parser': 8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.70.1(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/utils': 8.70.1(eslint@10.11.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - eslint: 10.11.0(supports-color@10.2.2) + '@typescript-eslint/eslint-plugin': 8.71.1(@typescript-eslint/parser@8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/parser': 8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.71.1(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/utils': 8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + eslint: 10.12.0(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -5959,9 +5953,9 @@ snapshots: universalify@2.0.1: {} - update-browserslist-db@1.3.3(browserslist@4.29.1): + update-browserslist-db@1.3.3(browserslist@4.29.3): dependencies: - browserslist: 4.29.1 + browserslist: 4.29.3 escalade: 3.2.0 picocolors: 1.1.1 @@ -5988,7 +5982,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-imagemin@0.6.1(supports-color@10.2.2)(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2)): + vite-plugin-imagemin@0.6.1(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)): dependencies: '@types/imagemin': 7.0.1 '@types/imagemin-gifsicle': 7.0.4 @@ -6013,11 +6007,11 @@ snapshots: imagemin-webp: 6.1.0 jpegtran-bin: 6.0.1 pathe: 0.2.0 - vite: 8.3.1(@types/node@26.6.3)(terser@5.51.2) + vite: 8.3.3(@types/node@26.6.4)(terser@5.51.2) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.14(vite@8.3.1(@types/node@26.6.3)(terser@5.51.2)): + vite-prerender-plugin@0.5.14(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -6025,17 +6019,17 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0 - vite: 8.3.1(@types/node@26.6.3)(terser@5.51.2) + vite: 8.3.3(@types/node@26.6.4)(terser@5.51.2) - vite@8.3.1(@types/node@26.6.3)(terser@5.51.2): + vite@8.3.3(@types/node@26.6.4)(terser@5.51.2): dependencies: lightningcss: 1.33.0 picomatch: 4.0.7 - postcss: 8.5.28 - rolldown: 1.2.11 + postcss: 8.5.29 + rolldown: 1.2.12 tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 26.6.3 + '@types/node': 26.6.4 fsevents: 2.3.3 terser: 5.51.2 @@ -6067,10 +6061,10 @@ snapshots: wrappy@1.0.2: {} - wsl-utils@1.0.0: + wsl-utils@1.0.1: dependencies: is-wsl: 3.1.1 - powershell-utils: 0.1.0 + powershell-utils: 0.2.1 xtend@4.0.2: {} -- 2.54.0 From a61a0cc64c08e3ec2e1577dd8bea6b3f3a0df45f Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 8 Oct 2026 10:32:17 +0200 Subject: [PATCH 044/148] rgb-led timing: more exact --- src/core/led.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/core/led.cpp b/src/core/led.cpp index abf649756..cbe068c3a 100644 --- a/src/core/led.cpp +++ b/src/core/led.cpp @@ -31,17 +31,17 @@ namespace rgb_led { namespace { -// durations in 100 ns ticks -constexpr uint16_t T0H = 3; // 300 ns -constexpr uint16_t T0L = 9; // 900 ns -constexpr uint16_t T1H = 8; // 800 ns -constexpr uint16_t T1L = 6; // 600 ns +// durations in 12.5 ns ticks +constexpr uint16_t T0H = 3.5 * 8; // 350 ns +constexpr uint16_t T0L = 9 * 8; // 900 ns +constexpr uint16_t T1H = 8 * 8; // 800 ns +constexpr uint16_t T1L = 6 * 8; // 600 ns // rmt_data_t.val layout: duration0:15, level0:1, duration1:15, level1:1 (high then low) constexpr uint32_t SYMBOL_0 = T0H | (1UL << 15) | (static_cast(T0L) << 16); constexpr uint32_t SYMBOL_1 = T1H | (1UL << 15) | (static_cast(T1L) << 16); -constexpr uint32_t RMT_FREQ_HZ = 10000000; // 10 MHz +constexpr uint32_t RMT_FREQ_HZ = 80000000; // 80 MHz constexpr uint32_t RESET_US = 300; constexpr uint8_t NO_PIN = 0xFF; constexpr uint8_t MAX_PINS = 2; // status LED + an RGB analog sensor; the ESP32-C3 only has 2 RMT TX channels -- 2.54.0 From 987710ac278e9232d4e7dcd3870699b4dd275187 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 8 Oct 2026 10:33:14 +0200 Subject: [PATCH 045/148] fix CUTOM board serial terminal issue --- src/core/system.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/core/system.cpp b/src/core/system.cpp index 3c65f7c82..ff9fa1e91 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -3767,9 +3767,14 @@ void System::remove_optional_gpio(uint8_t pin) { // set unused gpios to default state input high-Z void System::reset_unused_gpios() { +#if CONFIG_IDF_TARGET_ESP32 +constexpr uint8_t tx0 = 1; // don't change tx0 pin +#else +constexpr uint8_t tx0 = 255; // no valid pin, chips have native USB, tx0 not connected to transceiver +#endif 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()) { + if (it == used_gpios_.end() && pin != tx0) { LOG_DEBUG("reset pin %d", pin); pinMode(pin, INPUT); } -- 2.54.0 From 8856d8f9c922aeba2a96f4ed3f3eb88c02588bfa Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 8 Oct 2026 10:34:32 +0200 Subject: [PATCH 046/148] fix maxHeat #3262, #3265 --- src/devices/boiler.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 9f71c9e8a..31bb7173f 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -726,7 +726,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const register_device_value(DeviceValueTAG::TAG_DHW1, &maxHeatDhw_, DeviceValueType::ENUM, - FL_(enum_maxHeat2), + FL_(enum_maxHeat1), FL_(maxHeatDhw), DeviceValueUOM::NONE, MAKE_CF_CB(set_maxHeatDhw)); @@ -1873,7 +1873,7 @@ void Boiler::process_HpHeaterConfig(const std::shared_ptr & tele if (model() == EMSdevice::EMS_DEVICE_FLAG_CS6800) { has_enumupdate(telegram, maxHeatComp_, 2, {0, 2, 4, 5}); has_enumupdate(telegram, maxHeatHeat_, 3, {2, 4, 5}); - has_enumupdate(telegram, maxHeatDhw_, 4, {2, 4, 5}); + has_enumupdate(telegram, maxHeatDhw_, 4, {0, 2, 4, 5}); return; } has_update(telegram, maxHeatComp_, 2); @@ -3238,7 +3238,7 @@ bool Boiler::set_HpInLogic(const char * value, const int8_t id) { bool Boiler::set_maxHeat(const char * value, const int8_t id) { uint8_t v; if (model() == EMSdevice::EMS_DEVICE_FLAG_CS6800) { - if (id == 0) { + if (id == 2 || id == 4) { // maxHeatComp, maxHeatDhw if (!Helpers::value2enum(value, v, FL_(enum_maxHeat1), {0, 2, 4, 5})) { return false; } -- 2.54.0 From 61177d1fa1cbff6f303b614e2273f4307310e402 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 8 Oct 2026 13:11:46 +0200 Subject: [PATCH 047/148] tx-mode 0 selectable for developers --- interface/src/app/settings/ApplicationSettings.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/interface/src/app/settings/ApplicationSettings.tsx b/interface/src/app/settings/ApplicationSettings.tsx index 84f790fc8..cb3ff1333 100644 --- a/interface/src/app/settings/ApplicationSettings.tsx +++ b/interface/src/app/settings/ApplicationSettings.tsx @@ -846,6 +846,7 @@ const ApplicationSettings = () => { sx={{ width: '15ch' }} select > + {data.developer_mode && {LL.OFF()}} EMS EMS+ HT3 -- 2.54.0 From 7851ae86c7bcba396950f001c9df711d5bee3a7a Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 8 Oct 2026 13:37:56 +0200 Subject: [PATCH 048/148] pkg update --- interface/package.json | 2 +- interface/pnpm-lock.yaml | 204 +++++++++++++++++++-------------------- mock-api/package.json | 2 +- mock-api/pnpm-lock.yaml | 130 ++++++++++++------------- mock-api/restServer.ts | 36 +++---- project-words.txt | 1 + 6 files changed, 188 insertions(+), 187 deletions(-) diff --git a/interface/package.json b/interface/package.json index 475b26bc0..58d8d8f4c 100644 --- a/interface/package.json +++ b/interface/package.json @@ -60,5 +60,5 @@ "vite": "^8.3.3", "vite-plugin-imagemin": "^0.6.1" }, - "packageManager": "pnpm@12.9.1" + "packageManager": "pnpm@12.10.1" } diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index 94b15bac3..363cf360f 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -7,153 +7,153 @@ importers: configDependencies: {} packageManagerDependencies: pnpm: - specifier: 12.9.1 - version: 12.9.1 + specifier: 12.10.1 + version: 12.10.1 packages: - '@pnpm/exe.android-arm64@12.9.1': - resolution: {integrity: sha512-Hgm1XdqMTfBC8PdGLL+NjZWv4xyi7D6XNrN9fb24XGYlyTBmUtdCefKnCLmHujShRD8BEO1zqM30SNcKBDLysw==} + '@pnpm/exe.android-arm64@12.10.1': + resolution: {integrity: sha512-CVTlHPwNvadQCJD9bGSMzWIhFX8QpjtqC2c27dhdnn/9iKzEjZ3qL62o3gHpKbIuo6qn4WxTKRoaokgNdReBig==} cpu: [arm64] os: [android] - '@pnpm/exe.android-x64@12.9.1': - resolution: {integrity: sha512-WDGCe6jZRVZP3RC/q6hOkZylkPkIQIi1/GcrR/d/YzbihhAHXCczrk+UYnV5TgbsEnAYO7Cx+2rX3nfhHvy24w==} + '@pnpm/exe.android-x64@12.10.1': + resolution: {integrity: sha512-NFiYLIaodY7da0XIebwcU3JoP7IK/lzF7zgKSSP+9H+QcFnQ1GDfBkuBKCYJzZ+Xu0WH54neIPLBBCaOjaaauA==} cpu: [x64] os: [android] - '@pnpm/exe.darwin-arm64@12.9.1': - resolution: {integrity: sha512-+7iiEEBgYN9szPWUnAuN6eOVMTI6Hrki5bcuC9n9xl9tTnT53Tpxpo45Hml+W4IrAU0d+Tmd0sPnVIbX59PD6w==} + '@pnpm/exe.darwin-arm64@12.10.1': + resolution: {integrity: sha512-0O8tdQ8ijlPJudXspLMTcitMkdBEz6uUflazL5uQE0WMs85oQIp0U+5hfEktMFB64QqEhjqlvvujTwbzdr9oMg==} cpu: [arm64] os: [darwin] - '@pnpm/exe.darwin-x64@12.9.1': - resolution: {integrity: sha512-SK7TxJiR12GbJZGffRFHItkc+Mx+99v6xMMJ9/X//8NwWV1wo17a2bwfGI8qZpl17YwsrmPEFOOqhzE1GIlrtQ==} + '@pnpm/exe.darwin-x64@12.10.1': + resolution: {integrity: sha512-ud+1/uZOKEo8P/AsPynOJc/LNwfI0j6WwCElibj71rU9l4nIBnsSn+wWTIPZPkZ4BBSH5+82azSnAARMyJ1lNA==} cpu: [x64] os: [darwin] - '@pnpm/exe.freebsd-x64@12.9.1': - resolution: {integrity: sha512-4AjLk6uvTs2iO6wMit2hcxJ2M32xb7OV5SNFk+w6G8/NzcjcMB7ENEpyeXyLiP0kcnp8uaCGUct2NfrLCJ35eQ==} + '@pnpm/exe.freebsd-x64@12.10.1': + resolution: {integrity: sha512-mj9PE5rf8uAfQQ2K66HSATMSut+lNiB4eSqFd5+azFVCMnxNSy/32xpZQJT21PhnN3Y4qbK+iKHe5nWAxSuRhw==} cpu: [x64] os: [freebsd] - '@pnpm/exe.linux-arm64-musl@12.9.1': - resolution: {integrity: sha512-dZL2ES1ckDWM9v+EtxoOklZ0WNdtayooi9iLiDUubopudX3zXPNR2mlrxBRgjbDgECOndQen2SmyxL5eZiBuKw==} + '@pnpm/exe.linux-arm64-musl@12.10.1': + resolution: {integrity: sha512-xba+00wZJ8Um6rBJJjWl88uJj0tydB8dtomvjlCLvi0uL32vpa9CRP8Vv26FIXvbiZ1bo2RCzYt/eChxJVV52w==} cpu: [arm64] os: [linux] libc: [musl] - '@pnpm/exe.linux-arm64@12.9.1': - resolution: {integrity: sha512-cx+uF6xqwEtm7B8NV+1ve0xBg9gcuzQZ5R+0WgOWvKG/h978UljS6BgWs1ipIGuGgUdeVhm3PKmBltXIcczLXA==} + '@pnpm/exe.linux-arm64@12.10.1': + resolution: {integrity: sha512-oBdMp69ScC9UnniG4qZAQVr2fBDSXjm4yk/72vkEVyrlwS23yMxcRQl7Qdo3sgXPAygY6TWnPRKm4rXzjoyW7w==} cpu: [arm64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-ppc64@12.9.1': - resolution: {integrity: sha512-MpjPsy4XR17zAtLziQZfsN+wveWa/bUJggZtwfo3+SuyRmXnSvVkFD4+v8/3RTWyYaM6mwLUTjZDJ+g3urL+ew==} + '@pnpm/exe.linux-ppc64@12.10.1': + resolution: {integrity: sha512-Yyb3wu09h3c7mLme270uHFiVaAIUHC411Ru9LIU2BKUIstrGlXa9OqqVWoXaRgYRdFdOFknkwG7GNn6ygwLbnw==} cpu: [ppc64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-riscv64@12.9.1': - resolution: {integrity: sha512-Oo67TKqqH+Bno+L6X7Xyorwp1QG82zKIkL0vbo1x2kcPTDiyPbdM+d6lIs4+hzeB1KHT5FDoGzZj2dad7Ft+eg==} + '@pnpm/exe.linux-riscv64@12.10.1': + resolution: {integrity: sha512-PdkeUFFkybknnGkWP0H22eMpIiS4OZXL5BcQzF4lh+vmrW3IaC2HOkbANKgot/PKO0Kl77pzA/6PKFxgbgfXIQ==} cpu: [riscv64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-s390x@12.9.1': - resolution: {integrity: sha512-QAD5FRCdW36HfD58BV7DoDm6z8yv+GgSqcUV1+ERwYjpVQuG6ZTpf5o0x3KDas8eTLIW7MLYVdDdlAurWeArEg==} + '@pnpm/exe.linux-s390x@12.10.1': + resolution: {integrity: sha512-1okKuHKJwJPAbofDxfhZWAUxEWtee4ZSf7Pah8kcvocaJkf2WxFJ5KVTiNIvDml5GLidDQsgf7Pcf/WHbCak7Q==} cpu: [s390x] os: [linux] libc: [glibc] - '@pnpm/exe.linux-x64-musl@12.9.1': - resolution: {integrity: sha512-mQDhBsGqcTkrLQM4q5igmRFcr6EAl4UM/FGawY+0CWGcqPpUmYUvDy9LHy80xxkHIWVJ886gvvso2XOjfav1Jw==} + '@pnpm/exe.linux-x64-musl@12.10.1': + resolution: {integrity: sha512-e6IqzVNkPa7srFKJKnY23uWJ+qz0LaRWiTUo/sHfFXRRMRzB5uNOr6qWWip/jqhdGwU91n9J7LrEYZ6e0tRczw==} cpu: [x64] os: [linux] libc: [musl] - '@pnpm/exe.linux-x64@12.9.1': - resolution: {integrity: sha512-+M5N74hM4fc87AAckxx/UIW+dUnWf2eko+HchJs/NZUxehLhekNyMI/GNaNXlvd+kWR+97XXBD51XRkkNiUtrA==} + '@pnpm/exe.linux-x64@12.10.1': + resolution: {integrity: sha512-ZByV0DRgWzGaDSjT5ddRBASdwz+r/qPMYh7o6RGmPQjtRGNFbSl94xY2DcAM8mqCOZJUUDtAXQ+wpBXcdpKlkg==} cpu: [x64] os: [linux] libc: [glibc] - '@pnpm/exe.win32-arm64@12.9.1': - resolution: {integrity: sha512-mI28C2wxobrDi6x1OYhBRyG10hnDq/4sEIyy5RzoX6LB4kLuv6K/d25HOpMwlW20cuM4M72k9NZpOdcmUxMbEA==} + '@pnpm/exe.win32-arm64@12.10.1': + resolution: {integrity: sha512-I7QZHcjioG7orFeCRUFUHByJ1G0zFPnAlaGGyrUvb6MGkv5oeNwNPl7t+Gp+7zHfnMcgLGJ1a+Wfim0IDw3lOw==} cpu: [arm64] os: [win32] - '@pnpm/exe.win32-x64@12.9.1': - resolution: {integrity: sha512-SWoDMT0oD7NrDSIoPpkKD09D9fAQKNjwFZ3lezlCUhAfXxMv70zsfrNT2/P+GoCK2kefXF9OysUZkH1l5vvvfA==} + '@pnpm/exe.win32-x64@12.10.1': + resolution: {integrity: sha512-4WJFdp58EKlCj0zLobrXU0vpszSZIr4X/3y/uNbAQqGW0zE+VdruZB0gFc3L2kzsUzVwTYbaCn+XEhnCYSAlTg==} cpu: [x64] os: [win32] - pnpm@12.9.1: - resolution: {integrity: sha512-BrBV//XNINwSeB3hc87TMQzglRvy7GICEaFgRdVETVyTpmMhB2TvKaZTphBFm6A2jw50+E2AxUcjz5Wq57wNbQ==} + pnpm@12.10.1: + resolution: {integrity: sha512-ukCjfrGjcNYP6oxM8dNkwTvMzvUY6YrSvO6VT1OdONo3RY5YJho/pV4GUjRQ6g//+fSXsTW+QfLBXBZCusrObA==} engines: {node: '>=18.*'} hasBin: true snapshots: - '@pnpm/exe.android-arm64@12.9.1': + '@pnpm/exe.android-arm64@12.10.1': optional: true - '@pnpm/exe.android-x64@12.9.1': + '@pnpm/exe.android-x64@12.10.1': optional: true - '@pnpm/exe.darwin-arm64@12.9.1': + '@pnpm/exe.darwin-arm64@12.10.1': optional: true - '@pnpm/exe.darwin-x64@12.9.1': + '@pnpm/exe.darwin-x64@12.10.1': optional: true - '@pnpm/exe.freebsd-x64@12.9.1': + '@pnpm/exe.freebsd-x64@12.10.1': optional: true - '@pnpm/exe.linux-arm64-musl@12.9.1': + '@pnpm/exe.linux-arm64-musl@12.10.1': optional: true - '@pnpm/exe.linux-arm64@12.9.1': + '@pnpm/exe.linux-arm64@12.10.1': optional: true - '@pnpm/exe.linux-ppc64@12.9.1': + '@pnpm/exe.linux-ppc64@12.10.1': optional: true - '@pnpm/exe.linux-riscv64@12.9.1': + '@pnpm/exe.linux-riscv64@12.10.1': optional: true - '@pnpm/exe.linux-s390x@12.9.1': + '@pnpm/exe.linux-s390x@12.10.1': optional: true - '@pnpm/exe.linux-x64-musl@12.9.1': + '@pnpm/exe.linux-x64-musl@12.10.1': optional: true - '@pnpm/exe.linux-x64@12.9.1': + '@pnpm/exe.linux-x64@12.10.1': optional: true - '@pnpm/exe.win32-arm64@12.9.1': + '@pnpm/exe.win32-arm64@12.10.1': optional: true - '@pnpm/exe.win32-x64@12.9.1': + '@pnpm/exe.win32-x64@12.10.1': optional: true - pnpm@12.9.1: + pnpm@12.10.1: optionalDependencies: - '@pnpm/exe.android-arm64': 12.9.1 - '@pnpm/exe.android-x64': 12.9.1 - '@pnpm/exe.darwin-arm64': 12.9.1 - '@pnpm/exe.darwin-x64': 12.9.1 - '@pnpm/exe.freebsd-x64': 12.9.1 - '@pnpm/exe.linux-arm64': 12.9.1 - '@pnpm/exe.linux-arm64-musl': 12.9.1 - '@pnpm/exe.linux-ppc64': 12.9.1 - '@pnpm/exe.linux-riscv64': 12.9.1 - '@pnpm/exe.linux-s390x': 12.9.1 - '@pnpm/exe.linux-x64': 12.9.1 - '@pnpm/exe.linux-x64-musl': 12.9.1 - '@pnpm/exe.win32-arm64': 12.9.1 - '@pnpm/exe.win32-x64': 12.9.1 + '@pnpm/exe.android-arm64': 12.10.1 + '@pnpm/exe.android-x64': 12.10.1 + '@pnpm/exe.darwin-arm64': 12.10.1 + '@pnpm/exe.darwin-x64': 12.10.1 + '@pnpm/exe.freebsd-x64': 12.10.1 + '@pnpm/exe.linux-arm64': 12.10.1 + '@pnpm/exe.linux-arm64-musl': 12.10.1 + '@pnpm/exe.linux-ppc64': 12.10.1 + '@pnpm/exe.linux-riscv64': 12.10.1 + '@pnpm/exe.linux-s390x': 12.10.1 + '@pnpm/exe.linux-x64': 12.10.1 + '@pnpm/exe.linux-x64-musl': 12.10.1 + '@pnpm/exe.win32-arm64': 12.10.1 + '@pnpm/exe.win32-x64': 12.10.1 --- lockfileVersion: '9.0' @@ -328,8 +328,8 @@ packages: resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.29.7': - resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} + '@babel/helpers@7.29.10': + resolution: {integrity: sha512-EMCx3AGZ3WfAl6ht7AyQoPm2Lh+BGYEMdc4Q6Hf7uSCDOZFuLq44qNwL+iaim8VlyYhRAo4X43+weadK8ZB4Yg==} engines: {node: '>=6.9.0'} '@babel/parser@7.29.9': @@ -355,16 +355,16 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime@7.29.7': - resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} + '@babel/runtime@7.29.10': + resolution: {integrity: sha512-NpugTzbKgGrNe45Ui32cN8vCFFMxVtP/9rtfwv0nP5FRDAjvYBxJcLVpYA9mr1jxP6cnIT7x9LUzuDTbWYYNRA==} engines: {node: '>=6.9.0'} '@babel/template@7.29.7': resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.29.8': - resolution: {integrity: sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==} + '@babel/traverse@7.29.10': + resolution: {integrity: sha512-B3lYAs2nkKskbgQ1nfy8Ma9ao9Q1rntTAQHrzzyDuj+TSO+X3le6PfWwqDvodsb+OumE10eMFfuMCTQSQ5iuIQ==} engines: {node: '>=6.9.0'} '@babel/types@7.29.8': @@ -1106,8 +1106,8 @@ packages: resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} engines: {node: '>=0.10.0'} - caniuse-lite@1.0.30001814: - resolution: {integrity: sha512-/Uaf1lAzr59XcMpW0o96WoEfr+VXK2OX4U9AgFoiSHsVJ4HppnIFUjtYzsyDH2+tgANaQb2/oxYGwCPapN1FpA==} + caniuse-lite@1.0.30001815: + resolution: {integrity: sha512-uDybUEyfgbyJJ93J1vikTylBX31AkdVYeVPeffMQpf8XN7hSfr0oZOn4VFOIMNvtU5+rHvC5Udg2TgtJKHm23Q==} caw@2.0.1: resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} @@ -1338,8 +1338,8 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.445: - resolution: {integrity: sha512-iX7o1nF+qNb3Bv5mLYgqfgF9Znh9e/8MKXdmbb8Gv2Q47OKIzTwEPD1oda1HrgEwYatTLJj0wQjHvIFt8Db53Q==} + electron-to-chromium@1.5.449: + resolution: {integrity: sha512-dKeYk/3SFQz+nXi5whp3OuJzeWABEG4zCtkWJ9+Vby1E1iFM2y0gElRtQvNXRPJTsj8WAF4HMP7hvP790QtJ9g==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -2665,8 +2665,8 @@ packages: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - resolve@1.22.12: - resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} + resolve@1.22.13: + resolution: {integrity: sha512-Dj/cW9zBV2aRj6XzCxuGIs3ESZKv02jixne3q6jFZYZ3/Tg09gHHviSMDL4kObh9pqSahdRHEnDoaP2gn8YLhA==} engines: {node: '>= 0.4'} hasBin: true @@ -3191,10 +3191,10 @@ snapshots: '@babel/generator': 7.29.8 '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/helpers': 7.29.7 + '@babel/helpers': 7.29.10 '@babel/parser': 7.29.9 '@babel/template': 7.29.7 - '@babel/traverse': 7.29.8(supports-color@10.2.2) + '@babel/traverse': 7.29.10(supports-color@10.2.2) '@babel/types': 7.29.8 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 @@ -3229,7 +3229,7 @@ snapshots: '@babel/helper-module-imports@7.29.7(supports-color@10.2.2)': dependencies: - '@babel/traverse': 7.29.8(supports-color@10.2.2) + '@babel/traverse': 7.29.10(supports-color@10.2.2) '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color @@ -3239,7 +3239,7 @@ snapshots: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-module-imports': 7.29.7(supports-color@10.2.2) '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.29.8(supports-color@10.2.2) + '@babel/traverse': 7.29.10(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -3251,7 +3251,7 @@ snapshots: '@babel/helper-validator-option@7.29.7': {} - '@babel/helpers@7.29.7': + '@babel/helpers@7.29.10': dependencies: '@babel/template': 7.29.7 '@babel/types': 7.29.8 @@ -3283,7 +3283,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/runtime@7.29.7': {} + '@babel/runtime@7.29.10': {} '@babel/template@7.29.7': dependencies: @@ -3291,7 +3291,7 @@ snapshots: '@babel/parser': 7.29.9 '@babel/types': 7.29.8 - '@babel/traverse@7.29.8(supports-color@10.2.2)': + '@babel/traverse@7.29.10(supports-color@10.2.2)': dependencies: '@babel/code-frame': 7.29.7 '@babel/generator': 7.29.8 @@ -3323,7 +3323,7 @@ snapshots: '@emotion/babel-plugin@11.13.5(supports-color@10.2.2)': dependencies: '@babel/helper-module-imports': 7.29.7(supports-color@10.2.2) - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 '@emotion/hash': 0.9.2 '@emotion/memoize': 0.9.0 '@emotion/serialize': 1.3.3 @@ -3354,7 +3354,7 @@ snapshots: '@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2)': dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 '@emotion/babel-plugin': 11.13.5(supports-color@10.2.2) '@emotion/cache': 11.14.0 '@emotion/serialize': 1.3.3 @@ -3380,7 +3380,7 @@ snapshots: '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2)': dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 '@emotion/babel-plugin': 11.13.5(supports-color@10.2.2) '@emotion/is-prop-valid': 1.4.0 '@emotion/react': 11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2) @@ -3492,7 +3492,7 @@ snapshots: '@mui/icons-material@9.4.0(@mui/material@9.4.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(@types/react@19.3.0)(react@19.3.0)': dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 '@mui/material': 9.4.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) react: 19.3.0 optionalDependencies: @@ -3500,7 +3500,7 @@ snapshots: '@mui/material@9.4.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 '@mui/core-downloads-tracker': 9.4.0 '@mui/system': 9.4.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0) '@mui/types': 9.4.0(@types/react@19.3.0) @@ -3521,7 +3521,7 @@ snapshots: '@mui/private-theming@9.4.0(@types/react@19.3.0)(react@19.3.0)': dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 '@mui/utils': 9.4.0(@types/react@19.3.0)(react@19.3.0) prop-types: 15.8.1 react: 19.3.0 @@ -3530,7 +3530,7 @@ snapshots: '@mui/styled-engine@9.4.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(react@19.3.0)': dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 '@emotion/cache': 11.14.0 '@emotion/serialize': 1.3.3 '@emotion/sheet': 1.4.0 @@ -3543,7 +3543,7 @@ snapshots: '@mui/system@9.4.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)': dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 '@mui/private-theming': 9.4.0(@types/react@19.3.0)(react@19.3.0) '@mui/styled-engine': 9.4.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(react@19.3.0) '@mui/types': 9.4.0(@types/react@19.3.0) @@ -3559,13 +3559,13 @@ snapshots: '@mui/types@9.4.0(@types/react@19.3.0)': dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 optionalDependencies: '@types/react': 19.3.0 '@mui/utils@9.4.0(@types/react@19.3.0)(react@19.3.0)': dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 '@mui/types': 9.4.0(@types/react@19.3.0) '@types/prop-types': 15.7.15 clsx: 2.1.1 @@ -3707,7 +3707,7 @@ snapshots: dependencies: '@babel/generator': 7.29.8 '@babel/parser': 7.29.9 - '@babel/traverse': 7.29.8(supports-color@10.2.2) + '@babel/traverse': 7.29.10(supports-color@10.2.2) '@babel/types': 7.29.8 javascript-natural-sort: 0.7.1 lodash-es: 4.18.1 @@ -3928,9 +3928,9 @@ snapshots: babel-plugin-macros@3.1.0: dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 cosmiconfig: 7.1.0 - resolve: 1.22.12 + resolve: 1.22.13 babel-plugin-transform-hook-names@1.0.2(@babel/core@7.29.7(supports-color@10.2.2)): dependencies: @@ -4004,8 +4004,8 @@ snapshots: browserslist@4.29.3: dependencies: baseline-browser-mapping: 2.11.27 - caniuse-lite: 1.0.30001814 - electron-to-chromium: 1.5.445 + caniuse-lite: 1.0.30001815 + electron-to-chromium: 1.5.449 node-releases: 2.0.57 update-browserslist-db: 1.3.3(browserslist@4.29.3) @@ -4075,7 +4075,7 @@ snapshots: camelcase@2.1.1: {} - caniuse-lite@1.0.30001814: {} + caniuse-lite@1.0.30001815: {} caw@2.0.1: dependencies: @@ -4296,7 +4296,7 @@ snapshots: dom-helpers@5.2.1: dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 csstype: 3.2.3 dom-serializer@1.4.1: @@ -4370,7 +4370,7 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.445: {} + electron-to-chromium@1.5.449: {} emoji-regex@10.6.0: {} @@ -5312,7 +5312,7 @@ snapshots: normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.12 + resolve: 1.22.13 semver: 5.7.2 validate-npm-package-license: 3.0.4 @@ -5567,7 +5567,7 @@ snapshots: react-transition-group@4.4.5(react-dom@19.3.0(react@19.3.0))(react@19.3.0): dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -5581,7 +5581,7 @@ snapshots: react-window@1.8.11(react-dom@19.3.0(react@19.3.0))(react@19.3.0): dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 memoize-one: 5.2.1 react: 19.3.0 react-dom: 19.3.0(react@19.3.0) @@ -5622,7 +5622,7 @@ snapshots: resolve-from@4.0.0: {} - resolve@1.22.12: + resolve@1.22.13: dependencies: es-errors: 1.3.0 is-core-module: 2.17.0 diff --git a/mock-api/package.json b/mock-api/package.json index 799c6f2d1..883a6c0ca 100644 --- a/mock-api/package.json +++ b/mock-api/package.json @@ -17,5 +17,5 @@ "@trivago/prettier-plugin-sort-imports": "^6.0.2", "prettier": "^3.9.9" }, - "packageManager": "pnpm@12.9.1" + "packageManager": "pnpm@12.10.1" } diff --git a/mock-api/pnpm-lock.yaml b/mock-api/pnpm-lock.yaml index b431bd0a6..acb1928ed 100644 --- a/mock-api/pnpm-lock.yaml +++ b/mock-api/pnpm-lock.yaml @@ -7,153 +7,153 @@ importers: configDependencies: {} packageManagerDependencies: pnpm: - specifier: 12.9.1 - version: 12.9.1 + specifier: 12.10.1 + version: 12.10.1 packages: - '@pnpm/exe.android-arm64@12.9.1': - resolution: {integrity: sha512-Hgm1XdqMTfBC8PdGLL+NjZWv4xyi7D6XNrN9fb24XGYlyTBmUtdCefKnCLmHujShRD8BEO1zqM30SNcKBDLysw==} + '@pnpm/exe.android-arm64@12.10.1': + resolution: {integrity: sha512-CVTlHPwNvadQCJD9bGSMzWIhFX8QpjtqC2c27dhdnn/9iKzEjZ3qL62o3gHpKbIuo6qn4WxTKRoaokgNdReBig==} cpu: [arm64] os: [android] - '@pnpm/exe.android-x64@12.9.1': - resolution: {integrity: sha512-WDGCe6jZRVZP3RC/q6hOkZylkPkIQIi1/GcrR/d/YzbihhAHXCczrk+UYnV5TgbsEnAYO7Cx+2rX3nfhHvy24w==} + '@pnpm/exe.android-x64@12.10.1': + resolution: {integrity: sha512-NFiYLIaodY7da0XIebwcU3JoP7IK/lzF7zgKSSP+9H+QcFnQ1GDfBkuBKCYJzZ+Xu0WH54neIPLBBCaOjaaauA==} cpu: [x64] os: [android] - '@pnpm/exe.darwin-arm64@12.9.1': - resolution: {integrity: sha512-+7iiEEBgYN9szPWUnAuN6eOVMTI6Hrki5bcuC9n9xl9tTnT53Tpxpo45Hml+W4IrAU0d+Tmd0sPnVIbX59PD6w==} + '@pnpm/exe.darwin-arm64@12.10.1': + resolution: {integrity: sha512-0O8tdQ8ijlPJudXspLMTcitMkdBEz6uUflazL5uQE0WMs85oQIp0U+5hfEktMFB64QqEhjqlvvujTwbzdr9oMg==} cpu: [arm64] os: [darwin] - '@pnpm/exe.darwin-x64@12.9.1': - resolution: {integrity: sha512-SK7TxJiR12GbJZGffRFHItkc+Mx+99v6xMMJ9/X//8NwWV1wo17a2bwfGI8qZpl17YwsrmPEFOOqhzE1GIlrtQ==} + '@pnpm/exe.darwin-x64@12.10.1': + resolution: {integrity: sha512-ud+1/uZOKEo8P/AsPynOJc/LNwfI0j6WwCElibj71rU9l4nIBnsSn+wWTIPZPkZ4BBSH5+82azSnAARMyJ1lNA==} cpu: [x64] os: [darwin] - '@pnpm/exe.freebsd-x64@12.9.1': - resolution: {integrity: sha512-4AjLk6uvTs2iO6wMit2hcxJ2M32xb7OV5SNFk+w6G8/NzcjcMB7ENEpyeXyLiP0kcnp8uaCGUct2NfrLCJ35eQ==} + '@pnpm/exe.freebsd-x64@12.10.1': + resolution: {integrity: sha512-mj9PE5rf8uAfQQ2K66HSATMSut+lNiB4eSqFd5+azFVCMnxNSy/32xpZQJT21PhnN3Y4qbK+iKHe5nWAxSuRhw==} cpu: [x64] os: [freebsd] - '@pnpm/exe.linux-arm64-musl@12.9.1': - resolution: {integrity: sha512-dZL2ES1ckDWM9v+EtxoOklZ0WNdtayooi9iLiDUubopudX3zXPNR2mlrxBRgjbDgECOndQen2SmyxL5eZiBuKw==} + '@pnpm/exe.linux-arm64-musl@12.10.1': + resolution: {integrity: sha512-xba+00wZJ8Um6rBJJjWl88uJj0tydB8dtomvjlCLvi0uL32vpa9CRP8Vv26FIXvbiZ1bo2RCzYt/eChxJVV52w==} cpu: [arm64] os: [linux] libc: [musl] - '@pnpm/exe.linux-arm64@12.9.1': - resolution: {integrity: sha512-cx+uF6xqwEtm7B8NV+1ve0xBg9gcuzQZ5R+0WgOWvKG/h978UljS6BgWs1ipIGuGgUdeVhm3PKmBltXIcczLXA==} + '@pnpm/exe.linux-arm64@12.10.1': + resolution: {integrity: sha512-oBdMp69ScC9UnniG4qZAQVr2fBDSXjm4yk/72vkEVyrlwS23yMxcRQl7Qdo3sgXPAygY6TWnPRKm4rXzjoyW7w==} cpu: [arm64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-ppc64@12.9.1': - resolution: {integrity: sha512-MpjPsy4XR17zAtLziQZfsN+wveWa/bUJggZtwfo3+SuyRmXnSvVkFD4+v8/3RTWyYaM6mwLUTjZDJ+g3urL+ew==} + '@pnpm/exe.linux-ppc64@12.10.1': + resolution: {integrity: sha512-Yyb3wu09h3c7mLme270uHFiVaAIUHC411Ru9LIU2BKUIstrGlXa9OqqVWoXaRgYRdFdOFknkwG7GNn6ygwLbnw==} cpu: [ppc64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-riscv64@12.9.1': - resolution: {integrity: sha512-Oo67TKqqH+Bno+L6X7Xyorwp1QG82zKIkL0vbo1x2kcPTDiyPbdM+d6lIs4+hzeB1KHT5FDoGzZj2dad7Ft+eg==} + '@pnpm/exe.linux-riscv64@12.10.1': + resolution: {integrity: sha512-PdkeUFFkybknnGkWP0H22eMpIiS4OZXL5BcQzF4lh+vmrW3IaC2HOkbANKgot/PKO0Kl77pzA/6PKFxgbgfXIQ==} cpu: [riscv64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-s390x@12.9.1': - resolution: {integrity: sha512-QAD5FRCdW36HfD58BV7DoDm6z8yv+GgSqcUV1+ERwYjpVQuG6ZTpf5o0x3KDas8eTLIW7MLYVdDdlAurWeArEg==} + '@pnpm/exe.linux-s390x@12.10.1': + resolution: {integrity: sha512-1okKuHKJwJPAbofDxfhZWAUxEWtee4ZSf7Pah8kcvocaJkf2WxFJ5KVTiNIvDml5GLidDQsgf7Pcf/WHbCak7Q==} cpu: [s390x] os: [linux] libc: [glibc] - '@pnpm/exe.linux-x64-musl@12.9.1': - resolution: {integrity: sha512-mQDhBsGqcTkrLQM4q5igmRFcr6EAl4UM/FGawY+0CWGcqPpUmYUvDy9LHy80xxkHIWVJ886gvvso2XOjfav1Jw==} + '@pnpm/exe.linux-x64-musl@12.10.1': + resolution: {integrity: sha512-e6IqzVNkPa7srFKJKnY23uWJ+qz0LaRWiTUo/sHfFXRRMRzB5uNOr6qWWip/jqhdGwU91n9J7LrEYZ6e0tRczw==} cpu: [x64] os: [linux] libc: [musl] - '@pnpm/exe.linux-x64@12.9.1': - resolution: {integrity: sha512-+M5N74hM4fc87AAckxx/UIW+dUnWf2eko+HchJs/NZUxehLhekNyMI/GNaNXlvd+kWR+97XXBD51XRkkNiUtrA==} + '@pnpm/exe.linux-x64@12.10.1': + resolution: {integrity: sha512-ZByV0DRgWzGaDSjT5ddRBASdwz+r/qPMYh7o6RGmPQjtRGNFbSl94xY2DcAM8mqCOZJUUDtAXQ+wpBXcdpKlkg==} cpu: [x64] os: [linux] libc: [glibc] - '@pnpm/exe.win32-arm64@12.9.1': - resolution: {integrity: sha512-mI28C2wxobrDi6x1OYhBRyG10hnDq/4sEIyy5RzoX6LB4kLuv6K/d25HOpMwlW20cuM4M72k9NZpOdcmUxMbEA==} + '@pnpm/exe.win32-arm64@12.10.1': + resolution: {integrity: sha512-I7QZHcjioG7orFeCRUFUHByJ1G0zFPnAlaGGyrUvb6MGkv5oeNwNPl7t+Gp+7zHfnMcgLGJ1a+Wfim0IDw3lOw==} cpu: [arm64] os: [win32] - '@pnpm/exe.win32-x64@12.9.1': - resolution: {integrity: sha512-SWoDMT0oD7NrDSIoPpkKD09D9fAQKNjwFZ3lezlCUhAfXxMv70zsfrNT2/P+GoCK2kefXF9OysUZkH1l5vvvfA==} + '@pnpm/exe.win32-x64@12.10.1': + resolution: {integrity: sha512-4WJFdp58EKlCj0zLobrXU0vpszSZIr4X/3y/uNbAQqGW0zE+VdruZB0gFc3L2kzsUzVwTYbaCn+XEhnCYSAlTg==} cpu: [x64] os: [win32] - pnpm@12.9.1: - resolution: {integrity: sha512-BrBV//XNINwSeB3hc87TMQzglRvy7GICEaFgRdVETVyTpmMhB2TvKaZTphBFm6A2jw50+E2AxUcjz5Wq57wNbQ==} + pnpm@12.10.1: + resolution: {integrity: sha512-ukCjfrGjcNYP6oxM8dNkwTvMzvUY6YrSvO6VT1OdONo3RY5YJho/pV4GUjRQ6g//+fSXsTW+QfLBXBZCusrObA==} engines: {node: '>=18.*'} hasBin: true snapshots: - '@pnpm/exe.android-arm64@12.9.1': + '@pnpm/exe.android-arm64@12.10.1': optional: true - '@pnpm/exe.android-x64@12.9.1': + '@pnpm/exe.android-x64@12.10.1': optional: true - '@pnpm/exe.darwin-arm64@12.9.1': + '@pnpm/exe.darwin-arm64@12.10.1': optional: true - '@pnpm/exe.darwin-x64@12.9.1': + '@pnpm/exe.darwin-x64@12.10.1': optional: true - '@pnpm/exe.freebsd-x64@12.9.1': + '@pnpm/exe.freebsd-x64@12.10.1': optional: true - '@pnpm/exe.linux-arm64-musl@12.9.1': + '@pnpm/exe.linux-arm64-musl@12.10.1': optional: true - '@pnpm/exe.linux-arm64@12.9.1': + '@pnpm/exe.linux-arm64@12.10.1': optional: true - '@pnpm/exe.linux-ppc64@12.9.1': + '@pnpm/exe.linux-ppc64@12.10.1': optional: true - '@pnpm/exe.linux-riscv64@12.9.1': + '@pnpm/exe.linux-riscv64@12.10.1': optional: true - '@pnpm/exe.linux-s390x@12.9.1': + '@pnpm/exe.linux-s390x@12.10.1': optional: true - '@pnpm/exe.linux-x64-musl@12.9.1': + '@pnpm/exe.linux-x64-musl@12.10.1': optional: true - '@pnpm/exe.linux-x64@12.9.1': + '@pnpm/exe.linux-x64@12.10.1': optional: true - '@pnpm/exe.win32-arm64@12.9.1': + '@pnpm/exe.win32-arm64@12.10.1': optional: true - '@pnpm/exe.win32-x64@12.9.1': + '@pnpm/exe.win32-x64@12.10.1': optional: true - pnpm@12.9.1: + pnpm@12.10.1: optionalDependencies: - '@pnpm/exe.android-arm64': 12.9.1 - '@pnpm/exe.android-x64': 12.9.1 - '@pnpm/exe.darwin-arm64': 12.9.1 - '@pnpm/exe.darwin-x64': 12.9.1 - '@pnpm/exe.freebsd-x64': 12.9.1 - '@pnpm/exe.linux-arm64': 12.9.1 - '@pnpm/exe.linux-arm64-musl': 12.9.1 - '@pnpm/exe.linux-ppc64': 12.9.1 - '@pnpm/exe.linux-riscv64': 12.9.1 - '@pnpm/exe.linux-s390x': 12.9.1 - '@pnpm/exe.linux-x64': 12.9.1 - '@pnpm/exe.linux-x64-musl': 12.9.1 - '@pnpm/exe.win32-arm64': 12.9.1 - '@pnpm/exe.win32-x64': 12.9.1 + '@pnpm/exe.android-arm64': 12.10.1 + '@pnpm/exe.android-x64': 12.10.1 + '@pnpm/exe.darwin-arm64': 12.10.1 + '@pnpm/exe.darwin-x64': 12.10.1 + '@pnpm/exe.freebsd-x64': 12.10.1 + '@pnpm/exe.linux-arm64': 12.10.1 + '@pnpm/exe.linux-arm64-musl': 12.10.1 + '@pnpm/exe.linux-ppc64': 12.10.1 + '@pnpm/exe.linux-riscv64': 12.10.1 + '@pnpm/exe.linux-s390x': 12.10.1 + '@pnpm/exe.linux-x64': 12.10.1 + '@pnpm/exe.linux-x64-musl': 12.10.1 + '@pnpm/exe.win32-arm64': 12.10.1 + '@pnpm/exe.win32-x64': 12.10.1 --- lockfileVersion: '9.0' @@ -211,8 +211,8 @@ packages: resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.29.8': - resolution: {integrity: sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==} + '@babel/traverse@7.29.10': + resolution: {integrity: sha512-B3lYAs2nkKskbgQ1nfy8Ma9ao9Q1rntTAQHrzzyDuj+TSO+X3le6PfWwqDvodsb+OumE10eMFfuMCTQSQ5iuIQ==} engines: {node: '>=6.9.0'} '@babel/types@7.29.8': @@ -340,7 +340,7 @@ snapshots: '@babel/parser': 7.29.9 '@babel/types': 7.29.8 - '@babel/traverse@7.29.8': + '@babel/traverse@7.29.10': dependencies: '@babel/code-frame': 7.29.7 '@babel/generator': 7.29.8 @@ -377,7 +377,7 @@ snapshots: dependencies: '@babel/generator': 7.29.8 '@babel/parser': 7.29.9 - '@babel/traverse': 7.29.8 + '@babel/traverse': 7.29.10 '@babel/types': 7.29.8 javascript-natural-sort: 0.7.1 lodash-es: 4.18.1 diff --git a/mock-api/restServer.ts b/mock-api/restServer.ts index 633695866..f46d3433c 100644 --- a/mock-api/restServer.ts +++ b/mock-api/restServer.ts @@ -344,10 +344,10 @@ function updateMask(entity: any, de: any, dd: any) { const old_custom_name = dd.nodes[dd_objIndex].cn; console.log( 'comparing names, old (' + - old_custom_name + - ') with new (' + - new_custom_name + - ')' + old_custom_name + + ') with new (' + + new_custom_name + + ')' ); if (old_custom_name !== new_custom_name) { changed = true; @@ -467,9 +467,9 @@ function upgradeImportantMessages(version: string) { console.log( 'upgradeImportantMessageType: version=' + - version + - ' type=' + - upgradeImportantMessageType_n + version + + ' type=' + + upgradeImportantMessageType_n ); return { upgradeImportantMessageType: upgradeImportantMessageType_n }; } @@ -520,17 +520,17 @@ function get_versions() { console.log( 'getVersions: current=' + - THIS_VERSION + - ' stable=' + - LATEST_STABLE_VERSION + - ' (upgradeable=' + - (STABLE_VERSION_IS_UPGRADEABLE ? 'YES' : 'NO') + - ') dev=' + - LATEST_DEV_VERSION + - ' (upgradeable=' + - (DEV_VERSION_IS_UPGRADEABLE ? 'YES' : 'NO') + - ')' + - (MOCK_OFFLINE ? ' [offline]' : '') + THIS_VERSION + + ' stable=' + + LATEST_STABLE_VERSION + + ' (upgradeable=' + + (STABLE_VERSION_IS_UPGRADEABLE ? 'YES' : 'NO') + + ') dev=' + + LATEST_DEV_VERSION + + ' (upgradeable=' + + (DEV_VERSION_IS_UPGRADEABLE ? 'YES' : 'NO') + + ')' + + (MOCK_OFFLINE ? ' [offline]' : '') ); return data; } diff --git a/project-words.txt b/project-words.txt index cdc228250..562011343 100644 --- a/project-words.txt +++ b/project-words.txt @@ -1356,3 +1356,4 @@ firmwares recognises POWERON crashtest +otadata \ No newline at end of file -- 2.54.0 From 7e96c1ea0a9da3d99de0e8111c03e677808e0e98 Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 8 Oct 2026 13:40:01 +0200 Subject: [PATCH 049/148] update --- docs/dump_telegrams.csv | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/dump_telegrams.csv b/docs/dump_telegrams.csv index 8686d8ef6..dc630de2a 100644 --- a/docs/dump_telegrams.csv +++ b/docs/dump_telegrams.csv @@ -29,7 +29,7 @@ telegram_type_id,name,is_fetched 0x3B,Energy, 0x3D,RC35Set, 0x3E,RC35Monitor, -0x3F,RC35Timer, +0x3F,RC30Timer, 0x40,RC30Temp, 0x41,RC30Monitor, 0x42,RC35Timer2, @@ -112,9 +112,9 @@ telegram_type_id,name,is_fetched 0x02A0,RC300Curves, 0x02A1,RC300Curves, 0x02A2,RC300Curves, -0x02A5,RC300Monitor, -0x02A6,CRFMonitor, -0x02A7,CRFMonitor, +0x02A5,CRFMonitor, +0x02A6,RC300Monitor, +0x02A7,RC300Monitor, 0x02A8,RC300Monitor, 0x02A9,RC300Monitor, 0x02AA,RC300Monitor, -- 2.54.0 From ec6184333e78687c83b73500ac7ad0b8ae0e6dfc Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 8 Oct 2026 17:34:14 +0200 Subject: [PATCH 050/148] update flash script --- scripts/do_fresh_install.sh | 125 +++++++++++++++++++++++++++++------- 1 file changed, 101 insertions(+), 24 deletions(-) diff --git a/scripts/do_fresh_install.sh b/scripts/do_fresh_install.sh index 35b27cbc0..27e053600 100755 --- a/scripts/do_fresh_install.sh +++ b/scripts/do_fresh_install.sh @@ -1,8 +1,9 @@ #!/usr/bin/env bash -# Full fresh install of EMS-ESP on an ESP32 16MB board (s_16M_P). + +# Run like: +# ./scripts/do_fresh_install.sh # -# Run from the scripts folder: -# ./do_fresh_install.sh +# Full fresh install of EMS-ESP on an ESP32 16MB board (s_16M_P). # # Flash map (partitions/esp32_partition_16M.csv): # 0x1000 bootloader @@ -13,44 +14,120 @@ # 0xdf0000 LittleFS # # Because otadata points at app0, the device boots EMS-ESP. Recovery stays -# installed in factory for fallback. Do not write recovery at 0x1000 — that +# installed in factory for fallback. Do not write recovery at 0x1000 - that # is the bootloader, and the image overlaps the partition table at 0x8000. set -euo pipefail +cd "$(dirname "$0")" + +# Bold ANSI: 36 cyan, 33 yellow, 35 magenta, 32 green, 31 red. +step() { + local color=$1 + shift + printf '\n\033[1;%sm▶ %s\033[0m\n' "$color" "$*" +} +note() { + printf ' \033[2m%s\033[0m\n' "$*" +} + ESPTOOL=~/.platformio/penv/bin/esptool +PYTHON=~/.platformio/penv/bin/python + PORT=/dev/ttyUSB0 BAUD=${BAUD:-2000000} +# Fast is the installer's default: NVS, otadata, and the first 4 KB of every +# app partition, so nothing old can boot. About a second. ERASE=full still +# wipes the whole chip. +ERASE=${ERASE:-fast} -BUILD_BIN=../.pio/build/s_16M_P -RECOVERY_BIN=../.pio/build/recovery_s_16M_P -BOOT_APP0=~/.platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin +BUILD_DIR=../.pio/build/s_16M_P +RECOVERY_DIR=../.pio/build/recovery_s_16M_P +FIRMWARE_DIR=../build/firmware +# bin files +BOOT_APP0_BIN=~/.platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin +FIRMWARE_BIN=$BUILD_DIR/firmware.bin +RECOVERY_BIN=$RECOVERY_DIR/firmware.bin +BOOTLOADER_BIN=$BUILD_DIR/bootloader.bin +PARTITIONS_BIN=$BUILD_DIR/partitions.bin +LITTLEFS_BIN=$FIRMWARE_DIR/emsesp_settings_v39.bin + +# welcome message +step 33 "Welcome to the EMS-ESP fresh install" +note "This will install the latest EMS-ESP firmware and LittleFS" + +# check if platformio is installed +if [[ ! -f $PYTHON ]]; then + printf '\033[1;31mPlatformIO is not installed - please install it first\033[0m\n' >&2 + exit 1 +fi + +# check if esptool is installed +if [[ ! -f $ESPTOOL ]]; then + printf '\033[1;31mESPTool is not installed - please install it first\033[0m\n' >&2 + exit 1 +fi + +# Build LittleFS from data folder +step 33 "Building LittleFS from data folder" +note "packs data/pre_load.json -> $LITTLEFS_BIN" +$PYTHON build_littlefs.py data $LITTLEFS_BIN + +# Check if all files are present +step 33 "Checking images..." for f in \ - "$BUILD_BIN/bootloader.bin" \ - "$BUILD_BIN/partitions.bin" \ - "$BUILD_BIN/firmware.bin" \ - "$RECOVERY_BIN/firmware.bin" \ - "$BOOT_APP0"; do + "$BOOTLOADER_BIN" \ + "$PARTITIONS_BIN" \ + "$FIRMWARE_BIN" \ + "$RECOVERY_BIN" \ + "$BOOT_APP0_BIN" \ + "$LITTLEFS_BIN"; do if [[ ! -f $f ]]; then - echo "Missing $f — build s_16M_P and recovery_s_16M_P first" >&2 + printf '\033[1;31mMissing %s - build s_16M_P and recovery_s_16M_P first\033[0m\n' "$f" >&2 exit 1 fi + note "ok $f" done -# full erase, stay in download mode -$ESPTOOL --chip esp32 --port $PORT --after no-reset erase-flash +# show port, erase and baud rate +step 33 "Port: $PORT, Erase: $ERASE, Baud: $BAUD" -# create the filesystem, in case it's needed -~/.platformio/penv/bin/python build_littlefs.py data $BUILD_BIN/littlefs.bin +# Fast erase on the 16 MB table: nvs, otadata, nvs1, and the starts of boot, +# app0 and app1. Stay in the bootloader for the write that follows. +if [[ $ERASE == full ]]; then + step 33 "Full erase - wiping the whole chip" + $ESPTOOL --chip esp32 --port $PORT --after no-reset erase-flash +else + step 33 "Fast erase - NVS, otadata, and the first 4 KB of every app" + note "nothing old can boot; takes about a second" + before=default-reset + for spec in \ + "0x9000 0x5000 nvs" \ + "0xe000 0x2000 otadata" \ + "0x10000 0x1000 boot" \ + "0x490000 0x1000 app0" \ + "0x920000 0x1000 app1" \ + "0xdb0000 0x40000 nvs1"; do + set -- $spec + printf ' \033[33merase-region %s %s (%s)\033[0m\n' "$1" "$2" "$3" + $ESPTOOL --chip esp32 --port $PORT --before $before --after no-reset \ + erase-region "$1" "$2" + before=no-reset + done +fi -# bootloader, partitions, otadata, recovery, app, filesystem; then boot +step 33 "Writing flash, then hard-reset into EMS-ESP" +note "0x1000 bootloader 0x8000 partitions 0xe000 otadata" +note "0x10000 recovery 0x490000 firmware 0xdf0000 LittleFS" $ESPTOOL --chip esp32 --port $PORT --baud $BAUD \ --before default-reset --after hard-reset \ write-flash -z --flash-mode dio --flash-freq 80m --flash-size detect \ - 0x1000 $BUILD_BIN/bootloader.bin \ - 0x8000 $BUILD_BIN/partitions.bin \ - 0xe000 $BOOT_APP0 \ - 0x10000 $RECOVERY_BIN/firmware.bin \ - 0x490000 $BUILD_BIN/firmware.bin \ - 0xdf0000 $BUILD_BIN/littlefs.bin + 0x1000 $BOOTLOADER_BIN \ + 0x8000 $PARTITIONS_BIN \ + 0xe000 $BOOT_APP0_BIN \ + 0x10000 $RECOVERY_BIN \ + 0x490000 $FIRMWARE_BIN \ + 0xdf0000 $LITTLEFS_BIN + +step 32 "Done - gateway should boot EMS-ESP from app0" -- 2.54.0 From 988ad0006b669740d0f57c6a7f6c4ed13db8783a Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 8 Oct 2026 17:48:51 +0200 Subject: [PATCH 051/148] remove test docs --- docs/Recovery-Testing.md | 155 --------------------------------------- docs/Recovery.md | 104 -------------------------- 2 files changed, 259 deletions(-) delete mode 100644 docs/Recovery-Testing.md delete mode 100644 docs/Recovery.md diff --git a/docs/Recovery-Testing.md b/docs/Recovery-Testing.md deleted file mode 100644 index 7400c0686..000000000 --- a/docs/Recovery-Testing.md +++ /dev/null @@ -1,155 +0,0 @@ -# Testing the Recovery Firmware, Rollback and Crash-Loop Fallback - -This guide covers testing on hardware of: - -- the EMS-ESP Recovery firmware in the factory `boot` partition (16MB boards only); -- installing the recovery from the EMS-ESP WebUI; -- the bootloader rollback of a new firmware that fails to start; -- the fallback to the recovery after repeated crashes; -- Ethernet and static IP support in the recovery. - -It's written for an ESP32 16MB board with PSRAM (`s_16M_P`, e.g. a BBQKees E32V2). Other 16MB boards (`s_16M`, `s3_16M_P`) follow the same steps with their matching PlatformIO envs; Ethernet is E32V2 only. Keep a USB serial cable connected with a serial monitor open throughout, as most of the checks are log lines. - -## 0. Preparation - -Build everything: - -```bash -pio run -e s_16M_P -e crashtest_s_16M_P -e recovery_s_16M_P -``` - -The firmware files are written to `build/firmware/`: - -| File | What it is | -| --- | --- | -| `EMS-ESP--ESP32-16MB+.bin` | EMS-ESP | -| `EMS-ESP-CrashTest--ESP32-16MB+.bin` | crash test build | -| `EMS-ESP-Recovery--ESP32-16MB+.bin` | the recovery | - -Each has a matching `.md5` file. - -Then: - -1. Run the unit tests with `pio run -e native-test -t exec`. All tests should pass. -2. Optionally, check the recovery UI against mock data first: `cd interface && pnpm recovery`, then open . -3. Open the serial monitor with `pio device monitor -e s_16M_P`. Recovery log lines start with `[recovery]`. - -The crash counter is kept in RTC memory. It survives crashes and software restarts but not a power cycle, so don't unplug the board during the crash tests. - -## 1. Baseline: EMS-ESP over serial, no recovery - -1. Flash with `pio run -e s_16M_P -t upload`. This also writes the current bootloader, which has rollback enabled. Boards flashed with an older bootloader don't roll back until they've been flashed over serial once. -2. In the WebUI, open **Settings → Version**. Check that: - - the **Recovery** row shows "not installed"; - - the firmware partition list doesn't include `boot`. -3. Wait more than 2 minutes. "New firmware confirmed as working" should **not** appear in the log, because a serial flash isn't in the pending-verify state. - -## 2. Install the recovery from the EMS-ESP WebUI - -1. On **Settings → Version**, upload `EMS-ESP-Recovery-…bin`. Expect: - - a "recovery installed" toast; - - **no** restart; - - the Recovery row now shows the recovery version; - - the install logged. -2. Repeat, uploading the `.md5` first and then the `.bin`. The MD5 check should pass. -3. Negative tests: - - Upload the recovery built for another chip, e.g. the ESP32-S3 file on this ESP32. It should be rejected, and nothing should be written. - - Start a recovery upload and close the browser tab halfway through. EMS-ESP should keep running and the Recovery row should show "not installed". Reinstall it properly afterwards. -4. Restart EMS-ESP normally. It should boot EMS-ESP again, not the recovery, because installing the recovery doesn't change the boot partition. - -## 3. Enter the recovery on request - -1. Enter the recovery in one of these ways: - - in the console (telnet or serial) as admin, run `restart boot`; - - long-press the button. -2. On the serial monitor, check that: - - `[recovery] EMS-ESP Recovery v…` is logged; - - LittleFS is mounted; - - the access point has started; - - Ethernet or WiFi connects. -3. Join the access point. Its name is the AP SSID plus `-recovery` (default `ems-esp-recovery`), and it uses the AP password (default `ems-esp-neo`). Open ; a captive portal page may open by itself. Alternatively, use the device's normal IP or `http://.local` from the LAN. -4. Sign in with an EMS-ESP admin account (default `admin`/`admin`). A non-admin user must be refused. -5. On the dashboard, check that: - - there's **no** red reason box, because the restart was requested; - - `Recovery (boot)` has the "running" chip; - - the installed firmware shows the correct version; - - the System section shows the chip, flash, MAC, access point, and the active network (Ethernet or WiFi) with its IP. -6. Click **Restart**. It should come back into the recovery, still without a reason box, since the reason is only shown once. -7. Click **Start** on the EMS-ESP slot. EMS-ESP should boot, and the Version page should still show the recovery version. - -## 4. Upload firmware from the recovery - -1. Enter the recovery again with `restart boot`. -2. Check the "upload target" chip: - - if there's an empty slot, that slot is chosen; - - if both slots hold a firmware, the one with the older install date is chosen, so the newest firmware is kept. -3. Upload the `.md5`, then the EMS-ESP `.bin`. EMS-ESP should start from that slot. About 2 minutes after it boots, "New firmware confirmed as working" should appear in the log. -4. The recovery must refuse these uploads: - - a recovery `.bin`: a 409 with a message that it can't install itself; - - a settings `.json`: a 406; - - an EMS-ESP `.bin` for another chip: rejected as incompatible. -5. In **Write to**, pick the other slot and upload there. That should also work. - -## 5. Bootloader rollback (crash test mode 1) - -`platformio.ini` ships with `-D EMSESP_CRASH_TEST=1`. - -1. Boot a working EMS-ESP and let it run for at least 2 minutes so it's confirmed. -2. Upload `EMS-ESP-CrashTest-…bin` from the **WebUI**, not over serial. -3. On the serial monitor you should see: - - `Crash test, aborting`, a panic, and a restart; - - the bootloader rolling back to the previous slot, which then starts normally. -4. In the EMS-ESP log (serial, or **Status → System Log**) you should see: - - `Restarted after a crash (1 in a row)`; - - `Firmware in partition appX failed to start and was rolled back`. -5. Enter the recovery with `restart boot`. Check that: - - the red box says the firmware in appX failed to start; - - that slot has the "failed to start" chip; - - that slot is the upload target. -6. Click **Start** on the failed slot. The dialog should show a warning; cancel it. -7. Start the good slot. - -If step 3 ends in a crash loop instead of a rollback, the bootloader on the board doesn't have rollback enabled. Flash over serial as in section 1, step 1. - -## 6. Crash-loop fallback to the recovery (crash test mode 2) - -1. In `platformio.ini`, change `-D EMSESP_CRASH_TEST=1` to `=2`, then run `pio run -e crashtest_s_16M_P`. -2. Upload the crash test build from the WebUI. It runs normally. -3. Wait for "New firmware confirmed as working", about 2 minutes after boot. -4. Restart it from the WebUI. It should crash 5 times in a row, logging the "N in a row" count each time. -5. After the 5th crash you should see `Crashed 5 times in a row, restarting into the boot partition`, and the recovery starts. -6. In the recovery: - - the red box should say "EMS-ESP crashed repeatedly and switched to the recovery"; - - after restarting the recovery once, the box should be gone. -7. Clean up: in **Write to**, pick the crash test slot **by hand** and upload a good EMS-ESP, or Start the good slot. - - Switching to the recovery wipes the per-slot rollback states, so the default upload target may be the slot with the good firmware. -8. Change the flag back to `=1`. - -Optional, without a recovery installed: - -1. Erase the boot partition with `esptool --chip esp32 erase-region 0x10000 0x480000`. Older esptool versions use `erase_region`. -2. Repeat steps 2 to 4. It should keep crashing past 5, and needs to be reflashed over serial. - -## 7. Network in the recovery - -| Test | Setup | Expected in the recovery | -| --- | --- | --- | -| WiFi with static IP | Enable a static IP in the EMS-ESP Network settings, then `restart boot` | Same IP as EMS-ESP, and the WiFi row ends with ", static IP" | -| Ethernet | Cable plugged in, then `restart boot` | Log shows "Ethernet started" and "Ethernet connected, IP …". The Ethernet row shows "connected", and WiFi shows "not used, Ethernet is connected" | -| Ethernet with static IP | As above, with a static IP set | Ethernet uses the static IP and WiFi isn't started | -| No cable | Unplugged, then `restart boot` | Ethernet shows "no cable connected" and WiFi shows "waiting for Ethernet". After about 15 seconds the log shows "No Ethernet connection" and WiFi connects | -| Cable plugged in later | Plug in after WiFi has joined | Ethernet gets an IP as well, and WiFi stays connected | -| Access point | Any of the above | `ems-esp-recovery` is always reachable on 192.168.4.1 | - -## 8. Other checks - -- **Online update during the pending window:** after a WebUI upgrade, start an online update from the Version page within 2 minutes. It should install, not fail. -- **4MB boards:** flash `s_4M` and check that: - - there's no Recovery row; - - a normal WebUI upgrade still gets confirmed after 2 minutes. -- **Translations:** switch the WebUI language and check the Recovery row and toast. -- **CI:** run the dev release workflow manually (`workflow_dispatch`) and check that the `EMS-ESP-Recovery-*` files for all three 16MB boards are among the release assets. - -## Reset to a clean state - -`pio run -e s_16M_P -t upload` restores EMS-ESP at any point. It leaves the recovery in `boot` and the settings untouched. diff --git a/docs/Recovery.md b/docs/Recovery.md deleted file mode 100644 index 603c06030..000000000 --- a/docs/Recovery.md +++ /dev/null @@ -1,104 +0,0 @@ -# EMS-ESP Recovery Firmware - -Small standalone app that lives in the factory (`boot`) partition on **16MB** boards. If EMS-ESP will not start, the recovery still can: it brings up an access point (and the saved WiFi/Ethernet if it can) and serves a cut-down WebUI to upload a new EMS-ESP image into `app0`/`app1` or choose which slot to boot. - -4MB boards have no factory partition and no recovery. - -Hardware test steps are in [Recovery-Testing.md](Recovery-Testing.md). - -## Why it exists - -ESP-IDF already rolls a failed OTA back to the **other** OTA slot (`app0` ↔ `app1`). That does not help when: - -- both OTA slots are empty, corrupt, or crash on start -- a serial flash left otadata pointing at an empty slot -- the user needs a known-good way back in without a USB cable - -Recovery is a third, smaller image that EMS-ESP does not overwrite during a normal upgrade. Installing it does **not** change which app boots. - -## Partitions (16MB) - -From `partitions/esp32_partition_16M.csv`: - -| Label | Subtype | Role | -| --- | --- | --- | -| `boot` | factory | Recovery image | -| `app0` | ota_0 | EMS-ESP | -| `app1` | ota_1 | EMS-ESP (the other OTA slot) | -| `otadata` | ota | Which OTA slot the bootloader starts | - -The bootloader reads **otadata**, not “whatever was flashed last”: - -1. Blank otadata (`0xFF`, e.g. after `erase-flash` or a recovery serial upload) → start **factory** (`boot`). -2. Valid otadata → start that OTA slot (`app0` or `app1`). -3. If that image is invalid, it walks **down** toward factory, then **up** through remaining OTA slots. A valid recovery in `boot` is therefore preferred over a valid image sitting only in `app1` while otadata still points at empty `app0`. - -PlatformIO’s `boot_app0.bin` always selects `app0`. The recovery upload script (`scripts/upload_factory.py`) replaces it with a blank otadata so a serial flash of recovery actually boots recovery. - -A normal serial flash of EMS-ESP goes to `app0` and writes `boot_app0.bin`, so the board starts EMS-ESP. Recovery, if already in `boot`, is left in place. - -## How recovery is installed - -From a running EMS-ESP (**Settings → Version**, or the upload drop zone): - -- Drop `EMS-ESP-Recovery-*.bin` (optional `.md5` first). -- EMS-ESP recognises it from the app description (`project_name` = `EMS-ESP-Recovery`) and writes it to the factory partition **without** calling `esp_ota_set_boot_partition`. -- EMS-ESP keeps running. The Version page shows the recovery version once it is in flash. - -From serial, recovery must be written at **`0x10000`**, not at `0x1000` (that is the bootloader; the recovery `.bin` overlaps the partition table). See `scripts/do_fresh_install.sh`. - -The recovery app itself **refuses** to install a recovery image. It only writes EMS-ESP into `app0`/`app1`. - -## How EMS-ESP boots into recovery - -Only 16MB builds with `-DEMSESP_HAS_RECOVERY` and a valid recovery image in `boot`. - -| How | What happens | -| --- | --- | -| **Settings → Version** | Developer mode shows a Recovery row. If a version is installed, **Restart** confirms, then `setPartition("boot")`. | -| **Console** (serial or telnet, admin) | `restart boot` → `system_restart("boot")`. | -| **Button** | Long press ~3 s (not the ~10 s factory reset). | -| **Crash loop** | 5 panics or watchdog resets in a row (RTC counter; survives software restart, not a power cycle). | - -The first three record NVS `rec_reason=request`. The crash path records `crash`. Recovery reads that once and clears it, so a user-requested entry does not show the red crash banner. - -These do **not** enter recovery: - -- Uploading the recovery `.bin` (install only). -- `/api/system/restart` or MQTT `system/restart` (ignore any partition argument; reboot the current app). -- Bootloader rollback of a pending OTA (goes to the previous **OTA** slot). - -## What recovery does - -- Access point `ems-esp-recovery` (AP SSID plus `-recovery`), plus the saved LAN (Ethernet preferred, else WiFi, including a static IP if one is set). -- Sign-in with an EMS-ESP admin account (settings are read from LittleFS, never written). -- List `boot` / `app0` / `app1`, show which is running, which will boot next, and rollback state. -- Upload an EMS-ESP `.bin` into an OTA slot (empty slot, or the older of the two if both are filled) and boot it. -- **Start** a chosen OTA slot without uploading. - -After a WebUI/OTA install from recovery, the new EMS-ESP image is pending verification. After ~2 minutes of uptime it is confirmed so the bootloader will not roll it back. - -## Rough boot flow - -``` -reset - → ESP-IDF bootloader - otadata blank? → factory/boot (recovery) - otadata → app0/1 → that slot if the image is valid - selected image bad → try factory, then the other OTA slot - → recovery or EMS-ESP - -EMS-ESP, if it starts: - crash counter (RTC) - 5 crashes in a row + recovery present → set boot=factory, restart - healthy for 2 minutes → confirm OTA image, clear crash counter -``` - -## Builds - -| Env | Image | -| --- | --- | -| `recovery_s_16M` / `recovery_s_16M_P` / `recovery_s3_16M_P` | Recovery, flashed into `boot` at `0x10000` | -| `s_16M` / `s_16M_P` / `s3_16M_P` | EMS-ESP (`app0` on serial upload) | - -Firmware files land in `build/firmware/` as `EMS-ESP-Recovery---16MB[+].bin`. -- 2.54.0 From 613e3c87ae2e90798162b62bccadc33614285c6a Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 8 Oct 2026 18:03:38 +0200 Subject: [PATCH 052/148] pkg update --- interface/package.json | 6 +- interface/pnpm-lock.yaml | 540 +++++++++++++++++++-------------------- mock-api/package.json | 2 +- mock-api/pnpm-lock.yaml | 130 +++++----- 4 files changed, 339 insertions(+), 339 deletions(-) diff --git a/interface/package.json b/interface/package.json index 0426a9136..95c0e9e8b 100644 --- a/interface/package.json +++ b/interface/package.json @@ -54,9 +54,9 @@ "rollup-plugin-visualizer": "^7.1.1", "terser": "^5.51.2", "typescript": "^6.0.3", - "typescript-eslint": "^8.71.0", - "vite": "^8.3.2", + "typescript-eslint": "^8.71.1", + "vite": "^8.3.3", "vite-plugin-imagemin": "^0.6.1" }, - "packageManager": "pnpm@12.8.1" + "packageManager": "pnpm@12.10.1" } diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index faaee8b4f..91d2b5913 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -7,153 +7,153 @@ importers: configDependencies: {} packageManagerDependencies: pnpm: - specifier: 12.8.1 - version: 12.8.1 + specifier: 12.10.1 + version: 12.10.1 packages: - '@pnpm/exe.android-arm64@12.8.1': - resolution: {integrity: sha512-siDxcidfz5eM6L2tJfik+i2bbUEw8UC7MZ3Yl2HYdRmqbdhHGAOQACtOOu6QVW4Jul4/w5wVKm+wM8ACtgh1Pg==} + '@pnpm/exe.android-arm64@12.10.1': + resolution: {integrity: sha512-CVTlHPwNvadQCJD9bGSMzWIhFX8QpjtqC2c27dhdnn/9iKzEjZ3qL62o3gHpKbIuo6qn4WxTKRoaokgNdReBig==} cpu: [arm64] os: [android] - '@pnpm/exe.android-x64@12.8.1': - resolution: {integrity: sha512-0F/uqPRc3aN4vLHsa0f+6fTtmsigFQ9/yxEU43fionF//pNHEd5e97b3w/nKIgqYMCUQCJphmBRMA9Q8/wlo9Q==} + '@pnpm/exe.android-x64@12.10.1': + resolution: {integrity: sha512-NFiYLIaodY7da0XIebwcU3JoP7IK/lzF7zgKSSP+9H+QcFnQ1GDfBkuBKCYJzZ+Xu0WH54neIPLBBCaOjaaauA==} cpu: [x64] os: [android] - '@pnpm/exe.darwin-arm64@12.8.1': - resolution: {integrity: sha512-/rwavvMQJsl2RIxOHBnDF+4Gk+fhQFAY4M3PQZoKskJOEnaJcygG9p1xby6wcQcbS4d9dIubv09CQhufTgfmpw==} + '@pnpm/exe.darwin-arm64@12.10.1': + resolution: {integrity: sha512-0O8tdQ8ijlPJudXspLMTcitMkdBEz6uUflazL5uQE0WMs85oQIp0U+5hfEktMFB64QqEhjqlvvujTwbzdr9oMg==} cpu: [arm64] os: [darwin] - '@pnpm/exe.darwin-x64@12.8.1': - resolution: {integrity: sha512-htYt2gN7zqJKLhC99Ft6EUiO7myjZAZXfmGCTJUL1v+o7vE9hZdE1+fAkk4Oj1ZHNRti6b2woOxEkRkAusi8OQ==} + '@pnpm/exe.darwin-x64@12.10.1': + resolution: {integrity: sha512-ud+1/uZOKEo8P/AsPynOJc/LNwfI0j6WwCElibj71rU9l4nIBnsSn+wWTIPZPkZ4BBSH5+82azSnAARMyJ1lNA==} cpu: [x64] os: [darwin] - '@pnpm/exe.freebsd-x64@12.8.1': - resolution: {integrity: sha512-PB5BULNgytxvExoOXUUeseS/DcpPENs+cg3iA6xHHeaLT4ctEGKSGXEbuj7USeqvo8JBpAx039hivnbzGqDwnA==} + '@pnpm/exe.freebsd-x64@12.10.1': + resolution: {integrity: sha512-mj9PE5rf8uAfQQ2K66HSATMSut+lNiB4eSqFd5+azFVCMnxNSy/32xpZQJT21PhnN3Y4qbK+iKHe5nWAxSuRhw==} cpu: [x64] os: [freebsd] - '@pnpm/exe.linux-arm64-musl@12.8.1': - resolution: {integrity: sha512-kKeyC/ArjrgdciQRBrOL0j9HtOI4gDRgoyP+eJ1CQKyadpKlf/DhDDyspXe07R3B9KagTVLUF2nlt6Dr5quFIg==} + '@pnpm/exe.linux-arm64-musl@12.10.1': + resolution: {integrity: sha512-xba+00wZJ8Um6rBJJjWl88uJj0tydB8dtomvjlCLvi0uL32vpa9CRP8Vv26FIXvbiZ1bo2RCzYt/eChxJVV52w==} cpu: [arm64] os: [linux] libc: [musl] - '@pnpm/exe.linux-arm64@12.8.1': - resolution: {integrity: sha512-q4s9a9X2O3N9aeUFooW24orNrxvu20+jyVUFR5RanPCqOKKPBrgs2iywMkBBx1aXkkzdWT54/mfz8Be8sJlWEw==} + '@pnpm/exe.linux-arm64@12.10.1': + resolution: {integrity: sha512-oBdMp69ScC9UnniG4qZAQVr2fBDSXjm4yk/72vkEVyrlwS23yMxcRQl7Qdo3sgXPAygY6TWnPRKm4rXzjoyW7w==} cpu: [arm64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-ppc64@12.8.1': - resolution: {integrity: sha512-F7XSjKJthwCh/L6abZiMpAfo2Cm61SZIT3e4dfgiIjESndlWaXCnfLKngSgZ/SEMsdmHT6dud3+kWIB3tw0/xQ==} + '@pnpm/exe.linux-ppc64@12.10.1': + resolution: {integrity: sha512-Yyb3wu09h3c7mLme270uHFiVaAIUHC411Ru9LIU2BKUIstrGlXa9OqqVWoXaRgYRdFdOFknkwG7GNn6ygwLbnw==} cpu: [ppc64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-riscv64@12.8.1': - resolution: {integrity: sha512-z1ecpIK/ZY08Unk69KWWE9867oaKUytGUjrHnBoGFAAhsK+q+0cfvBH+f5fWobJ7FX97leMlLO+gkJolddM45Q==} + '@pnpm/exe.linux-riscv64@12.10.1': + resolution: {integrity: sha512-PdkeUFFkybknnGkWP0H22eMpIiS4OZXL5BcQzF4lh+vmrW3IaC2HOkbANKgot/PKO0Kl77pzA/6PKFxgbgfXIQ==} cpu: [riscv64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-s390x@12.8.1': - resolution: {integrity: sha512-KU6tnrBfu4uKXTq6N5qJwSm8FSrs9Wc8b5AUEsHK9bRXwNdsZ1/lRxG1++X29SKRW9OSNuDSjxASv5mAvGo1gA==} + '@pnpm/exe.linux-s390x@12.10.1': + resolution: {integrity: sha512-1okKuHKJwJPAbofDxfhZWAUxEWtee4ZSf7Pah8kcvocaJkf2WxFJ5KVTiNIvDml5GLidDQsgf7Pcf/WHbCak7Q==} cpu: [s390x] os: [linux] libc: [glibc] - '@pnpm/exe.linux-x64-musl@12.8.1': - resolution: {integrity: sha512-eUE8BWJkDr2tJb/yrk0yVnszlmNqFarVxUlqiZ9BAkct28Nq/5g2H0tvMDmPA7fAQW3STNj+omJPPRVT+4s5sQ==} + '@pnpm/exe.linux-x64-musl@12.10.1': + resolution: {integrity: sha512-e6IqzVNkPa7srFKJKnY23uWJ+qz0LaRWiTUo/sHfFXRRMRzB5uNOr6qWWip/jqhdGwU91n9J7LrEYZ6e0tRczw==} cpu: [x64] os: [linux] libc: [musl] - '@pnpm/exe.linux-x64@12.8.1': - resolution: {integrity: sha512-8bDZ0lZlCdi2rvnFul7EYgcC7zKeWSe76y8JV2oXobaS8p9i9d6PSf6LgLtTM0fI7R9Oh4eLCbveXyNDMmvZ+g==} + '@pnpm/exe.linux-x64@12.10.1': + resolution: {integrity: sha512-ZByV0DRgWzGaDSjT5ddRBASdwz+r/qPMYh7o6RGmPQjtRGNFbSl94xY2DcAM8mqCOZJUUDtAXQ+wpBXcdpKlkg==} cpu: [x64] os: [linux] libc: [glibc] - '@pnpm/exe.win32-arm64@12.8.1': - resolution: {integrity: sha512-MsT0dlrRxnCRCHCaosNbhWpEiAFnFuMEu3KuDJDU41BXgTwiINxU8goloUSUDejWZUqKaUqNC/qUTihl9nFtqg==} + '@pnpm/exe.win32-arm64@12.10.1': + resolution: {integrity: sha512-I7QZHcjioG7orFeCRUFUHByJ1G0zFPnAlaGGyrUvb6MGkv5oeNwNPl7t+Gp+7zHfnMcgLGJ1a+Wfim0IDw3lOw==} cpu: [arm64] os: [win32] - '@pnpm/exe.win32-x64@12.8.1': - resolution: {integrity: sha512-SWtPe0PsbTTk//gJND10tMdOfCYjrkq5+qV49hzVhY7xz2iJ339Rc+xwASlcvbwTfrvH39YNqpKYibD+CRGLwA==} + '@pnpm/exe.win32-x64@12.10.1': + resolution: {integrity: sha512-4WJFdp58EKlCj0zLobrXU0vpszSZIr4X/3y/uNbAQqGW0zE+VdruZB0gFc3L2kzsUzVwTYbaCn+XEhnCYSAlTg==} cpu: [x64] os: [win32] - pnpm@12.8.1: - resolution: {integrity: sha512-9kupB1B/XOr+BsjTjmBS0BeURFgOwSed3Vv8EctIqoomRLZlmOB+dh2oSHKp/FfV+QK4f6SdAkGY1VhhKqu+RQ==} + pnpm@12.10.1: + resolution: {integrity: sha512-ukCjfrGjcNYP6oxM8dNkwTvMzvUY6YrSvO6VT1OdONo3RY5YJho/pV4GUjRQ6g//+fSXsTW+QfLBXBZCusrObA==} engines: {node: '>=18.*'} hasBin: true snapshots: - '@pnpm/exe.android-arm64@12.8.1': + '@pnpm/exe.android-arm64@12.10.1': optional: true - '@pnpm/exe.android-x64@12.8.1': + '@pnpm/exe.android-x64@12.10.1': optional: true - '@pnpm/exe.darwin-arm64@12.8.1': + '@pnpm/exe.darwin-arm64@12.10.1': optional: true - '@pnpm/exe.darwin-x64@12.8.1': + '@pnpm/exe.darwin-x64@12.10.1': optional: true - '@pnpm/exe.freebsd-x64@12.8.1': + '@pnpm/exe.freebsd-x64@12.10.1': optional: true - '@pnpm/exe.linux-arm64-musl@12.8.1': + '@pnpm/exe.linux-arm64-musl@12.10.1': optional: true - '@pnpm/exe.linux-arm64@12.8.1': + '@pnpm/exe.linux-arm64@12.10.1': optional: true - '@pnpm/exe.linux-ppc64@12.8.1': + '@pnpm/exe.linux-ppc64@12.10.1': optional: true - '@pnpm/exe.linux-riscv64@12.8.1': + '@pnpm/exe.linux-riscv64@12.10.1': optional: true - '@pnpm/exe.linux-s390x@12.8.1': + '@pnpm/exe.linux-s390x@12.10.1': optional: true - '@pnpm/exe.linux-x64-musl@12.8.1': + '@pnpm/exe.linux-x64-musl@12.10.1': optional: true - '@pnpm/exe.linux-x64@12.8.1': + '@pnpm/exe.linux-x64@12.10.1': optional: true - '@pnpm/exe.win32-arm64@12.8.1': + '@pnpm/exe.win32-arm64@12.10.1': optional: true - '@pnpm/exe.win32-x64@12.8.1': + '@pnpm/exe.win32-x64@12.10.1': optional: true - pnpm@12.8.1: + pnpm@12.10.1: optionalDependencies: - '@pnpm/exe.android-arm64': 12.8.1 - '@pnpm/exe.android-x64': 12.8.1 - '@pnpm/exe.darwin-arm64': 12.8.1 - '@pnpm/exe.darwin-x64': 12.8.1 - '@pnpm/exe.freebsd-x64': 12.8.1 - '@pnpm/exe.linux-arm64': 12.8.1 - '@pnpm/exe.linux-arm64-musl': 12.8.1 - '@pnpm/exe.linux-ppc64': 12.8.1 - '@pnpm/exe.linux-riscv64': 12.8.1 - '@pnpm/exe.linux-s390x': 12.8.1 - '@pnpm/exe.linux-x64': 12.8.1 - '@pnpm/exe.linux-x64-musl': 12.8.1 - '@pnpm/exe.win32-arm64': 12.8.1 - '@pnpm/exe.win32-x64': 12.8.1 + '@pnpm/exe.android-arm64': 12.10.1 + '@pnpm/exe.android-x64': 12.10.1 + '@pnpm/exe.darwin-arm64': 12.10.1 + '@pnpm/exe.darwin-x64': 12.10.1 + '@pnpm/exe.freebsd-x64': 12.10.1 + '@pnpm/exe.linux-arm64': 12.10.1 + '@pnpm/exe.linux-arm64-musl': 12.10.1 + '@pnpm/exe.linux-ppc64': 12.10.1 + '@pnpm/exe.linux-riscv64': 12.10.1 + '@pnpm/exe.linux-s390x': 12.10.1 + '@pnpm/exe.linux-x64': 12.10.1 + '@pnpm/exe.linux-x64-musl': 12.10.1 + '@pnpm/exe.win32-arm64': 12.10.1 + '@pnpm/exe.win32-x64': 12.10.1 --- lockfileVersion: '9.0' @@ -214,7 +214,7 @@ importers: version: 10.0.1(eslint@10.12.0(supports-color@10.2.2)) '@preact/preset-vite': specifier: ^2.10.6 - version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.2(@types/node@26.6.4)(terser@5.51.2)) + version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 version: 6.0.2(prettier@3.9.9)(supports-color@10.2.2) @@ -247,7 +247,7 @@ importers: version: 3.9.9 rollup-plugin-visualizer: specifier: ^7.1.1 - version: 7.1.1(rolldown@1.2.12) + version: 7.1.1(rolldown@1.2.13) terser: specifier: ^5.51.2 version: 5.51.2 @@ -255,14 +255,14 @@ importers: specifier: ^6.0.3 version: 6.0.3 typescript-eslint: - specifier: ^8.71.0 - version: 8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + specifier: ^8.71.1 + version: 8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) vite: - specifier: ^8.3.2 - version: 8.3.2(@types/node@26.6.4)(terser@5.51.2) + specifier: ^8.3.3 + version: 8.3.3(@types/node@26.6.4)(terser@5.51.2) vite-plugin-imagemin: specifier: ^0.6.1 - version: 0.6.1(supports-color@10.2.2)(vite@8.3.2(@types/node@26.6.4)(terser@5.51.2)) + version: 0.6.1(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)) packages: @@ -328,8 +328,8 @@ packages: resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.29.7': - resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} + '@babel/helpers@7.29.10': + resolution: {integrity: sha512-EMCx3AGZ3WfAl6ht7AyQoPm2Lh+BGYEMdc4Q6Hf7uSCDOZFuLq44qNwL+iaim8VlyYhRAo4X43+weadK8ZB4Yg==} engines: {node: '>=6.9.0'} '@babel/parser@7.29.9': @@ -355,16 +355,16 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime@7.29.7': - resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} + '@babel/runtime@7.29.10': + resolution: {integrity: sha512-NpugTzbKgGrNe45Ui32cN8vCFFMxVtP/9rtfwv0nP5FRDAjvYBxJcLVpYA9mr1jxP6cnIT7x9LUzuDTbWYYNRA==} engines: {node: '>=6.9.0'} '@babel/template@7.29.7': resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.29.8': - resolution: {integrity: sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==} + '@babel/traverse@7.29.10': + resolution: {integrity: sha512-B3lYAs2nkKskbgQ1nfy8Ma9ao9Q1rntTAQHrzzyDuj+TSO+X3le6PfWwqDvodsb+OumE10eMFfuMCTQSQ5iuIQ==} engines: {node: '>=6.9.0'} '@babel/types@7.29.8': @@ -627,8 +627,8 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@oxc-project/types@0.152.0': - resolution: {integrity: sha512-oM/5rLBm2tPkg0iBgkH/FOeR3PCDpY19GTgAZjMFM8h9WI9VW7cLgzp6nwtarYKmovavIQZ+Fe/RKX/8C8O/Rw==} + '@oxc-project/types@0.153.0': + resolution: {integrity: sha512-jSNrRIyvPVLL5E1z/tS5zLAprosGz/FuI1PWwEOz59j3E4TTTzSpqKb/RDGqJhhW0QHYISGXxq582wGx6T11Tw==} '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} @@ -661,98 +661,98 @@ packages: '@remix-run/route-pattern@0.22.1': resolution: {integrity: sha512-czdGJWh09Lapvcqt7Vb09KlrU2PhRJ8xQaI+AItTuD9aDJ5MAgxnS38lnys6Ll+6RJEqPiaUqTwIQhVLwFvv+w==} - '@rolldown/binding-android-arm-eabi@1.2.12': - resolution: {integrity: sha512-dB/a1214qKfHMXCpgqR4OZT+jS4kTyEXbQGJPqzobt5EwH5rX080pxE37alt3RzvR1bf1Yz/yGqRfrYAxuPw0A==} + '@rolldown/binding-android-arm-eabi@1.2.13': + resolution: {integrity: sha512-Vu/NICrgdRvUOeaJZIyB2FP63s6fO/4ud5l8dXmxDx9yDyn+mN0y+gsvsVviSli+T361Aqo0h46EuMoobrwawA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@rolldown/binding-android-arm64@1.2.12': - resolution: {integrity: sha512-7KHFgQ5VJxIHcLlrwrc3Xbds7oTNQT7Pgi9gQCJKrd2VGab/UksIOYp6VD8MzCstGxOKMgNamPwUCfxPdP1OHg==} + '@rolldown/binding-android-arm64@1.2.13': + resolution: {integrity: sha512-6LEoIrGy5vvCd2boNnv2soPSUZj/PRvhp8R/t9KlX+mIZxThIE/ZqxrGXxmuNX0FuvQFvLdZr7S4HrYpYBVhEQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.2.12': - resolution: {integrity: sha512-3YIhqHD96nA5SaYNRBR16HnGv4oavZvXfD/ayHM+oYZ0WD/8lBAtf6zQua4kEyAvpqrluKXl0lnOBoiNby7x9w==} + '@rolldown/binding-darwin-arm64@1.2.13': + resolution: {integrity: sha512-CaJSRzlQ6Q+zkDMVA9OkVxBjVoPRCDEE3v0FSJ9kIQBgRjFApA3Si4ijhbNVUji7ZJt+PfO0e46qy4nPInHUPA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.2.12': - resolution: {integrity: sha512-UuuJ35MFw4gmFOrE9pEqIV+K3syIKveph+Qc1/ljHZVdoDW4pz/JHR/eMVom+TZGl/5OOvGJOWaOCVt3ZfqhxA==} + '@rolldown/binding-darwin-x64@1.2.13': + resolution: {integrity: sha512-e4r340I5hxSzJkD3YJBxgzq/rJ3wwxwdLLb2FPt1Zpyem20nrQPT11DDEEkazwxaHumH8wpglsp/Ozgj/wT6mw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.2.12': - resolution: {integrity: sha512-uMvssit0a4W+/7D8CbHUvG719mH3R2jwXAlh/XcPvuHTE0g++LymF88DCGNX0HM2rBOn0xrzgXktIB6fLSJBTQ==} + '@rolldown/binding-freebsd-x64@1.2.13': + resolution: {integrity: sha512-hoBWDZ4/K/mJKVMbsgUd1jfpA2DiOrJ54mpegObU9TBHBBrtX4FLIXJJQRDPZ/2Dn91GvPob+Z2hwKJzf4E5SQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.2.12': - resolution: {integrity: sha512-XcFu0R0xWnwzSf4IQgFH1rJIckPN1pLy2R+4r9IDB7Yfu/ys9cVqfa4pBrMHj7a3gl8mIR4nRNPg0e5IvEVs6g==} + '@rolldown/binding-linux-arm-gnueabihf@1.2.13': + resolution: {integrity: sha512-oF9fZu3vTWnTiVAkDFxU9PJLt1nh20K9RRpuHsR7ZnE2L7XookBbDBVLojCVSLGbvtSlxeUNnjAj6DbNsKyzbg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.2.12': - resolution: {integrity: sha512-260UrKgn8tz39ak+SMDOirKzr7V04M9dWPw5llW00SwBivCZoWcRBKV1d8cXnRkUmSZA3BdiUmBHWk7734Ulpw==} + '@rolldown/binding-linux-arm64-gnu@1.2.13': + resolution: {integrity: sha512-DTpb/+jMiqWMPgphn4ksW1zW+XLJ6dJJ9FMvnIk9I291LhCctMPhMYJrP5t9p6C9qa3KXadDdUEZHBaPh3kNxQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.2.12': - resolution: {integrity: sha512-5YK1I9SqDkbPgc1IA8BgDl34suqUS2q0KWnBrirm0E51YjOs6eo6dV6jbQfNE/argHRSvd0QUGgtpIoYx+WWpw==} + '@rolldown/binding-linux-arm64-musl@1.2.13': + resolution: {integrity: sha512-xU+Kvv9N2A3SY35zFh1FWWNjxbadE/BKeqnkXe7vScU4GZsw757BlVmDLITZEq8DPpk6m7uoDYkK7P+x/uU5Ow==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.2.12': - resolution: {integrity: sha512-Rkcrmp7eFRg74yL5fXEU91JEWbdEPLevWwGtXpmhbjlD1StScbWTmO94Bhly+Mo+ketKYkdmM1vNUKeWSlx8cQ==} + '@rolldown/binding-linux-ppc64-gnu@1.2.13': + resolution: {integrity: sha512-XMk/hnhh25oQ756Lclb1Q11h4ll0xC0Esa5w4Vzp+mAE2S3AGJgeM0SonrIgY8fHhjarb6hcoTuwoFG0VVP2ig==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.2.12': - resolution: {integrity: sha512-qvK4DuAsQc2BSjlx+Xr+IzOIvvxbGZqxFwdWfG6F518Erj0GGISyQbJ6pIappnOxlNPzNHvo/L0BwB30GZ+zVw==} + '@rolldown/binding-linux-s390x-gnu@1.2.13': + resolution: {integrity: sha512-U1BoTHYmlywE2n3HUWjzZ+8EQsKr+OwpxYuDWaubx42tUL8QSL7nOqRz/NVHanibbFP3M1Rxuprz/wNcbMKjqw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.2.12': - resolution: {integrity: sha512-Q9uLBO53Xd4QIq1WOycVQyPP1O4HhraEV2qqb3uTrnVw6QZih9duY4vNXOivL1xoUS1/z+W8eF4NMfl2a8Sdjw==} + '@rolldown/binding-linux-x64-gnu@1.2.13': + resolution: {integrity: sha512-J4cm80Pc6wEwV5AZ42o62sIQgDk+Y7R2s646jIwuvO+4V46QB58N4vVuMPWCBaNgursXLpmUWJV//WQAkPvHBQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.2.12': - resolution: {integrity: sha512-3IBxWFMjbOZskDPKv8Lf9BCnahlKuHthWkYnyIxOH/QcJrFcS4EmcenthApkwr/5+nEqZlLzeYbxeMaX7A5u4g==} + '@rolldown/binding-linux-x64-musl@1.2.13': + resolution: {integrity: sha512-W0euZS40U4V6JkmEnVCIX9mcsL6cbXQ4X8c2w+MMOIjFg68TXUW+u3RT+2e1t1pv9mg/EP3pDtK3POXdQ7Rxyw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.2.12': - resolution: {integrity: sha512-xtX61xg4LKPkPWilZU1ynKClz5Gj4bf74LML4r3eVLWumKnGjoEr1OSHQhMdbBDoYTi+yjrujvpZe2pUnqCrrA==} + '@rolldown/binding-openharmony-arm64@1.2.13': + resolution: {integrity: sha512-do/AF/4n9MRshia3a5aXoy8xM2c6mgfT6D7H/dY6my5z+hfCIR4ab7mk4IRj++nsEQpKy39kd0DQnDq+r692tw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-win32-arm64-msvc@1.2.12': - resolution: {integrity: sha512-At7fPB6PCaIjzgIhEZFxuT+BBFqiQibJDT4d3PhiR3f4E7bbMZF4aKblbFfEM3sETRDd1YiQx/+U/g/B/ou5Ew==} + '@rolldown/binding-win32-arm64-msvc@1.2.13': + resolution: {integrity: sha512-6FtUf2cJZobutJdxnGYX8z0vtbgqU0b2v8vfBhkXb9wp2MppMFtkunE+IaOntyi01rkIQoPW2GHABtfzsC0BRQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.2.12': - resolution: {integrity: sha512-WIw2haVKwjuYdXkHaoC0mF8Le71TuCBxjrdKqLbJGctbBABj+ClfmNvtbOnzpq3RokNo5+V1qhtSzJyXorsklQ==} + '@rolldown/binding-win32-x64-msvc@1.2.13': + resolution: {integrity: sha512-UKhFaZTeTcbKrb3iU82m17jVcPEAoqDkCN5MBqgPyZSwp/cQmib21crTS0DdH7T1B7wZRWEI89YQAOJMet5yhg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -870,63 +870,63 @@ packages: '@types/svgo@2.6.4': resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==} - '@typescript-eslint/eslint-plugin@8.71.0': - resolution: {integrity: sha512-pqcS9c1HxZTHt7End4nXqd0s5lJrrFzrgCkKFJrsbUnaL6M3+6oBFZaslg6Gjsl3argl2DDRFROnXARaZ2e4Nw==} + '@typescript-eslint/eslint-plugin@8.71.1': + resolution: {integrity: sha512-nNlBf6HuotqMgZvSkWD5hNdemiBIxQ2NmrlgfcUIeZRs+BbakjscCQRq/Hb74EFVnFiSWWdL12JruqwBy3ERDw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.71.0 + '@typescript-eslint/parser': ^8.71.1 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.71.0': - resolution: {integrity: sha512-CG4nPk1f2zc8yw4pALqHsFYH2hdo+h1T9daSp21+Hnxi9LOE3GT9hAfTKJCBXVNM2GmYs1eMEP615wPoeOgk3A==} + '@typescript-eslint/parser@8.71.1': + resolution: {integrity: sha512-oM/5sAqz/l1v/zYK1qTOPrn2+JIrBGC1V6uNYucRO5gh6eT9vWJ/RhPbGE59byvZEUQ4VP6XkLBaS5Jti5jpvw==} 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.71.0': - resolution: {integrity: sha512-aABjw5rjBacYONVPaPiWOCjJu0vEF4a25iQuodlmQYL1trtLZ0X/y+2Vzl3BKI1odM4LnwLE1oUDXYp1wzx1TQ==} + '@typescript-eslint/project-service@8.71.1': + resolution: {integrity: sha512-Oijc9RUsohHjncg6iGi7gCtjnEjYt9FWv9u6ygK8uKcHK5eLjLAkqERQ9BaytbpceOFdk6kifPCS/zAZE+A99g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.71.0': - resolution: {integrity: sha512-gWF0BhUcnjZxSpLE8ngS/59n2SB0J3YqRxvX1+2aoRJk9hNtHSLOV+TcarFiOr5ipXm3yc1QrI4c9YZc8zyCxw==} + '@typescript-eslint/scope-manager@8.71.1': + resolution: {integrity: sha512-1YUDZXdTnXLlob03SFHBipdyMBsDVm7zoSz0ytTJ39dk5J1TgsTK03VlR/dLXG/RLLUrPcYbD4rp23BmHxHP0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.71.0': - resolution: {integrity: sha512-Z1UlWHADEK2Mlb9NpWfDeSjqoZ5EyrOv4R3eQpbkzqn/EwaIdOpXXupEA1+0ZIOSJSZZDBHG0BrQyN8zUG6Pwg==} + '@typescript-eslint/tsconfig-utils@8.71.1': + resolution: {integrity: sha512-oTvkml5SxXhgg+WWKhod5qWQICDXtOB+/Hi9VdPKFAANJ2b7YOgMffgvzXuqog7R6A/JtrzRf128dsxummyWhg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.71.0': - resolution: {integrity: sha512-i8uO1qbdxeKgRnS5sCRt6On3/nfo2d2DwQe3Yvjx543zLy7r8ySqRuPPiIIXAhS03U0v5NfAFx+rUgxFzKKwNw==} + '@typescript-eslint/type-utils@8.71.1': + resolution: {integrity: sha512-kH3t3jZCYv2PZSBEWPKTariLrCaoF1CLoPitYFBJOhAGEwWnSRAtGEifrfrpBa4K9JlwWNZotgA5w3/wLSk/FQ==} 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.71.0': - resolution: {integrity: sha512-cJ4OoxPGWvFnBTnSZyaU+qJzGTqPTGJY+gDchj6cRyLRdmIdt4rcsE4twj+zPfrNiWuVi38wijHzShL++Z9atQ==} + '@typescript-eslint/types@8.71.1': + resolution: {integrity: sha512-ybYnPTUwg3VQQOFEiBPLs8Jxl1ry2vXdn1kVKguomBbvxpetdu3MKTNDqFNUrlG8ylP9MpZosmXMFYlGQHk1oQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.71.0': - resolution: {integrity: sha512-PEEF4G5sLLWAS5BpPrUvms4ySZkiBQQZM4z+3ReI46axK5Vqr/vXBQatJQIZZOYdGyPUAKTtsrWzpqKuU+3DEw==} + '@typescript-eslint/typescript-estree@8.71.1': + resolution: {integrity: sha512-pSKSEK1JJpHs6KiKVtABCE4iJK5d7FLFzDXQNBQ2oRY7LEd3UwOt3TZemTgu9syTIf56dJWlTn/pdmrO9oKUXQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.71.0': - resolution: {integrity: sha512-pKR/tEMVrXZG23UFKUn5BQf3zfmfk7KQceI2cGzywZ5nxM5Eu3hEJU1utjWzydtzBbcJAQhHN8iPCxobHpPcZQ==} + '@typescript-eslint/utils@8.71.1': + resolution: {integrity: sha512-CBjT6gfAz3DW2j9Q4moFnqt208Aq+506sVGXfpRcyAeqn0EpayL0mjdWoCO2t3RC7GewNrFxdeehuEaPg6DMzQ==} 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.71.0': - resolution: {integrity: sha512-8eQ9R218XORK+KLosnf4bu/QsUXvUyVwTbArg7/0NMB1Pu87OJKvj4nhFblkYE8gQV73mW1dx1ptlPCkwRGa7A==} + '@typescript-eslint/visitor-keys@8.71.1': + resolution: {integrity: sha512-0GxiUGqMU0qXJt58cBsiG3DP8lUmBaFo2vChtUX+CT7PnR3v/VGLLrzVP4K9r1lNiZXjHYefMBbPunplr09v6w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} acorn-jsx@5.3.2: @@ -934,8 +934,8 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.18.0: - resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==} + acorn@8.19.0: + resolution: {integrity: sha512-oJlA3XiRm7Cyk6qFD2Jn8ak9B7jSy0qy00ADO3+8dpT0LSjFihQYv4C02LFCSYJV3Q37xYwwRy5m+IpIiUzqWw==} engines: {node: '>=0.4.0'} hasBin: true @@ -1106,8 +1106,8 @@ packages: resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} engines: {node: '>=0.10.0'} - caniuse-lite@1.0.30001814: - resolution: {integrity: sha512-/Uaf1lAzr59XcMpW0o96WoEfr+VXK2OX4U9AgFoiSHsVJ4HppnIFUjtYzsyDH2+tgANaQb2/oxYGwCPapN1FpA==} + caniuse-lite@1.0.30001815: + resolution: {integrity: sha512-uDybUEyfgbyJJ93J1vikTylBX31AkdVYeVPeffMQpf8XN7hSfr0oZOn4VFOIMNvtU5+rHvC5Udg2TgtJKHm23Q==} caw@2.0.1: resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} @@ -1338,8 +1338,8 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.444: - resolution: {integrity: sha512-5ss/uJfoDYDHT0lfJzT6FbcskIzROIOPf0BbbFkGcvDzoJU7i//9GDrwwIHQVmIsrAGiF3ihpADBRIsrEFt1rQ==} + electron-to-chromium@1.5.449: + resolution: {integrity: sha512-dKeYk/3SFQz+nXi5whp3OuJzeWABEG4zCtkWJ9+Vby1E1iFM2y0gElRtQvNXRPJTsj8WAF4HMP7hvP790QtJ9g==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -2304,8 +2304,8 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - nanoid@3.3.19: - resolution: {integrity: sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug==} + nanoid@3.3.20: + resolution: {integrity: sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -2523,8 +2523,8 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} - postcss@8.5.28: - resolution: {integrity: sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==} + postcss@8.5.29: + resolution: {integrity: sha512-49cGhUbXj8Qenv0iTMxA1cFBzxXoctpC9Ujd77t1WcbJIr6nF/eI7g/8MgxrYldFRuAXvja7xQRwavoW7kgrxQ==} engines: {node: ^10 || ^12 || >=14} powershell-utils@0.2.1: @@ -2665,8 +2665,8 @@ packages: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - resolve@1.22.12: - resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} + resolve@1.22.13: + resolution: {integrity: sha512-Dj/cW9zBV2aRj6XzCxuGIs3ESZKv02jixne3q6jFZYZ3/Tg09gHHviSMDL4kObh9pqSahdRHEnDoaP2gn8YLhA==} engines: {node: '>= 0.4'} hasBin: true @@ -2682,8 +2682,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rolldown@1.2.12: - resolution: {integrity: sha512-8wafseiaG80xmXSfqidUNqZcylTlhmPZZt+za2m+js2sFZ8dTNlhIOV2WcbIPx2hgwPBJpEUGFAMZ9bgBBLTSQ==} + rolldown@1.2.13: + resolution: {integrity: sha512-/5apOkwWxtACcQtZ5WlrAsKS4JwXVThQPJZ3RqIruRY9UG9M8e0VlXN068xum/JRKA4aIUoJ13ghe/kGCvidiQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -2993,8 +2993,8 @@ packages: peerDependencies: typescript: '>=3.5.1' - typescript-eslint@8.71.0: - resolution: {integrity: sha512-fBdHYiqQ14RW6mOMXD14Svn82ZsCYAoQSzGRzyEjR59S5A2Krh/l7fGTOQ7iCr8gGy/mHVXtEF7s5fgjEdV0Pw==} + typescript-eslint@8.71.1: + resolution: {integrity: sha512-oiNVPC3/NbV1FpaHU07l8O6ynqG9v4PAiW2WvTrAmZdR0f2HI/gE668ElMLCK7Xbsu5k2fK5C4fXNiq05j7/nQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -3057,8 +3057,8 @@ packages: peerDependencies: vite: 5.x || 6.x || 7.x || 8.x - vite@8.3.2: - resolution: {integrity: sha512-SQr1x6W5vVSbROg7vsyXIaxK9b0G7zsT68acdWWRmnBUsgDieLCRG+Rep9WdZgcposvv/GSnr4GUUBqB3vXq6w==} + vite@8.3.3: + resolution: {integrity: sha512-cTAldKPImjg6c+gk48U19POPn3GCBzZwpdsN8ZMEEcbpes+6/wvfqUd0C2y3qYY4wsj8PwgFwrZ/1jBPVttMSg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -3191,10 +3191,10 @@ snapshots: '@babel/generator': 7.29.8 '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/helpers': 7.29.7 + '@babel/helpers': 7.29.10 '@babel/parser': 7.29.9 '@babel/template': 7.29.7 - '@babel/traverse': 7.29.8(supports-color@10.2.2) + '@babel/traverse': 7.29.10(supports-color@10.2.2) '@babel/types': 7.29.8 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 @@ -3229,7 +3229,7 @@ snapshots: '@babel/helper-module-imports@7.29.7(supports-color@10.2.2)': dependencies: - '@babel/traverse': 7.29.8(supports-color@10.2.2) + '@babel/traverse': 7.29.10(supports-color@10.2.2) '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color @@ -3239,7 +3239,7 @@ snapshots: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-module-imports': 7.29.7(supports-color@10.2.2) '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.29.8(supports-color@10.2.2) + '@babel/traverse': 7.29.10(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -3251,7 +3251,7 @@ snapshots: '@babel/helper-validator-option@7.29.7': {} - '@babel/helpers@7.29.7': + '@babel/helpers@7.29.10': dependencies: '@babel/template': 7.29.7 '@babel/types': 7.29.8 @@ -3283,7 +3283,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/runtime@7.29.7': {} + '@babel/runtime@7.29.10': {} '@babel/template@7.29.7': dependencies: @@ -3291,7 +3291,7 @@ snapshots: '@babel/parser': 7.29.9 '@babel/types': 7.29.8 - '@babel/traverse@7.29.8(supports-color@10.2.2)': + '@babel/traverse@7.29.10(supports-color@10.2.2)': dependencies: '@babel/code-frame': 7.29.7 '@babel/generator': 7.29.8 @@ -3323,7 +3323,7 @@ snapshots: '@emotion/babel-plugin@11.13.5(supports-color@10.2.2)': dependencies: '@babel/helper-module-imports': 7.29.7(supports-color@10.2.2) - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 '@emotion/hash': 0.9.2 '@emotion/memoize': 0.9.0 '@emotion/serialize': 1.3.3 @@ -3354,7 +3354,7 @@ snapshots: '@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2)': dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 '@emotion/babel-plugin': 11.13.5(supports-color@10.2.2) '@emotion/cache': 11.14.0 '@emotion/serialize': 1.3.3 @@ -3380,7 +3380,7 @@ snapshots: '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2)': dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 '@emotion/babel-plugin': 11.13.5(supports-color@10.2.2) '@emotion/is-prop-valid': 1.4.0 '@emotion/react': 11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2) @@ -3492,7 +3492,7 @@ snapshots: '@mui/icons-material@9.4.0(@mui/material@9.4.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(@types/react@19.3.0)(react@19.3.0)': dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 '@mui/material': 9.4.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) react: 19.3.0 optionalDependencies: @@ -3500,7 +3500,7 @@ snapshots: '@mui/material@9.4.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 '@mui/core-downloads-tracker': 9.4.0 '@mui/system': 9.4.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0) '@mui/types': 9.4.0(@types/react@19.3.0) @@ -3521,7 +3521,7 @@ snapshots: '@mui/private-theming@9.4.0(@types/react@19.3.0)(react@19.3.0)': dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 '@mui/utils': 9.4.0(@types/react@19.3.0)(react@19.3.0) prop-types: 15.8.1 react: 19.3.0 @@ -3530,7 +3530,7 @@ snapshots: '@mui/styled-engine@9.4.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(react@19.3.0)': dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 '@emotion/cache': 11.14.0 '@emotion/serialize': 1.3.3 '@emotion/sheet': 1.4.0 @@ -3543,7 +3543,7 @@ snapshots: '@mui/system@9.4.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)': dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 '@mui/private-theming': 9.4.0(@types/react@19.3.0)(react@19.3.0) '@mui/styled-engine': 9.4.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(react@19.3.0) '@mui/types': 9.4.0(@types/react@19.3.0) @@ -3559,13 +3559,13 @@ snapshots: '@mui/types@9.4.0(@types/react@19.3.0)': dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 optionalDependencies: '@types/react': 19.3.0 '@mui/utils@9.4.0(@types/react@19.3.0)(react@19.3.0)': dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 '@mui/types': 9.4.0(@types/react@19.3.0) '@types/prop-types': 15.7.15 clsx: 2.1.1 @@ -3587,23 +3587,23 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.3 - '@oxc-project/types@0.152.0': {} + '@oxc-project/types@0.153.0': {} '@popperjs/core@2.11.8': {} - '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.2(@types/node@26.6.4)(terser@5.51.2))': + '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@prefresh/vite': 2.4.12(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.2(@types/node@26.6.4)(terser@5.51.2)) + '@prefresh/vite': 2.4.12(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)) '@rollup/pluginutils': 5.4.0 babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.7(supports-color@10.2.2)) debug: 4.4.3(supports-color@10.2.2) magic-string: 0.30.21 picocolors: 1.1.1 - vite: 8.3.2(@types/node@26.6.4)(terser@5.51.2) - vite-prerender-plugin: 0.5.14(vite@8.3.2(@types/node@26.6.4)(terser@5.51.2)) + vite: 8.3.3(@types/node@26.6.4)(terser@5.51.2) + vite-prerender-plugin: 0.5.14(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)) zimmerframe: 1.1.5 transitivePeerDependencies: - preact @@ -3620,7 +3620,7 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.12(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.2(@types/node@26.6.4)(terser@5.51.2))': + '@prefresh/vite@2.4.12(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@prefresh/babel-plugin': 0.5.4(@babel/core@7.29.7(supports-color@10.2.2)) @@ -3628,55 +3628,55 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 11.0.0 - vite: 8.3.2(@types/node@26.6.4)(terser@5.51.2) + vite: 8.3.3(@types/node@26.6.4)(terser@5.51.2) transitivePeerDependencies: - supports-color '@remix-run/route-pattern@0.22.1': {} - '@rolldown/binding-android-arm-eabi@1.2.12': + '@rolldown/binding-android-arm-eabi@1.2.13': optional: true - '@rolldown/binding-android-arm64@1.2.12': + '@rolldown/binding-android-arm64@1.2.13': optional: true - '@rolldown/binding-darwin-arm64@1.2.12': + '@rolldown/binding-darwin-arm64@1.2.13': optional: true - '@rolldown/binding-darwin-x64@1.2.12': + '@rolldown/binding-darwin-x64@1.2.13': optional: true - '@rolldown/binding-freebsd-x64@1.2.12': + '@rolldown/binding-freebsd-x64@1.2.13': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.2.12': + '@rolldown/binding-linux-arm-gnueabihf@1.2.13': optional: true - '@rolldown/binding-linux-arm64-gnu@1.2.12': + '@rolldown/binding-linux-arm64-gnu@1.2.13': optional: true - '@rolldown/binding-linux-arm64-musl@1.2.12': + '@rolldown/binding-linux-arm64-musl@1.2.13': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.2.12': + '@rolldown/binding-linux-ppc64-gnu@1.2.13': optional: true - '@rolldown/binding-linux-s390x-gnu@1.2.12': + '@rolldown/binding-linux-s390x-gnu@1.2.13': optional: true - '@rolldown/binding-linux-x64-gnu@1.2.12': + '@rolldown/binding-linux-x64-gnu@1.2.13': optional: true - '@rolldown/binding-linux-x64-musl@1.2.12': + '@rolldown/binding-linux-x64-musl@1.2.13': optional: true - '@rolldown/binding-openharmony-arm64@1.2.12': + '@rolldown/binding-openharmony-arm64@1.2.13': optional: true - '@rolldown/binding-win32-arm64-msvc@1.2.12': + '@rolldown/binding-win32-arm64-msvc@1.2.13': optional: true - '@rolldown/binding-win32-x64-msvc@1.2.12': + '@rolldown/binding-win32-x64-msvc@1.2.13': optional: true '@rolldown/pluginutils@1.0.1': {} @@ -3707,7 +3707,7 @@ snapshots: dependencies: '@babel/generator': 7.29.8 '@babel/parser': 7.29.9 - '@babel/traverse': 7.29.8(supports-color@10.2.2) + '@babel/traverse': 7.29.10(supports-color@10.2.2) '@babel/types': 7.29.8 javascript-natural-sort: 0.7.1 lodash-es: 4.18.1 @@ -3791,14 +3791,14 @@ snapshots: dependencies: '@types/node': 26.6.4 - '@typescript-eslint/eslint-plugin@8.71.0(@typescript-eslint/parser@8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.71.1(@typescript-eslint/parser@8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.71.0 - '@typescript-eslint/type-utils': 8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/utils': 8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.71.0 + '@typescript-eslint/parser': 8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.71.1 + '@typescript-eslint/type-utils': 8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/utils': 8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.71.1 eslint: 10.12.0(supports-color@10.2.2) ignore: 7.0.12 natural-compare: 1.4.0 @@ -3807,41 +3807,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/parser@8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/scope-manager': 8.71.0 - '@typescript-eslint/types': 8.71.0 - '@typescript-eslint/typescript-estree': 8.71.0(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.71.0 + '@typescript-eslint/scope-manager': 8.71.1 + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/typescript-estree': 8.71.1(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.71.1 debug: 4.4.3(supports-color@10.2.2) eslint: 10.12.0(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.71.0(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/project-service@8.71.1(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.71.0(typescript@6.0.3) - '@typescript-eslint/types': 8.71.0 + '@typescript-eslint/tsconfig-utils': 8.71.1(typescript@6.0.3) + '@typescript-eslint/types': 8.71.1 debug: 4.4.3(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.71.0': + '@typescript-eslint/scope-manager@8.71.1': dependencies: - '@typescript-eslint/types': 8.71.0 - '@typescript-eslint/visitor-keys': 8.71.0 + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/visitor-keys': 8.71.1 - '@typescript-eslint/tsconfig-utils@8.71.0(typescript@6.0.3)': + '@typescript-eslint/tsconfig-utils@8.71.1(typescript@6.0.3)': dependencies: typescript: 6.0.3 - '@typescript-eslint/type-utils@8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/types': 8.71.0 - '@typescript-eslint/typescript-estree': 8.71.0(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/utils': 8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/typescript-estree': 8.71.1(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/utils': 8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) debug: 4.4.3(supports-color@10.2.2) eslint: 10.12.0(supports-color@10.2.2) ts-api-utils: 2.5.0(typescript@6.0.3) @@ -3849,14 +3849,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.71.0': {} + '@typescript-eslint/types@8.71.1': {} - '@typescript-eslint/typescript-estree@8.71.0(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/typescript-estree@8.71.1(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/project-service': 8.71.0(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.71.0(typescript@6.0.3) - '@typescript-eslint/types': 8.71.0 - '@typescript-eslint/visitor-keys': 8.71.0 + '@typescript-eslint/project-service': 8.71.1(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.71.1(typescript@6.0.3) + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/visitor-keys': 8.71.1 debug: 4.4.3(supports-color@10.2.2) minimatch: 10.2.6 semver: 7.8.5 @@ -3866,27 +3866,27 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': + '@typescript-eslint/utils@8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: '@eslint-community/eslint-utils': 4.10.1(eslint@10.12.0(supports-color@10.2.2)) - '@typescript-eslint/scope-manager': 8.71.0 - '@typescript-eslint/types': 8.71.0 - '@typescript-eslint/typescript-estree': 8.71.0(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.71.1 + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/typescript-estree': 8.71.1(supports-color@10.2.2)(typescript@6.0.3) eslint: 10.12.0(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.71.0': + '@typescript-eslint/visitor-keys@8.71.1': dependencies: - '@typescript-eslint/types': 8.71.0 + '@typescript-eslint/types': 8.71.1 eslint-visitor-keys: 5.0.1 - acorn-jsx@5.3.2(acorn@8.18.0): + acorn-jsx@5.3.2(acorn@8.19.0): dependencies: - acorn: 8.18.0 + acorn: 8.19.0 - acorn@8.18.0: {} + acorn@8.19.0: {} ajv@6.15.0: dependencies: @@ -3928,9 +3928,9 @@ snapshots: babel-plugin-macros@3.1.0: dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 cosmiconfig: 7.1.0 - resolve: 1.22.12 + resolve: 1.22.13 babel-plugin-transform-hook-names@1.0.2(@babel/core@7.29.7(supports-color@10.2.2)): dependencies: @@ -4004,8 +4004,8 @@ snapshots: browserslist@4.29.3: dependencies: baseline-browser-mapping: 2.11.27 - caniuse-lite: 1.0.30001814 - electron-to-chromium: 1.5.444 + caniuse-lite: 1.0.30001815 + electron-to-chromium: 1.5.449 node-releases: 2.0.57 update-browserslist-db: 1.3.3(browserslist@4.29.3) @@ -4075,7 +4075,7 @@ snapshots: camelcase@2.1.1: {} - caniuse-lite@1.0.30001814: {} + caniuse-lite@1.0.30001815: {} caw@2.0.1: dependencies: @@ -4296,7 +4296,7 @@ snapshots: dom-helpers@5.2.1: dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 csstype: 3.2.3 dom-serializer@1.4.1: @@ -4370,7 +4370,7 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.444: {} + electron-to-chromium@1.5.449: {} emoji-regex@10.6.0: {} @@ -4536,8 +4536,8 @@ snapshots: espree@11.2.0: dependencies: - acorn: 8.18.0 - acorn-jsx: 5.3.2(acorn@8.18.0) + acorn: 8.19.0 + acorn-jsx: 5.3.2(acorn@8.19.0) eslint-visitor-keys: 5.0.1 esquery@1.7.0: @@ -5296,7 +5296,7 @@ snapshots: ms@2.1.3: {} - nanoid@3.3.19: {} + nanoid@3.3.20: {} natural-compare@1.4.0: {} @@ -5312,7 +5312,7 @@ snapshots: normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.12 + resolve: 1.22.13 semver: 5.7.2 validate-npm-package-license: 3.0.4 @@ -5493,9 +5493,9 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss@8.5.28: + postcss@8.5.29: dependencies: - nanoid: 3.3.19 + nanoid: 3.3.20 picocolors: 1.1.1 source-map-js: 1.2.2 @@ -5567,7 +5567,7 @@ snapshots: react-transition-group@4.4.5(react-dom@19.3.0(react@19.3.0))(react@19.3.0): dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -5581,7 +5581,7 @@ snapshots: react-window@1.8.11(react-dom@19.3.0(react@19.3.0))(react@19.3.0): dependencies: - '@babel/runtime': 7.29.7 + '@babel/runtime': 7.29.10 memoize-one: 5.2.1 react: 19.3.0 react-dom: 19.3.0(react@19.3.0) @@ -5622,7 +5622,7 @@ snapshots: resolve-from@4.0.0: {} - resolve@1.22.12: + resolve@1.22.13: dependencies: es-errors: 1.3.0 is-core-module: 2.17.0 @@ -5639,35 +5639,35 @@ snapshots: dependencies: glob: 7.2.3 - rolldown@1.2.12: + rolldown@1.2.13: dependencies: - '@oxc-project/types': 0.152.0 + '@oxc-project/types': 0.153.0 '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm-eabi': 1.2.12 - '@rolldown/binding-android-arm64': 1.2.12 - '@rolldown/binding-darwin-arm64': 1.2.12 - '@rolldown/binding-darwin-x64': 1.2.12 - '@rolldown/binding-freebsd-x64': 1.2.12 - '@rolldown/binding-linux-arm-gnueabihf': 1.2.12 - '@rolldown/binding-linux-arm64-gnu': 1.2.12 - '@rolldown/binding-linux-arm64-musl': 1.2.12 - '@rolldown/binding-linux-ppc64-gnu': 1.2.12 - '@rolldown/binding-linux-s390x-gnu': 1.2.12 - '@rolldown/binding-linux-x64-gnu': 1.2.12 - '@rolldown/binding-linux-x64-musl': 1.2.12 - '@rolldown/binding-openharmony-arm64': 1.2.12 - '@rolldown/binding-win32-arm64-msvc': 1.2.12 - '@rolldown/binding-win32-x64-msvc': 1.2.12 + '@rolldown/binding-android-arm-eabi': 1.2.13 + '@rolldown/binding-android-arm64': 1.2.13 + '@rolldown/binding-darwin-arm64': 1.2.13 + '@rolldown/binding-darwin-x64': 1.2.13 + '@rolldown/binding-freebsd-x64': 1.2.13 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.13 + '@rolldown/binding-linux-arm64-gnu': 1.2.13 + '@rolldown/binding-linux-arm64-musl': 1.2.13 + '@rolldown/binding-linux-ppc64-gnu': 1.2.13 + '@rolldown/binding-linux-s390x-gnu': 1.2.13 + '@rolldown/binding-linux-x64-gnu': 1.2.13 + '@rolldown/binding-linux-x64-musl': 1.2.13 + '@rolldown/binding-openharmony-arm64': 1.2.13 + '@rolldown/binding-win32-arm64-msvc': 1.2.13 + '@rolldown/binding-win32-x64-msvc': 1.2.13 - rollup-plugin-visualizer@7.1.1(rolldown@1.2.12): + rollup-plugin-visualizer@7.1.1(rolldown@1.2.13): dependencies: open: 11.0.4 picomatch: 4.0.7 source-map: 0.8.0 yargs: 18.2.0 optionalDependencies: - rolldown: 1.2.12 + rolldown: 1.2.13 run-applescript@7.1.0: {} @@ -5874,7 +5874,7 @@ snapshots: terser@5.51.2: dependencies: '@jridgewell/source-map': 0.3.11 - acorn: 8.18.0 + acorn: 8.19.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -5931,12 +5931,12 @@ snapshots: dependencies: typescript: 6.0.3 - typescript-eslint@8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3): + typescript-eslint@8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.71.0(@typescript-eslint/parser@8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/parser': 8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.71.0(supports-color@10.2.2)(typescript@6.0.3) - '@typescript-eslint/utils': 8.71.0(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/eslint-plugin': 8.71.1(@typescript-eslint/parser@8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/parser': 8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.71.1(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/utils': 8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) eslint: 10.12.0(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: @@ -5982,7 +5982,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-imagemin@0.6.1(supports-color@10.2.2)(vite@8.3.2(@types/node@26.6.4)(terser@5.51.2)): + vite-plugin-imagemin@0.6.1(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)): dependencies: '@types/imagemin': 7.0.1 '@types/imagemin-gifsicle': 7.0.4 @@ -6007,11 +6007,11 @@ snapshots: imagemin-webp: 6.1.0 jpegtran-bin: 6.0.1 pathe: 0.2.0 - vite: 8.3.2(@types/node@26.6.4)(terser@5.51.2) + vite: 8.3.3(@types/node@26.6.4)(terser@5.51.2) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.14(vite@8.3.2(@types/node@26.6.4)(terser@5.51.2)): + vite-prerender-plugin@0.5.14(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -6019,14 +6019,14 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0 - vite: 8.3.2(@types/node@26.6.4)(terser@5.51.2) + vite: 8.3.3(@types/node@26.6.4)(terser@5.51.2) - vite@8.3.2(@types/node@26.6.4)(terser@5.51.2): + vite@8.3.3(@types/node@26.6.4)(terser@5.51.2): dependencies: lightningcss: 1.33.0 picomatch: 4.0.7 - postcss: 8.5.28 - rolldown: 1.2.12 + postcss: 8.5.29 + rolldown: 1.2.13 tinyglobby: 0.2.17 optionalDependencies: '@types/node': 26.6.4 diff --git a/mock-api/package.json b/mock-api/package.json index 64a729272..883a6c0ca 100644 --- a/mock-api/package.json +++ b/mock-api/package.json @@ -17,5 +17,5 @@ "@trivago/prettier-plugin-sort-imports": "^6.0.2", "prettier": "^3.9.9" }, - "packageManager": "pnpm@12.8.1" + "packageManager": "pnpm@12.10.1" } diff --git a/mock-api/pnpm-lock.yaml b/mock-api/pnpm-lock.yaml index a0c58b979..acb1928ed 100644 --- a/mock-api/pnpm-lock.yaml +++ b/mock-api/pnpm-lock.yaml @@ -7,153 +7,153 @@ importers: configDependencies: {} packageManagerDependencies: pnpm: - specifier: 12.8.1 - version: 12.8.1 + specifier: 12.10.1 + version: 12.10.1 packages: - '@pnpm/exe.android-arm64@12.8.1': - resolution: {integrity: sha512-siDxcidfz5eM6L2tJfik+i2bbUEw8UC7MZ3Yl2HYdRmqbdhHGAOQACtOOu6QVW4Jul4/w5wVKm+wM8ACtgh1Pg==} + '@pnpm/exe.android-arm64@12.10.1': + resolution: {integrity: sha512-CVTlHPwNvadQCJD9bGSMzWIhFX8QpjtqC2c27dhdnn/9iKzEjZ3qL62o3gHpKbIuo6qn4WxTKRoaokgNdReBig==} cpu: [arm64] os: [android] - '@pnpm/exe.android-x64@12.8.1': - resolution: {integrity: sha512-0F/uqPRc3aN4vLHsa0f+6fTtmsigFQ9/yxEU43fionF//pNHEd5e97b3w/nKIgqYMCUQCJphmBRMA9Q8/wlo9Q==} + '@pnpm/exe.android-x64@12.10.1': + resolution: {integrity: sha512-NFiYLIaodY7da0XIebwcU3JoP7IK/lzF7zgKSSP+9H+QcFnQ1GDfBkuBKCYJzZ+Xu0WH54neIPLBBCaOjaaauA==} cpu: [x64] os: [android] - '@pnpm/exe.darwin-arm64@12.8.1': - resolution: {integrity: sha512-/rwavvMQJsl2RIxOHBnDF+4Gk+fhQFAY4M3PQZoKskJOEnaJcygG9p1xby6wcQcbS4d9dIubv09CQhufTgfmpw==} + '@pnpm/exe.darwin-arm64@12.10.1': + resolution: {integrity: sha512-0O8tdQ8ijlPJudXspLMTcitMkdBEz6uUflazL5uQE0WMs85oQIp0U+5hfEktMFB64QqEhjqlvvujTwbzdr9oMg==} cpu: [arm64] os: [darwin] - '@pnpm/exe.darwin-x64@12.8.1': - resolution: {integrity: sha512-htYt2gN7zqJKLhC99Ft6EUiO7myjZAZXfmGCTJUL1v+o7vE9hZdE1+fAkk4Oj1ZHNRti6b2woOxEkRkAusi8OQ==} + '@pnpm/exe.darwin-x64@12.10.1': + resolution: {integrity: sha512-ud+1/uZOKEo8P/AsPynOJc/LNwfI0j6WwCElibj71rU9l4nIBnsSn+wWTIPZPkZ4BBSH5+82azSnAARMyJ1lNA==} cpu: [x64] os: [darwin] - '@pnpm/exe.freebsd-x64@12.8.1': - resolution: {integrity: sha512-PB5BULNgytxvExoOXUUeseS/DcpPENs+cg3iA6xHHeaLT4ctEGKSGXEbuj7USeqvo8JBpAx039hivnbzGqDwnA==} + '@pnpm/exe.freebsd-x64@12.10.1': + resolution: {integrity: sha512-mj9PE5rf8uAfQQ2K66HSATMSut+lNiB4eSqFd5+azFVCMnxNSy/32xpZQJT21PhnN3Y4qbK+iKHe5nWAxSuRhw==} cpu: [x64] os: [freebsd] - '@pnpm/exe.linux-arm64-musl@12.8.1': - resolution: {integrity: sha512-kKeyC/ArjrgdciQRBrOL0j9HtOI4gDRgoyP+eJ1CQKyadpKlf/DhDDyspXe07R3B9KagTVLUF2nlt6Dr5quFIg==} + '@pnpm/exe.linux-arm64-musl@12.10.1': + resolution: {integrity: sha512-xba+00wZJ8Um6rBJJjWl88uJj0tydB8dtomvjlCLvi0uL32vpa9CRP8Vv26FIXvbiZ1bo2RCzYt/eChxJVV52w==} cpu: [arm64] os: [linux] libc: [musl] - '@pnpm/exe.linux-arm64@12.8.1': - resolution: {integrity: sha512-q4s9a9X2O3N9aeUFooW24orNrxvu20+jyVUFR5RanPCqOKKPBrgs2iywMkBBx1aXkkzdWT54/mfz8Be8sJlWEw==} + '@pnpm/exe.linux-arm64@12.10.1': + resolution: {integrity: sha512-oBdMp69ScC9UnniG4qZAQVr2fBDSXjm4yk/72vkEVyrlwS23yMxcRQl7Qdo3sgXPAygY6TWnPRKm4rXzjoyW7w==} cpu: [arm64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-ppc64@12.8.1': - resolution: {integrity: sha512-F7XSjKJthwCh/L6abZiMpAfo2Cm61SZIT3e4dfgiIjESndlWaXCnfLKngSgZ/SEMsdmHT6dud3+kWIB3tw0/xQ==} + '@pnpm/exe.linux-ppc64@12.10.1': + resolution: {integrity: sha512-Yyb3wu09h3c7mLme270uHFiVaAIUHC411Ru9LIU2BKUIstrGlXa9OqqVWoXaRgYRdFdOFknkwG7GNn6ygwLbnw==} cpu: [ppc64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-riscv64@12.8.1': - resolution: {integrity: sha512-z1ecpIK/ZY08Unk69KWWE9867oaKUytGUjrHnBoGFAAhsK+q+0cfvBH+f5fWobJ7FX97leMlLO+gkJolddM45Q==} + '@pnpm/exe.linux-riscv64@12.10.1': + resolution: {integrity: sha512-PdkeUFFkybknnGkWP0H22eMpIiS4OZXL5BcQzF4lh+vmrW3IaC2HOkbANKgot/PKO0Kl77pzA/6PKFxgbgfXIQ==} cpu: [riscv64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-s390x@12.8.1': - resolution: {integrity: sha512-KU6tnrBfu4uKXTq6N5qJwSm8FSrs9Wc8b5AUEsHK9bRXwNdsZ1/lRxG1++X29SKRW9OSNuDSjxASv5mAvGo1gA==} + '@pnpm/exe.linux-s390x@12.10.1': + resolution: {integrity: sha512-1okKuHKJwJPAbofDxfhZWAUxEWtee4ZSf7Pah8kcvocaJkf2WxFJ5KVTiNIvDml5GLidDQsgf7Pcf/WHbCak7Q==} cpu: [s390x] os: [linux] libc: [glibc] - '@pnpm/exe.linux-x64-musl@12.8.1': - resolution: {integrity: sha512-eUE8BWJkDr2tJb/yrk0yVnszlmNqFarVxUlqiZ9BAkct28Nq/5g2H0tvMDmPA7fAQW3STNj+omJPPRVT+4s5sQ==} + '@pnpm/exe.linux-x64-musl@12.10.1': + resolution: {integrity: sha512-e6IqzVNkPa7srFKJKnY23uWJ+qz0LaRWiTUo/sHfFXRRMRzB5uNOr6qWWip/jqhdGwU91n9J7LrEYZ6e0tRczw==} cpu: [x64] os: [linux] libc: [musl] - '@pnpm/exe.linux-x64@12.8.1': - resolution: {integrity: sha512-8bDZ0lZlCdi2rvnFul7EYgcC7zKeWSe76y8JV2oXobaS8p9i9d6PSf6LgLtTM0fI7R9Oh4eLCbveXyNDMmvZ+g==} + '@pnpm/exe.linux-x64@12.10.1': + resolution: {integrity: sha512-ZByV0DRgWzGaDSjT5ddRBASdwz+r/qPMYh7o6RGmPQjtRGNFbSl94xY2DcAM8mqCOZJUUDtAXQ+wpBXcdpKlkg==} cpu: [x64] os: [linux] libc: [glibc] - '@pnpm/exe.win32-arm64@12.8.1': - resolution: {integrity: sha512-MsT0dlrRxnCRCHCaosNbhWpEiAFnFuMEu3KuDJDU41BXgTwiINxU8goloUSUDejWZUqKaUqNC/qUTihl9nFtqg==} + '@pnpm/exe.win32-arm64@12.10.1': + resolution: {integrity: sha512-I7QZHcjioG7orFeCRUFUHByJ1G0zFPnAlaGGyrUvb6MGkv5oeNwNPl7t+Gp+7zHfnMcgLGJ1a+Wfim0IDw3lOw==} cpu: [arm64] os: [win32] - '@pnpm/exe.win32-x64@12.8.1': - resolution: {integrity: sha512-SWtPe0PsbTTk//gJND10tMdOfCYjrkq5+qV49hzVhY7xz2iJ339Rc+xwASlcvbwTfrvH39YNqpKYibD+CRGLwA==} + '@pnpm/exe.win32-x64@12.10.1': + resolution: {integrity: sha512-4WJFdp58EKlCj0zLobrXU0vpszSZIr4X/3y/uNbAQqGW0zE+VdruZB0gFc3L2kzsUzVwTYbaCn+XEhnCYSAlTg==} cpu: [x64] os: [win32] - pnpm@12.8.1: - resolution: {integrity: sha512-9kupB1B/XOr+BsjTjmBS0BeURFgOwSed3Vv8EctIqoomRLZlmOB+dh2oSHKp/FfV+QK4f6SdAkGY1VhhKqu+RQ==} + pnpm@12.10.1: + resolution: {integrity: sha512-ukCjfrGjcNYP6oxM8dNkwTvMzvUY6YrSvO6VT1OdONo3RY5YJho/pV4GUjRQ6g//+fSXsTW+QfLBXBZCusrObA==} engines: {node: '>=18.*'} hasBin: true snapshots: - '@pnpm/exe.android-arm64@12.8.1': + '@pnpm/exe.android-arm64@12.10.1': optional: true - '@pnpm/exe.android-x64@12.8.1': + '@pnpm/exe.android-x64@12.10.1': optional: true - '@pnpm/exe.darwin-arm64@12.8.1': + '@pnpm/exe.darwin-arm64@12.10.1': optional: true - '@pnpm/exe.darwin-x64@12.8.1': + '@pnpm/exe.darwin-x64@12.10.1': optional: true - '@pnpm/exe.freebsd-x64@12.8.1': + '@pnpm/exe.freebsd-x64@12.10.1': optional: true - '@pnpm/exe.linux-arm64-musl@12.8.1': + '@pnpm/exe.linux-arm64-musl@12.10.1': optional: true - '@pnpm/exe.linux-arm64@12.8.1': + '@pnpm/exe.linux-arm64@12.10.1': optional: true - '@pnpm/exe.linux-ppc64@12.8.1': + '@pnpm/exe.linux-ppc64@12.10.1': optional: true - '@pnpm/exe.linux-riscv64@12.8.1': + '@pnpm/exe.linux-riscv64@12.10.1': optional: true - '@pnpm/exe.linux-s390x@12.8.1': + '@pnpm/exe.linux-s390x@12.10.1': optional: true - '@pnpm/exe.linux-x64-musl@12.8.1': + '@pnpm/exe.linux-x64-musl@12.10.1': optional: true - '@pnpm/exe.linux-x64@12.8.1': + '@pnpm/exe.linux-x64@12.10.1': optional: true - '@pnpm/exe.win32-arm64@12.8.1': + '@pnpm/exe.win32-arm64@12.10.1': optional: true - '@pnpm/exe.win32-x64@12.8.1': + '@pnpm/exe.win32-x64@12.10.1': optional: true - pnpm@12.8.1: + pnpm@12.10.1: optionalDependencies: - '@pnpm/exe.android-arm64': 12.8.1 - '@pnpm/exe.android-x64': 12.8.1 - '@pnpm/exe.darwin-arm64': 12.8.1 - '@pnpm/exe.darwin-x64': 12.8.1 - '@pnpm/exe.freebsd-x64': 12.8.1 - '@pnpm/exe.linux-arm64': 12.8.1 - '@pnpm/exe.linux-arm64-musl': 12.8.1 - '@pnpm/exe.linux-ppc64': 12.8.1 - '@pnpm/exe.linux-riscv64': 12.8.1 - '@pnpm/exe.linux-s390x': 12.8.1 - '@pnpm/exe.linux-x64': 12.8.1 - '@pnpm/exe.linux-x64-musl': 12.8.1 - '@pnpm/exe.win32-arm64': 12.8.1 - '@pnpm/exe.win32-x64': 12.8.1 + '@pnpm/exe.android-arm64': 12.10.1 + '@pnpm/exe.android-x64': 12.10.1 + '@pnpm/exe.darwin-arm64': 12.10.1 + '@pnpm/exe.darwin-x64': 12.10.1 + '@pnpm/exe.freebsd-x64': 12.10.1 + '@pnpm/exe.linux-arm64': 12.10.1 + '@pnpm/exe.linux-arm64-musl': 12.10.1 + '@pnpm/exe.linux-ppc64': 12.10.1 + '@pnpm/exe.linux-riscv64': 12.10.1 + '@pnpm/exe.linux-s390x': 12.10.1 + '@pnpm/exe.linux-x64': 12.10.1 + '@pnpm/exe.linux-x64-musl': 12.10.1 + '@pnpm/exe.win32-arm64': 12.10.1 + '@pnpm/exe.win32-x64': 12.10.1 --- lockfileVersion: '9.0' @@ -211,8 +211,8 @@ packages: resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.29.8': - resolution: {integrity: sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==} + '@babel/traverse@7.29.10': + resolution: {integrity: sha512-B3lYAs2nkKskbgQ1nfy8Ma9ao9Q1rntTAQHrzzyDuj+TSO+X3le6PfWwqDvodsb+OumE10eMFfuMCTQSQ5iuIQ==} engines: {node: '>=6.9.0'} '@babel/types@7.29.8': @@ -340,7 +340,7 @@ snapshots: '@babel/parser': 7.29.9 '@babel/types': 7.29.8 - '@babel/traverse@7.29.8': + '@babel/traverse@7.29.10': dependencies: '@babel/code-frame': 7.29.7 '@babel/generator': 7.29.8 @@ -377,7 +377,7 @@ snapshots: dependencies: '@babel/generator': 7.29.8 '@babel/parser': 7.29.9 - '@babel/traverse': 7.29.8 + '@babel/traverse': 7.29.10 '@babel/types': 7.29.8 javascript-natural-sort: 0.7.1 lodash-es: 4.18.1 -- 2.54.0 From 6fa08808dd8413e930d16af135d0af26cb5d91a3 Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 8 Oct 2026 18:03:46 +0200 Subject: [PATCH 053/148] update dev-16 --- CHANGELOG_LATEST.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 78089d484..9a09f3428 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -60,4 +60,4 @@ This release is based on the latest Espressif/Arduino core version 3. It brings - TLS buffers (~17KB per HTTPS request) are taken from PSRAM on boards that have it, instead of fragmenting the internal heap - failed versions.json fetches back off from 5 up to 160 minutes instead of retrying every 5 minutes, as each attempt blocks the main loop for as long as the DNS, connect and read timeouts allow - optimized the LED library to support WS2812B V5 and the newer V6 RGB LEDs - +- hold Tx while a K30RF/KM200 gateway is syncing [#3094](https://github.com/emsesp/EMS-ESP32/issues/3094) -- 2.54.0 From 3f038e5ba0628516e03c7c57aa0ad9bb4909a006 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 6 Oct 2026 21:42:51 +0200 Subject: [PATCH 054/148] Ack polls during gateway Tx hold (#3094) --- src/core/emsesp.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/emsesp.cpp b/src/core/emsesp.cpp index 5ca642a76..977b3c2b9 100644 --- a/src/core/emsesp.cpp +++ b/src/core/emsesp.cpp @@ -1703,6 +1703,8 @@ void EMSESP::incoming_telegram(uint8_t * data, const uint8_t length) { // check for poll to us, if so send top message from Tx queue immediately and quit #ifdef EMSESP_GATEWAY_TX_HOLD if (poll_id == EMSbus::ems_bus_id() && gateway_tx_hold()) { + // still ack the poll, otherwise the master drops us from 0x07 and the gateway sees the device list change + txservice_.send_poll(); return; } #endif -- 2.54.0 From 105ef8cf402197dd87454e316f43881f9ecdaeea Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 8 Oct 2026 18:03:46 +0200 Subject: [PATCH 055/148] update dev-16 --- CHANGELOG_LATEST.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 132ca0314..1c64d5598 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -65,4 +65,4 @@ This release is based on the latest Espressif/Arduino core version 3. It brings - TLS buffers (~17KB per HTTPS request) are taken from PSRAM on boards that have it, instead of fragmenting the internal heap - failed versions.json fetches back off from 5 up to 160 minutes instead of retrying every 5 minutes, as each attempt blocks the main loop for as long as the DNS, connect and read timeouts allow - optimized the LED library to support WS2812B V5 and the newer V6 RGB LEDs - +- hold Tx while a K30RF/KM200 gateway is syncing [#3094](https://github.com/emsesp/EMS-ESP32/issues/3094) -- 2.54.0 From 30c55c4f0ee61602d0316b964aac7fa646257106 Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 8 Oct 2026 18:24:51 +0200 Subject: [PATCH 056/148] update --- interface/pnpm-lock.yaml | 142 +++++++++++++++++++-------------------- project-words.txt | 3 +- 2 files changed, 73 insertions(+), 72 deletions(-) diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index 363cf360f..91d2b5913 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -247,7 +247,7 @@ importers: version: 3.9.9 rollup-plugin-visualizer: specifier: ^7.1.1 - version: 7.1.1(rolldown@1.2.12) + version: 7.1.1(rolldown@1.2.13) terser: specifier: ^5.51.2 version: 5.51.2 @@ -627,8 +627,8 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@oxc-project/types@0.152.0': - resolution: {integrity: sha512-oM/5rLBm2tPkg0iBgkH/FOeR3PCDpY19GTgAZjMFM8h9WI9VW7cLgzp6nwtarYKmovavIQZ+Fe/RKX/8C8O/Rw==} + '@oxc-project/types@0.153.0': + resolution: {integrity: sha512-jSNrRIyvPVLL5E1z/tS5zLAprosGz/FuI1PWwEOz59j3E4TTTzSpqKb/RDGqJhhW0QHYISGXxq582wGx6T11Tw==} '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} @@ -661,98 +661,98 @@ packages: '@remix-run/route-pattern@0.22.1': resolution: {integrity: sha512-czdGJWh09Lapvcqt7Vb09KlrU2PhRJ8xQaI+AItTuD9aDJ5MAgxnS38lnys6Ll+6RJEqPiaUqTwIQhVLwFvv+w==} - '@rolldown/binding-android-arm-eabi@1.2.12': - resolution: {integrity: sha512-dB/a1214qKfHMXCpgqR4OZT+jS4kTyEXbQGJPqzobt5EwH5rX080pxE37alt3RzvR1bf1Yz/yGqRfrYAxuPw0A==} + '@rolldown/binding-android-arm-eabi@1.2.13': + resolution: {integrity: sha512-Vu/NICrgdRvUOeaJZIyB2FP63s6fO/4ud5l8dXmxDx9yDyn+mN0y+gsvsVviSli+T361Aqo0h46EuMoobrwawA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@rolldown/binding-android-arm64@1.2.12': - resolution: {integrity: sha512-7KHFgQ5VJxIHcLlrwrc3Xbds7oTNQT7Pgi9gQCJKrd2VGab/UksIOYp6VD8MzCstGxOKMgNamPwUCfxPdP1OHg==} + '@rolldown/binding-android-arm64@1.2.13': + resolution: {integrity: sha512-6LEoIrGy5vvCd2boNnv2soPSUZj/PRvhp8R/t9KlX+mIZxThIE/ZqxrGXxmuNX0FuvQFvLdZr7S4HrYpYBVhEQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.2.12': - resolution: {integrity: sha512-3YIhqHD96nA5SaYNRBR16HnGv4oavZvXfD/ayHM+oYZ0WD/8lBAtf6zQua4kEyAvpqrluKXl0lnOBoiNby7x9w==} + '@rolldown/binding-darwin-arm64@1.2.13': + resolution: {integrity: sha512-CaJSRzlQ6Q+zkDMVA9OkVxBjVoPRCDEE3v0FSJ9kIQBgRjFApA3Si4ijhbNVUji7ZJt+PfO0e46qy4nPInHUPA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.2.12': - resolution: {integrity: sha512-UuuJ35MFw4gmFOrE9pEqIV+K3syIKveph+Qc1/ljHZVdoDW4pz/JHR/eMVom+TZGl/5OOvGJOWaOCVt3ZfqhxA==} + '@rolldown/binding-darwin-x64@1.2.13': + resolution: {integrity: sha512-e4r340I5hxSzJkD3YJBxgzq/rJ3wwxwdLLb2FPt1Zpyem20nrQPT11DDEEkazwxaHumH8wpglsp/Ozgj/wT6mw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.2.12': - resolution: {integrity: sha512-uMvssit0a4W+/7D8CbHUvG719mH3R2jwXAlh/XcPvuHTE0g++LymF88DCGNX0HM2rBOn0xrzgXktIB6fLSJBTQ==} + '@rolldown/binding-freebsd-x64@1.2.13': + resolution: {integrity: sha512-hoBWDZ4/K/mJKVMbsgUd1jfpA2DiOrJ54mpegObU9TBHBBrtX4FLIXJJQRDPZ/2Dn91GvPob+Z2hwKJzf4E5SQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.2.12': - resolution: {integrity: sha512-XcFu0R0xWnwzSf4IQgFH1rJIckPN1pLy2R+4r9IDB7Yfu/ys9cVqfa4pBrMHj7a3gl8mIR4nRNPg0e5IvEVs6g==} + '@rolldown/binding-linux-arm-gnueabihf@1.2.13': + resolution: {integrity: sha512-oF9fZu3vTWnTiVAkDFxU9PJLt1nh20K9RRpuHsR7ZnE2L7XookBbDBVLojCVSLGbvtSlxeUNnjAj6DbNsKyzbg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.2.12': - resolution: {integrity: sha512-260UrKgn8tz39ak+SMDOirKzr7V04M9dWPw5llW00SwBivCZoWcRBKV1d8cXnRkUmSZA3BdiUmBHWk7734Ulpw==} + '@rolldown/binding-linux-arm64-gnu@1.2.13': + resolution: {integrity: sha512-DTpb/+jMiqWMPgphn4ksW1zW+XLJ6dJJ9FMvnIk9I291LhCctMPhMYJrP5t9p6C9qa3KXadDdUEZHBaPh3kNxQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.2.12': - resolution: {integrity: sha512-5YK1I9SqDkbPgc1IA8BgDl34suqUS2q0KWnBrirm0E51YjOs6eo6dV6jbQfNE/argHRSvd0QUGgtpIoYx+WWpw==} + '@rolldown/binding-linux-arm64-musl@1.2.13': + resolution: {integrity: sha512-xU+Kvv9N2A3SY35zFh1FWWNjxbadE/BKeqnkXe7vScU4GZsw757BlVmDLITZEq8DPpk6m7uoDYkK7P+x/uU5Ow==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.2.12': - resolution: {integrity: sha512-Rkcrmp7eFRg74yL5fXEU91JEWbdEPLevWwGtXpmhbjlD1StScbWTmO94Bhly+Mo+ketKYkdmM1vNUKeWSlx8cQ==} + '@rolldown/binding-linux-ppc64-gnu@1.2.13': + resolution: {integrity: sha512-XMk/hnhh25oQ756Lclb1Q11h4ll0xC0Esa5w4Vzp+mAE2S3AGJgeM0SonrIgY8fHhjarb6hcoTuwoFG0VVP2ig==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.2.12': - resolution: {integrity: sha512-qvK4DuAsQc2BSjlx+Xr+IzOIvvxbGZqxFwdWfG6F518Erj0GGISyQbJ6pIappnOxlNPzNHvo/L0BwB30GZ+zVw==} + '@rolldown/binding-linux-s390x-gnu@1.2.13': + resolution: {integrity: sha512-U1BoTHYmlywE2n3HUWjzZ+8EQsKr+OwpxYuDWaubx42tUL8QSL7nOqRz/NVHanibbFP3M1Rxuprz/wNcbMKjqw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.2.12': - resolution: {integrity: sha512-Q9uLBO53Xd4QIq1WOycVQyPP1O4HhraEV2qqb3uTrnVw6QZih9duY4vNXOivL1xoUS1/z+W8eF4NMfl2a8Sdjw==} + '@rolldown/binding-linux-x64-gnu@1.2.13': + resolution: {integrity: sha512-J4cm80Pc6wEwV5AZ42o62sIQgDk+Y7R2s646jIwuvO+4V46QB58N4vVuMPWCBaNgursXLpmUWJV//WQAkPvHBQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.2.12': - resolution: {integrity: sha512-3IBxWFMjbOZskDPKv8Lf9BCnahlKuHthWkYnyIxOH/QcJrFcS4EmcenthApkwr/5+nEqZlLzeYbxeMaX7A5u4g==} + '@rolldown/binding-linux-x64-musl@1.2.13': + resolution: {integrity: sha512-W0euZS40U4V6JkmEnVCIX9mcsL6cbXQ4X8c2w+MMOIjFg68TXUW+u3RT+2e1t1pv9mg/EP3pDtK3POXdQ7Rxyw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.2.12': - resolution: {integrity: sha512-xtX61xg4LKPkPWilZU1ynKClz5Gj4bf74LML4r3eVLWumKnGjoEr1OSHQhMdbBDoYTi+yjrujvpZe2pUnqCrrA==} + '@rolldown/binding-openharmony-arm64@1.2.13': + resolution: {integrity: sha512-do/AF/4n9MRshia3a5aXoy8xM2c6mgfT6D7H/dY6my5z+hfCIR4ab7mk4IRj++nsEQpKy39kd0DQnDq+r692tw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-win32-arm64-msvc@1.2.12': - resolution: {integrity: sha512-At7fPB6PCaIjzgIhEZFxuT+BBFqiQibJDT4d3PhiR3f4E7bbMZF4aKblbFfEM3sETRDd1YiQx/+U/g/B/ou5Ew==} + '@rolldown/binding-win32-arm64-msvc@1.2.13': + resolution: {integrity: sha512-6FtUf2cJZobutJdxnGYX8z0vtbgqU0b2v8vfBhkXb9wp2MppMFtkunE+IaOntyi01rkIQoPW2GHABtfzsC0BRQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.2.12': - resolution: {integrity: sha512-WIw2haVKwjuYdXkHaoC0mF8Le71TuCBxjrdKqLbJGctbBABj+ClfmNvtbOnzpq3RokNo5+V1qhtSzJyXorsklQ==} + '@rolldown/binding-win32-x64-msvc@1.2.13': + resolution: {integrity: sha512-UKhFaZTeTcbKrb3iU82m17jVcPEAoqDkCN5MBqgPyZSwp/cQmib21crTS0DdH7T1B7wZRWEI89YQAOJMet5yhg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -2682,8 +2682,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rolldown@1.2.12: - resolution: {integrity: sha512-8wafseiaG80xmXSfqidUNqZcylTlhmPZZt+za2m+js2sFZ8dTNlhIOV2WcbIPx2hgwPBJpEUGFAMZ9bgBBLTSQ==} + rolldown@1.2.13: + resolution: {integrity: sha512-/5apOkwWxtACcQtZ5WlrAsKS4JwXVThQPJZ3RqIruRY9UG9M8e0VlXN068xum/JRKA4aIUoJ13ghe/kGCvidiQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -3587,7 +3587,7 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.3 - '@oxc-project/types@0.152.0': {} + '@oxc-project/types@0.153.0': {} '@popperjs/core@2.11.8': {} @@ -3634,49 +3634,49 @@ snapshots: '@remix-run/route-pattern@0.22.1': {} - '@rolldown/binding-android-arm-eabi@1.2.12': + '@rolldown/binding-android-arm-eabi@1.2.13': optional: true - '@rolldown/binding-android-arm64@1.2.12': + '@rolldown/binding-android-arm64@1.2.13': optional: true - '@rolldown/binding-darwin-arm64@1.2.12': + '@rolldown/binding-darwin-arm64@1.2.13': optional: true - '@rolldown/binding-darwin-x64@1.2.12': + '@rolldown/binding-darwin-x64@1.2.13': optional: true - '@rolldown/binding-freebsd-x64@1.2.12': + '@rolldown/binding-freebsd-x64@1.2.13': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.2.12': + '@rolldown/binding-linux-arm-gnueabihf@1.2.13': optional: true - '@rolldown/binding-linux-arm64-gnu@1.2.12': + '@rolldown/binding-linux-arm64-gnu@1.2.13': optional: true - '@rolldown/binding-linux-arm64-musl@1.2.12': + '@rolldown/binding-linux-arm64-musl@1.2.13': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.2.12': + '@rolldown/binding-linux-ppc64-gnu@1.2.13': optional: true - '@rolldown/binding-linux-s390x-gnu@1.2.12': + '@rolldown/binding-linux-s390x-gnu@1.2.13': optional: true - '@rolldown/binding-linux-x64-gnu@1.2.12': + '@rolldown/binding-linux-x64-gnu@1.2.13': optional: true - '@rolldown/binding-linux-x64-musl@1.2.12': + '@rolldown/binding-linux-x64-musl@1.2.13': optional: true - '@rolldown/binding-openharmony-arm64@1.2.12': + '@rolldown/binding-openharmony-arm64@1.2.13': optional: true - '@rolldown/binding-win32-arm64-msvc@1.2.12': + '@rolldown/binding-win32-arm64-msvc@1.2.13': optional: true - '@rolldown/binding-win32-x64-msvc@1.2.12': + '@rolldown/binding-win32-x64-msvc@1.2.13': optional: true '@rolldown/pluginutils@1.0.1': {} @@ -5639,35 +5639,35 @@ snapshots: dependencies: glob: 7.2.3 - rolldown@1.2.12: + rolldown@1.2.13: dependencies: - '@oxc-project/types': 0.152.0 + '@oxc-project/types': 0.153.0 '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm-eabi': 1.2.12 - '@rolldown/binding-android-arm64': 1.2.12 - '@rolldown/binding-darwin-arm64': 1.2.12 - '@rolldown/binding-darwin-x64': 1.2.12 - '@rolldown/binding-freebsd-x64': 1.2.12 - '@rolldown/binding-linux-arm-gnueabihf': 1.2.12 - '@rolldown/binding-linux-arm64-gnu': 1.2.12 - '@rolldown/binding-linux-arm64-musl': 1.2.12 - '@rolldown/binding-linux-ppc64-gnu': 1.2.12 - '@rolldown/binding-linux-s390x-gnu': 1.2.12 - '@rolldown/binding-linux-x64-gnu': 1.2.12 - '@rolldown/binding-linux-x64-musl': 1.2.12 - '@rolldown/binding-openharmony-arm64': 1.2.12 - '@rolldown/binding-win32-arm64-msvc': 1.2.12 - '@rolldown/binding-win32-x64-msvc': 1.2.12 + '@rolldown/binding-android-arm-eabi': 1.2.13 + '@rolldown/binding-android-arm64': 1.2.13 + '@rolldown/binding-darwin-arm64': 1.2.13 + '@rolldown/binding-darwin-x64': 1.2.13 + '@rolldown/binding-freebsd-x64': 1.2.13 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.13 + '@rolldown/binding-linux-arm64-gnu': 1.2.13 + '@rolldown/binding-linux-arm64-musl': 1.2.13 + '@rolldown/binding-linux-ppc64-gnu': 1.2.13 + '@rolldown/binding-linux-s390x-gnu': 1.2.13 + '@rolldown/binding-linux-x64-gnu': 1.2.13 + '@rolldown/binding-linux-x64-musl': 1.2.13 + '@rolldown/binding-openharmony-arm64': 1.2.13 + '@rolldown/binding-win32-arm64-msvc': 1.2.13 + '@rolldown/binding-win32-x64-msvc': 1.2.13 - rollup-plugin-visualizer@7.1.1(rolldown@1.2.12): + rollup-plugin-visualizer@7.1.1(rolldown@1.2.13): dependencies: open: 11.0.4 picomatch: 4.0.7 source-map: 0.8.0 yargs: 18.2.0 optionalDependencies: - rolldown: 1.2.12 + rolldown: 1.2.13 run-applescript@7.1.0: {} @@ -6026,7 +6026,7 @@ snapshots: lightningcss: 1.33.0 picomatch: 4.0.7 postcss: 8.5.29 - rolldown: 1.2.12 + rolldown: 1.2.13 tinyglobby: 0.2.17 optionalDependencies: '@types/node': 26.6.4 diff --git a/project-words.txt b/project-words.txt index 562011343..12f5c75f8 100644 --- a/project-words.txt +++ b/project-words.txt @@ -1356,4 +1356,5 @@ firmwares recognises POWERON crashtest -otadata \ No newline at end of file +otadata +merase \ No newline at end of file -- 2.54.0 From dfe009f5c304e52ded5c0355ef8afb55d5ea038c Mon Sep 17 00:00:00 2001 From: Proddy Date: Thu, 8 Oct 2026 23:28:40 +0200 Subject: [PATCH 057/148] Add s3_16M_P_custom env to trial a trimmed framework via custom_sdkconfig --- platformio.ini | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/platformio.ini b/platformio.ini index 9fa302349..73646abfb 100644 --- a/platformio.ini +++ b/platformio.ini @@ -136,6 +136,20 @@ board = s_16M_P extends = espressif32_base_16M board = s3_16M_P +[env:s3_16M_P_custom] +; same as s3_16M_P, but the Arduino/IDF libs are rebuilt with HybridCompile using the +; custom_sdkconfig below, to compare flash size and free heap against stock s3_16M_P. +; first build takes 10-20 min (IDF compiled from source), later builds are cached. +; building s3_16M_P and this env alternately triggers a rebuild each time. +extends = env:s3_16M_P +custom_sdkconfig = + '# CONFIG_BT_ENABLED is not set' + '# CONFIG_LWIP_PPP_SUPPORT is not set' + '# CONFIG_LWIP_IP_FORWARD is not set' + '# CONFIG_LWIP_IPV4_NAPT is not set' + '# CONFIG_ULP_COPROC_ENABLED is not set' + CONFIG_LWIP_LOCAL_HOSTNAME="ems-esp" + [env:s3_32M_P] ; 16MB ESP32-S3 - with PSRAM and 32MB flash extends = espressif32_base_32M -- 2.54.0 From 07514260f4cbdeb8f46277ce0c807e4d5a8f6633 Mon Sep 17 00:00:00 2001 From: Proddy Date: Thu, 8 Oct 2026 23:32:23 +0200 Subject: [PATCH 058/148] Move custom_sdkconfig trial env from s3_16M_P to s_16M_P --- platformio.ini | 329 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 329 insertions(+) diff --git a/platformio.ini b/platformio.ini index 73646abfb..02997c5b5 100644 --- a/platformio.ini +++ b/platformio.ini @@ -73,6 +73,335 @@ board_upload.flash_size = 16MB board_build.app_partition_name = app0 platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.05.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.8 based on IDF 5.5.4.260407 ; platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 +; PlatformIO Project Configuration File for EMS-ESP +; +; override any settings with your own local ones in pio_local.ini (see example pio_local.ini_example) +; The firmware is renamed following this convention, and placed in the build/firmware folder: +; EMS-ESP32---[+ if PSRAM onboard].bin +; For example: EMS-ESP-3_7_0-dev_31-esp32-16MB+.bin +; +; boards can be found in https://github.com/pioarduino/platform-espressif32/tree/main/boards + +[platformio] +; build all supported targets. Use pio_local.ini to override and build specific targets. +default_envs = s_4M, s_16M, s_16M_P, s3_16M_P + +description = EMS-ESP Firmware for the ESP32 +src_dir = src +lib_dir = lib +boards_dir = boards + +extra_configs = + factory_settings.ini + pio_local.ini + +[common] +core_build_flags = -std=gnu++20 -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 = + +build_flags = + ${common.core_build_flags} + ${factory_settings.build_flags} + ${common.my_build_flags} + -I./src/core + -D ARDUINO_ARCH_ESP32 + -D ONEWIRE_CRC16=0 + -D CONFIG_UART_ISR_IN_IRAM + ; AsyncTCP + -D CONFIG_ASYNC_TCP_MAX_ACK_TIME=5000 ; default + -D CONFIG_ASYNC_TCP_PRIORITY=10 ; default + -D CONFIG_ASYNC_TCP_QUEUE_SIZE=64 ; default + -D CONFIG_ASYNC_TCP_RUNNING_CORE=1 ; force async_tcp task to be on same core as Arduino app (default is any core) + -D CONFIG_ASYNC_TCP_STACK_SIZE=8192 ; default is 16KB/8192*2 + ; ESPAsyncWebServer + ; -D WS_MAX_QUEUED_MESSAGES=0 ; not used, default 8 + ; -D SSE_MAX_QUEUED_MESSAGES=1 ; for log messages, default 32 + ; ESP_SSLClient + -D ENABLE_PSRAM ; take the ~17KB of TLS buffers from PSRAM instead of the internal heap. The library + ; needs BOARD_HAS_PSRAM too, so boards without PSRAM keep using the internal heap + -D EMSESP_MQTT_RUNNING_CORE=1 ; default 1 + ; -D EMSESP_MQTT_STACKSIZE=5120 ; default + -D EMSESP_UART_RUNNING_CORE=1 ; default any core + ; -D EMSESP_UART_STACKSIZE=2560 ; default + ; -D EMSESP_GATEWAY_TX_HOLD ; hold Tx while a K30RF/KM200 gateway is syncing, see issue #3094 + ; -D EMSESP_TX_PRE_DELAY=1000 ; wait this many us before each Tx so we don't overlap the master's break, see issue #3094 + +unbuild_flags = + ${common.core_unbuild_flags} + +; 4MB Flash variants +[espressif32_base_4M] +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/tasmota/platform-espressif32/releases/download/2026.05.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.8 based on IDF 5.5.4.260407 +; platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 + +; 16MB Flash variants +[espressif32_base_16M] +framework = arduino +board_build.partitions = partitions/esp32_partition_16M.csv +board_upload.flash_size = 16MB +board_build.app_partition_name = app0 +platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.05.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.8 based on IDF 5.5.4.260407 +; platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 + +; 32MB Flash variants +[espressif32_base_32M] +framework = arduino +board_build.partitions = partitions/esp32_partition_32M.csv +board_upload.flash_size = 32MB +board_build.app_partition_name = app0 +platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.05.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.8 based on IDF 5.5.4.260407 +; platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 + +[env] +build_flags = + ${common.build_flags} +build_unflags = + ${common.unbuild_flags} +extra_scripts = + post:scripts/rename_fw.py ; renames the firmware .bin file +monitor_speed = 115200 +monitor_filters = direct, esp32_exception_decoder +build_type = release +board_build.filesystem = littlefs +board_build.littlefs_version = 2.0 +lib_deps = + bblanchon/ArduinoJson @ 7.4.3 + ESP32Async/AsyncTCP @ 3.5.0 + ESP32Async/ESPAsyncWebServer @ 3.12.1 + https://github.com/mobizt/ReadyMail.git @ 0.4.2 + https://github.com/mobizt/ESP_SSLClient.git @ 3.1.3 + ; https://github.com/emsesp/EMS-ESP-Modules.git @ 1.0.8 + +; builds the web interface only, not the firmware +[env:build-webUI] +platform = native +targets = build +extra_scripts = pre:scripts/build_interface.py +; Exclude all source files so the C code doesn't build +build_src_filter = -<*> + +; +; Builds for different board types +; If you're building for a single target environment, we recommend creating a pio_local.ini (see example file) +; + +[env:s_4M] +; 4MB ESP32 - no SSL, no PSRAM - like a BBQKees older S32 and E32 models +extends = espressif32_base_4M +board = s_4M + +[env:s_16M] +; 16MB ESP32 - no PSRAM - like a BBQKees later S32 V2 models +extends = espressif32_base_16M +board = s_16M + +[env:s_16M_P] +; 16MB ESP32 - with PSRAM - like a BBQKees E32V2 +extends = espressif32_base_16M +board = s_16M_P + +[env:s_16M_P_custom] +; same as s_16M_P, but the Arduino/IDF libs are rebuilt with HybridCompile using the +; custom_sdkconfig below, to compare flash size and free heap against stock s_16M_P. +; first build takes 10-20 min (IDF compiled from source), later builds are cached. +; building s_16M_P and this env alternately triggers a rebuild each time. +extends = env:s_16M_P +custom_sdkconfig = + '# CONFIG_BT_ENABLED is not set' + '# CONFIG_LWIP_PPP_SUPPORT is not set' + '# CONFIG_LWIP_IP_FORWARD is not set' + '# CONFIG_LWIP_IPV4_NAPT is not set' + '# CONFIG_ULP_COPROC_ENABLED is not set' + CONFIG_LWIP_LOCAL_HOSTNAME="ems-esp" + +[env:s3_16M_P] +; 16MB ESP32-S3 - with PSRAM - like a BBQKees S3 +extends = espressif32_base_16M +board = s3_16M_P + +[env:s3_32M_P] +; 16MB ESP32-S3 - with PSRAM and 32MB flash +extends = espressif32_base_32M +board = s3_32M_P + +[env:s2_4M_P] +; based on lolin_s2_mini 4MB with 2MB PSRAM +extends = espressif32_base_4M +board = s2_4M_P + +[env:c3_mini_4M] +; based on lolin_c3_mini 4MB, no PSRAM +extends = espressif32_base_4M +board = c3_mini_4M + +; lolin C3 mini v1 needs special wifi initialization +; https://www.wemos.cc/en/latest/c3/c3_mini_1_0_0.html#about-wifi +[env:c3_miniv1_4M] +extends = espressif32_base_4M +board = c3_mini_4M +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_xiao_4M] +extends = espressif32_base_4M +board_build.app_partition_name = app0 +board = seeed_xiao_esp32c6 +build_flags = + ${common.build_flags} + -DEMSESP_EN_ONLY + +; foundation for building and testing natively, standalone without an ESP32 +; use the `standalone` environment instead of `native` for testing +[env:native] +platform = native +build_type = debug +build_flags = +build_src_flags = + -DEMSESP_STANDALONE -DEMSESP_TEST + -DARDUINOJSON_ENABLE_ARDUINO_STRING=1 + -std=gnu++20 -Og -ggdb + -Wall -Wextra + -Wno-unused-parameter -Wno-sign-compare -Wno-missing-braces + -Wno-vla-cxx-extension -Wno-tautological-constant-out-of-range-compare + -I./src/core + -I./lib_standalone + -I./lib/uuid-common/src + -I./lib/uuid-console/src + -I./lib/uuid-log/src + -I./lib/PButton + -I./lib/espMqttClient/src + -I./lib/espMqttClient/src/Transport +build_src_filter = + +<../src> + +<../lib> + +<../lib_standalone> + -<../src/ESP32React> + -<../lib/uuid-telnet> + -<../lib/uuid-syslog> + -<../lib/eModbus> + -<../lib/OneWire> + -<../src/core/ModuleLibrary.cpp> +lib_ldf_mode = off +lib_deps = + +; unit tests +; The test code is in ./test/test_api.cpp and the test_api.h file is generated by the native-test-create environment. +; to run use `platformio run -e native-test -t exec`. All tests should PASS. +; tip: use https://jsondiff.com/ to compare the expected and actual responses. +; to update the test output run `python3 scripts/generate_test_api.py` +[env:native-test] +platform = native +test_build_src = true +build_flags = +build_type = debug +build_src_flags = + -DEMSESP_STANDALONE -DEMSESP_TEST + -DEMSESP_UNITY + -DARDUINOJSON_ENABLE_ARDUINO_STRING=1 + -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32\" + -std=gnu++20 -Og -ggdb + -Wall -Wextra + -Wno-unused-parameter -Wno-sign-compare -Wno-missing-braces + -Wno-vla-cxx-extension -Wno-tautological-constant-out-of-range-compare + -I./src/core + -I./lib_standalone + -I./lib/uuid-common/src + -I./lib/uuid-console/src + -I./lib/uuid-log/src + -I./lib/PButton + -I./lib/espMqttClient/src + -I./lib/espMqttClient/src/Transport + -I./test/api + -I./test +build_src_filter = + +<../src> + +<../test> + +<../lib> + +<../lib_standalone> + -<../src/ESP32React> + -<../lib/uuid-telnet> + -<../lib/uuid-syslog> + -<../lib/eModbus> + -<../lib/OneWire> + -<../src/core/ModuleLibrary.cpp> +lib_ldf_mode = off +lib_deps = Unity +test_testing_command = + ${platformio.build_dir}/${this.__env__}/program + +; builds the test cases and creates the test_api.h file +; run with `pio run -e native-test-create -t exec` and capture the output between "START - CUT HERE" and "END - CUT HERE" and paste it into the test_api.h file +[env:native-test-create] +extends = env:native-test +build_flags = + -DEMSESP_UNITY_CREATE +; +; Building and testing locally on OS, which we call "standalone" without an ESP32. +; See https://docs.platformio.org/en/latest/platforms/native.html +; +; It will generate an executable which when run will show the EMS-ESP Console where you can run tests using the `test` command. +; +; See https://docs.platformio.org/en/latest/core/installation/shell-commands.html#piocore-install-shell-commands +; +; to build and run directly on linux: pio run -e standalone -t exec +; +; to build and run on Windows, it needs winsock for the console input so: +; - For the first time, install Msys2 (https://www.msys2.org/) and the GCC compiler with `run pacman -S mingw-w64-ucrt-x86_64-gcc` +; - Then, build with `pio run -e standalone` to create the program.exe file +; - run by calling the executable from the Mysys shell e.g. `C:/msys64/msys2_shell.cmd -defterm -here -no-start -ucrt64 -c /.pio/build/native/program.exe` +; - or use with Windows Terminal https://www.msys2.org/docs/terminals/ +; +[env:standalone] +extends = env:native +build_flags = + -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32\" + +; Modbus +; Creates the file modbus_entity_parameters.hpp +; Creating the modbus registers is a multi-step process. Before it was in a shell script called generate_csv_and_headers.sh +; but now moved to pio so everything is in python and cross-platform. The logic is as follows: +; 1. create a dummy modbus_entity_parameters.hpp file so the first pass compiles +; 2. compile the EMS-ESPcode with the EMSESP_MODBUS flag set +; 3. run the entity_dump test command and generate the dump_entities.csv file +; 4. use the dump_entities.csv file with update_modbus_registers.py script to generate the modbus_entity_parameters.hpp file +; 5. clean up everything and start again with the EMSESP_STANDALONE flag set +; 6. run the entity_dump test command again to create the real dump_entities.csv file +; +; To use, run: +; pio run -e build_modbus -t clean -t build +[env:build_modbus] +extends = env:native +targets = build +extra_scripts = + pre:scripts/build_modbus_entity_parameters_pre.py + post:scripts/build_run_test.py +build_flags = -DEMSESP_MODBUS +custom_test_command = entity_dump +custom_output_file = dump_entities.csv +custom_post_script = scripts/build_modbus_entity_parameters_post.py + +; builds the real dump_entities.csv and dump_telegrams.csv files +; and also the Modbus-Entity-Registers.md file which is used in the emsesp.org documentation +; +; To use, run after build_modbus environment, with: +; pio run -e build_standalone -t clean -t build +[env:build_standalone] +extends = env:native +targets = build +extra_scripts = + post:scripts/build_run_test.py +build_flags = -DEMSESP_STANDALONE +custom_test_command = entity_dump +custom_output_file = dump_entities.csv +custom_post_script = scripts/build_standalone_post.py ; 32MB Flash variants [espressif32_base_32M] -- 2.54.0 From 46f2090b30123c261d51a319564a964538d26b39 Mon Sep 17 00:00:00 2001 From: Proddy Date: Thu, 8 Oct 2026 23:34:11 +0200 Subject: [PATCH 059/148] Fix platformio.ini: remove duplicated content from previous commit --- platformio.ini | 329 ------------------------------------------------- 1 file changed, 329 deletions(-) diff --git a/platformio.ini b/platformio.ini index 02997c5b5..db0340026 100644 --- a/platformio.ini +++ b/platformio.ini @@ -65,81 +65,6 @@ board_build.app_partition_name = app0 platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.05.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.8 based on IDF 5.5.4.260407 ; platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 -; 16MB Flash variants -[espressif32_base_16M] -framework = arduino -board_build.partitions = partitions/esp32_partition_16M.csv -board_upload.flash_size = 16MB -board_build.app_partition_name = app0 -platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.05.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.8 based on IDF 5.5.4.260407 -; platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 -; PlatformIO Project Configuration File for EMS-ESP -; -; override any settings with your own local ones in pio_local.ini (see example pio_local.ini_example) -; The firmware is renamed following this convention, and placed in the build/firmware folder: -; EMS-ESP32---[+ if PSRAM onboard].bin -; For example: EMS-ESP-3_7_0-dev_31-esp32-16MB+.bin -; -; boards can be found in https://github.com/pioarduino/platform-espressif32/tree/main/boards - -[platformio] -; build all supported targets. Use pio_local.ini to override and build specific targets. -default_envs = s_4M, s_16M, s_16M_P, s3_16M_P - -description = EMS-ESP Firmware for the ESP32 -src_dir = src -lib_dir = lib -boards_dir = boards - -extra_configs = - factory_settings.ini - pio_local.ini - -[common] -core_build_flags = -std=gnu++20 -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 = - -build_flags = - ${common.core_build_flags} - ${factory_settings.build_flags} - ${common.my_build_flags} - -I./src/core - -D ARDUINO_ARCH_ESP32 - -D ONEWIRE_CRC16=0 - -D CONFIG_UART_ISR_IN_IRAM - ; AsyncTCP - -D CONFIG_ASYNC_TCP_MAX_ACK_TIME=5000 ; default - -D CONFIG_ASYNC_TCP_PRIORITY=10 ; default - -D CONFIG_ASYNC_TCP_QUEUE_SIZE=64 ; default - -D CONFIG_ASYNC_TCP_RUNNING_CORE=1 ; force async_tcp task to be on same core as Arduino app (default is any core) - -D CONFIG_ASYNC_TCP_STACK_SIZE=8192 ; default is 16KB/8192*2 - ; ESPAsyncWebServer - ; -D WS_MAX_QUEUED_MESSAGES=0 ; not used, default 8 - ; -D SSE_MAX_QUEUED_MESSAGES=1 ; for log messages, default 32 - ; ESP_SSLClient - -D ENABLE_PSRAM ; take the ~17KB of TLS buffers from PSRAM instead of the internal heap. The library - ; needs BOARD_HAS_PSRAM too, so boards without PSRAM keep using the internal heap - -D EMSESP_MQTT_RUNNING_CORE=1 ; default 1 - ; -D EMSESP_MQTT_STACKSIZE=5120 ; default - -D EMSESP_UART_RUNNING_CORE=1 ; default any core - ; -D EMSESP_UART_STACKSIZE=2560 ; default - ; -D EMSESP_GATEWAY_TX_HOLD ; hold Tx while a K30RF/KM200 gateway is syncing, see issue #3094 - ; -D EMSESP_TX_PRE_DELAY=1000 ; wait this many us before each Tx so we don't overlap the master's break, see issue #3094 - -unbuild_flags = - ${common.core_unbuild_flags} - -; 4MB Flash variants -[espressif32_base_4M] -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/tasmota/platform-espressif32/releases/download/2026.05.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.8 based on IDF 5.5.4.260407 -; platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 - ; 16MB Flash variants [espressif32_base_16M] framework = arduino @@ -402,257 +327,3 @@ build_flags = -DEMSESP_STANDALONE custom_test_command = entity_dump custom_output_file = dump_entities.csv custom_post_script = scripts/build_standalone_post.py - -; 32MB Flash variants -[espressif32_base_32M] -framework = arduino -board_build.partitions = partitions/esp32_partition_32M.csv -board_upload.flash_size = 32MB -board_build.app_partition_name = app0 -platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.05.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.8 based on IDF 5.5.4.260407 -; platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 - -[env] -build_flags = - ${common.build_flags} -build_unflags = - ${common.unbuild_flags} -extra_scripts = - post:scripts/rename_fw.py ; renames the firmware .bin file -monitor_speed = 115200 -monitor_filters = direct, esp32_exception_decoder -build_type = release -board_build.filesystem = littlefs -board_build.littlefs_version = 2.0 -lib_deps = - bblanchon/ArduinoJson @ 7.4.3 - ESP32Async/AsyncTCP @ 3.5.0 - ESP32Async/ESPAsyncWebServer @ 3.12.1 - https://github.com/mobizt/ReadyMail.git @ 0.4.2 - https://github.com/mobizt/ESP_SSLClient.git @ 3.1.3 - ; https://github.com/emsesp/EMS-ESP-Modules.git @ 1.0.8 - -; builds the web interface only, not the firmware -[env:build-webUI] -platform = native -targets = build -extra_scripts = pre:scripts/build_interface.py -; Exclude all source files so the C code doesn't build -build_src_filter = -<*> - -; -; Builds for different board types -; If you're building for a single target environment, we recommend creating a pio_local.ini (see example file) -; - -[env:s_4M] -; 4MB ESP32 - no SSL, no PSRAM - like a BBQKees older S32 and E32 models -extends = espressif32_base_4M -board = s_4M - -[env:s_16M] -; 16MB ESP32 - no PSRAM - like a BBQKees later S32 V2 models -extends = espressif32_base_16M -board = s_16M - -[env:s_16M_P] -; 16MB ESP32 - with PSRAM - like a BBQKees E32V2 -extends = espressif32_base_16M -board = s_16M_P - -[env:s3_16M_P] -; 16MB ESP32-S3 - with PSRAM - like a BBQKees S3 -extends = espressif32_base_16M -board = s3_16M_P - -[env:s3_16M_P_custom] -; same as s3_16M_P, but the Arduino/IDF libs are rebuilt with HybridCompile using the -; custom_sdkconfig below, to compare flash size and free heap against stock s3_16M_P. -; first build takes 10-20 min (IDF compiled from source), later builds are cached. -; building s3_16M_P and this env alternately triggers a rebuild each time. -extends = env:s3_16M_P -custom_sdkconfig = - '# CONFIG_BT_ENABLED is not set' - '# CONFIG_LWIP_PPP_SUPPORT is not set' - '# CONFIG_LWIP_IP_FORWARD is not set' - '# CONFIG_LWIP_IPV4_NAPT is not set' - '# CONFIG_ULP_COPROC_ENABLED is not set' - CONFIG_LWIP_LOCAL_HOSTNAME="ems-esp" - -[env:s3_32M_P] -; 16MB ESP32-S3 - with PSRAM and 32MB flash -extends = espressif32_base_32M -board = s3_32M_P - -[env:s2_4M_P] -; based on lolin_s2_mini 4MB with 2MB PSRAM -extends = espressif32_base_4M -board = s2_4M_P - -[env:c3_mini_4M] -; based on lolin_c3_mini 4MB, no PSRAM -extends = espressif32_base_4M -board = c3_mini_4M - -; lolin C3 mini v1 needs special wifi initialization -; https://www.wemos.cc/en/latest/c3/c3_mini_1_0_0.html#about-wifi -[env:c3_miniv1_4M] -extends = espressif32_base_4M -board = c3_mini_4M -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_xiao_4M] -extends = espressif32_base_4M -board_build.app_partition_name = app0 -board = seeed_xiao_esp32c6 -build_flags = - ${common.build_flags} - -DEMSESP_EN_ONLY - -; foundation for building and testing natively, standalone without an ESP32 -; use the `standalone` environment instead of `native` for testing -[env:native] -platform = native -build_type = debug -build_flags = -build_src_flags = - -DEMSESP_STANDALONE -DEMSESP_TEST - -DARDUINOJSON_ENABLE_ARDUINO_STRING=1 - -std=gnu++20 -Og -ggdb - -Wall -Wextra - -Wno-unused-parameter -Wno-sign-compare -Wno-missing-braces - -Wno-vla-cxx-extension -Wno-tautological-constant-out-of-range-compare - -I./src/core - -I./lib_standalone - -I./lib/uuid-common/src - -I./lib/uuid-console/src - -I./lib/uuid-log/src - -I./lib/PButton - -I./lib/espMqttClient/src - -I./lib/espMqttClient/src/Transport -build_src_filter = - +<../src> - +<../lib> - +<../lib_standalone> - -<../src/ESP32React> - -<../lib/uuid-telnet> - -<../lib/uuid-syslog> - -<../lib/eModbus> - -<../lib/OneWire> - -<../src/core/ModuleLibrary.cpp> -lib_ldf_mode = off -lib_deps = - -; unit tests -; The test code is in ./test/test_api.cpp and the test_api.h file is generated by the native-test-create environment. -; to run use `platformio run -e native-test -t exec`. All tests should PASS. -; tip: use https://jsondiff.com/ to compare the expected and actual responses. -; to update the test output run `python3 scripts/generate_test_api.py` -[env:native-test] -platform = native -test_build_src = true -build_flags = -build_type = debug -build_src_flags = - -DEMSESP_STANDALONE -DEMSESP_TEST - -DEMSESP_UNITY - -DARDUINOJSON_ENABLE_ARDUINO_STRING=1 - -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32\" - -std=gnu++20 -Og -ggdb - -Wall -Wextra - -Wno-unused-parameter -Wno-sign-compare -Wno-missing-braces - -Wno-vla-cxx-extension -Wno-tautological-constant-out-of-range-compare - -I./src/core - -I./lib_standalone - -I./lib/uuid-common/src - -I./lib/uuid-console/src - -I./lib/uuid-log/src - -I./lib/PButton - -I./lib/espMqttClient/src - -I./lib/espMqttClient/src/Transport - -I./test/api - -I./test -build_src_filter = - +<../src> - +<../test> - +<../lib> - +<../lib_standalone> - -<../src/ESP32React> - -<../lib/uuid-telnet> - -<../lib/uuid-syslog> - -<../lib/eModbus> - -<../lib/OneWire> - -<../src/core/ModuleLibrary.cpp> -lib_ldf_mode = off -lib_deps = Unity -test_testing_command = - ${platformio.build_dir}/${this.__env__}/program - -; builds the test cases and creates the test_api.h file -; run with `pio run -e native-test-create -t exec` and capture the output between "START - CUT HERE" and "END - CUT HERE" and paste it into the test_api.h file -[env:native-test-create] -extends = env:native-test -build_flags = - -DEMSESP_UNITY_CREATE -; -; Building and testing locally on OS, which we call "standalone" without an ESP32. -; See https://docs.platformio.org/en/latest/platforms/native.html -; -; It will generate an executable which when run will show the EMS-ESP Console where you can run tests using the `test` command. -; -; See https://docs.platformio.org/en/latest/core/installation/shell-commands.html#piocore-install-shell-commands -; -; to build and run directly on linux: pio run -e standalone -t exec -; -; to build and run on Windows, it needs winsock for the console input so: -; - For the first time, install Msys2 (https://www.msys2.org/) and the GCC compiler with `run pacman -S mingw-w64-ucrt-x86_64-gcc` -; - Then, build with `pio run -e standalone` to create the program.exe file -; - run by calling the executable from the Mysys shell e.g. `C:/msys64/msys2_shell.cmd -defterm -here -no-start -ucrt64 -c /.pio/build/native/program.exe` -; - or use with Windows Terminal https://www.msys2.org/docs/terminals/ -; -[env:standalone] -extends = env:native -build_flags = - -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32\" - -; Modbus -; Creates the file modbus_entity_parameters.hpp -; Creating the modbus registers is a multi-step process. Before it was in a shell script called generate_csv_and_headers.sh -; but now moved to pio so everything is in python and cross-platform. The logic is as follows: -; 1. create a dummy modbus_entity_parameters.hpp file so the first pass compiles -; 2. compile the EMS-ESPcode with the EMSESP_MODBUS flag set -; 3. run the entity_dump test command and generate the dump_entities.csv file -; 4. use the dump_entities.csv file with update_modbus_registers.py script to generate the modbus_entity_parameters.hpp file -; 5. clean up everything and start again with the EMSESP_STANDALONE flag set -; 6. run the entity_dump test command again to create the real dump_entities.csv file -; -; To use, run: -; pio run -e build_modbus -t clean -t build -[env:build_modbus] -extends = env:native -targets = build -extra_scripts = - pre:scripts/build_modbus_entity_parameters_pre.py - post:scripts/build_run_test.py -build_flags = -DEMSESP_MODBUS -custom_test_command = entity_dump -custom_output_file = dump_entities.csv -custom_post_script = scripts/build_modbus_entity_parameters_post.py - -; builds the real dump_entities.csv and dump_telegrams.csv files -; and also the Modbus-Entity-Registers.md file which is used in the emsesp.org documentation -; -; To use, run after build_modbus environment, with: -; pio run -e build_standalone -t clean -t build -[env:build_standalone] -extends = env:native -targets = build -extra_scripts = - post:scripts/build_run_test.py -build_flags = -DEMSESP_STANDALONE -custom_test_command = entity_dump -custom_output_file = dump_entities.csv -custom_post_script = scripts/build_standalone_post.py -- 2.54.0 From cefd5a14cf0855fd26c68f4f90b8a0776f05a786 Mon Sep 17 00:00:00 2001 From: proddy Date: Fri, 9 Oct 2026 08:35:59 +0200 Subject: [PATCH 060/148] fix include conflicts --- src/core/{console.h => emsesp_console.h} | 0 src/core/{httpClient.h => emsesp_http_client.h} | 0 src/core/{network.h => emsesp_network.h} | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename src/core/{console.h => emsesp_console.h} (100%) rename src/core/{httpClient.h => emsesp_http_client.h} (100%) rename src/core/{network.h => emsesp_network.h} (100%) diff --git a/src/core/console.h b/src/core/emsesp_console.h similarity index 100% rename from src/core/console.h rename to src/core/emsesp_console.h diff --git a/src/core/httpClient.h b/src/core/emsesp_http_client.h similarity index 100% rename from src/core/httpClient.h rename to src/core/emsesp_http_client.h diff --git a/src/core/network.h b/src/core/emsesp_network.h similarity index 100% rename from src/core/network.h rename to src/core/emsesp_network.h -- 2.54.0 From eaaea504df43bb48763fc85b48a94f49313e15e3 Mon Sep 17 00:00:00 2001 From: proddy Date: Fri, 9 Oct 2026 08:36:15 +0200 Subject: [PATCH 061/148] rename tasmota, fix includes --- boards/s3_32M_P.json | 2 +- boards/s_16M.json | 2 +- boards/s_16M_P.json | 2 +- boards/s_4M.json | 2 +- mock-api/restServer.ts | 6 +++--- platformio.ini | 23 ++++++++++++++--------- src/core/analogsensor.h | 2 +- src/core/command.h | 2 +- src/core/console.cpp | 2 +- src/core/console_stream.h | 2 +- src/core/default_settings.h | 2 +- src/core/emsesp.h | 4 ++-- src/core/httpClient.cpp | 2 +- src/core/mqtt.h | 2 +- src/core/network.cpp | 2 +- src/core/shuntingYard.cpp | 2 +- src/core/system.cpp | 4 ++-- src/core/system.h | 2 +- src/core/temperaturesensor.h | 2 +- src/emsesp_version.h | 2 +- src/test/test.cpp | 2 +- src/web/WebCommandService.cpp | 2 +- src/web/WebStatusService.cpp | 2 +- 23 files changed, 40 insertions(+), 35 deletions(-) diff --git a/boards/s3_32M_P.json b/boards/s3_32M_P.json index 792b1a6b1..e172d9bb7 100644 --- a/boards/s3_32M_P.json +++ b/boards/s3_32M_P.json @@ -21,7 +21,7 @@ "arduino", "espidf" ], - "name": "Tasmota ESP32-S3 32M Flash OPI PSRAM, 4608KB Code/OTA, 2MB FS", + "name": "ESP32-S3 32M Flash OPI PSRAM, 4608KB Code/OTA, 2MB FS", "upload": { "flash_size": "32MB", "maximum_ram_size": 327680, diff --git a/boards/s_16M.json b/boards/s_16M.json index 664d2bd61..c9a0d32a2 100644 --- a/boards/s_16M.json +++ b/boards/s_16M.json @@ -18,7 +18,7 @@ "arduino", "espidf" ], - "name": "Tasmota ESP32 16M Flash, 4608KB Code/OTA, 2MB FS", + "name": "ESP32 16M Flash, 4608KB Code/OTA, 2MB FS", "upload": { "flash_size": "16MB", "maximum_ram_size": 327680, diff --git a/boards/s_16M_P.json b/boards/s_16M_P.json index a0d10643d..f9218cea9 100644 --- a/boards/s_16M_P.json +++ b/boards/s_16M_P.json @@ -19,7 +19,7 @@ "arduino", "espidf" ], - "name": "Tasmota ESP32 16M Flash DIO PSRAM, 4608KB Code/OTA, 2MB FS", + "name": "ESP32 16M Flash DIO PSRAM, 4608KB Code/OTA, 2MB FS", "upload": { "flash_size": "16MB", "maximum_ram_size": 327680, diff --git a/boards/s_4M.json b/boards/s_4M.json index 8978e2625..2c2b0ebeb 100644 --- a/boards/s_4M.json +++ b/boards/s_4M.json @@ -17,7 +17,7 @@ "arduino", "espidf" ], - "name": "Tasmota ESP32 4M Flash, 4608KB Code/OTA, 2MB FS", + "name": "ESP32 4M Flash, 4608KB Code/OTA, 2MB FS", "upload": { "flash_size": "4MB", "maximum_ram_size": 327680, diff --git a/mock-api/restServer.ts b/mock-api/restServer.ts index c606b951b..5e2c14f66 100644 --- a/mock-api/restServer.ts +++ b/mock-api/restServer.ts @@ -103,7 +103,7 @@ let system_status = { cpu_cores: 2, cpu_freq_mhz: 240, max_alloc_heap: 191, - arduino_version: 'Tasmota Arduino v3.3.8', + arduino_version: 'Arduino v3.3.8', sdk_version: '5.5.4.260407', partition: 'app0', flash_chip_size: 16384, @@ -209,7 +209,7 @@ switch (emulate_esp) { case 'ESP32': system_status.esp_platform = 'ESP32'; system_status.cpu_type = 'ESP32-D0WD-V3'; - system_status.arduino_version = 'Tasmota Arduino v3.3.8'; + system_status.arduino_version = 'Arduino v3.3.8'; system_status.sdk_version = '5.5.4.260407'; system_status.psram = true; system_status.psram_size = 4096; @@ -225,7 +225,7 @@ switch (emulate_esp) { default: system_status.esp_platform = 'ESP32S3'; system_status.cpu_type = 'ESP32-S3'; - system_status.arduino_version = 'Tasmota Arduino v3.3.8'; + system_status.arduino_version = 'Arduino v3.3.8'; system_status.sdk_version = '5.5.4.260407'; system_status.psram = true; system_status.psram_size = 8189; diff --git a/platformio.ini b/platformio.ini index db0340026..1f7fc3038 100644 --- a/platformio.ini +++ b/platformio.ini @@ -21,8 +21,8 @@ extra_configs = pio_local.ini [common] -core_build_flags = -std=gnu++20 -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 +core_build_flags = -Wall -Wextra -Wno-type-limits -Wno-unused-parameter -Wno-unused-variable -Wno-format -Wno-missing-field-initializers +core_unbuild_flags = -O2 -O3 -Og -fno-lto my_build_flags = @@ -31,6 +31,9 @@ build_flags = ${factory_settings.build_flags} ${common.my_build_flags} -I./src/core + ; core 3.3.12 uses spi_host_device_t in ETH.h without including it. A framework + ; refresh restores that header, so force the declaration on every compile. + -include hal/spi_types.h -D ARDUINO_ARCH_ESP32 -D ONEWIRE_CRC16=0 -D CONFIG_UART_ISR_IN_IRAM @@ -62,8 +65,7 @@ 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/tasmota/platform-espressif32/releases/download/2026.05.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.8 based on IDF 5.5.4.260407 -; platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 +platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 ; 16MB Flash variants [espressif32_base_16M] @@ -71,8 +73,8 @@ framework = arduino board_build.partitions = partitions/esp32_partition_16M.csv board_upload.flash_size = 16MB board_build.app_partition_name = app0 -platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.05.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.8 based on IDF 5.5.4.260407 -; platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 +platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 +; platform_packages = framework-arduinoespressif32 @ https://github.com/emsesp/esp32-arduino-lib-builder/releases/download/0810-2237-5.5.5/framework-arduinoespressif32-v5.5.5-a63b839f.tar.xz ; 32MB Flash variants [espressif32_base_32M] @@ -80,8 +82,7 @@ framework = arduino board_build.partitions = partitions/esp32_partition_32M.csv board_upload.flash_size = 32MB board_build.app_partition_name = app0 -platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.05.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.8 based on IDF 5.5.4.260407 -; platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 +platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 [env] build_flags = @@ -143,7 +144,11 @@ custom_sdkconfig = '# CONFIG_LWIP_IP_FORWARD is not set' '# CONFIG_LWIP_IPV4_NAPT is not set' '# CONFIG_ULP_COPROC_ENABLED is not set' - CONFIG_LWIP_LOCAL_HOSTNAME="ems-esp" + '# CONFIG_ETH_USE_SPI_ETHERNET is not set' + '# CONFIG_ETH_SPI_ETHERNET_W5500 is not set' + '# CONFIG_ETH_SPI_ETHERNET_DM9051 is not set' + '# CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL is not set' + '# CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set' [env:s3_16M_P] ; 16MB ESP32-S3 - with PSRAM - like a BBQKees S3 diff --git a/src/core/analogsensor.h b/src/core/analogsensor.h index ce3909953..a6f334a9a 100644 --- a/src/core/analogsensor.h +++ b/src/core/analogsensor.h @@ -21,7 +21,7 @@ #include "helpers.h" #include "mqtt.h" -#include "console.h" +#include "emsesp_console.h" #include diff --git a/src/core/command.h b/src/core/command.h index efc8ed6a4..1a2d2b820 100644 --- a/src/core/command.h +++ b/src/core/command.h @@ -21,7 +21,7 @@ #include -#include "console.h" +#include "emsesp_console.h" #include using uuid::console::Shell; diff --git a/src/core/console.cpp b/src/core/console.cpp index da3ef8815..be2f828b5 100644 --- a/src/core/console.cpp +++ b/src/core/console.cpp @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -#include "console.h" +#include "emsesp_console.h" #include "console_stream.h" #include "emsesp.h" diff --git a/src/core/console_stream.h b/src/core/console_stream.h index ba1a4458e..edb95a749 100644 --- a/src/core/console_stream.h +++ b/src/core/console_stream.h @@ -20,7 +20,7 @@ #include -#include "console.h" +#include "emsesp_console.h" namespace emsesp { diff --git a/src/core/default_settings.h b/src/core/default_settings.h index fea89c2fc..ab15b0e3e 100644 --- a/src/core/default_settings.h +++ b/src/core/default_settings.h @@ -304,7 +304,7 @@ enum { #define STRINGIZE(s) #s #endif -#define ARDUINO_VERSION_STR(major, minor, patch) "Tasmota Arduino v" STRINGIZE(major) "." STRINGIZE(minor) "." STRINGIZE(patch) +#define ARDUINO_VERSION_STR(major, minor, patch) "Arduino v" STRINGIZE(major) "." STRINGIZE(minor) "." STRINGIZE(patch) #define ARDUINO_VERSION ARDUINO_VERSION_STR(ESP_ARDUINO_VERSION_MAJOR, ESP_ARDUINO_VERSION_MINOR, ESP_ARDUINO_VERSION_PATCH) #endif diff --git a/src/core/emsesp.h b/src/core/emsesp.h index ac15d7fb5..d5fe2212d 100644 --- a/src/core/emsesp.h +++ b/src/core/emsesp.h @@ -66,10 +66,10 @@ #include "mqtt.h" #include "modbus.h" #include "system.h" -#include "network.h" +#include "emsesp_network.h" #include "temperaturesensor.h" #include "analogsensor.h" -#include "console.h" +#include "emsesp_console.h" #include "console_stream.h" #include "shower.h" #include "roomcontrol.h" diff --git a/src/core/httpClient.cpp b/src/core/httpClient.cpp index 29f00eba8..cf2a104c0 100644 --- a/src/core/httpClient.cpp +++ b/src/core/httpClient.cpp @@ -18,7 +18,7 @@ #include "emsesp.h" -#include "httpClient.h" +#include "emsesp_http_client.h" #include #include diff --git a/src/core/mqtt.h b/src/core/mqtt.h index a8d6503df..5bbf9f821 100644 --- a/src/core/mqtt.h +++ b/src/core/mqtt.h @@ -23,7 +23,7 @@ #include "helpers.h" #include "system.h" -#include "console.h" +#include "emsesp_console.h" #include "command.h" #include "emsdevicevalue.h" #include diff --git a/src/core/network.cpp b/src/core/network.cpp index 235619916..8dbeccb8f 100644 --- a/src/core/network.cpp +++ b/src/core/network.cpp @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -#include "network.h" +#include "emsesp_network.h" #include "emsesp.h" diff --git a/src/core/shuntingYard.cpp b/src/core/shuntingYard.cpp index a60fc77a6..78a5fed2c 100644 --- a/src/core/shuntingYard.cpp +++ b/src/core/shuntingYard.cpp @@ -22,7 +22,7 @@ #include "shuntingYard.h" -#include "httpClient.h" +#include "emsesp_http_client.h" namespace emsesp { diff --git a/src/core/system.cpp b/src/core/system.cpp index 3c65f7c82..2d8eb1aba 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -17,7 +17,7 @@ */ #include "system.h" -#include "network.h" +#include "emsesp_network.h" #include "emsesp.h" // for send_raw_telegram() command #ifndef EMSESP_STANDALONE @@ -33,7 +33,7 @@ #include "firmwareVersion.h" #include "shuntingYard.h" // for compute() used by the message and sendmail commands -#include "httpClient.h" // for the shared TLS client settings +#include "emsesp_http_client.h" // for the shared TLS client settings #if defined(EMSESP_TEST) #include "../test/test.h" diff --git a/src/core/system.h b/src/core/system.h index 66b1c8fc0..36b061d45 100644 --- a/src/core/system.h +++ b/src/core/system.h @@ -23,7 +23,7 @@ #include #include "helpers.h" -#include "console.h" +#include "emsesp_console.h" #include "mqtt.h" #include "telegram.h" #include "led.h" diff --git a/src/core/temperaturesensor.h b/src/core/temperaturesensor.h index 1b9ebe23a..42fc29be4 100644 --- a/src/core/temperaturesensor.h +++ b/src/core/temperaturesensor.h @@ -23,7 +23,7 @@ #include "helpers.h" #include "mqtt.h" -#include "console.h" +#include "emsesp_console.h" #include diff --git a/src/emsesp_version.h b/src/emsesp_version.h index fc1c2c9d9..98f549e52 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.9.0-dev.16" +#define EMSESP_APP_VERSION "3.9.0-dev.17a" diff --git a/src/test/test.cpp b/src/test/test.cpp index 9a1045ea5..8e38974dd 100644 --- a/src/test/test.cpp +++ b/src/test/test.cpp @@ -458,7 +458,7 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd, const // S3 has 16MB flash // EMSESP::system_.uploadFirmwareURL("https://github.com/emsesp/EMS-ESP32/releases/download/latest/EMS-ESP-3_7_0-dev_32-ESP32S3-16MB+.bin"); // S3 - // Test for 4MB Tasmota builds + // Test for 4MB builds // EMSESP::system_.uploadFirmwareURL("https://github.com/emsesp/EMS-ESP32/releases/download/latest/EMS-ESP-3_7_2-dev_8-ESP32-4MB.bin"); // S32 EMSESP::system_.uploadFirmwareURL("https://github.com/emsesp/EMS-ESP32/releases/download/latest/EMS-ESP-3_7_2-dev_8-ESP32-16MB.bin"); // E32 diff --git a/src/web/WebCommandService.cpp b/src/web/WebCommandService.cpp index 62b6610d5..62db7a08e 100644 --- a/src/web/WebCommandService.cpp +++ b/src/web/WebCommandService.cpp @@ -20,7 +20,7 @@ #include "WebCommandService.h" #include "shuntingYard.h" -#include "httpClient.h" +#include "emsesp_http_client.h" namespace emsesp { diff --git a/src/web/WebStatusService.cpp b/src/web/WebStatusService.cpp index 642d84a52..6207e5db8 100644 --- a/src/web/WebStatusService.cpp +++ b/src/web/WebStatusService.cpp @@ -21,7 +21,7 @@ #ifndef EMSESP_STANDALONE #include #endif -#include "httpClient.h" +#include "emsesp_http_client.h" namespace emsesp { -- 2.54.0 From 6472a1a42407ba89c09e157cc4e18f53904f4ae8 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 9 Oct 2026 11:54:10 +0200 Subject: [PATCH 062/148] show temperature for 0x40, fix #3272 --- src/devices/thermostat.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index d2d4004ac..eba104662 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -35,6 +35,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i // RF remote sensor seen at 0x40, maybe this is also for different hc with id 0x40 - 0x47? emsesp.cpp maps only 0x40 if (device_id >= 0x40 && device_id <= 0x47) { register_telegram_type(0x0435, "RFTemp", false, MAKE_PF_CB(process_RemoteTemp)); + register_device_values(); return; } // remote thermostats with humidity: RC100H remote, each thermostat is for one hc -- 2.54.0 From 410e92e4d0c2c095b832e26cdf6a2c9212aad9ff Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 9 Oct 2026 11:54:37 +0200 Subject: [PATCH 063/148] limits for dhw diff temperature, fix #3273 --- src/devices/boiler.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 31bb7173f..029ac0d6d 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -994,16 +994,16 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const 48, 63); register_device_value( - DeviceValueTAG::TAG_DHW1, &wwComfDiffTemp_, DeviceValueType::UINT8, FL_(wwComfDiffTemp), DeviceValueUOM::K, MAKE_CF_CB(set_wwComfDiffTemp), 4, 15); + DeviceValueTAG::TAG_DHW1, &wwComfDiffTemp_, DeviceValueType::UINT8, FL_(wwComfDiffTemp), DeviceValueUOM::K, MAKE_CF_CB(set_wwComfDiffTemp), 6, 18); register_device_value( - DeviceValueTAG::TAG_DHW1, &wwEcoDiffTemp_, DeviceValueType::UINT8, FL_(wwEcoDiffTemp), DeviceValueUOM::K, MAKE_CF_CB(set_wwEcoDiffTemp), 4, 15); + DeviceValueTAG::TAG_DHW1, &wwEcoDiffTemp_, DeviceValueType::UINT8, FL_(wwEcoDiffTemp), DeviceValueUOM::K, MAKE_CF_CB(set_wwEcoDiffTemp), 6, 18); register_device_value(DeviceValueTAG::TAG_DHW1, &wwEcoPlusDiffTemp_, DeviceValueType::UINT8, FL_(wwEcoPlusDiffTemp), DeviceValueUOM::K, MAKE_CF_CB(set_wwEcoPlusDiffTemp), - 4, + 6, 15); register_device_value(DeviceValueTAG::TAG_DHW1, &wwComfStopTemp_, -- 2.54.0 From 7fc094d6f7c5d45e05ba6efa4696168389e0b22d Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 9 Oct 2026 11:55:39 +0200 Subject: [PATCH 064/148] changelog --- CHANGELOG_LATEST.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index f92b691a6..717a39548 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -41,6 +41,8 @@ This release is based on the latest Espressif/Arduino core version 3. It brings - HTTP client could write past a fixed 64 byte buffer when a URL had a hostname of 64 characters or more, could busy-spin for the whole read budget if the socket reported bytes it wouldn't return, and buffered responses without any size limit - the "Ethernet clock mode (GPIO16/17) conflicts with PSRAM" error was never logged because Ethernet had already been skipped by the time the check ran - heat limit entities (`maxheatcomp`, `maxheatheat`, `dhw.maxheat`) read as unknown on heat pumps with an auxiliary heater larger than 9 kW - `enum_maxHeat` was missing the 12 kW and 15 kW steps +- add 0kW to heat limits [#3262](https://github.com/emsesp/EMS-ESP32/issues/3262), [#3265](https://github.com/emsesp/EMS-ESP32/issues/3265) +- show temperature value for sensor 0x40 [#3272](https://github.com/emsesp/EMS-ESP32/issues/3272) ## Changed -- 2.54.0 From 90eee9256094084e2a6a0771a57185b0a00a4217 Mon Sep 17 00:00:00 2001 From: MichaelDvP <59284019+MichaelDvP@users.noreply.github.com> Date: Fri, 9 Oct 2026 11:06:05 +0000 Subject: [PATCH 065/148] chore: update generated files for v3.9.0-dev.16 --- docs/Modbus-Entity-Registers.md | 18 +++++++++--------- docs/dump_entities.csv | 20 ++++++++++---------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/Modbus-Entity-Registers.md b/docs/Modbus-Entity-Registers.md index ce2905541..61f4c2cad 100644 --- a/docs/Modbus-Entity-Registers.md +++ b/docs/Modbus-Entity-Registers.md @@ -223,11 +223,11 @@ uint8 uint8 | dhw.ecoplusoff | eco+ switch off | uint8 (>=48<=63) | C | true | DHW | 20 | 1 | 1 | uint8 -| dhw.comfdiff | comfort diff | uint8 (>=4<=15) | K | true | DHW | 21 | 1 | 1 | +| dhw.comfdiff | comfort diff | uint8 (>=6<=18) | K | true | DHW | 21 | 1 | 1 | uint8 -| dhw.ecodiff | eco diff | uint8 (>=4<=15) | K | true | DHW | 22 | 1 | 1 | +| dhw.ecodiff | eco diff | uint8 (>=6<=18) | K | true | DHW | 22 | 1 | 1 | uint8 -| dhw.ecoplusdiff | eco+ diff | uint8 (>=4<=15) | K | true | DHW | 23 | 1 | 1 | +| dhw.ecoplusdiff | eco+ diff | uint8 (>=6<=15) | K | true | DHW | 23 | 1 | 1 | uint8 | dhw.comfstop | comfort stop temp | uint8 (>=0<=0) | C | true | DHW | 24 | 1 | 1 | uint8 @@ -3721,11 +3721,11 @@ uint8 uint8 | dhw.ecoplusoff | eco+ switch off | uint8 (>=48<=63) | C | true | DHW | 20 | 1 | 1 | uint8 -| dhw.comfdiff | comfort diff | uint8 (>=4<=15) | K | true | DHW | 21 | 1 | 1 | +| dhw.comfdiff | comfort diff | uint8 (>=6<=18) | K | true | DHW | 21 | 1 | 1 | uint8 -| dhw.ecodiff | eco diff | uint8 (>=4<=15) | K | true | DHW | 22 | 1 | 1 | +| dhw.ecodiff | eco diff | uint8 (>=6<=18) | K | true | DHW | 22 | 1 | 1 | uint8 -| dhw.ecoplusdiff | eco+ diff | uint8 (>=4<=15) | K | true | DHW | 23 | 1 | 1 | +| dhw.ecoplusdiff | eco+ diff | uint8 (>=6<=15) | K | true | DHW | 23 | 1 | 1 | uint8 | dhw.comfstop | comfort stop temp | uint8 (>=0<=0) | C | true | DHW | 24 | 1 | 1 | uint8 @@ -3999,11 +3999,11 @@ uint8 uint8 | dhw.ecoplusoff | eco+ switch off | uint8 (>=48<=63) | C | true | DHW | 20 | 1 | 1 | uint8 -| dhw.comfdiff | comfort diff | uint8 (>=4<=15) | K | true | DHW | 21 | 1 | 1 | +| dhw.comfdiff | comfort diff | uint8 (>=6<=18) | K | true | DHW | 21 | 1 | 1 | uint8 -| dhw.ecodiff | eco diff | uint8 (>=4<=15) | K | true | DHW | 22 | 1 | 1 | +| dhw.ecodiff | eco diff | uint8 (>=6<=18) | K | true | DHW | 22 | 1 | 1 | uint8 -| dhw.ecoplusdiff | eco+ diff | uint8 (>=4<=15) | K | true | DHW | 23 | 1 | 1 | +| dhw.ecoplusdiff | eco+ diff | uint8 (>=6<=15) | K | true | DHW | 23 | 1 | 1 | uint8 | dhw.comfstop | comfort stop temp | uint8 (>=0<=0) | C | true | DHW | 24 | 1 | 1 | uint8 diff --git a/docs/dump_entities.csv b/docs/dump_entities.csv index e3150436c..a6e59358d 100644 --- a/docs/dump_entities.csv +++ b/docs/dump_entities.csv @@ -128,7 +128,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin4opt,input 4 options,string (>=0<=0), ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt,6,0,1,209,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,6,0,1,217,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,6,0,1,218,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,6,9,1,14,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.maxheat,heat limit,enum [0 kW\|3 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_dhw_heat_limit,select.boiler_dhw_maxheat,6,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,6,0,1,219,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,6,0,1,220,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheateronly,aux heater only,boolean (>=0<=0), ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly,6,0,1,221,1 @@ -172,9 +172,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.comfoff,comfort switch off,uint8 (>=15<=65),C,true,number.boiler_dhw_comfort_switch_off,number.boiler_dhw_comfoff,6,9,1,18,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.ecooff,eco switch off,uint8 (>=15<=65),C,true,number.boiler_dhw_eco_switch_off,number.boiler_dhw_ecooff,6,9,1,19,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.ecoplusoff,eco+ switch off,uint8 (>=48<=63),C,true,number.boiler_dhw_eco+_switch_off,number.boiler_dhw_ecoplusoff,6,9,1,20,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.comfdiff,comfort diff,uint8 (>=4<=15),K,true,number.boiler_dhw_comfort_diff,number.boiler_dhw_comfdiff,6,9,1,21,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.ecodiff,eco diff,uint8 (>=4<=15),K,true,number.boiler_dhw_eco_diff,number.boiler_dhw_ecodiff,6,9,1,22,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.ecoplusdiff,eco+ diff,uint8 (>=4<=15),K,true,number.boiler_dhw_eco+_diff,number.boiler_dhw_ecoplusdiff,6,9,1,23,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.comfdiff,comfort diff,uint8 (>=6<=18),K,true,number.boiler_dhw_comfort_diff,number.boiler_dhw_comfdiff,6,9,1,21,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.ecodiff,eco diff,uint8 (>=6<=18),K,true,number.boiler_dhw_eco_diff,number.boiler_dhw_ecodiff,6,9,1,22,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.ecoplusdiff,eco+ diff,uint8 (>=6<=15),K,true,number.boiler_dhw_eco+_diff,number.boiler_dhw_ecoplusdiff,6,9,1,23,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.comfstop,comfort stop temp,uint8 (>=0<=0),C,true,number.boiler_dhw_comfort_stop_temp,number.boiler_dhw_comfstop,6,9,1,24,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.ecostop,eco stop temp,uint8 (>=0<=0),C,true,number.boiler_dhw_eco_stop_temp,number.boiler_dhw_ecostop,6,9,1,25,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.ecoplusstop,eco+ stop temp,uint8 (>=0<=0),C,true,number.boiler_dhw_eco+_stop_temp,number.boiler_dhw_ecoplusstop,6,9,1,26,1 @@ -2813,9 +2813,9 @@ 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.comfoff,comfort switch off,uint8 (>=15<=65),C,true,number.boiler_dhw_comfort_switch_off,number.boiler_dhw_comfoff,6,9,1,18,1 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.ecooff,eco switch off,uint8 (>=15<=65),C,true,number.boiler_dhw_eco_switch_off,number.boiler_dhw_ecooff,6,9,1,19,1 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.ecoplusoff,eco+ switch off,uint8 (>=48<=63),C,true,number.boiler_dhw_eco+_switch_off,number.boiler_dhw_ecoplusoff,6,9,1,20,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.comfdiff,comfort diff,uint8 (>=4<=15),K,true,number.boiler_dhw_comfort_diff,number.boiler_dhw_comfdiff,6,9,1,21,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.ecodiff,eco diff,uint8 (>=4<=15),K,true,number.boiler_dhw_eco_diff,number.boiler_dhw_ecodiff,6,9,1,22,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.ecoplusdiff,eco+ diff,uint8 (>=4<=15),K,true,number.boiler_dhw_eco+_diff,number.boiler_dhw_ecoplusdiff,6,9,1,23,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.comfdiff,comfort diff,uint8 (>=6<=18),K,true,number.boiler_dhw_comfort_diff,number.boiler_dhw_comfdiff,6,9,1,21,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.ecodiff,eco diff,uint8 (>=6<=18),K,true,number.boiler_dhw_eco_diff,number.boiler_dhw_ecodiff,6,9,1,22,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.ecoplusdiff,eco+ diff,uint8 (>=6<=15),K,true,number.boiler_dhw_eco+_diff,number.boiler_dhw_ecoplusdiff,6,9,1,23,1 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.comfstop,comfort stop temp,uint8 (>=0<=0),C,true,number.boiler_dhw_comfort_stop_temp,number.boiler_dhw_comfstop,6,9,1,24,1 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.ecostop,eco stop temp,uint8 (>=0<=0),C,true,number.boiler_dhw_eco_stop_temp,number.boiler_dhw_ecostop,6,9,1,25,1 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.ecoplusstop,eco+ stop temp,uint8 (>=0<=0),C,true,number.boiler_dhw_eco+_stop_temp,number.boiler_dhw_ecoplusstop,6,9,1,26,1 @@ -3034,9 +3034,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Geo 5xx",boiler,173,dhw.comfoff,comfort switch off,uint8 (>=15<=65),C,true,number.boiler_dhw_comfort_switch_off,number.boiler_dhw_comfoff,6,9,1,18,1 "Geo 5xx",boiler,173,dhw.ecooff,eco switch off,uint8 (>=15<=65),C,true,number.boiler_dhw_eco_switch_off,number.boiler_dhw_ecooff,6,9,1,19,1 "Geo 5xx",boiler,173,dhw.ecoplusoff,eco+ switch off,uint8 (>=48<=63),C,true,number.boiler_dhw_eco+_switch_off,number.boiler_dhw_ecoplusoff,6,9,1,20,1 -"Geo 5xx",boiler,173,dhw.comfdiff,comfort diff,uint8 (>=4<=15),K,true,number.boiler_dhw_comfort_diff,number.boiler_dhw_comfdiff,6,9,1,21,1 -"Geo 5xx",boiler,173,dhw.ecodiff,eco diff,uint8 (>=4<=15),K,true,number.boiler_dhw_eco_diff,number.boiler_dhw_ecodiff,6,9,1,22,1 -"Geo 5xx",boiler,173,dhw.ecoplusdiff,eco+ diff,uint8 (>=4<=15),K,true,number.boiler_dhw_eco+_diff,number.boiler_dhw_ecoplusdiff,6,9,1,23,1 +"Geo 5xx",boiler,173,dhw.comfdiff,comfort diff,uint8 (>=6<=18),K,true,number.boiler_dhw_comfort_diff,number.boiler_dhw_comfdiff,6,9,1,21,1 +"Geo 5xx",boiler,173,dhw.ecodiff,eco diff,uint8 (>=6<=18),K,true,number.boiler_dhw_eco_diff,number.boiler_dhw_ecodiff,6,9,1,22,1 +"Geo 5xx",boiler,173,dhw.ecoplusdiff,eco+ diff,uint8 (>=6<=15),K,true,number.boiler_dhw_eco+_diff,number.boiler_dhw_ecoplusdiff,6,9,1,23,1 "Geo 5xx",boiler,173,dhw.comfstop,comfort stop temp,uint8 (>=0<=0),C,true,number.boiler_dhw_comfort_stop_temp,number.boiler_dhw_comfstop,6,9,1,24,1 "Geo 5xx",boiler,173,dhw.ecostop,eco stop temp,uint8 (>=0<=0),C,true,number.boiler_dhw_eco_stop_temp,number.boiler_dhw_ecostop,6,9,1,25,1 "Geo 5xx",boiler,173,dhw.ecoplusstop,eco+ stop temp,uint8 (>=0<=0),C,true,number.boiler_dhw_eco+_stop_temp,number.boiler_dhw_ecoplusstop,6,9,1,26,1 -- 2.54.0 From e3b1eb6c51bb2e05a73e3c83be8397308176634b Mon Sep 17 00:00:00 2001 From: proddy Date: Fri, 9 Oct 2026 17:47:01 +0200 Subject: [PATCH 066/148] test new esp32-arduino-lib-builder packages --- .github/workflows/dev_release.yml | 233 ++++++++++++++++++++++++++---- interface/package.json | 2 +- interface/pnpm-lock.yaml | 42 +++--- platformio.ini | 23 ++- scripts/enable_ccache.py | 27 ++++ scripts/upload.py | 152 +++++++++++++------ scripts/upload_cli.py | 171 +++++++++++++--------- 7 files changed, 482 insertions(+), 168 deletions(-) create mode 100644 scripts/enable_ccache.py diff --git a/.github/workflows/dev_release.yml b/.github/workflows/dev_release.yml index f518634e4..a9811b2b3 100644 --- a/.github/workflows/dev_release.yml +++ b/.github/workflows/dev_release.yml @@ -11,30 +11,209 @@ on: permissions: contents: write +# Parallel graph (wall-clock is ~max of the firmware jobs, not the sum): +# webui ──────┐ +# ├─► firmware (s_4M / s_16M / s_16M_P / s3_16M_P) ─┐ +# modbus ─────┤ ├─► release +# └─► standalone ───────────────────────────────────┘ +# +# Extra -j on a single runner does not help: PlatformIO already compiles each +# environment with all CPUs. The win is separate GitHub runners. + jobs: - pre-release: - name: 'Build Dev Release' + webui: + name: Build webUI if: github.event_name == 'workflow_dispatch' || github.repository == 'emsesp/EMS-ESP32' runs-on: ubuntu-latest steps: - - - name: Install python 3.13 - uses: actions/setup-python@v7 + - name: Checkout repository + uses: actions/checkout@v7 + + - name: Install pnpm + uses: pnpm/action-setup@v4 with: - python-version: '3.13' + package_json_file: interface/package.json - name: Install Node.js 26 uses: actions/setup-node@v7 with: node-version: 26 + - name: Cache pnpm store + uses: actions/cache@v4 + with: + path: ~/.local/share/pnpm/store + key: ${{ runner.os }}-pnpm-${{ hashFiles('interface/package.json') }} + restore-keys: | + ${{ runner.os }}-pnpm- + + - name: Build webUI + env: + CI: true + working-directory: interface + run: | + pnpm install + pnpm build-webUI + + - name: Upload WWWData.h + uses: actions/upload-artifact@v4 + with: + name: wwwdata + path: src/ESP32React/WWWData.h + if-no-files-found: error + + modbus: + name: Build modbus + if: github.event_name == 'workflow_dispatch' || github.repository == 'emsesp/EMS-ESP32' + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v7 + + - name: Install python 3.13 + uses: actions/setup-python@v7 + with: + python-version: '3.13' + + - name: Install uv + uses: astral-sh/setup-uv@v7 + with: + version: "latest" + enable-cache: false + + - name: Install pioarduino + run: uv pip install --system pioarduino==6.2.0 + + - name: Build modbus + run: platformio run -e build_modbus + + - name: Upload modbus header + uses: actions/upload-artifact@v4 + with: + name: modbus-header + path: src/core/modbus_entity_parameters.hpp + if-no-files-found: error + + standalone: + name: Build standalone + needs: modbus + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v7 + + - name: Install python 3.13 + uses: actions/setup-python@v7 + with: + python-version: '3.13' + + - name: Install uv + uses: astral-sh/setup-uv@v7 + with: + version: "latest" + enable-cache: false + + - name: Install pioarduino + run: uv pip install --system pioarduino==6.2.0 + + - name: Restore generated modbus header + uses: actions/download-artifact@v4 + with: + name: modbus-header + path: src/core + + - name: Build standalone + run: platformio run -e build_standalone + + - name: Upload generated docs + uses: actions/upload-artifact@v4 + with: + name: generated-docs + path: | + docs/dump_entities.csv + docs/dump_telegrams.csv + docs/Modbus-Entity-Registers.md + if-no-files-found: error + + firmware: + name: Firmware ${{ matrix.env }} + needs: [webui, modbus] + runs-on: ubuntu-latest + strategy: + fail-fast: true + matrix: + # Keep in sync with platformio.ini default_envs + env: [s_4M, s_16M, s_16M_P, s3_16M_P] + steps: + - name: Checkout repository + uses: actions/checkout@v7 + + - name: Install python 3.13 + uses: actions/setup-python@v7 + with: + python-version: '3.13' + + - name: Install uv + uses: astral-sh/setup-uv@v7 + with: + version: "latest" + enable-cache: false + + - name: Cache PlatformIO packages + uses: actions/cache@v4 + with: + path: | + ~/.platformio/.cache + ~/.platformio/packages + ~/.platformio/platforms + key: ${{ runner.os }}-pio-${{ matrix.env }}-${{ hashFiles('platformio.ini') }} + restore-keys: | + ${{ runner.os }}-pio-${{ matrix.env }}- + ${{ runner.os }}-pio- + + - name: Install pioarduino + run: uv pip install --system pioarduino==6.2.0 intelhex + + - name: Restore WWWData.h + uses: actions/download-artifact@v4 + with: + name: wwwdata + path: src/ESP32React + + - name: Restore generated modbus header + uses: actions/download-artifact@v4 + with: + name: modbus-header + path: src/core + + - name: Setup ccache + uses: hendrikmuhs/ccache-action@v1.2 + with: + key: firmware-${{ matrix.env }} + restore-keys: firmware-${{ matrix.env }}- + max-size: 1G + + - name: Build ${{ matrix.env }} + env: + CCACHE_COMPILERCHECK: content + run: platformio run -e ${{ matrix.env }} + + - name: Upload firmware + uses: actions/upload-artifact@v4 + with: + name: firmware-${{ matrix.env }} + path: build/firmware + if-no-files-found: error + + release: + name: Create GitHub Release + needs: [firmware, standalone] + runs-on: ubuntu-latest + steps: - name: Checkout repository uses: actions/checkout@v7 with: fetch-depth: 0 - - - name: Install pnpm - run: npm install -g pnpm - name: Get the EMS-ESP version id: build_info @@ -49,27 +228,27 @@ jobs: prev=`git rev-parse -q --verify 'refs/tags/latest^{commit}' || git describe --tags --abbrev=0 --match 'v*'` echo "REF=$prev" >> $GITHUB_OUTPUT - - name: Install PlatformIO - run: | - python -m pip install --upgrade pip - pip install -U platformio - python -m pip install intelhex + - name: Restore generated modbus header + uses: actions/download-artifact@v4 + with: + name: modbus-header + path: src/core - - name: Build webUI - run: | - platformio run -e build-webUI + - name: Restore generated docs + uses: actions/download-artifact@v4 + with: + name: generated-docs + path: . - - name: Build modbus - run: | - platformio run -e build_modbus + - name: Restore firmware binaries + uses: actions/download-artifact@v4 + with: + pattern: firmware-* + merge-multiple: true + path: build/firmware - - name: Build standalone - run: | - platformio run -e build_standalone - - - name: Build all PIO target environments, from default_envs - run: | - platformio run + - name: List firmware files + run: ls -la build/firmware - name: Commit the generated files uses: stefanzweifel/git-auto-commit-action@v7 diff --git a/interface/package.json b/interface/package.json index 95c0e9e8b..05cda3a78 100644 --- a/interface/package.json +++ b/interface/package.json @@ -31,7 +31,7 @@ "@table-library/react-table-library": "4.1.15", "alova": "^3.5.5", "jwt-decode": "^4.0.0", - "preact": "^11.0.0", + "preact": "^11.0.1", "react": "^19.3.0", "react-dom": "^19.3.0", "react-icons": "^5.7.0", diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index 91d2b5913..fc19efc83 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -191,8 +191,8 @@ importers: specifier: ^4.0.0 version: 4.0.0 preact: - specifier: ^11.0.0 - version: 11.0.0 + specifier: ^11.0.1 + version: 11.0.1 react: specifier: ^19.3.0 version: 19.3.0 @@ -214,7 +214,7 @@ importers: version: 10.0.1(eslint@10.12.0(supports-color@10.2.2)) '@preact/preset-vite': specifier: ^2.10.6 - version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)) + version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.1)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 version: 6.0.2(prettier@3.9.9)(supports-color@10.2.2) @@ -1338,8 +1338,8 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.449: - resolution: {integrity: sha512-dKeYk/3SFQz+nXi5whp3OuJzeWABEG4zCtkWJ9+Vby1E1iFM2y0gElRtQvNXRPJTsj8WAF4HMP7hvP790QtJ9g==} + electron-to-chromium@1.5.451: + resolution: {integrity: sha512-vUNKPrUzw8ByEMOxloq0a71iD/mPuPxVkbDm3G5YhnxTzOw/I6qAg2MUS0cYj/c267lWmw26yW4Vv7foxTxPLg==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -2531,8 +2531,8 @@ packages: resolution: {integrity: sha512-C+y9x90UElAddDZmV4qOx9W53B61PO7cIqWz2dQsWlwswuq4mr8NEwytdGKboYbQlGZ3awrkTeNvcZiZNHnQ8A==} engines: {node: '>=20'} - preact@11.0.0: - resolution: {integrity: sha512-LRTLKuSe6VYPhvBDjwFaX+nuZnpsw6IN2GSboisAvhGsncylBmrbDCERhgKDn6yP2mAwbGvsB5OVyTe33M8gBg==} + preact@11.0.1: + resolution: {integrity: sha512-TNNwEq++jYNHy747LziCjPRVgEwnLSOIOAw/oYcjI3Tdnubx2EXtt76I0an8PATvUWtx/DX1kFIg1eFN+O/fkw==} peerDependencies: preact-render-to-string: '>=6.7.0' peerDependenciesMeta: @@ -3015,8 +3015,8 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - update-browserslist-db@1.3.3: - resolution: {integrity: sha512-pJ2sYawQS0R/WI928Gj5GlPhTGzbMelq0+4INtSYNDV9ErKJcX6xjGWkoG/VnB3dpUm00zALaqkrUD77pO5TDQ==} + update-browserslist-db@1.3.4: + resolution: {integrity: sha512-t8wonIOdQyOjtPd2VktlBu6QjTVTks6v8bSi7kd0r2Vll8TK1JYDZtRRdbmCHOAMphkZgrzK+L+vXK4pyZ8t4A==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -3591,12 +3591,12 @@ snapshots: '@popperjs/core@2.11.8': {} - '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2))': + '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.1)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@prefresh/vite': 2.4.12(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)) + '@prefresh/vite': 2.4.12(preact@11.0.1)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)) '@rollup/pluginutils': 5.4.0 babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.7(supports-color@10.2.2)) debug: 4.4.3(supports-color@10.2.2) @@ -3614,20 +3614,20 @@ snapshots: dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) - '@prefresh/core@1.5.11(preact@11.0.0)': + '@prefresh/core@1.5.11(preact@11.0.1)': dependencies: - preact: 11.0.0 + preact: 11.0.1 '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.12(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2))': + '@prefresh/vite@2.4.12(preact@11.0.1)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@prefresh/babel-plugin': 0.5.4(@babel/core@7.29.7(supports-color@10.2.2)) - '@prefresh/core': 1.5.11(preact@11.0.0) + '@prefresh/core': 1.5.11(preact@11.0.1) '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 - preact: 11.0.0 + preact: 11.0.1 vite: 8.3.3(@types/node@26.6.4)(terser@5.51.2) transitivePeerDependencies: - supports-color @@ -4005,9 +4005,9 @@ snapshots: dependencies: baseline-browser-mapping: 2.11.27 caniuse-lite: 1.0.30001815 - electron-to-chromium: 1.5.449 + electron-to-chromium: 1.5.451 node-releases: 2.0.57 - update-browserslist-db: 1.3.3(browserslist@4.29.3) + update-browserslist-db: 1.3.4(browserslist@4.29.3) buffer-alloc-unsafe@1.1.0: {} @@ -4370,7 +4370,7 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.449: {} + electron-to-chromium@1.5.451: {} emoji-regex@10.6.0: {} @@ -5501,7 +5501,7 @@ snapshots: powershell-utils@0.2.1: {} - preact@11.0.0: {} + preact@11.0.1: {} prelude-ls@1.2.1: {} @@ -5953,7 +5953,7 @@ snapshots: universalify@2.0.1: {} - update-browserslist-db@1.3.3(browserslist@4.29.3): + update-browserslist-db@1.3.4(browserslist@4.29.3): dependencies: browserslist: 4.29.3 escalade: 3.2.0 diff --git a/platformio.ini b/platformio.ini index 1f7fc3038..623058d2f 100644 --- a/platformio.ini +++ b/platformio.ini @@ -67,14 +67,14 @@ board_upload.flash_size = 4MB board_build.app_partition_name = app0 platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 -; 16MB Flash variants +; 16MB Flash variants - using EMS-ESP Arduino/IDF libs (not Tasmota) [espressif32_base_16M] framework = arduino board_build.partitions = partitions/esp32_partition_16M.csv board_upload.flash_size = 16MB board_build.app_partition_name = app0 platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 -; platform_packages = framework-arduinoespressif32 @ https://github.com/emsesp/esp32-arduino-lib-builder/releases/download/0810-2237-5.5.5/framework-arduinoespressif32-v5.5.5-a63b839f.tar.xz +platform_packages = framework-arduinoespressif32 @ https://github.com/emsesp/esp32-arduino-lib-builder/releases/download/0810-2237-5.5.5/framework-arduinoespressif32-v5.5.5-a63b839f.tar.xz ; 32MB Flash variants [espressif32_base_32M] @@ -90,6 +90,7 @@ build_flags = build_unflags = ${common.unbuild_flags} extra_scripts = + pre:scripts/enable_ccache.py ; uses ccache when it is installed post:scripts/rename_fw.py ; renames the firmware .bin file monitor_speed = 115200 monitor_filters = direct, esp32_exception_decoder @@ -133,22 +134,32 @@ extends = espressif32_base_16M board = s_16M_P [env:s_16M_P_custom] -; same as s_16M_P, but the Arduino/IDF libs are rebuilt with HybridCompile using the -; custom_sdkconfig below, to compare flash size and free heap against stock s_16M_P. -; first build takes 10-20 min (IDF compiled from source), later builds are cached. -; building s_16M_P and this env alternately triggers a rebuild each time. +; same as s_16M_P, but the Arduino/IDF libs are rebuilt with HybridCompile using the custom_sdkconfig below extends = env:s_16M_P custom_sdkconfig = '# CONFIG_BT_ENABLED is not set' '# CONFIG_LWIP_PPP_SUPPORT is not set' '# CONFIG_LWIP_IP_FORWARD is not set' '# CONFIG_LWIP_IPV4_NAPT is not set' + '# CONFIG_LWIP_IPV4_NAPT_PORTMAP is not set' '# CONFIG_ULP_COPROC_ENABLED is not set' '# CONFIG_ETH_USE_SPI_ETHERNET is not set' '# CONFIG_ETH_SPI_ETHERNET_W5500 is not set' '# CONFIG_ETH_SPI_ETHERNET_DM9051 is not set' '# CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL is not set' '# CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set' + '# CONFIG_FREERTOS_USE_TRACE_FACILITY is not set' + '# CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT is not set' + '# CONFIG_ESP_MODEM_USE_PPP_MODE is not set' + '# CONFIG_ESP_GDBSTUB_ENABLED is not set' + '# CONFIG_MDNS_ENABLE_CONSOLE_CLI is not set' + '# CONFIG_MDNS_ENABLE_BROWSE is not set' + '# CONFIG_I2S_ISR_IRAM_SAFE is not set' + ; UART ISR must live in IRAM. Tasmota puts ringbuf ISRs in flash, which + ; forces CONFIG_UART_ISR_IN_IRAM=n and panics (Cache error) when the EMS + ; or console UART fires during a flash read (WiFi stop / mDNS / NVS). + '# CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH is not set' + 'CONFIG_UART_ISR_IN_IRAM=y' [env:s3_16M_P] ; 16MB ESP32-S3 - with PSRAM - like a BBQKees S3 diff --git a/scripts/enable_ccache.py b/scripts/enable_ccache.py new file mode 100644 index 000000000..2bf5d1684 --- /dev/null +++ b/scripts/enable_ccache.py @@ -0,0 +1,27 @@ +# Wrap the C/C++ compilers with ccache when it is on PATH. +# No-op locally unless ccache is installed; CI installs it via ccache-action. +Import("env") + +import shutil + +ccache = shutil.which("ccache") +if ccache: + + def wrap(tool): + cmd = env.get(tool) + if not cmd: + return + resolved = env.subst(cmd) if isinstance(cmd, str) else cmd + if isinstance(resolved, str): + if resolved.startswith("ccache"): + return + env[tool] = f"{ccache} {resolved}" + return + if isinstance(resolved, (list, tuple)): + if resolved and "ccache" in str(resolved[0]): + return + env[tool] = [ccache, *resolved] + + wrap("CC") + wrap("CXX") + print("ccache enabled") diff --git a/scripts/upload.py b/scripts/upload.py index 19be74710..2d228b1fd 100644 --- a/scripts/upload.py +++ b/scripts/upload.py @@ -14,12 +14,17 @@ # and # extra_scripts = scripts/upload.py # +# Prefer a numeric IP over .local — mDNS (especially under WSL2) adds latency +# and can stall on IPv6 before falling back to IPv4. + +import hashlib +import os +import socket +import time +from urllib.parse import urlparse import requests -import hashlib -from urllib.parse import urlparse -import time -import os +from requests.adapters import HTTPAdapter Import("env") @@ -35,6 +40,10 @@ except ImportError: from tqdm import tqdm from termcolor import cprint +# http.client/urllib3 default is 8–16 KiB, which starves a LAN TCP window. +UPLOAD_BLOCK_SIZE = 64 * 1024 +UPLOAD_SNDBUF = 256 * 1024 + def print_success(x): cprint(x, 'green') @@ -44,6 +53,43 @@ def print_fail(x): cprint(f'Error: {x}', 'red') +def resolve_ipv4(host): + """Resolve hostname to IPv4 so we skip mDNS/IPv6 retries on every request.""" + if host.startswith('['): + return host + if ':' in host and host.count(':') == 1: + host = host.rsplit(':', 1)[0] + try: + socket.inet_pton(socket.AF_INET, host) + return host + except OSError: + pass + infos = socket.getaddrinfo(host, 80, socket.AF_INET, socket.SOCK_STREAM) + if not infos: + raise socket.gaierror(f'No IPv4 address for {host}') + return infos[0][4][0] + + +class FastHTTPAdapter(HTTPAdapter): + """Larger write chunks and socket send buffer for streaming POSTs.""" + + def init_poolmanager(self, connections, maxsize, block=False, **pool_kwargs): + socket_options = [ + (socket.IPPROTO_TCP, socket.TCP_NODELAY, 1), + (socket.SOL_SOCKET, socket.SO_SNDBUF, UPLOAD_SNDBUF), + ] + pool_kwargs.setdefault('socket_options', socket_options) + pool_kwargs.setdefault('blocksize', UPLOAD_BLOCK_SIZE) + super().init_poolmanager(connections, maxsize, block=block, **pool_kwargs) + + +def make_session(): + session = requests.Session() + adapter = FastHTTPAdapter(pool_connections=2, pool_maxsize=2) + session.mount('http://', adapter) + return session + + def build_headers(host_ip, emsesp_url, content_type='application/json', access_token=None, extra_headers=None): """Build common HTTP headers with optional overrides.""" headers = { @@ -51,18 +97,17 @@ def build_headers(host_ip, emsesp_url, content_type='application/json', access_t 'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0', 'Accept': '*/*', 'Accept-Language': 'en-US', - 'Accept-Encoding': 'gzip, deflate', 'Referer': emsesp_url, 'Content-Type': content_type, 'Connection': 'keep-alive' } - + if access_token: headers['Authorization'] = f'Bearer {access_token}' - + if extra_headers: headers.update(extra_headers) - + return headers @@ -79,44 +124,52 @@ def on_upload(source, target, env): username = env.GetProjectOption('custom_username') password = env.GetProjectOption('custom_password') emsesp_ip = env.GetProjectOption('custom_emsesp_ip') - except Exception as e: + except Exception: print_fail(f'Missing settings. Add these to your pio_local.ini file:\n\ncustom_username=username\ncustom_password=password\ncustom_emsesp_ip=ems-esp.local\n') return - emsesp_url = f"http://{emsesp_ip}" - parsed_url = urlparse(emsesp_url) - host_ip = parsed_url.netloc - - signon_url = f"{emsesp_url}/rest/signIn" - signon_headers = build_headers(host_ip, emsesp_url) - - username_password = { - "username": username, - "password": password - } - - response = requests.post( - signon_url, json=username_password, headers=signon_headers) - - if response.status_code != 200: - print_fail("Authentication with EMS-ESP failed (code " + - str(response.status_code) + ")") + parsed_url = urlparse(f"http://{emsesp_ip}") + host_name = parsed_url.hostname or emsesp_ip + try: + host_ip = resolve_ipv4(host_name) + except OSError as e: + print_fail(f"Could not resolve {host_name} to IPv4: {e}") return - print_success("Authentication with EMS-ESP successful") - access_token = response.json().get('access_token') + if host_ip != host_name: + print_success(f"Resolved {host_name} -> {host_ip}") - # start the upload - firmware_path = str(source[0]) + emsesp_url = f"http://{host_ip}" + session = make_session() - with open(firmware_path, 'rb') as firmware: - md5 = hashlib.md5(firmware.read()).hexdigest() + try: + signon_url = f"{emsesp_url}/rest/signIn" + signon_headers = build_headers(host_ip, emsesp_url) - firmware.seek(0) + response = session.post( + signon_url, + json={"username": username, "password": password}, + headers=signon_headers, + timeout=15) + + if response.status_code != 200: + print_fail("Authentication with EMS-ESP failed (code " + + str(response.status_code) + ")") + return + + print_success("Authentication with EMS-ESP successful") + access_token = response.json().get('access_token') + + firmware_path = str(source[0]) + with open(firmware_path, 'rb') as firmware_file: + firmware = firmware_file.read() + + md5 = hashlib.md5(firmware).hexdigest() + filename = os.path.basename(firmware_path) encoder = MultipartEncoder(fields={ 'MD5': md5, - 'file': (firmware_path, firmware, 'application/octet-stream')} + 'file': (filename, firmware, 'application/octet-stream')} ) bar = tqdm(desc='Upload Progress', @@ -124,7 +177,8 @@ def on_upload(source, target, env): dynamic_ncols=True, unit='B', unit_scale=True, - unit_divisor=1024 + unit_divisor=1024, + mininterval=0.2 ) monitor = MultipartEncoderMonitor( @@ -142,27 +196,35 @@ def on_upload(source, target, env): ) upload_url = f"{emsesp_url}/rest/uploadFile" - - response = requests.post( - upload_url, data=monitor, headers=post_headers) + started = time.perf_counter() + response = session.post( + upload_url, data=monitor, headers=post_headers, timeout=None) + elapsed = time.perf_counter() - started bar.close() - time.sleep(0.1) - print() if response.status_code != 200: print_fail(f"Upload failed (code {response.status_code}).") else: - print_success("Upload successful. Rebooting device.") + kibs = (encoder.len / 1024) / elapsed if elapsed > 0 else 0 + print_success( + f"Upload successful ({kibs:.0f} KiB/s in {elapsed:.1f}s). Rebooting device.") restart_headers = build_headers( host_ip, emsesp_url, access_token=access_token) restart_url = f"{emsesp_url}/api/system/restart" - response = requests.get(restart_url, headers=restart_headers) - if response.status_code != 200: - print_fail(f"Restart failed (code {response.status_code})") + try: + response = session.get( + restart_url, headers=restart_headers, timeout=10) + if response.status_code != 200: + print_fail(f"Restart failed (code {response.status_code})") + except requests.RequestException: + # Device often drops the connection as it reboots — that's OK. + pass print() + finally: + session.close() if env.get('UPLOAD_PROTOCOL') == 'custom': diff --git a/scripts/upload_cli.py b/scripts/upload_cli.py index a6ed77681..c002009a2 100644 --- a/scripts/upload_cli.py +++ b/scripts/upload_cli.py @@ -9,21 +9,27 @@ # # Run using for example: # python3 upload_cli.py -i 10.10.10.175 -f ../build/firmware/EMS-ESP-3_7_0-dev_34-ESP32S3-16MB+.bin +# +# Prefer a numeric IP over .local — mDNS (especially under WSL2) adds latency +# and can stall on IPv6 before falling back to IPv4. import argparse import hashlib +import socket import sys import time from pathlib import Path +from urllib.parse import urlparse import requests +from requests.adapters import HTTPAdapter from requests_toolbelt import MultipartEncoder, MultipartEncoderMonitor from termcolor import cprint from tqdm import tqdm -# Constants USER_AGENT = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0' -CHUNK_SIZE = 8192 # 8KB chunks for MD5 calculation +UPLOAD_BLOCK_SIZE = 64 * 1024 +UPLOAD_SNDBUF = 256 * 1024 def print_success(x): @@ -34,13 +40,34 @@ def print_fail(x): return cprint(x, 'red') -def calculate_md5(file_path): - """Calculate MD5 hash of a file in chunks for memory efficiency.""" - md5_hash = hashlib.md5() - with open(file_path, 'rb') as f: - for chunk in iter(lambda: f.read(CHUNK_SIZE), b''): - md5_hash.update(chunk) - return md5_hash.hexdigest() +def resolve_ipv4(host): + """Resolve hostname to IPv4 so we skip mDNS/IPv6 retries on every request.""" + if host.startswith('['): + return host + if ':' in host and host.count(':') == 1: + host = host.rsplit(':', 1)[0] + try: + socket.inet_pton(socket.AF_INET, host) + return host + except OSError: + pass + infos = socket.getaddrinfo(host, 80, socket.AF_INET, socket.SOCK_STREAM) + if not infos: + raise socket.gaierror(f'No IPv4 address for {host}') + return infos[0][4][0] + + +class FastHTTPAdapter(HTTPAdapter): + """Larger write chunks and socket send buffer for streaming POSTs.""" + + def init_poolmanager(self, connections, maxsize, block=False, **pool_kwargs): + socket_options = [ + (socket.IPPROTO_TCP, socket.TCP_NODELAY, 1), + (socket.SOL_SOCKET, socket.SO_SNDBUF, UPLOAD_SNDBUF), + ] + pool_kwargs.setdefault('socket_options', socket_options) + pool_kwargs.setdefault('blocksize', UPLOAD_BLOCK_SIZE) + super().init_poolmanager(connections, maxsize, block=block, **pool_kwargs) def create_base_headers(host_ip, emsesp_url): @@ -50,7 +77,6 @@ def create_base_headers(host_ip, emsesp_url): 'User-Agent': USER_AGENT, 'Accept': '*/*', 'Accept-Language': 'en-US', - 'Accept-Encoding': 'gzip, deflate', 'Referer': emsesp_url, 'Connection': 'keep-alive' } @@ -58,35 +84,39 @@ def create_base_headers(host_ip, emsesp_url): def upload(file, ip, username, password): """Upload firmware to EMS-ESP device.""" - # Print welcome message print() print("EMS-ESP Firmware Upload") - # Validate file exists file_path = Path(file) if not file_path.exists(): print_fail(f"File not found: {file}") return - # Setup URLs and headers - emsesp_url = f"http://{ip}" - host_ip = ip - - # Use a session for connection pooling and persistence + parsed_url = urlparse(f"http://{ip}") + host_name = parsed_url.hostname or ip + try: + host_ip = resolve_ipv4(host_name) + except OSError as e: + print_fail(f"Could not resolve {host_name} to IPv4: {e}") + return + + if host_ip != host_name: + print_success(f"Resolved {host_name} -> {host_ip}") + + emsesp_url = f"http://{host_ip}" session = requests.Session() - + session.mount('http://', FastHTTPAdapter(pool_connections=2, pool_maxsize=2)) + try: - # Authentication signon_url = f"{emsesp_url}/rest/signIn" signon_headers = create_base_headers(host_ip, emsesp_url) signon_headers['Content-Type'] = 'application/json' - username_password = { - "username": username, - "password": password - } - - response = session.post(signon_url, json=username_password, headers=signon_headers) + response = session.post( + signon_url, + json={"username": username, "password": password}, + headers=signon_headers, + timeout=15) if response.status_code != 200: print_fail(f"Authentication failed (code {response.status_code})") @@ -95,56 +125,62 @@ def upload(file, ip, username, password): print_success("Authentication successful") access_token = response.json().get('access_token') - # Calculate MD5 hash - print("Calculating MD5 hash...") - md5 = calculate_md5(file_path) + firmware = file_path.read_bytes() + md5 = hashlib.md5(firmware).hexdigest() - # Start the upload - with open(file_path, 'rb') as firmware: - encoder = MultipartEncoder(fields={ - 'MD5': md5, - 'file': (file, firmware, 'application/octet-stream') - }) + encoder = MultipartEncoder(fields={ + 'MD5': md5, + 'file': (file_path.name, firmware, 'application/octet-stream') + }) - bar = tqdm( - desc='Upload Progress', - total=encoder.len, - dynamic_ncols=True, - unit='B', - unit_scale=True, - unit_divisor=1024 - ) + bar = tqdm( + desc='Upload Progress', + total=encoder.len, + dynamic_ncols=True, + unit='B', + unit_scale=True, + unit_divisor=1024, + mininterval=0.2 + ) - monitor = MultipartEncoderMonitor( - encoder, lambda monitor: bar.update(monitor.bytes_read - bar.n)) + monitor = MultipartEncoderMonitor( + encoder, lambda monitor: bar.update(monitor.bytes_read - bar.n)) - post_headers = create_base_headers(host_ip, emsesp_url) - post_headers.update({ - 'Content-Type': monitor.content_type, - 'Content-Length': str(monitor.len), - 'Origin': emsesp_url, + post_headers = create_base_headers(host_ip, emsesp_url) + post_headers.update({ + 'Content-Type': monitor.content_type, + 'Content-Length': str(monitor.len), + 'Origin': emsesp_url, + 'Authorization': f'Bearer {access_token}' + }) + + upload_url = f"{emsesp_url}/rest/uploadFile" + started = time.perf_counter() + response = session.post( + upload_url, data=monitor, headers=post_headers, timeout=None) + elapsed = time.perf_counter() - started + + bar.close() + + if response.status_code != 200: + print_fail(f"Upload failed (code {response.status_code})") + else: + kibs = (encoder.len / 1024) / elapsed if elapsed > 0 else 0 + print_success( + f"Upload successful ({kibs:.0f} KiB/s in {elapsed:.1f}s). Rebooting device.") + restart_headers = create_base_headers(host_ip, emsesp_url) + restart_headers.update({ + 'Content-Type': 'application/json', 'Authorization': f'Bearer {access_token}' }) - - upload_url = f"{emsesp_url}/rest/uploadFile" - response = session.post(upload_url, data=monitor, headers=post_headers) - - bar.close() - time.sleep(0.1) - - if response.status_code != 200: - print_fail(f"Upload failed (code {response.status_code})") - else: - print_success("Upload successful. Rebooting device.") - restart_headers = create_base_headers(host_ip, emsesp_url) - restart_headers.update({ - 'Content-Type': 'application/json', - 'Authorization': f'Bearer {access_token}' - }) - restart_url = f"{emsesp_url}/api/system/restart" - response = session.get(restart_url, headers=restart_headers) + restart_url = f"{emsesp_url}/api/system/restart" + try: + response = session.get( + restart_url, headers=restart_headers, timeout=10) if response.status_code != 200: print_fail(f"Restart failed (code {response.status_code})") + except requests.RequestException: + pass except requests.RequestException as e: print_fail(f"Network error: {e}") @@ -161,7 +197,6 @@ def upload(file, ip, username, password): print() -# main parser = argparse.ArgumentParser(description="EMS-ESP Firmware Upload") parser.add_argument("-f", "--file", metavar="FILE", required=True, type=str, help="firmware file") -- 2.54.0 From 09aa40e604d6dd5944d98f3ce9b7b1196dda34e7 Mon Sep 17 00:00:00 2001 From: proddy Date: Fri, 9 Oct 2026 18:10:33 +0200 Subject: [PATCH 067/148] use new arduino core lib --- platformio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio.ini b/platformio.ini index 623058d2f..60b0b51a8 100644 --- a/platformio.ini +++ b/platformio.ini @@ -74,7 +74,7 @@ board_build.partitions = partitions/esp32_partition_16M.csv board_upload.flash_size = 16MB board_build.app_partition_name = app0 platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 -platform_packages = framework-arduinoespressif32 @ https://github.com/emsesp/esp32-arduino-lib-builder/releases/download/0810-2237-5.5.5/framework-arduinoespressif32-v5.5.5-a63b839f.tar.xz +platform_packages = framework-arduinoespressif32 @ https://github.com/emsesp/esp32-arduino-lib-builder/releases/download/0910-1604-5.5.5/framework-arduinoespressif32-v5.5.5-a63b839f.tar.xz ; 32MB Flash variants [espressif32_base_32M] -- 2.54.0 From c959cb1e8a18ea499e9886264e441229841827f8 Mon Sep 17 00:00:00 2001 From: proddy Date: Fri, 9 Oct 2026 23:55:15 +0200 Subject: [PATCH 068/148] #3275 --- CHANGELOG_LATEST.md | 8 +++++ interface/package.json | 4 +-- interface/pnpm-lock.yaml | 68 ++++++++++++++++++++-------------------- platformio.ini | 11 +++---- 4 files changed, 48 insertions(+), 43 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index d25e66f90..87c7f12b5 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -20,6 +20,9 @@ This release is based on the latest Espressif/Arduino core version 3. It brings - new Application Setting "Automatically check for firmware updates", off by default. When enabled EMS-ESP asks emsesp.org for the latest version once a day on its own, otherwise it only asks when the WebUI wants to show it, so an unattended system never contacts emsesp.org - Automatically check and convert older 3.8.x filesystem to the new 3.9.0 format - heatpump pool: `poolon` (switch, 0x48A), `hppoolon` (pool heating active, 0x488), MP100 `poolshuntset` (0x5C4) and `poolrequest` (0x5BA), shorter pool names +- `s_16M_P_custom` PlatformIO env that HybridCompiles Arduino/IDF with a trimmed sdkconfig (no Bluetooth, PPP/modem, IP forward/NAPT, ULP, SPI Ethernet, GDBSTUB, FreeRTOS trace, mDNS browse/CLI) and places the UART ISR in IRAM +- 16MB builds use EMS-ESP's own Arduino/IDF libs from [esp32-arduino-lib-builder](https://github.com/emsesp/esp32-arduino-lib-builder) (`0910-1604-5.5.5`) instead of Tasmota's prebuilt cores +- optional `ccache` wrapping when it is installed (`scripts/enable_ccache.py`) ## Fixed @@ -45,6 +48,9 @@ This release is based on the latest Espressif/Arduino core version 3. It brings - add 0kW to heat limits [#3262](https://github.com/emsesp/EMS-ESP32/issues/3262), [#3265](https://github.com/emsesp/EMS-ESP32/issues/3265) - show temperature value for sensor 0x40 [#3272](https://github.com/emsesp/EMS-ESP32/issues/3272) - no EMS bus on custom boards whose interface relies on a pull-up on the Rx line. The newer ESP-IDF no longer enables the internal pull-up on the UART Rx pin, so it is now set explicitly as it was in 3.8 [#3258](https://github.com/emsesp/EMS-ESP32/discussions/3258) +- Guru Meditation (cache error) on HybridCompile builds when the EMS or console UART ISR ran from flash during a SPI flash read (WiFi power-down, mDNS, NVS). The UART ISR and ringbuf ISR helpers are now in IRAM +- compile errors against Arduino 3.3.12 from Tasmota/Arduino headers named `console.h`, `network.h` and `httpClient.h`. Those EMS-ESP headers are now `emsesp_console.h`, `emsesp_network.h` and `emsesp_http_client.h` +- HTTP OTA from WSL/mDNS stalled on IPv6 and used tiny write chunks. Uploads now resolve IPv4 and stream in 64 KB blocks (`scripts/upload.py`, `scripts/upload_cli.py`) ## Changed @@ -63,3 +69,5 @@ This release is based on the latest Espressif/Arduino core version 3. It brings - failed versions.json fetches back off from 5 up to 160 minutes instead of retrying every 5 minutes, as each attempt blocks the main loop for as long as the DNS, connect and read timeouts allow - optimized the LED library to support WS2812B V5 and the newer V6 RGB LEDs - hold Tx while a K30RF/KM200 gateway is syncing [#3094](https://github.com/emsesp/EMS-ESP32/issues/3094) +- Tasmota platform 2026.05.50 (Arduino 3.3.8 / IDF 5.5.4) to 2026.09.50 (Arduino 3.3.12 / IDF 5.5.5) +- CI dev-release firmware jobs run in parallel (webUI, firmware targets, standalone) instead of one serial job diff --git a/interface/package.json b/interface/package.json index 05cda3a78..d208136f7 100644 --- a/interface/package.json +++ b/interface/package.json @@ -45,7 +45,7 @@ "@types/node": "^26.6.4", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", - "concurrently": "^10.0.5", + "concurrently": "^10.0.6", "eslint": "^10.12.0", "eslint-config-prettier": "^10.1.8", "etag": "^1.8.1", @@ -55,7 +55,7 @@ "terser": "^5.51.2", "typescript": "^6.0.3", "typescript-eslint": "^8.71.1", - "vite": "^8.3.3", + "vite": "^8.3.4", "vite-plugin-imagemin": "^0.6.1" }, "packageManager": "pnpm@12.10.1" diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index fc19efc83..6046f5856 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -214,7 +214,7 @@ importers: version: 10.0.1(eslint@10.12.0(supports-color@10.2.2)) '@preact/preset-vite': specifier: ^2.10.6 - version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.1)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)) + version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.1)(supports-color@10.2.2)(vite@8.3.4(@types/node@26.6.4)(terser@5.51.2)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 version: 6.0.2(prettier@3.9.9)(supports-color@10.2.2) @@ -228,8 +228,8 @@ importers: specifier: ^19.3.0 version: 19.3.0(@types/react@19.3.0) concurrently: - specifier: ^10.0.5 - version: 10.0.5 + specifier: ^10.0.6 + version: 10.0.6 eslint: specifier: ^10.12.0 version: 10.12.0(supports-color@10.2.2) @@ -258,11 +258,11 @@ importers: specifier: ^8.71.1 version: 8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) vite: - specifier: ^8.3.3 - version: 8.3.3(@types/node@26.6.4)(terser@5.51.2) + specifier: ^8.3.4 + version: 8.3.4(@types/node@26.6.4)(terser@5.51.2) vite-plugin-imagemin: specifier: ^0.6.1 - version: 0.6.1(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)) + version: 0.6.1(supports-color@10.2.2)(vite@8.3.4(@types/node@26.6.4)(terser@5.51.2)) packages: @@ -1004,8 +1004,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.11.27: - resolution: {integrity: sha512-ElY12DaROGuan+lMmZ8Cvo/ZUbXPe7Enc/9VU/b1T3Kp4dwytRcNdR8DoSJN5SNJT/CuvcCA0DHDVmMOCePdRQ==} + baseline-browser-mapping@2.11.28: + resolution: {integrity: sha512-br0LOmjJqr6Rt4AEkadbcNf67Zpo7EPwKsWbjnRrJIa1QYFHQBqM4C7F2WTbV8ahTEcg1Eo+Y0aWjjORInYFyA==} engines: {node: '>=6.0.0'} hasBin: true @@ -1157,8 +1157,8 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - concurrently@10.0.5: - resolution: {integrity: sha512-JaP/CoftUrCcAFW/g//RbgEGwlelnEae6cfBLgH6ZdO6s8jPkn6p9SB9u6pdVxYXoiSnFqseOlHfrEfF82TVOg==} + concurrently@10.0.6: + resolution: {integrity: sha512-qgICXXFp2/3nAebRLmxcINKEXM1mLK3ij/y31P02VTs/KIkddIeC05n73DxOXsXMB9LFSqNU1/na3lDlOhcbIw==} engines: {node: '>=22'} hasBin: true @@ -2318,8 +2318,8 @@ packages: node-html-parser@6.1.13: resolution: {integrity: sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==} - node-releases@2.0.57: - resolution: {integrity: sha512-kQK9LGGFiHtrWiNhZtA7Qbw17AQz+dmsEKODRIVTXA9+e5MS/2gZEBhYJt13GrAz5/IOZKddH/0Z3TP/Zgo+yw==} + node-releases@2.0.58: + resolution: {integrity: sha512-BdiKAgbfRlvfMq/XzO/AF9NPmaA8a+YpLAyAFTVFBj3gARrAIfWvNq7Q7NE4se3KgFu0KkrvQMxTS0XVnsGzHg==} engines: {node: '>=18'} normalize-package-data@2.5.0: @@ -2768,8 +2768,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shell-quote@1.9.0: - resolution: {integrity: sha512-Iov+JwFv/2HcTpcwNMKd8+IWNb8tboQJNQTkAY/LLVK7gGH9jy+LGkVqPxfekHl+yMmiqXszdGWXgkfml7hjqA==} + shell-quote@1.12.0: + resolution: {integrity: sha512-PcByqNyT/38F2kDNi006HAMRJaULuBzq/FOsw3qdZvX/GA9W/jamDaRskgHjubHiftXK5sIFxLNkvrXUwcof6Q==} engines: {node: '>= 0.4'} signal-exit@3.0.7: @@ -3057,8 +3057,8 @@ packages: peerDependencies: vite: 5.x || 6.x || 7.x || 8.x - vite@8.3.3: - resolution: {integrity: sha512-cTAldKPImjg6c+gk48U19POPn3GCBzZwpdsN8ZMEEcbpes+6/wvfqUd0C2y3qYY4wsj8PwgFwrZ/1jBPVttMSg==} + vite@8.3.4: + resolution: {integrity: sha512-IftLE8phJhdNRIGNEV4JCCvfNScoZQVfcXaN8TQropWGJtOHcu+iAB9pHcuGvmEb/kddw0LBe/jS8ztdC6xdiQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -3591,19 +3591,19 @@ snapshots: '@popperjs/core@2.11.8': {} - '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.1)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2))': + '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.1)(supports-color@10.2.2)(vite@8.3.4(@types/node@26.6.4)(terser@5.51.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@prefresh/vite': 2.4.12(preact@11.0.1)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)) + '@prefresh/vite': 2.4.12(preact@11.0.1)(supports-color@10.2.2)(vite@8.3.4(@types/node@26.6.4)(terser@5.51.2)) '@rollup/pluginutils': 5.4.0 babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.7(supports-color@10.2.2)) debug: 4.4.3(supports-color@10.2.2) magic-string: 0.30.21 picocolors: 1.1.1 - vite: 8.3.3(@types/node@26.6.4)(terser@5.51.2) - vite-prerender-plugin: 0.5.14(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)) + vite: 8.3.4(@types/node@26.6.4)(terser@5.51.2) + vite-prerender-plugin: 0.5.14(vite@8.3.4(@types/node@26.6.4)(terser@5.51.2)) zimmerframe: 1.1.5 transitivePeerDependencies: - preact @@ -3620,7 +3620,7 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.12(preact@11.0.1)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2))': + '@prefresh/vite@2.4.12(preact@11.0.1)(supports-color@10.2.2)(vite@8.3.4(@types/node@26.6.4)(terser@5.51.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@prefresh/babel-plugin': 0.5.4(@babel/core@7.29.7(supports-color@10.2.2)) @@ -3628,7 +3628,7 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 11.0.1 - vite: 8.3.3(@types/node@26.6.4)(terser@5.51.2) + vite: 8.3.4(@types/node@26.6.4)(terser@5.51.2) transitivePeerDependencies: - supports-color @@ -3942,7 +3942,7 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.11.27: {} + baseline-browser-mapping@2.11.28: {} bin-build@3.0.0: dependencies: @@ -4003,10 +4003,10 @@ snapshots: browserslist@4.29.3: dependencies: - baseline-browser-mapping: 2.11.27 + baseline-browser-mapping: 2.11.28 caniuse-lite: 1.0.30001815 electron-to-chromium: 1.5.451 - node-releases: 2.0.57 + node-releases: 2.0.58 update-browserslist-db: 1.3.4(browserslist@4.29.3) buffer-alloc-unsafe@1.1.0: {} @@ -4125,11 +4125,11 @@ snapshots: concat-map@0.0.1: {} - concurrently@10.0.5: + concurrently@10.0.6: dependencies: chalk: 5.6.2 rxjs: 7.8.2 - shell-quote: 1.9.0 + shell-quote: 1.12.0 supports-color: 10.2.2 tree-kill: 1.2.2 yargs: 18.0.0 @@ -5307,7 +5307,7 @@ snapshots: css-select: 5.2.2 he: 1.2.0 - node-releases@2.0.57: {} + node-releases@2.0.58: {} normalize-package-data@2.5.0: dependencies: @@ -5724,7 +5724,7 @@ snapshots: shebang-regex@3.0.0: {} - shell-quote@1.9.0: {} + shell-quote@1.12.0: {} signal-exit@3.0.7: {} @@ -5982,7 +5982,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-imagemin@0.6.1(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)): + vite-plugin-imagemin@0.6.1(supports-color@10.2.2)(vite@8.3.4(@types/node@26.6.4)(terser@5.51.2)): dependencies: '@types/imagemin': 7.0.1 '@types/imagemin-gifsicle': 7.0.4 @@ -6007,11 +6007,11 @@ snapshots: imagemin-webp: 6.1.0 jpegtran-bin: 6.0.1 pathe: 0.2.0 - vite: 8.3.3(@types/node@26.6.4)(terser@5.51.2) + vite: 8.3.4(@types/node@26.6.4)(terser@5.51.2) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.14(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)): + vite-prerender-plugin@0.5.14(vite@8.3.4(@types/node@26.6.4)(terser@5.51.2)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -6019,9 +6019,9 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0 - vite: 8.3.3(@types/node@26.6.4)(terser@5.51.2) + vite: 8.3.4(@types/node@26.6.4)(terser@5.51.2) - vite@8.3.3(@types/node@26.6.4)(terser@5.51.2): + vite@8.3.4(@types/node@26.6.4)(terser@5.51.2): dependencies: lightningcss: 1.33.0 picomatch: 4.0.7 diff --git a/platformio.ini b/platformio.ini index 60b0b51a8..5c99e8ce1 100644 --- a/platformio.ini +++ b/platformio.ini @@ -65,15 +65,15 @@ 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/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 +platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Arduino Core 3.3.12 based on IDF 5.5.5 -; 16MB Flash variants - using EMS-ESP Arduino/IDF libs (not Tasmota) +; 16MB Flash variants [espressif32_base_16M] framework = arduino board_build.partitions = partitions/esp32_partition_16M.csv board_upload.flash_size = 16MB board_build.app_partition_name = app0 -platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 +platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Arduino Core 3.3.12 based on IDF 5.5.5 platform_packages = framework-arduinoespressif32 @ https://github.com/emsesp/esp32-arduino-lib-builder/releases/download/0910-1604-5.5.5/framework-arduinoespressif32-v5.5.5-a63b839f.tar.xz ; 32MB Flash variants @@ -82,7 +82,7 @@ framework = arduino board_build.partitions = partitions/esp32_partition_32M.csv board_upload.flash_size = 32MB board_build.app_partition_name = app0 -platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 +platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Arduino Core 3.3.12 based on IDF 5.5.5 [env] build_flags = @@ -155,9 +155,6 @@ custom_sdkconfig = '# CONFIG_MDNS_ENABLE_CONSOLE_CLI is not set' '# CONFIG_MDNS_ENABLE_BROWSE is not set' '# CONFIG_I2S_ISR_IRAM_SAFE is not set' - ; UART ISR must live in IRAM. Tasmota puts ringbuf ISRs in flash, which - ; forces CONFIG_UART_ISR_IN_IRAM=n and panics (Cache error) when the EMS - ; or console UART fires during a flash read (WiFi stop / mDNS / NVS). '# CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH is not set' 'CONFIG_UART_ISR_IN_IRAM=y' -- 2.54.0 From 04d373b93c4fe93d1a460a6fc7bd434d939058ae Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 10 Oct 2026 00:00:00 +0200 Subject: [PATCH 069/148] 3.9.0-dev.18 --- 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 98f549e52..a9ad69f24 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.9.0-dev.17a" +#define EMSESP_APP_VERSION "3.9.0-dev.18" -- 2.54.0 From 84bc0afeb7f0661fcff014e10417ed4a284cac89 Mon Sep 17 00:00:00 2001 From: gnakh Date: Sat, 10 Oct 2026 11:09:03 +0200 Subject: [PATCH 070/148] add heat pump dhw/disinfectduration (0xEA offset 15), #3278 The DHW thermal disinfection duration (time allowed to reach the disinfection temperature; on timeout HPC4x0 reports A01(5284)) is sent in UBAParameterWWPlus 0xEA offset 15 in steps of 10 min, but was not decoded. Add boiler/dhw/disinfectduration for heat pumps, readable and writeable, range 120-240 min as on the HPC410 menu. Tested on a Bosch Compress 3400AW with HPC410: changing the duration on the controller writes 0xEA offset 15 (150 min -> 0F, 180 -> 12), and writing 0B 08 EA 0F 11 from EMS-ESP made the HPC410 menu show 170 min without errors. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG_LATEST.md | 1 + src/core/locale_translations.h | 1 + src/devices/boiler.cpp | 23 +++++++++++++++++++++++ src/devices/boiler.h | 2 ++ 4 files changed, 27 insertions(+) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index d25e66f90..9b2aa95cc 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -20,6 +20,7 @@ This release is based on the latest Espressif/Arduino core version 3. It brings - new Application Setting "Automatically check for firmware updates", off by default. When enabled EMS-ESP asks emsesp.org for the latest version once a day on its own, otherwise it only asks when the WebUI wants to show it, so an unattended system never contacts emsesp.org - Automatically check and convert older 3.8.x filesystem to the new 3.9.0 format - heatpump pool: `poolon` (switch, 0x48A), `hppoolon` (pool heating active, 0x488), MP100 `poolshuntset` (0x5C4) and `poolrequest` (0x5BA), shorter pool names +- heat pump `dhw/disinfectduration`, the time allowed to reach the thermal disinfection temperature (0xEA offset 15, 120-240 min) [#3278](https://github.com/emsesp/EMS-ESP32/issues/3278) ## Fixed diff --git a/src/core/locale_translations.h b/src/core/locale_translations.h index f25b86f79..1269a0b6e 100644 --- a/src/core/locale_translations.h +++ b/src/core/locale_translations.h @@ -755,6 +755,7 @@ MAKE_TRANSLATION(wwDisinfect, "disinfect", "disinfection", "Desinfektion", "Desi MAKE_TRANSLATION(wwDisinfectDay, "disinfectday", "disinfection day", "Desinfektionstag", "Desinfectiedag", "Desinfektionsdag", "dzień dezynfekcji termicznej", "desinfeksjonsdag", "jour désinfection", "dezenfeksiyon günü", "giorno disinfezione", "deň dezinfekcie", "den dezinfekce") MAKE_TRANSLATION(wwDisinfectHour, "disinfecthour", "disinfection hour", "Desinfektionsstunde", "Desinfectieuur", "Desinfektionstimme", "godzina dezynfekcji termicznej", "desinfeksjonstime", "heure désinfection", "dezenfeksiyon saati", "ora disinfezione", "hodina dezinfekcie", "hodina dezinfekce") MAKE_TRANSLATION(wwDisinfectTime, "disinfecttime", "disinfection time", "Desinfektionszeit", "Desinfectietijd", "Desinfektionstid", "maksymalny czas trwania dezynfekcji termicznej", "desinfeksjonstid", "durée désinfection", "dezenfeksiyon zamanı", "orario disinfezione", "čas na dezinfekciu", "čas dezinfekce") +MAKE_TRANSLATION(wwDisinfectDuration, "disinfectduration", "disinfection duration", "Desinfektionsdauer", "Desinfectieduur", "Desinfektionsvaraktighet", "czas trwania dezynfekcji termicznej", "desinfeksjonsvarighet", "durée désinfection", "dezenfeksiyon süresi", "durata disinfezione", "trvanie dezinfekcie", "doba dezinfekce") MAKE_TRANSLATION(wwDailyHeating, "dailyheating", "daily heating", "täglich Heizen", "Dagelijks opwarmen", "Daglig Uppvärmning", "codzienne nagrzewanie", "daglig oppvarming", "chauffage quotidien", "günlük ısıtma", "riscaldamento giornaliero", "denné kúrenie", "denní ohřev") MAKE_TRANSLATION(wwDailyHeatTime, "dailyheattime", "daily heating time", "tägliche Heizzeit", "Tijd dagelijkse opwarming", "Daglig Uppvärmningstid", "czas trwania codziennego nagrzewania", "daglig oppvarmingstid", "heure chauffage quotidien", "günlük ısıtma süresi", "orario riscaldamento giornaliero", "denný čas vykurovania", "čas denního ohřevu") diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 029ac0d6d..d6a91c148 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -1090,6 +1090,18 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const MAKE_CF_CB(set_ww_disinfect_temp), 60, 80); + if (isHeatPump()) { + // time allowed to reach the disinfection temperature (120-240 min, steps of 10), on timeout HPC4x0 reports A01(5284), #3278 + register_device_value(DeviceValueTAG::TAG_DHW1, + &wwDisinfectDuration_, + DeviceValueType::UINT8, + DeviceValueNumOp::DV_NUMOP_MUL10, + FL_(wwDisinfectDuration), + DeviceValueUOM::MINUTES, + MAKE_CF_CB(set_ww_disinfect_duration), + 120, + 240); + } register_device_value(DeviceValueTAG::TAG_DHW1, &wwCircMode_, DeviceValueType::ENUM, @@ -1651,6 +1663,7 @@ void Boiler::process_UBAParameterWWPlus(const std::shared_ptr & has_update(telegram, wwCircMode_, 11); // 0=off, 1=1x3min... 6=6x3min, 7=continuous has_update(telegram, wwDisinfectionTemp_, 12); // setting here, status in E9 has_update(telegram, wwAlternatingOper_, 14); // 0x01 means enabled + has_update(telegram, wwDisinfectDuration_, 15); // heat pumps: disinfection duration in steps of 10 min, #3278 has_update(telegram, wwSelTempSingle_, 16); has_update(telegram, wwSelTempLow_, 18); has_update(telegram, wwMaxTemp_, 20); @@ -2506,6 +2519,16 @@ bool Boiler::set_ww_disinfect_temp(const char * value, const int8_t id) { return true; } +// Set the dhw disinfection duration (heat pumps), 0xEA offset 15 in steps of 10 min, #3278 +bool Boiler::set_ww_disinfect_duration(const char * value, const int8_t id) { + int v; + if (!Helpers::value2number(value, v, 120, 240)) { // HPC410 menu: 120-240 min in steps of 10 + return false; + } + write_command(EMS_TYPE_UBAParameterWWPlus, 15, (v + 5) / 10, EMS_TYPE_UBAParameterWWPlus); + return true; +} + // Set the dhw priority bool Boiler::set_ww_prio(const char * value, const int8_t) { bool b; diff --git a/src/devices/boiler.h b/src/devices/boiler.h index 281718dd7..165b2e245 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -70,6 +70,7 @@ class Boiler : public EMSdevice { uint8_t wwChargeType_; // DHW charge type (pump or 3-way-valve) uint8_t wwChargeOptimization_; // DHW charge optimization uint8_t wwDisinfectionTemp_; // DHW disinfection temperature to prevent infection + uint8_t wwDisinfectDuration_; // DHW disinfection duration, heat pumps (0xEA offset 15, steps of 10 min) uint8_t wwCircMode_; // DHW circulation pump mode uint8_t wwCirc_; // DHW circulation on/off uint16_t wwCurTemp_; // DHW current temperature @@ -431,6 +432,7 @@ class Boiler : public EMSdevice { bool set_ww_temp_eco(const char * value, const int8_t id); bool set_ww_temp_single(const char * value, const int8_t id); bool set_ww_disinfect_temp(const char * value, const int8_t id); + bool set_ww_disinfect_duration(const char * value, const int8_t id); bool set_ww_maxpower(const char * value, const int8_t id); bool set_ww_maxtemp(const char * value, const int8_t id); bool set_ww_flowTempOffset(const char * value, const int8_t id); -- 2.54.0 From 8c835a9e8b237d5a902327eab793c3ee1bf49376 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 10 Oct 2026 11:31:44 +0200 Subject: [PATCH 071/148] add factory reset to Recovery --- interface/package.json | 6 +- interface/pnpm-lock.yaml | 102 +++++++++++++-------------- interface/src/recovery/Dashboard.tsx | 53 +++++++++++++- interface/src/recovery/api.ts | 2 + interface/src/recovery/types.ts | 1 + mock-api/recoveryMock.js | 7 ++ platformio.ini | 6 -- recovery/main.cpp | 37 +++++++++- src/core/system.cpp | 33 +++++---- src/core/system.h | 4 +- 10 files changed, 172 insertions(+), 79 deletions(-) diff --git a/interface/package.json b/interface/package.json index 58d8d8f4c..36f53b16b 100644 --- a/interface/package.json +++ b/interface/package.json @@ -33,7 +33,7 @@ "@table-library/react-table-library": "4.1.15", "alova": "^3.5.5", "jwt-decode": "^4.0.0", - "preact": "^11.0.0", + "preact": "^11.0.1", "react": "^19.3.0", "react-dom": "^19.3.0", "react-icons": "^5.7.0", @@ -47,7 +47,7 @@ "@types/node": "^26.6.4", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", - "concurrently": "^10.0.5", + "concurrently": "^10.0.6", "eslint": "^10.12.0", "eslint-config-prettier": "^10.1.8", "etag": "^1.8.1", @@ -57,7 +57,7 @@ "terser": "^5.51.2", "typescript": "^6.0.3", "typescript-eslint": "^8.71.1", - "vite": "^8.3.3", + "vite": "^8.3.4", "vite-plugin-imagemin": "^0.6.1" }, "packageManager": "pnpm@12.10.1" diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index 91d2b5913..dec596efb 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -191,8 +191,8 @@ importers: specifier: ^4.0.0 version: 4.0.0 preact: - specifier: ^11.0.0 - version: 11.0.0 + specifier: ^11.0.1 + version: 11.0.1 react: specifier: ^19.3.0 version: 19.3.0 @@ -214,7 +214,7 @@ importers: version: 10.0.1(eslint@10.12.0(supports-color@10.2.2)) '@preact/preset-vite': specifier: ^2.10.6 - version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)) + version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.1)(supports-color@10.2.2)(vite@8.3.4(@types/node@26.6.4)(terser@5.51.2)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 version: 6.0.2(prettier@3.9.9)(supports-color@10.2.2) @@ -228,8 +228,8 @@ importers: specifier: ^19.3.0 version: 19.3.0(@types/react@19.3.0) concurrently: - specifier: ^10.0.5 - version: 10.0.5 + specifier: ^10.0.6 + version: 10.0.6 eslint: specifier: ^10.12.0 version: 10.12.0(supports-color@10.2.2) @@ -258,11 +258,11 @@ importers: specifier: ^8.71.1 version: 8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) vite: - specifier: ^8.3.3 - version: 8.3.3(@types/node@26.6.4)(terser@5.51.2) + specifier: ^8.3.4 + version: 8.3.4(@types/node@26.6.4)(terser@5.51.2) vite-plugin-imagemin: specifier: ^0.6.1 - version: 0.6.1(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)) + version: 0.6.1(supports-color@10.2.2)(vite@8.3.4(@types/node@26.6.4)(terser@5.51.2)) packages: @@ -1004,8 +1004,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.11.27: - resolution: {integrity: sha512-ElY12DaROGuan+lMmZ8Cvo/ZUbXPe7Enc/9VU/b1T3Kp4dwytRcNdR8DoSJN5SNJT/CuvcCA0DHDVmMOCePdRQ==} + baseline-browser-mapping@2.11.28: + resolution: {integrity: sha512-br0LOmjJqr6Rt4AEkadbcNf67Zpo7EPwKsWbjnRrJIa1QYFHQBqM4C7F2WTbV8ahTEcg1Eo+Y0aWjjORInYFyA==} engines: {node: '>=6.0.0'} hasBin: true @@ -1157,8 +1157,8 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - concurrently@10.0.5: - resolution: {integrity: sha512-JaP/CoftUrCcAFW/g//RbgEGwlelnEae6cfBLgH6ZdO6s8jPkn6p9SB9u6pdVxYXoiSnFqseOlHfrEfF82TVOg==} + concurrently@10.0.6: + resolution: {integrity: sha512-qgICXXFp2/3nAebRLmxcINKEXM1mLK3ij/y31P02VTs/KIkddIeC05n73DxOXsXMB9LFSqNU1/na3lDlOhcbIw==} engines: {node: '>=22'} hasBin: true @@ -1338,8 +1338,8 @@ packages: duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - electron-to-chromium@1.5.449: - resolution: {integrity: sha512-dKeYk/3SFQz+nXi5whp3OuJzeWABEG4zCtkWJ9+Vby1E1iFM2y0gElRtQvNXRPJTsj8WAF4HMP7hvP790QtJ9g==} + electron-to-chromium@1.5.452: + resolution: {integrity: sha512-cVvk1YBSj6571VmV6hdJTqj94Y79xSu8cj6Y9t6ae4Y4431z8/7EJFvu3rVp90xhfuv9BpPKUmaLfTo4+FOGBg==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -2318,8 +2318,8 @@ packages: node-html-parser@6.1.13: resolution: {integrity: sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==} - node-releases@2.0.57: - resolution: {integrity: sha512-kQK9LGGFiHtrWiNhZtA7Qbw17AQz+dmsEKODRIVTXA9+e5MS/2gZEBhYJt13GrAz5/IOZKddH/0Z3TP/Zgo+yw==} + node-releases@2.0.58: + resolution: {integrity: sha512-BdiKAgbfRlvfMq/XzO/AF9NPmaA8a+YpLAyAFTVFBj3gARrAIfWvNq7Q7NE4se3KgFu0KkrvQMxTS0XVnsGzHg==} engines: {node: '>=18'} normalize-package-data@2.5.0: @@ -2531,8 +2531,8 @@ packages: resolution: {integrity: sha512-C+y9x90UElAddDZmV4qOx9W53B61PO7cIqWz2dQsWlwswuq4mr8NEwytdGKboYbQlGZ3awrkTeNvcZiZNHnQ8A==} engines: {node: '>=20'} - preact@11.0.0: - resolution: {integrity: sha512-LRTLKuSe6VYPhvBDjwFaX+nuZnpsw6IN2GSboisAvhGsncylBmrbDCERhgKDn6yP2mAwbGvsB5OVyTe33M8gBg==} + preact@11.0.1: + resolution: {integrity: sha512-TNNwEq++jYNHy747LziCjPRVgEwnLSOIOAw/oYcjI3Tdnubx2EXtt76I0an8PATvUWtx/DX1kFIg1eFN+O/fkw==} peerDependencies: preact-render-to-string: '>=6.7.0' peerDependenciesMeta: @@ -2768,8 +2768,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shell-quote@1.9.0: - resolution: {integrity: sha512-Iov+JwFv/2HcTpcwNMKd8+IWNb8tboQJNQTkAY/LLVK7gGH9jy+LGkVqPxfekHl+yMmiqXszdGWXgkfml7hjqA==} + shell-quote@1.12.0: + resolution: {integrity: sha512-PcByqNyT/38F2kDNi006HAMRJaULuBzq/FOsw3qdZvX/GA9W/jamDaRskgHjubHiftXK5sIFxLNkvrXUwcof6Q==} engines: {node: '>= 0.4'} signal-exit@3.0.7: @@ -3015,8 +3015,8 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - update-browserslist-db@1.3.3: - resolution: {integrity: sha512-pJ2sYawQS0R/WI928Gj5GlPhTGzbMelq0+4INtSYNDV9ErKJcX6xjGWkoG/VnB3dpUm00zALaqkrUD77pO5TDQ==} + update-browserslist-db@1.3.4: + resolution: {integrity: sha512-t8wonIOdQyOjtPd2VktlBu6QjTVTks6v8bSi7kd0r2Vll8TK1JYDZtRRdbmCHOAMphkZgrzK+L+vXK4pyZ8t4A==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -3057,8 +3057,8 @@ packages: peerDependencies: vite: 5.x || 6.x || 7.x || 8.x - vite@8.3.3: - resolution: {integrity: sha512-cTAldKPImjg6c+gk48U19POPn3GCBzZwpdsN8ZMEEcbpes+6/wvfqUd0C2y3qYY4wsj8PwgFwrZ/1jBPVttMSg==} + vite@8.3.4: + resolution: {integrity: sha512-IftLE8phJhdNRIGNEV4JCCvfNScoZQVfcXaN8TQropWGJtOHcu+iAB9pHcuGvmEb/kddw0LBe/jS8ztdC6xdiQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -3591,19 +3591,19 @@ snapshots: '@popperjs/core@2.11.8': {} - '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2))': + '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.1)(supports-color@10.2.2)(vite@8.3.4(@types/node@26.6.4)(terser@5.51.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@prefresh/vite': 2.4.12(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)) + '@prefresh/vite': 2.4.12(preact@11.0.1)(supports-color@10.2.2)(vite@8.3.4(@types/node@26.6.4)(terser@5.51.2)) '@rollup/pluginutils': 5.4.0 babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.7(supports-color@10.2.2)) debug: 4.4.3(supports-color@10.2.2) magic-string: 0.30.21 picocolors: 1.1.1 - vite: 8.3.3(@types/node@26.6.4)(terser@5.51.2) - vite-prerender-plugin: 0.5.14(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)) + vite: 8.3.4(@types/node@26.6.4)(terser@5.51.2) + vite-prerender-plugin: 0.5.14(vite@8.3.4(@types/node@26.6.4)(terser@5.51.2)) zimmerframe: 1.1.5 transitivePeerDependencies: - preact @@ -3614,21 +3614,21 @@ snapshots: dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) - '@prefresh/core@1.5.11(preact@11.0.0)': + '@prefresh/core@1.5.11(preact@11.0.1)': dependencies: - preact: 11.0.0 + preact: 11.0.1 '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.12(preact@11.0.0)(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2))': + '@prefresh/vite@2.4.12(preact@11.0.1)(supports-color@10.2.2)(vite@8.3.4(@types/node@26.6.4)(terser@5.51.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@prefresh/babel-plugin': 0.5.4(@babel/core@7.29.7(supports-color@10.2.2)) - '@prefresh/core': 1.5.11(preact@11.0.0) + '@prefresh/core': 1.5.11(preact@11.0.1) '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 - preact: 11.0.0 - vite: 8.3.3(@types/node@26.6.4)(terser@5.51.2) + preact: 11.0.1 + vite: 8.3.4(@types/node@26.6.4)(terser@5.51.2) transitivePeerDependencies: - supports-color @@ -3942,7 +3942,7 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.11.27: {} + baseline-browser-mapping@2.11.28: {} bin-build@3.0.0: dependencies: @@ -4003,11 +4003,11 @@ snapshots: browserslist@4.29.3: dependencies: - baseline-browser-mapping: 2.11.27 + baseline-browser-mapping: 2.11.28 caniuse-lite: 1.0.30001815 - electron-to-chromium: 1.5.449 - node-releases: 2.0.57 - update-browserslist-db: 1.3.3(browserslist@4.29.3) + electron-to-chromium: 1.5.452 + node-releases: 2.0.58 + update-browserslist-db: 1.3.4(browserslist@4.29.3) buffer-alloc-unsafe@1.1.0: {} @@ -4125,11 +4125,11 @@ snapshots: concat-map@0.0.1: {} - concurrently@10.0.5: + concurrently@10.0.6: dependencies: chalk: 5.6.2 rxjs: 7.8.2 - shell-quote: 1.9.0 + shell-quote: 1.12.0 supports-color: 10.2.2 tree-kill: 1.2.2 yargs: 18.0.0 @@ -4370,7 +4370,7 @@ snapshots: duplexer3@0.1.5: {} - electron-to-chromium@1.5.449: {} + electron-to-chromium@1.5.452: {} emoji-regex@10.6.0: {} @@ -5307,7 +5307,7 @@ snapshots: css-select: 5.2.2 he: 1.2.0 - node-releases@2.0.57: {} + node-releases@2.0.58: {} normalize-package-data@2.5.0: dependencies: @@ -5501,7 +5501,7 @@ snapshots: powershell-utils@0.2.1: {} - preact@11.0.0: {} + preact@11.0.1: {} prelude-ls@1.2.1: {} @@ -5724,7 +5724,7 @@ snapshots: shebang-regex@3.0.0: {} - shell-quote@1.9.0: {} + shell-quote@1.12.0: {} signal-exit@3.0.7: {} @@ -5953,7 +5953,7 @@ snapshots: universalify@2.0.1: {} - update-browserslist-db@1.3.3(browserslist@4.29.3): + update-browserslist-db@1.3.4(browserslist@4.29.3): dependencies: browserslist: 4.29.3 escalade: 3.2.0 @@ -5982,7 +5982,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-imagemin@0.6.1(supports-color@10.2.2)(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)): + vite-plugin-imagemin@0.6.1(supports-color@10.2.2)(vite@8.3.4(@types/node@26.6.4)(terser@5.51.2)): dependencies: '@types/imagemin': 7.0.1 '@types/imagemin-gifsicle': 7.0.4 @@ -6007,11 +6007,11 @@ snapshots: imagemin-webp: 6.1.0 jpegtran-bin: 6.0.1 pathe: 0.2.0 - vite: 8.3.3(@types/node@26.6.4)(terser@5.51.2) + vite: 8.3.4(@types/node@26.6.4)(terser@5.51.2) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.14(vite@8.3.3(@types/node@26.6.4)(terser@5.51.2)): + vite-prerender-plugin@0.5.14(vite@8.3.4(@types/node@26.6.4)(terser@5.51.2)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -6019,9 +6019,9 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0 - vite: 8.3.3(@types/node@26.6.4)(terser@5.51.2) + vite: 8.3.4(@types/node@26.6.4)(terser@5.51.2) - vite@8.3.3(@types/node@26.6.4)(terser@5.51.2): + vite@8.3.4(@types/node@26.6.4)(terser@5.51.2): dependencies: lightningcss: 1.33.0 picomatch: 4.0.7 diff --git a/interface/src/recovery/Dashboard.tsx b/interface/src/recovery/Dashboard.tsx index 3ae9ba806..065a88844 100644 --- a/interface/src/recovery/Dashboard.tsx +++ b/interface/src/recovery/Dashboard.tsx @@ -6,6 +6,7 @@ import LogoutIcon from '@mui/icons-material/Logout'; import MemoryIcon from '@mui/icons-material/Memory'; import PlayArrowIcon from '@mui/icons-material/PlayArrow'; import RestartAltIcon from '@mui/icons-material/RestartAlt'; +import SettingsBackupRestoreIcon from '@mui/icons-material/SettingsBackupRestore'; import { Avatar, Box, @@ -32,7 +33,7 @@ import SectionContent from 'components/SectionContent'; import { toast } from 'components/toast'; import FirmwareUpload from './FirmwareUpload'; -import { HttpError, restart, setBootPartition } from './api'; +import { HttpError, factoryReset, restart, setBootPartition } from './api'; import type { RecoveryPartition, RecoveryStatus } from './types'; const formatMB = (bytes: number) => `${(bytes / 1048576).toFixed(2)} MB`; @@ -97,6 +98,7 @@ interface DashboardProps { const Dashboard = ({ status, onRestarting, onSignOut }: DashboardProps) => { const [confirmBoot, setConfirmBoot] = useState(); + const [confirmFactoryReset, setConfirmFactoryReset] = useState(false); const [pickedTarget, setPickedTarget] = useState(); const uploadTarget = pickedTarget ?? status.upload_target; @@ -132,6 +134,16 @@ const Dashboard = ({ status, onRestarting, onSignOut }: DashboardProps) => { } }; + const doFactoryReset = async () => { + setConfirmFactoryReset(false); + try { + await factoryReset(); + onRestarting(status.boot); + } catch (error) { + handleError(error); + } + }; + const otaPartitions = status.partitions.filter((p) => !p.factory); const hasFirmware = otaPartitions.some((p) => p.valid); const reason = recoveryReason( @@ -317,6 +329,16 @@ const Dashboard = ({ status, onRestarting, onSignOut }: DashboardProps) => { + {!status.disable_reset && ( + + )} + + + + export const restart = () => request('POST', '/rest/recovery/restart'); +export const factoryReset = () => request('POST', '/rest/recovery/format'); + export interface UploadHandle { promise: Promise; abort: () => void; diff --git a/interface/src/recovery/types.ts b/interface/src/recovery/types.ts index fa1ac57df..6f2b77397 100644 --- a/interface/src/recovery/types.ts +++ b/interface/src/recovery/types.ts @@ -39,6 +39,7 @@ export interface RecoveryStatus { wifi_ip?: string; wifi_rssi?: number; static_ip: boolean; + disable_reset: boolean; // factory reset is disabled in the EMS-ESP settings // only on boards with Ethernet configured eth_state?: 'disabled' | 'failed' | 'no_link' | 'connecting' | 'connected'; eth_ip?: string; diff --git a/mock-api/recoveryMock.js b/mock-api/recoveryMock.js index a6aeb82b7..5549dc5de 100644 --- a/mock-api/recoveryMock.js +++ b/mock-api/recoveryMock.js @@ -83,6 +83,7 @@ const status = (authenticated) => ({ wifi_started: false, wifi_connected: false, static_ip: true, + disable_reset: false, // set to true to test with the factory reset disabled eth_state: 'connected', eth_ip: '192.168.1.50', running: 'boot', @@ -162,6 +163,12 @@ export default function recoveryMock() { return restart(); } + if (url === '/rest/recovery/format' && req.method === 'POST') { + if (status(true).disable_reset) return send(res, 403); + send(res, 200); + return restart(); + } + if (url === '/rest/recovery/boot' && req.method === 'POST') { const { partition } = JSON.parse((await readBody(req)).toString() || '{}'); const p = state.partitions.find((x) => x.label === partition); diff --git a/platformio.ini b/platformio.ini index e07f18028..96b90738b 100644 --- a/platformio.ini +++ b/platformio.ini @@ -60,8 +60,6 @@ unbuild_flags = [espressif32_base_4M] 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/tasmota/platform-espressif32/releases/download/2026.05.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.8 based on IDF 5.5.4.260407 ; platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 @@ -69,8 +67,6 @@ platform = https://github.com/tasmota/platform-espressif32/releases/download/202 [espressif32_base_16M] framework = arduino board_build.partitions = partitions/esp32_partition_16M.csv -board_upload.flash_size = 16MB -board_build.app_partition_name = app0 platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.05.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.8 based on IDF 5.5.4.260407 ; platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 build_flags = @@ -82,8 +78,6 @@ build_flags = [espressif32_base_32M] framework = arduino board_build.partitions = partitions/esp32_partition_32M.csv -board_upload.flash_size = 32MB -board_build.app_partition_name = app0 platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.05.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.8 based on IDF 5.5.4.260407 ; platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 diff --git a/recovery/main.cpp b/recovery/main.cpp index 5e3870927..23089223f 100644 --- a/recovery/main.cpp +++ b/recovery/main.cpp @@ -5,7 +5,8 @@ // if one is set), and serves a cut-down WebUI to upload a new EMS-ESP firmware into the OTA partitions // or select which OTA partition to boot. // -// The EMS-ESP settings in LittleFS are only ever read, never written. +// The EMS-ESP settings in LittleFS are only ever read, never written, except for a factory reset +// which erases them. #include #include @@ -76,6 +77,7 @@ struct Settings { int8_t eth_power = -1; uint8_t eth_phy_addr = 0; uint8_t eth_clock_mode = 0; + bool disable_reset = false; // factory reset is disabled in the EMS-ESP settings std::vector admins; }; @@ -174,6 +176,7 @@ static void loadSettings() { settings.eth_power = doc["eth_power"] | -1; settings.eth_phy_addr = doc["eth_phy_addr"] | 0; settings.eth_clock_mode = doc["eth_clock_mode"] | 0; + settings.disable_reset = doc["disable_reset"] | false; } doc.clear(); @@ -185,6 +188,8 @@ static void loadSettings() { } } if (settings.admins.empty()) { + // the admin user couldn't be read, so sign in with the factory login but never allow a factory reset + settings.disable_reset = true; settings.admins.push_back({FACTORY_ADMIN_USERNAME, FACTORY_ADMIN_PASSWORD}); } @@ -449,8 +454,9 @@ static void handleStatus(AsyncWebServerRequest * request) { root["wifi_ip"] = WiFi.localIP().toString(); root["wifi_rssi"] = WiFi.RSSI(); } - root["wifi_started"] = wifi_started; - root["static_ip"] = settings.static_ip; + root["wifi_started"] = wifi_started; + root["static_ip"] = settings.static_ip; + root["disable_reset"] = settings.disable_reset; // only on boards with Ethernet configured if (eth_state[0] != '\0') { @@ -550,6 +556,30 @@ static void handleRestart(AsyncWebServerRequest * request) { restart_at = millis() + RESTART_DELAY_MS; } +// factory reset, erases all EMS-ESP settings and restarts +// only signed in admins are authorized (the recovery only accepts admin users), and only if not disabled in the settings +static void handleFactoryReset(AsyncWebServerRequest * request) { + if (!isAuthorized(request)) { + request->send(401); + return; + } + if (settings.disable_reset) { + LOG("Factory reset disabled"); + request->send(403); + return; + } + + const bool ok = LittleFS.format(); // the only place the recovery writes to the filesystem + LOG("Factory reset %s", ok ? "done" : "failed"); + if (!ok) { + request->send(500); + return; + } + + request->send(200); + restart_at = millis() + RESTART_DELAY_MS; +} + static void uploadFail(AsyncWebServerRequest * request, int code) { if (upload_error) { return; @@ -784,6 +814,7 @@ static void startNetwork() { static void startWebServer() { server.on("/rest/recovery/status", HTTP_GET, handleStatus); server.on("/rest/recovery/restart", HTTP_POST, handleRestart); + server.on("/rest/recovery/format", HTTP_POST, handleFactoryReset); server.on("/rest/uploadFile", HTTP_POST, handleUploadComplete, handleUpload); server.addHandler(new AsyncCallbackJsonWebHandler("/rest/signIn", handleSignIn)); server.addHandler(new AsyncCallbackJsonWebHandler("/rest/recovery/boot", handleSetBoot)); diff --git a/src/core/system.cpp b/src/core/system.cpp index 3d4523a8a..27d8489e7 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -959,23 +959,30 @@ void System::button_OnDblClick(PButton & b) { #endif } -// button long press +// button long press, held for BUTTON_LongPressDelay (3000 ms, 3 seconds) +// restart EMS-ESP void System::button_OnLongPress(PButton & b) { - LOG_NOTICE("Button pressed - long press - restart EMS-ESP"); - EMSESP::system_.system_restart("boot"); -} - -// button indefinite press -void System::button_OnVLongPress(PButton & b) { if (EMSESP::system_.disable_reset()) { - LOG_NOTICE("Factory reset disabled"); + LOG_NOTICE("reset disabled, can't boot"); return; } - LOG_NOTICE("Button pressed - very long press - perform factory reset"); - EMSESP::led_.start_led_fast_flash(5); // Start LED flash timer for 5 seconds + LOG_NOTICE("Button pressed - long press - restart EMS-ESP"); + EMSESP::system_.system_restart(); } -// push button +// button indefinite press, held for BUTTON_VLongPressDelay (6000 ms, 6 seconds) +// restart EMS_ESP into the Recovery boot menu, where you can optionally do a factory reset +void System::button_OnVLongPress(PButton & b) { + if (EMSESP::system_.disable_reset()) { + LOG_NOTICE("reset disabled, can't boot"); + return; + } + LOG_NOTICE("Button pressed - very long press - perform factory reset in Recovery Mode"); + EMSESP::system_.system_restart("boot"); + // EMSESP::led_.start_led_fast_flash(5); // Start LED flash timer for 5 seconds +} + +// push button, held for BUTTON_Debounce (200 ms) void System::button_init() { #ifndef EMSESP_STANDALONE if (!myPButton_.init(pbutton_gpio_, HIGH)) { @@ -3934,9 +3941,9 @@ void System::remove_optional_gpio(uint8_t pin) { // set unused gpios to default state input high-Z void System::reset_unused_gpios() { #if CONFIG_IDF_TARGET_ESP32 -constexpr uint8_t tx0 = 1; // don't change tx0 pin + constexpr uint8_t tx0 = 1; // don't change tx0 pin #else -constexpr uint8_t tx0 = 255; // no valid pin, chips have native USB, tx0 not connected to transceiver + constexpr uint8_t tx0 = 255; // no valid pin, chips have native USB, tx0 not connected to transceiver #endif 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; }); diff --git a/src/core/system.h b/src/core/system.h index 7eb43a802..58e5787a0 100644 --- a/src/core/system.h +++ b/src/core/system.h @@ -409,8 +409,8 @@ class System { static constexpr uint32_t BUTTON_DblClickDelay = 250; // Max period between clicks for a double click event (in ms) // button press delays - static constexpr uint32_t BUTTON_LongPressDelay = 3000; // Hold period for a long press event (in ms) - ~3 seconds - static constexpr uint32_t BUTTON_VLongPressDelay = 9500; // Hold period for a very long press event (in ms) - !10 seconds + static constexpr uint32_t BUTTON_LongPressDelay = 3000; // Hold period for a long press event (in ms) - 3 seconds + static constexpr uint32_t BUTTON_VLongPressDelay = 9500; // Hold period for a very long press event (in ms) - 9.5 seconds // healthcheck #ifdef EMSESP_PINGTEST -- 2.54.0 From 0719340f463aed0289ce6ec494051c265b1f6ab2 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 10 Oct 2026 12:18:07 +0200 Subject: [PATCH 072/148] formatting --- src/ESP32React/UploadFileService.cpp | 8 ++++---- src/core/system.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/ESP32React/UploadFileService.cpp b/src/ESP32React/UploadFileService.cpp index 801a67ffe..67d950fa5 100644 --- a/src/ESP32React/UploadFileService.cpp +++ b/src/ESP32React/UploadFileService.cpp @@ -32,10 +32,10 @@ void UploadFileService::handleUpload(AsyncWebServerRequest * request, const Stri // check details of the file, to see if its a valid bin or json file const std::size_t filesize = request->contentLength(); - _is_firmware = false; - _is_filesystem = false; - _is_recovery = false; - _response_sent = false; + _is_firmware = false; + _is_filesystem = false; + _is_recovery = false; + _response_sent = false; switch (OtaUpdater::classify(filename, filesize, emsesp::System::MIN_FIRMWARE_SIZE)) { case OtaUpdater::FileType::FILESYSTEM: diff --git a/src/core/system.h b/src/core/system.h index 58e5787a0..9ed145795 100644 --- a/src/core/system.h +++ b/src/core/system.h @@ -83,7 +83,7 @@ class System { static void check_crash_loop(); // call at boot once NVS is open, may restart into the factory partition - void recovery_installed(); // called on the AsyncTCP task after the recovery firmware was written + void recovery_installed(); // called on the AsyncTCP task after the recovery firmware was written std::string recovery_version() const; // empty if there's no recovery firmware // commands -- 2.54.0 From b7c795e32077f1c9975bc0511a3f2270c0c44dce Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 10 Oct 2026 12:28:49 +0200 Subject: [PATCH 073/148] pkg update --- interface/package.json | 4 +- interface/pnpm-lock.yaml | 101 ++++++++++++++++++++------------------- 2 files changed, 55 insertions(+), 50 deletions(-) diff --git a/interface/package.json b/interface/package.json index 36f53b16b..31905b4ab 100644 --- a/interface/package.json +++ b/interface/package.json @@ -28,8 +28,8 @@ "@alova/adapter-xhr": "2.3.3", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.1", - "@mui/icons-material": "^9.4.0", - "@mui/material": "^9.4.0", + "@mui/icons-material": "^9.5.0", + "@mui/material": "^9.5.0", "@table-library/react-table-library": "4.1.15", "alova": "^3.5.5", "jwt-decode": "^4.0.0", diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index dec596efb..d4020ce46 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -176,11 +176,11 @@ importers: specifier: ^11.14.1 version: 11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2) '@mui/icons-material': - specifier: ^9.4.0 - version: 9.4.0(@mui/material@9.4.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(@types/react@19.3.0)(react@19.3.0) + specifier: ^9.5.0 + version: 9.5.0(@mui/material@9.5.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(@types/react@19.3.0)(react@19.3.0) '@mui/material': - specifier: ^9.4.0 - version: 9.4.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + specifier: ^9.5.0 + version: 9.5.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) '@table-library/react-table-library': specifier: 4.1.15 version: 4.1.15(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(react-dom@19.3.0(react@19.3.0))(react@19.3.0) @@ -359,6 +359,9 @@ packages: resolution: {integrity: sha512-NpugTzbKgGrNe45Ui32cN8vCFFMxVtP/9rtfwv0nP5FRDAjvYBxJcLVpYA9mr1jxP6cnIT7x9LUzuDTbWYYNRA==} engines: {node: '>=6.9.0'} + '@babel/runtime@8.0.7': + resolution: {integrity: sha512-k0hagDDq/6w4v+0Sp4wFvIz/yswH5O7Va6aRTnD7N62Tnborp4X+YB+H3XUcWVSR4aE47WPEXiIIZchBs0GmYg==} + '@babel/template@7.29.7': resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} engines: {node: '>=6.9.0'} @@ -524,27 +527,27 @@ packages: '@keyv/serialize@1.1.1': resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==} - '@mui/core-downloads-tracker@9.4.0': - resolution: {integrity: sha512-d+gIYM1raJP87yrVQcVg+Q3vycVMArMkgu/TjJLi2vTvO9FHKWNRR1xs9nnN4eLpM9nGxxm02UMvc9BrmcUKvQ==} + '@mui/core-downloads-tracker@9.5.0': + resolution: {integrity: sha512-PErEpl3Lp+1ZqWYKI7GQU8XSiciAFmLbUAZ7IoaUL598HLy1UAFuEUMEJu8yAS1v8vkXYzWprMVZzky4UwXoOA==} - '@mui/icons-material@9.4.0': - resolution: {integrity: sha512-5PVgBYtLOXTk6u0YUAjoV9GoTUQDbeZ8g+pus2h0GphLT/rpmftRnB5D/Kw6QCAovB7EyBX7UxKdZqPBBAHUKw==} + '@mui/icons-material@9.5.0': + resolution: {integrity: sha512-dahtVaqnRUIBgaZ4WC9EdP+LgJ5d2rslASYIX+nDFG6+ssUiM11jQ+Gd1wH8vhUGoNA9ES40MYics5BI8zJFXQ==} engines: {node: '>=14.0.0'} peerDependencies: - '@mui/material': ^9.4.0 + '@mui/material': ^9.5.0 '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@types/react': optional: true - '@mui/material@9.4.0': - resolution: {integrity: sha512-6KKUIvkQ2r/s48s9VZV9JEZ1W2dRa7RndVsF+Ipx4CYxDOQeozeRsS5r9NiheFf8A5hpbqJJIGoX7hjg5X4XUw==} + '@mui/material@9.5.0': + resolution: {integrity: sha512-QgqvdVjZoKxP8E8SBxYY6LrdV+kw00moXweZQWBbMMdifPKZAGfUaaXhGKIca6fjKnCL6HJIe/AWWCpqNvyHVw==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.5.0 '@emotion/styled': ^11.3.0 - '@mui/material-pigment-css': ^9.4.0 + '@mui/material-pigment-css': ^9.5.0 '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -558,8 +561,8 @@ packages: '@types/react': optional: true - '@mui/private-theming@9.4.0': - resolution: {integrity: sha512-qQpX/2XPGDz5F2OIWzo4kkorURlDeXGKytRQudXCdLS5TuwKsMKaZyx77LZEVSB73c7o3UrLWwQ/goRuHBdtjw==} + '@mui/private-theming@9.5.0': + resolution: {integrity: sha512-UHZKySlr4ZJeA5HEhe/Tq1fhsR5573ViKYn7JV80dCVJtgqRQIplRSer1DHPg2Yi22llX7QRhgM0Vtrx4kZHSA==} engines: {node: '>=14.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -568,8 +571,8 @@ packages: '@types/react': optional: true - '@mui/styled-engine@9.4.0': - resolution: {integrity: sha512-SlqVEYqnyEgXMFW4JuIDMelyhKzoWBJ85v2mNCQd0XtU0uk7U9E1zaJZ06XqodhA8oJrb+4Q+3E/JlwBe4jWkw==} + '@mui/styled-engine@9.5.0': + resolution: {integrity: sha512-IX1ceHnZ0bJgzJRWO/Ayl4ME1rNmpWVYwV28yb089UAMR17rJkV1qfr7ApsWQXXPi1oi+2JapJrWQAiAnTlJHQ==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.4.1 @@ -581,8 +584,8 @@ packages: '@emotion/styled': optional: true - '@mui/system@9.4.0': - resolution: {integrity: sha512-AZz9z13oGS1J0BYeAFHTbV7PegCtPiE/uMEIi7TJ1kTx3Vkt+jUpLyXF/2uV8B6Y79iTh98kVeOH9fX3x3zXXg==} + '@mui/system@9.5.0': + resolution: {integrity: sha512-OZuAwvoiaaHpvn0a540VH1DUwwmojJubGfNmO2g+nb2ybNDP4/gF7t7aA6AMduELSuJ5yxwlzyFvUO3CfLv1Yg==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -597,16 +600,16 @@ packages: '@types/react': optional: true - '@mui/types@9.4.0': - resolution: {integrity: sha512-13DH0Oniua4WmGqeYbQAZqmiN7r4nfd0zwIoGJ5QeJwyIHgEmf+LkRw/jV1HZb6AiUoHX8Oxf4xgalq3vYHcIw==} + '@mui/types@9.5.0': + resolution: {integrity: sha512-O0S6xS80qEQqW2CYNrd4GlBEQ1xpMOHZ5b4zO/DaLu6NZmtthM6smEg0Gz/u9gX5vL+8NB3EiBIxmxSCcG590Q==} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@types/react': optional: true - '@mui/utils@9.4.0': - resolution: {integrity: sha512-WkzY8uYtqUDyGKPShrRQRBomfMQHddlsyKu/gRRESYO24tDPD2z0xRE8CBoUsWqpBa+YrFs9KixiS7kQRjsPAQ==} + '@mui/utils@9.5.0': + resolution: {integrity: sha512-8m0LfSgE2pj58znY3kZ+anwRKbnBkcu/7AJPA8L/77wEjN0QnpX4/zRAccyplp1VEUnMsUBADeTRin5Mkf7epA==} engines: {node: '>=14.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -3285,6 +3288,8 @@ snapshots: '@babel/runtime@7.29.10': {} + '@babel/runtime@8.0.7': {} + '@babel/template@7.29.7': dependencies: '@babel/code-frame': 7.29.7 @@ -3488,23 +3493,23 @@ snapshots: '@keyv/serialize@1.1.1': {} - '@mui/core-downloads-tracker@9.4.0': {} + '@mui/core-downloads-tracker@9.5.0': {} - '@mui/icons-material@9.4.0(@mui/material@9.4.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(@types/react@19.3.0)(react@19.3.0)': + '@mui/icons-material@9.5.0(@mui/material@9.5.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(@types/react@19.3.0)(react@19.3.0)': dependencies: - '@babel/runtime': 7.29.10 - '@mui/material': 9.4.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@babel/runtime': 8.0.7 + '@mui/material': 9.5.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) react: 19.3.0 optionalDependencies: '@types/react': 19.3.0 - '@mui/material@9.4.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': + '@mui/material@9.5.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: - '@babel/runtime': 7.29.10 - '@mui/core-downloads-tracker': 9.4.0 - '@mui/system': 9.4.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0) - '@mui/types': 9.4.0(@types/react@19.3.0) - '@mui/utils': 9.4.0(@types/react@19.3.0)(react@19.3.0) + '@babel/runtime': 8.0.7 + '@mui/core-downloads-tracker': 9.5.0 + '@mui/system': 9.5.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0) + '@mui/types': 9.5.0(@types/react@19.3.0) + '@mui/utils': 9.5.0(@types/react@19.3.0)(react@19.3.0) '@popperjs/core': 2.11.8 '@types/react-transition-group': 4.4.12(@types/react@19.3.0) clsx: 2.1.1 @@ -3519,18 +3524,18 @@ snapshots: '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2) '@types/react': 19.3.0 - '@mui/private-theming@9.4.0(@types/react@19.3.0)(react@19.3.0)': + '@mui/private-theming@9.5.0(@types/react@19.3.0)(react@19.3.0)': dependencies: - '@babel/runtime': 7.29.10 - '@mui/utils': 9.4.0(@types/react@19.3.0)(react@19.3.0) + '@babel/runtime': 8.0.7 + '@mui/utils': 9.5.0(@types/react@19.3.0)(react@19.3.0) prop-types: 15.8.1 react: 19.3.0 optionalDependencies: '@types/react': 19.3.0 - '@mui/styled-engine@9.4.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(react@19.3.0)': + '@mui/styled-engine@9.5.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(react@19.3.0)': dependencies: - '@babel/runtime': 7.29.10 + '@babel/runtime': 8.0.7 '@emotion/cache': 11.14.0 '@emotion/serialize': 1.3.3 '@emotion/sheet': 1.4.0 @@ -3541,13 +3546,13 @@ snapshots: '@emotion/react': 11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2) '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2) - '@mui/system@9.4.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)': + '@mui/system@9.5.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)': dependencies: - '@babel/runtime': 7.29.10 - '@mui/private-theming': 9.4.0(@types/react@19.3.0)(react@19.3.0) - '@mui/styled-engine': 9.4.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(react@19.3.0) - '@mui/types': 9.4.0(@types/react@19.3.0) - '@mui/utils': 9.4.0(@types/react@19.3.0)(react@19.3.0) + '@babel/runtime': 8.0.7 + '@mui/private-theming': 9.5.0(@types/react@19.3.0)(react@19.3.0) + '@mui/styled-engine': 9.5.0(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(react@19.3.0) + '@mui/types': 9.5.0(@types/react@19.3.0) + '@mui/utils': 9.5.0(@types/react@19.3.0)(react@19.3.0) clsx: 2.1.1 csstype: 3.2.3 prop-types: 15.8.1 @@ -3557,16 +3562,16 @@ snapshots: '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2))(@types/react@19.3.0)(react@19.3.0)(supports-color@10.2.2) '@types/react': 19.3.0 - '@mui/types@9.4.0(@types/react@19.3.0)': + '@mui/types@9.5.0(@types/react@19.3.0)': dependencies: - '@babel/runtime': 7.29.10 + '@babel/runtime': 8.0.7 optionalDependencies: '@types/react': 19.3.0 - '@mui/utils@9.4.0(@types/react@19.3.0)(react@19.3.0)': + '@mui/utils@9.5.0(@types/react@19.3.0)(react@19.3.0)': dependencies: - '@babel/runtime': 7.29.10 - '@mui/types': 9.4.0(@types/react@19.3.0) + '@babel/runtime': 8.0.7 + '@mui/types': 9.5.0(@types/react@19.3.0) '@types/prop-types': 15.7.15 clsx: 2.1.1 prop-types: 15.8.1 -- 2.54.0 From 62f2987b56da17f6a9af96354f42047a8e3e4154 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 10 Oct 2026 12:59:46 +0200 Subject: [PATCH 074/148] update changelog, use new core libs --- .github/workflows/pr_check.yml | 4 +- .github/workflows/stable_release.yml | 4 +- .github/workflows/test_release.yml | 4 +- CHANGELOG_LATEST.md | 2 +- CONTRIBUTING.md | 34 +++++++++ pio_local.ini_bak | 109 +++++++++++++++++++++++++++ platformio.ini | 14 +--- 7 files changed, 154 insertions(+), 17 deletions(-) create mode 100644 pio_local.ini_bak diff --git a/.github/workflows/pr_check.yml b/.github/workflows/pr_check.yml index d8b061db3..164112974 100644 --- a/.github/workflows/pr_check.yml +++ b/.github/workflows/pr_check.yml @@ -22,10 +22,10 @@ jobs: with: python-version: '3.13' - - name: Install PlatformIO + - name: Install pioarduino run: | pip install wheel - pip install -U platformio + pip install -U "pioarduino==6.2.0" - name: Run unit tests run: | diff --git a/.github/workflows/stable_release.yml b/.github/workflows/stable_release.yml index c96af1acb..7d2c174ce 100644 --- a/.github/workflows/stable_release.yml +++ b/.github/workflows/stable_release.yml @@ -38,10 +38,10 @@ jobs: version=`grep -E '^#define EMSESP_APP_VERSION' ./src/emsesp_version.h | awk -F'"' '{print $2}'` echo "VERSION=$version" >> $GITHUB_OUTPUT - - name: Install PlatformIO + - name: Install pioarduino run: | python -m pip install --upgrade pip - pip install -U platformio + pip install -U "pioarduino==6.2.0" python -m pip install intelhex - name: Build webUI diff --git a/.github/workflows/test_release.yml b/.github/workflows/test_release.yml index cc46c6a2c..efc1b31d5 100644 --- a/.github/workflows/test_release.yml +++ b/.github/workflows/test_release.yml @@ -39,10 +39,10 @@ jobs: version=`grep -E '^#define EMSESP_APP_VERSION' ./src/emsesp_version.h | awk -F'"' '{print $2}'` echo "VERSION=$version" >> $GITHUB_OUTPUT - - name: Install PlatformIO + - name: Install pioarduino run: | python -m pip install --upgrade pip - pip install -U platformio + pip install -U "pioarduino==6.2.0" python -m pip install intelhex - name: Build webUI diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index d6faa85c1..e2caf3112 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -74,5 +74,5 @@ This release is based on the latest Espressif/Arduino core version 3. It brings - failed versions.json fetches back off from 5 up to 160 minutes instead of retrying every 5 minutes, as each attempt blocks the main loop for as long as the DNS, connect and read timeouts allow - optimized the LED library to support WS2812B V5 and the newer V6 RGB LEDs - hold Tx while a K30RF/KM200 gateway is syncing [#3094](https://github.com/emsesp/EMS-ESP32/issues/3094) -- Tasmota platform 2026.05.50 (Arduino 3.3.8 / IDF 5.5.4) to 2026.09.50 (Arduino 3.3.12 / IDF 5.5.5) +- Tasmota platform 2026.05.50 (Arduino 3.3.8 / IDF 5.5.4) to 2026.09.50 (Arduino 3.3.12 / IDF 5.5.5). Building that platform needs PlatformIO Core ≥6.2.0; install `pioarduino==6.2.0` (official `platformio` is still 6.1.19). See CONTRIBUTING.md - CI dev-release firmware jobs run in parallel (webUI, firmware targets, standalone) instead of one serial job diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 04d99e530..41ab1ee29 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -10,6 +10,40 @@ Everybody is welcome and invited to contribute to the EMS-ESP Project by: This document describes rules that are in effect for this repository, meant for handling issues by contributors in the issue tracker and PRs. +## Building the firmware + +Arduino/IDF 3.3.12 (Tasmota platform `2026.09.50` in `platformio.ini`) needs **PlatformIO Core ≥6.2.0**. The official `platformio` package on PyPI is still 6.1.19, so `pio upgrade` and `pip install -U platformio` stay on 6.1.19 and you get: + +`IncompatiblePlatform: Development platform 'espressif32' is not compatible with PlatformIO Core v6.1.19 and depends on PlatformIO Core >=6.2.0.` + +Install **pioarduino** 6.2.0 (drop-in Core fork). It provides the same `pio` / `platformio` commands. + +**VS Code / Cursor** (PlatformIO IDE uses `~/.platformio/penv`): + +Linux / macOS: + +```bash +~/.platformio/penv/bin/pip install -U "pioarduino==6.2.0" +~/.platformio/penv/bin/pio --version +``` + +Windows (PowerShell): + +```powershell +& "$env:USERPROFILE\.platformio\penv\Scripts\pip.exe" install -U "pioarduino==6.2.0" +& "$env:USERPROFILE\.platformio\penv\Scripts\pio.exe" --version +``` + +You should see `PlatformIO Core, version 6.2.0`. Reload the window (or restart the IDE), then build again. + +**CLI-only / CI:** + +```bash +pip install -U "pioarduino==6.2.0" +# or: uv pip install --system pioarduino==6.2.0 +platformio --version +``` + ## Opening New Issues 1. Opening an issue means that a problem exists in the code and should be addressed by the project contributors. diff --git a/pio_local.ini_bak b/pio_local.ini_bak new file mode 100644 index 000000000..54dbfc56f --- /dev/null +++ b/pio_local.ini_bak @@ -0,0 +1,109 @@ +; example custom platformio ini file for EMS-ESP + +[common] +; custom build flags to use in my_build_flags +; -DEMSESP_UART_DEBUG ; debugging UART +; -DEMSESP_DEBUG ; enables DEBUG to the log. Will generate a lot of extra traffic on Console and Syslog +; -DEMSESP_DEFAULT_BOARD_PROFILE=\"NODEMCU\" ; hard code the default board name +; -DEMSESP_DEBUG_SENSOR ; additional debug for the sensors +; -DCORE_DEBUG_LEVEL=5 ; verbose core level debugging 5=verbose, 4=debug, 3=info +; -DEMSESP_TEST ; enable the tests. EN language only +; -DEMSESP_DE_ONLY ; only DE translated entity names +; -DEMSESP_EN_ONLY ; only EN translated entity names +; -DEMSESP_PINGTEST ; send log message every 1/2 second + +; my_build_flags = -DEMSESP_TEST -DEMSESP_DEBUG +; my_build_flags = -DEMSESP_DEBUG -DEMSESP_TEST -DEMSESP_PINGTEST +; my_build_flags = -DEMSESP_DEBUG -DCORE_DEBUG_LEVEL=5 +; my_build_flags = -DEMSESP_EN_ONLY -DEMSESP_TEST -DCORE_DEBUG_LEVEL=5 -DARDUINO_USB_CDC_ON_BOOT=1 +; my_build_flags = -DEMSESP_EN_ONLY +; my_build_flags = -DEMSESP_DEBUG +; my_build_flags = +; -D EMSESP_GATEWAY_TX_HOLD ; hold Tx while a K30RF/KM200 gateway is syncing, see issue #3094 +; -D EMSESP_TX_PRE_DELAY=1000 ; wait this many us before each Tx so we don't overlap the master's break, see issue #3094 + +my_build_flags = + +[platformio] +default_envs = s_16M_P ; BBQKees E32V2 +; default_envs = s_16M_P_custom ; BBQKees E32V2 with custom Arduino/IDF libs +; default_envs = recovery_s_16M_P ; recovery +; default_envs = crashtest_s_16M_P ; crash test +; 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 +; default_envs = c6 ; XIAO ESP32C +; default_envs = debug + +; default_envs = core3 +; default_envs = core2 + +[env] + +; uncomment if you want to upload the firmware via OTA (must have upload_protocol = custom) +extra_scripts = + post:scripts/rename_fw.py ; renames the firmware .bin file + scripts/upload.py ; optionally upload the firmware via OTA (must have upload_protocol = custom) + +; set the username and password for the admin account (default password is admin) +custom_username = admin +custom_password = admin + +; ** upload settings ** +; for direct USB, which is the default you can set an optional port for example: +; upload_port = /dev/ttyUSB0 +; upload_port = /dev/ttyACM0 + +; CH340G bridge tops out here reliably; drop back to 460800 if uploads fail +; upload_speed = 921600 +upload_speed = 2000000 + +; for direct via HTTP (OTA) set: +; upload_protocol = custom +; custom_emsesp_ip = or ems-esp.local + +upload_protocol = custom + +; custom_emsesp_ip = ems-esp.local ; E32V2.2 (test) +; custom_emsesp_ip = 192.168.1.39 ; E32V2.2 (test) +; custom_emsesp_ip = 192.168.1.75 ; E32V2.2 (test) v3.8.4 + +custom_emsesp_ip = ems-espP.local ; E32V2.2 (prod) +; custom_emsesp_ip = 10.10.10.202 ; E32V2.2 (prod) + +; custom_emsesp_ip = ems-esps32.local ; S32, 4MB no psramS32 +; custom_emsesp_ip = ems-espS3.local ; ems-espS3 +; custom_emsesp_ip = 10.10.10.175 ; Wemos Lolin S3 + +; lib_deps = +; bblanchon/ArduinoJson @ 7.4.3 +; ESP32Async/AsyncTCP @ 3.4.10 +; ESP32Async/ESPAsyncWebServer @ 3.11.0 +; https://github.com/mobizt/ReadyMail.git @ 0.4.0 +; https://github.com/mobizt/ESP_SSLClient.git @ 3.1.3 + ; https://github.com/emsesp/EMS-ESP-Modules.git @ 1.0.8 +; ; file://${PROJECT_DIR}/../modules/EMS-ESP-Modules + +; ** debug settings ** +; to be used with an ESP32-S3 which has an onboard JTAG, connect the OTG USB port to the PC +; if using an external JTAG board like the ESP-PROG set debug_tool = esp-prog, and use zadig to set the correct driver for the USB port +; see https://docs.platformio.org/en/stable/projectconf/sections/env/options/debug/debug_init_break.html for settings +; use with my_build_flags = -DEMSESP_EN_ONLY -DEMSESP_TEST -DCORE_DEBUG_LEVEL=5 -DARDUINO_USB_CDC_ON_BOOT=1 +[env:debug] +board = esp32-s3-devkitc-1 +framework = arduino +platform = espressif32@6.12.0 ; Arduino Core v2.0.17 / IDF v4.4.7 +board_build.partitions = partitions/esp32_partition_16M.csv +board_upload.flash_size = 16MB +board_build.app_partition_name = app0 +board_build.filesystem = littlefs +upload_protocol = esptool +build_type = debug +monitor_raw = no +monitor_filters = colorize, esp32_exception_decoder +debug_tool = esp-builtin +debug_init_break = +upload_speed = 2000000 +monitor_speed = 115200 +extra_scripts = diff --git a/platformio.ini b/platformio.ini index 67c440f4a..f02f21474 100644 --- a/platformio.ini +++ b/platformio.ini @@ -6,6 +6,8 @@ ; For example: EMS-ESP-3_7_0-dev_31-esp32-16MB+.bin ; ; boards can be found in https://github.com/pioarduino/platform-espressif32/tree/main/boards +; Tasmota platform 2026.09.50 needs PlatformIO Core >=6.2.0. Official platformio is still +; 6.1.19 — install pioarduino instead (see CONTRIBUTING.md). `pio upgrade` will not get 6.2.0. [platformio] ; build all supported targets. Use pio_local.ini to override and build specific targets. @@ -63,18 +65,11 @@ unbuild_flags = [espressif32_base_4M] 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/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Arduino Core 3.3.12 based on IDF 5.5.5 ; 16MB Flash variants [espressif32_base_16M] framework = arduino board_build.partitions = partitions/esp32_partition_16M.csv -board_upload.flash_size = 16MB -board_build.app_partition_name = app0 -platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Arduino Core 3.3.12 based on IDF 5.5.5 -platform_packages = framework-arduinoespressif32 @ https://github.com/emsesp/esp32-arduino-lib-builder/releases/download/0910-1604-5.5.5/framework-arduinoespressif32-v5.5.5-a63b839f.tar.xz build_flags = ${common.build_flags} -D EMSESP_HAS_RECOVERY ; installs and falls back to the recovery firmware in the factory partition @@ -84,11 +79,10 @@ build_flags = [espressif32_base_32M] framework = arduino board_build.partitions = partitions/esp32_partition_32M.csv -board_upload.flash_size = 32MB -board_build.app_partition_name = app0 -platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Arduino Core 3.3.12 based on IDF 5.5.5 [env] +platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Arduino Core 3.3.12 based on IDF 5.5.5 +platform_packages = framework-arduinoespressif32 @ https://github.com/emsesp/esp32-arduino-lib-builder/releases/download/0910-1604-5.5.5/framework-arduinoespressif32-v5.5.5-a63b839f.tar.xz build_flags = ${common.build_flags} build_unflags = -- 2.54.0 From b730716791f51edf9ba01dc23e7881be7e04a842 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 10 Oct 2026 13:33:08 +0200 Subject: [PATCH 075/148] update runners --- .github/workflows/dev_release.yml | 74 ++++++++++++++++++++++------ .github/workflows/stable_release.yml | 1 - .github/workflows/test_release.yml | 1 - 3 files changed, 60 insertions(+), 16 deletions(-) diff --git a/.github/workflows/dev_release.yml b/.github/workflows/dev_release.yml index 13c501cdf..262830617 100644 --- a/.github/workflows/dev_release.yml +++ b/.github/workflows/dev_release.yml @@ -30,7 +30,7 @@ jobs: uses: actions/checkout@v7 - name: Install pnpm - uses: pnpm/action-setup@v4 + uses: pnpm/action-setup@v6 with: package_json_file: interface/package.json @@ -40,7 +40,7 @@ jobs: node-version: 26 - name: Cache pnpm store - uses: actions/cache@v4 + uses: actions/cache@v6 with: path: ~/.local/share/pnpm/store key: ${{ runner.os }}-pnpm-${{ hashFiles('interface/package.json') }} @@ -56,7 +56,7 @@ jobs: pnpm build-webUI - name: Upload WWWData.h - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: wwwdata path: src/ESP32React/WWWData.h @@ -88,7 +88,7 @@ jobs: run: platformio run -e build_modbus - name: Upload modbus header - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: modbus-header path: src/core/modbus_entity_parameters.hpp @@ -117,7 +117,7 @@ jobs: run: uv pip install --system pioarduino==6.2.0 - name: Restore generated modbus header - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: name: modbus-header path: src/core @@ -126,7 +126,7 @@ jobs: run: platformio run -e build_standalone - name: Upload generated docs - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: generated-docs path: | @@ -160,7 +160,7 @@ jobs: enable-cache: false - name: Cache PlatformIO packages - uses: actions/cache@v4 + uses: actions/cache@v6 with: path: | ~/.platformio/.cache @@ -172,16 +172,16 @@ jobs: ${{ runner.os }}-pio- - name: Install pioarduino - run: uv pip install --system pioarduino==6.2.0 intelhex + run: uv pip install --system pioarduino==6.2.0 - name: Restore WWWData.h - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: name: wwwdata path: src/ESP32React - name: Restore generated modbus header - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: name: modbus-header path: src/core @@ -199,7 +199,7 @@ jobs: run: platformio run -e ${{ matrix.env }} - name: Upload firmware - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: firmware-${{ matrix.env }} path: build/firmware @@ -229,19 +229,19 @@ jobs: echo "REF=$prev" >> $GITHUB_OUTPUT - name: Restore generated modbus header - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: name: modbus-header path: src/core - name: Restore generated docs - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: name: generated-docs path: . - name: Restore firmware binaries - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: pattern: firmware-* merge-multiple: true @@ -250,6 +250,52 @@ jobs: - name: List firmware files run: ls -la build/firmware + # the recovery build needs PlatformIO, and pnpm + Node.js to build its own WebUI (recovery/WWWData.h) + - name: Install python 3.13 + uses: actions/setup-python@v7 + with: + python-version: '3.13' + + - name: Install uv + uses: astral-sh/setup-uv@v7 + with: + version: "latest" + enable-cache: false + + # falls back to the firmware jobs' caches, which hold the same toolchains + - name: Cache PlatformIO packages + uses: actions/cache@v6 + with: + path: | + ~/.platformio/.cache + ~/.platformio/packages + ~/.platformio/platforms + key: ${{ runner.os }}-pio-recovery-${{ hashFiles('platformio.ini') }} + restore-keys: | + ${{ runner.os }}-pio-recovery- + ${{ runner.os }}-pio- + + - name: Install pioarduino + run: uv pip install --system pioarduino==6.2.0 + + - name: Install pnpm + uses: pnpm/action-setup@v6 + with: + package_json_file: interface/package.json + + - name: Install Node.js 26 + uses: actions/setup-node@v7 + with: + node-version: 26 + + - name: Cache pnpm store + uses: actions/cache@v6 + with: + path: ~/.local/share/pnpm/store + key: ${{ runner.os }}-pnpm-${{ hashFiles('interface/package.json') }} + restore-keys: | + ${{ runner.os }}-pnpm- + - name: Build the recovery firmware for the 16MB boards run: | platformio run -e recovery_s_16M -e recovery_s_16M_P -e recovery_s3_16M_P diff --git a/.github/workflows/stable_release.yml b/.github/workflows/stable_release.yml index 7d2c174ce..eef57a122 100644 --- a/.github/workflows/stable_release.yml +++ b/.github/workflows/stable_release.yml @@ -42,7 +42,6 @@ jobs: run: | python -m pip install --upgrade pip pip install -U "pioarduino==6.2.0" - python -m pip install intelhex - name: Build webUI run: | diff --git a/.github/workflows/test_release.yml b/.github/workflows/test_release.yml index efc1b31d5..f531fbc2a 100644 --- a/.github/workflows/test_release.yml +++ b/.github/workflows/test_release.yml @@ -43,7 +43,6 @@ jobs: run: | python -m pip install --upgrade pip pip install -U "pioarduino==6.2.0" - python -m pip install intelhex - name: Build webUI run: | -- 2.54.0 From ec49237bd9eb252fde0237f64526bb22f1c088eb Mon Sep 17 00:00:00 2001 From: proddy <1230712+proddy@users.noreply.github.com> Date: Sat, 10 Oct 2026 11:41:25 +0000 Subject: [PATCH 076/148] chore: update generated files for v3.9.0-dev.18 --- Modbus-Entity-Registers.md | 8506 ++++++++++++++++++++++++++++++++++++ dump_entities.csv | 6069 +++++++++++++++++++++++++ dump_telegrams.csv | 238 + 3 files changed, 14813 insertions(+) create mode 100644 Modbus-Entity-Registers.md create mode 100644 dump_entities.csv create mode 100644 dump_telegrams.csv diff --git a/Modbus-Entity-Registers.md b/Modbus-Entity-Registers.md new file mode 100644 index 000000000..61f4c2cad --- /dev/null +++ b/Modbus-Entity-Registers.md @@ -0,0 +1,8506 @@ +--- +id: Modbus-Entity-Registers +--- +# Modbus Entity/Register Mapping + +:::warning +This file has been auto-generated. Do not modify. +::: + +## Devices of type \_boiler + +### CS5800i, CS6800i, WLW176i, WLW186i + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | +| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | +uint8 +| heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| mandefrost | manual defrost | cmd | | true | DEVICE_DATA | 88 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +| dhw.nrg | energy | uint24 | kWh | false | DHW | 0 | 2 | 1/100 | +| nrgheat | energy heating | uint24 | kWh | false | DEVICE_DATA | 91 | 2 | 1/100 | +| nrgcool | energy cooling | uint24 | kWh | false | DEVICE_DATA | 93 | 2 | 1/100 | +| metertotal | meter total | uint24 | kWh | false | DEVICE_DATA | 95 | 2 | 1/100 | +| metercomp | meter compressor | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/100 | +| metereheat | meter e-heater | uint24 | kWh | false | DEVICE_DATA | 99 | 2 | 1/100 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/100 | +| metercool | meter cooling | uint24 | kWh | false | DEVICE_DATA | 103 | 2 | 1/100 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/100 | +| uptimetotal | heatpump total uptime | time | minutes | false | DEVICE_DATA | 105 | 2 | 1/60 | +| uptimecontrol | total operating time heat | time | minutes | false | DEVICE_DATA | 107 | 2 | 1/60 | +| uptimecompheating | operating time compressor heating | time | minutes | false | DEVICE_DATA | 109 | 2 | 1/60 | +| uptimecompcooling | operating time compressor cooling | time | minutes | false | DEVICE_DATA | 111 | 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 | 113 | 2 | 1/60 | +| totalcompstarts | total compressor control starts | uint24 | | false | DEVICE_DATA | 115 | 2 | 1 | +| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 117 | 2 | 1 | +| coolingstarts | cooling control starts | uint24 | | false | DEVICE_DATA | 119 | 2 | 1 | +| dhw.startshp | starts hp | uint24 | | false | DHW | 6 | 2 | 1 | +| poolstarts | pool control starts | uint24 | | false | DEVICE_DATA | 121 | 2 | 1 | +| nrgconstotal | total energy consumption | uint24 | kWh | false | DEVICE_DATA | 123 | 2 | 1 | +| nrgconscomptotal | total energy consumption compressor | uint24 | kWh | false | DEVICE_DATA | 125 | 2 | 1 | +| nrgconscompheating | energy consumption compressor heating | uint24 | kWh | false | DEVICE_DATA | 127 | 2 | 1 | +| dhw.nrgconscomp | energy consumption compressor | uint24 | kWh | false | DHW | 8 | 2 | 1 | +| nrgconscompcooling | energy consumption compressor cooling | uint24 | kWh | false | DEVICE_DATA | 129 | 2 | 1 | +| nrgconscomppool | energy consumption compressor pool | uint24 | kWh | false | DEVICE_DATA | 131 | 2 | 1 | +| auxelecheatnrgconstotal | total aux elec. heater energy consumption | uint24 | kWh | false | DEVICE_DATA | 133 | 2 | 1 | +| auxelecheatnrgconsheating | aux elec. heater energy consumption heating | uint24 | kWh | false | DEVICE_DATA | 135 | 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 | 137 | 2 | 1 | +| nrgsupptotal | total energy supplied | uint24 | kWh | false | DEVICE_DATA | 139 | 2 | 1 | +| nrgsuppheating | total energy supplied heating | uint24 | kWh | false | DEVICE_DATA | 141 | 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 | 143 | 2 | 1 | +| nrgsupppool | total energy supplied pool | uint24 | kWh | false | DEVICE_DATA | 145 | 2 | 1 | +| hppower | compressor power output | uint16 | kW | false | DEVICE_DATA | 147 | 1 | 1/10 | +uint8 +| hpmaxpower | compressor max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 148 | 1 | 1 | +uint8 +| pvmaxcomp | pv compressor max power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 149 | 1 | 1/10 | +uint8 +| powerreduction | power reduction | uint8 (>=30<=60) | % | true | DEVICE_DATA | 150 | 1 | 10 | +uint8 +| hpsetdiffpress | set differential pressure | uint8 (>=150<=750) | mbar | true | DEVICE_DATA | 151 | 1 | 50 | +| hpcompon | hp compressor | boolean | | false | DEVICE_DATA | 152 | 1 | 1 | +| hpactivity | compressor activity | enum | | false | DEVICE_DATA | 153 | 1 | 1 | +| hppoolon | hp pool | boolean | | false | DEVICE_DATA | 154 | 1 | 1 | +| hpbrinepumpspd | brine pump speed | uint8 | % | false | DEVICE_DATA | 155 | 1 | 1 | +| hpswitchvalve | switch valve | boolean | | false | DEVICE_DATA | 156 | 1 | 1 | +| hpcompspd | compressor speed | uint8 | % | false | DEVICE_DATA | 157 | 1 | 1 | +| hptargetspd | compressor target speed | uint8 | % | false | DEVICE_DATA | 158 | 1 | 1 | +| hpcircspd | circulation pump speed | uint8 | % | false | DEVICE_DATA | 159 | 1 | 1 | +| recvalve | receiver valve VR0 | uint8 | % | false | DEVICE_DATA | 160 | 1 | 1 | +| expvalve | expansion valve VR1 | uint8 | % | false | DEVICE_DATA | 161 | 1 | 1 | +| hpbrinein | brine in/evaporator | int16 | C | false | DEVICE_DATA | 162 | 1 | 1/10 | +| hpbrineout | brine out/condenser | int16 | C | false | DEVICE_DATA | 163 | 1 | 1/10 | +| hptc0 | heat carrier return (TC0) | int16 | C | false | DEVICE_DATA | 164 | 1 | 1/10 | +| hptc1 | heat carrier forward (TC1) | int16 | C | false | DEVICE_DATA | 165 | 1 | 1/10 | +| hptc3 | condenser temperature (TC3) | int16 | C | false | DEVICE_DATA | 166 | 1 | 1/10 | +| hptr1 | compressor temperature (TR1) | int16 | C | false | DEVICE_DATA | 167 | 1 | 1/10 | +| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 | C | false | DEVICE_DATA | 168 | 1 | 1/10 | +| hptr4 | evaporator inlet temperature (TR4) | int16 | C | false | DEVICE_DATA | 169 | 1 | 1/10 | +| hptr5 | compressor inlet temperature (TR5) | int16 | C | false | DEVICE_DATA | 170 | 1 | 1/10 | +| hptr6 | compressor outlet temperature (TR6) | int16 | C | false | DEVICE_DATA | 171 | 1 | 1/10 | +| hptr7 | refrigerant temperature gas side (condenser input) (TR7) | int16 | C | false | DEVICE_DATA | 172 | 1 | 1/10 | +| hptl2 | air inlet temperature (TL2) | int16 | C | false | DEVICE_DATA | 173 | 1 | 1/10 | +| hppl1 | low pressure side temperature (PL1) | int16 | C | false | DEVICE_DATA | 174 | 1 | 1/10 | +| hpph1 | high pressure side temperature (PH1) | int16 | C | false | DEVICE_DATA | 175 | 1 | 1/10 | +| hpta4 | drain pan temp (TA4) | int16 | C | false | DEVICE_DATA | 176 | 1 | 1/10 | +| hptw1 | reservoir temp (TW1) | int16 | C | false | DEVICE_DATA | 177 | 1 | 1/10 | +| poolon | pool on | boolean | | true | DEVICE_DATA | 178 | 1 | 1 | +uint8 +| poolsettemp | pool setpoint | uint8 (>=0<=0) | C | true | DEVICE_DATA | 179 | 1 | 1/2 | +| hp4way | 4-way valve (VR4) | boolean | | false | DEVICE_DATA | 180 | 1 | 1 | +| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 181 | 1 | 1 | +| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 182 | 8 | 1 | +| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 190 | 1 | 1 | +| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 191 | 8 | 1 | +| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 199 | 1 | 1 | +| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 200 | 8 | 1 | +| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 208 | 1 | 1 | +| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 209 | 8 | 1 | +| maxheatcomp | heat limit compressor | enum | | true | DEVICE_DATA | 217 | 1 | 1 | +| maxheatheat | heat limit heating | enum | | true | DEVICE_DATA | 218 | 1 | 1 | +| dhw.maxheat | heat limit | enum | | true | DHW | 14 | 1 | 1 | +| auxheatersource | aux heater source | enum | | true | DEVICE_DATA | 219 | 1 | 1 | +| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 220 | 1 | 1 | +| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 221 | 1 | 1 | +| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 222 | 1 | 1 | +| auxheaterstatus | aux heater status | enum | | false | DEVICE_DATA | 223 | 1 | 1 | +| auxheaterlevel | aux heater level | uint8 | % | false | DEVICE_DATA | 224 | 1 | 1 | +uint16 +| auxheaterdelay | aux heater on delay | uint16 (>=10<=1000) | K*min | true | DEVICE_DATA | 225 | 1 | 10 | +uint8 +| auxmaxlimit | aux heater max limit | uint8 (>=0<=10) | K | true | DEVICE_DATA | 226 | 1 | 1/10 | +uint8 +| auxlimitstart | aux heater limit start | uint8 (>=0<=10) | K | true | DEVICE_DATA | 227 | 1 | 1/10 | +| auxheatrmode | aux heater mode | enum | | true | DEVICE_DATA | 228 | 1 | 1 | +uint16 +| hphystheat | on/off hyst heat | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 229 | 1 | 5 | +uint16 +| hphystcool | on/off hyst cool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 230 | 1 | 5 | +uint16 +| hphystpool | on/off hyst pool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 231 | 1 | 5 | +| silentmode | silent mode | enum | | true | DEVICE_DATA | 232 | 1 | 1 | +uint8 +| silentfrom | silent mode from | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 233 | 1 | 15 | +uint8 +| silentto | silent mode to | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 234 | 1 | 15 | +int8 +| mintempsilent | min outside temp for silent mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 235 | 1 | 1 | +int8 +| tempparmode | outside temp parallel mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 236 | 1 | 1 | +| auxheatmix | aux heater mixing valve | int8 | % | false | DEVICE_DATA | 237 | 1 | 1 | +uint8 +| tempdiffheat | temp diff TC3/TC0 heat | uint8 (>=2<=10) | K | true | DEVICE_DATA | 238 | 1 | 1/10 | +uint8 +| tempdiffcool | temp diff TC3/TC0 cool | uint8 (>=2<=10) | K | true | DEVICE_DATA | 239 | 1 | 1/10 | +| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 240 | 1 | 1 | +| heatcable | heating cable | boolean | | true | DEVICE_DATA | 241 | 1 | 1 | +| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 242 | 1 | 1 | +| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 243 | 1 | 1 | +uint8 +| primepumpmod | primary heatpump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 244 | 1 | 1 | +| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 245 | 1 | 1 | +| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 246 | 1 | 1 | +| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 247 | 1 | 1 | +| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 248 | 1 | 1 | +| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 249 | 1 | 1 | +| hppumpmode | primary heatpump mode | enum | | true | DEVICE_DATA | 250 | 1 | 1 | +uint8 +| fan | fan | uint8 (>=20<=100) | % | true | DEVICE_DATA | 251 | 1 | 1 | +| fanspd | fan speed | uint8 | % | false | DEVICE_DATA | 252 | 1 | 1 | +| shutdown | shutdown | cmd | | true | DEVICE_DATA | 253 | 1 | 1 | +| hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 254 | 1 | 1 | +uint16 +| hppowerlimit | power limit | uint16 (>=0<=0) | W | true | DEVICE_DATA | 255 | 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 | +uint8 +| dhw.altopprio | prioritise dhw during heating | uint8 (>=30<=120) | minutes | true | DHW | 17 | 1 | 1 | +uint8 +| dhw.comfoff | comfort switch off | uint8 (>=15<=65) | C | true | DHW | 18 | 1 | 1 | +uint8 +| dhw.ecooff | eco switch off | uint8 (>=15<=65) | C | true | DHW | 19 | 1 | 1 | +uint8 +| dhw.ecoplusoff | eco+ switch off | uint8 (>=48<=63) | C | true | DHW | 20 | 1 | 1 | +uint8 +| dhw.comfdiff | comfort diff | uint8 (>=6<=18) | K | true | DHW | 21 | 1 | 1 | +uint8 +| dhw.ecodiff | eco diff | uint8 (>=6<=18) | K | true | DHW | 22 | 1 | 1 | +uint8 +| dhw.ecoplusdiff | eco+ diff | uint8 (>=6<=15) | K | true | DHW | 23 | 1 | 1 | +uint8 +| dhw.comfstop | comfort stop temp | uint8 (>=0<=0) | C | true | DHW | 24 | 1 | 1 | +uint8 +| dhw.ecostop | eco stop temp | uint8 (>=0<=0) | C | true | DHW | 25 | 1 | 1 | +uint8 +| dhw.ecoplusstop | eco+ stop temp | uint8 (>=0<=0) | C | true | DHW | 26 | 1 | 1 | +| dhw.hpcircpump | circulation pump available during dhw | boolean | | true | DHW | 27 | 1 | 1 | +| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | +| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | + +### Greenstar 2000 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | +uint8 +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | +uint8 +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | +uint8 +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | +int8 +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +int8 +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | +int8 +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | +int8 +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | +uint8 +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | +uint8 +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | +uint8 +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| 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 | 282 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +uint24 +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | +uint24 +| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | + +### C1200W + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | +uint8 +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | +uint8 +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | +uint8 +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | +int8 +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +int8 +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | +int8 +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | +int8 +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | +uint8 +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | +uint8 +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | +uint8 +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| 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 | 282 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +uint24 +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | +uint24 +| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | + +### CS5800iG + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | +uint8 +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | +uint8 +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | +uint8 +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | +int8 +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +int8 +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | +int8 +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | +int8 +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | +uint8 +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | +uint8 +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | +uint8 +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| 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 | 282 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +uint24 +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | +uint24 +| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | + +### BK13/BK15, Smartline, GB1*2 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | +uint8 +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | +uint8 +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | +uint8 +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | +int8 +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +int8 +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | +int8 +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | +int8 +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | +uint8 +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | +uint8 +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | +uint8 +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| 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 | 282 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +uint24 +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | +uint24 +| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | + +### Logano GB1*5, Logamatic MC10 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | +uint8 +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | +uint8 +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | +uint8 +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | +int8 +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +int8 +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | +int8 +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | +int8 +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | +uint8 +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | +uint8 +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | +uint8 +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| 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 | 282 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +uint24 +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | +uint24 +| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | + +### Cascade CM10 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | +uint8 +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | +uint8 +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | +uint8 +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | +int8 +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +int8 +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | +int8 +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | +int8 +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | +uint8 +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | +uint8 +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | +uint8 +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| 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 | 282 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +uint24 +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | +uint24 +| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | + +### Logamax Plus GB022 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | +uint8 +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | +uint8 +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | +uint8 +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | +int8 +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +int8 +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | +int8 +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | +int8 +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | +uint8 +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | +uint8 +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | +uint8 +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| 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 | 282 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +uint24 +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | +uint24 +| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | + +### Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | +uint8 +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | +uint8 +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | +uint8 +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | +int8 +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +int8 +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | +int8 +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | +int8 +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | +uint8 +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | +uint8 +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | +uint8 +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| 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 | 282 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +uint24 +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | +uint24 +| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | + +### Topline, GB162 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | +uint8 +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | +uint8 +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | +uint8 +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | +int8 +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +int8 +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | +int8 +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | +int8 +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | +uint8 +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | +uint8 +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | +uint8 +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| 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 | 282 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +uint24 +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | +uint24 +| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | + +### Cascade MCM10 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | +uint8 +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | +uint8 +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | +uint8 +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | +int8 +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +int8 +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | +int8 +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | +int8 +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | +uint8 +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | +uint8 +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | +uint8 +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| 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 | 282 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +uint24 +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | +uint24 +| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | + +### Proline + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | +uint8 +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | +uint8 +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | +uint8 +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | +int8 +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +int8 +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | +int8 +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | +int8 +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | +uint8 +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | +uint8 +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | +uint8 +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| 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 | 282 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +uint24 +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | +uint24 +| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | + +### GB*72, Trendline, Cerapur, Greenstar Si + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | +uint8 +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | +uint8 +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | +uint8 +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | +int8 +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +int8 +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | +int8 +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | +int8 +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | +uint8 +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | +uint8 +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | +uint8 +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| 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 | 282 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +uint24 +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | +uint24 +| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | + +### GB212 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | +uint8 +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | +uint8 +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | +uint8 +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | +int8 +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +int8 +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | +int8 +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | +int8 +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | +uint8 +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | +uint8 +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | +uint8 +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| 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 | 282 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +uint24 +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | +uint24 +| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | + +### GC7000F + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | +uint8 +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | +uint8 +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | +uint8 +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | +int8 +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +int8 +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | +int8 +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | +int8 +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | +uint8 +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | +uint8 +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | +uint8 +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| 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 | 282 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +uint24 +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | +uint24 +| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | + +### Logano GB125/KB195i, Logamatic MC110 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | +uint8 +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | +uint8 +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | +uint8 +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | +int8 +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +int8 +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | +int8 +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | +int8 +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | +uint8 +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | +uint8 +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | +uint8 +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| 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 | 282 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +uint24 +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | +uint24 +| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | + +### Greenstar 30Ri Compact + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | +uint8 +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | +uint8 +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | +uint8 +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | +int8 +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +int8 +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | +int8 +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | +int8 +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | +uint8 +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | +uint8 +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | +uint8 +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| 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 | 282 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +uint24 +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | +uint24 +| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | + +### Suprapur-o + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | +uint8 +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | +uint8 +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | +uint8 +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | +int8 +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +int8 +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | +int8 +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | +int8 +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | +uint8 +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | +uint8 +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | +uint8 +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| 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 | 282 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +uint24 +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | +uint24 +| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | + +### Cerapur Aero + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | +uint8 +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | +uint8 +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | +uint8 +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | +int8 +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +int8 +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | +int8 +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | +int8 +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | +uint8 +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | +uint8 +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | +uint8 +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| 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 | 282 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +uint24 +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | +uint24 +| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | + +### Hybrid Heatpump + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | +uint8 +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | +uint8 +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | +uint8 +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | +int8 +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +int8 +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | +int8 +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | +int8 +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | +uint8 +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | +uint8 +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | +uint8 +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| 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 | 282 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +uint24 +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | +uint24 +| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | + +### Logano GB212 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | +uint8 +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | +uint8 +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | +uint8 +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | +int8 +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +int8 +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | +int8 +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | +int8 +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | +uint8 +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | +uint8 +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | +uint8 +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| 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 | 282 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +uint24 +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | +uint24 +| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | + +### Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | +| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | +uint8 +| heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| mandefrost | manual defrost | cmd | | true | DEVICE_DATA | 88 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +| dhw.nrg | energy | uint24 | kWh | false | DHW | 0 | 2 | 1/100 | +| nrgheat | energy heating | uint24 | kWh | false | DEVICE_DATA | 91 | 2 | 1/100 | +| nrgcool | energy cooling | uint24 | kWh | false | DEVICE_DATA | 93 | 2 | 1/100 | +| metertotal | meter total | uint24 | kWh | false | DEVICE_DATA | 95 | 2 | 1/100 | +| metercomp | meter compressor | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/100 | +| metereheat | meter e-heater | uint24 | kWh | false | DEVICE_DATA | 99 | 2 | 1/100 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/100 | +| metercool | meter cooling | uint24 | kWh | false | DEVICE_DATA | 103 | 2 | 1/100 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/100 | +| uptimetotal | heatpump total uptime | time | minutes | false | DEVICE_DATA | 105 | 2 | 1/60 | +| uptimecontrol | total operating time heat | time | minutes | false | DEVICE_DATA | 107 | 2 | 1/60 | +| uptimecompheating | operating time compressor heating | time | minutes | false | DEVICE_DATA | 109 | 2 | 1/60 | +| uptimecompcooling | operating time compressor cooling | time | minutes | false | DEVICE_DATA | 111 | 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 | 113 | 2 | 1/60 | +| totalcompstarts | total compressor control starts | uint24 | | false | DEVICE_DATA | 115 | 2 | 1 | +| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 117 | 2 | 1 | +| coolingstarts | cooling control starts | uint24 | | false | DEVICE_DATA | 119 | 2 | 1 | +| dhw.startshp | starts hp | uint24 | | false | DHW | 6 | 2 | 1 | +| poolstarts | pool control starts | uint24 | | false | DEVICE_DATA | 121 | 2 | 1 | +| nrgconstotal | total energy consumption | uint24 | kWh | false | DEVICE_DATA | 123 | 2 | 1 | +| nrgconscomptotal | total energy consumption compressor | uint24 | kWh | false | DEVICE_DATA | 125 | 2 | 1 | +| nrgconscompheating | energy consumption compressor heating | uint24 | kWh | false | DEVICE_DATA | 127 | 2 | 1 | +| dhw.nrgconscomp | energy consumption compressor | uint24 | kWh | false | DHW | 8 | 2 | 1 | +| nrgconscompcooling | energy consumption compressor cooling | uint24 | kWh | false | DEVICE_DATA | 129 | 2 | 1 | +| nrgconscomppool | energy consumption compressor pool | uint24 | kWh | false | DEVICE_DATA | 131 | 2 | 1 | +| auxelecheatnrgconstotal | total aux elec. heater energy consumption | uint24 | kWh | false | DEVICE_DATA | 133 | 2 | 1 | +| auxelecheatnrgconsheating | aux elec. heater energy consumption heating | uint24 | kWh | false | DEVICE_DATA | 135 | 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 | 137 | 2 | 1 | +| nrgsupptotal | total energy supplied | uint24 | kWh | false | DEVICE_DATA | 139 | 2 | 1 | +| nrgsuppheating | total energy supplied heating | uint24 | kWh | false | DEVICE_DATA | 141 | 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 | 143 | 2 | 1 | +| nrgsupppool | total energy supplied pool | uint24 | kWh | false | DEVICE_DATA | 145 | 2 | 1 | +| hppower | compressor power output | uint16 | kW | false | DEVICE_DATA | 147 | 1 | 1/10 | +uint8 +| hpmaxpower | compressor max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 148 | 1 | 1 | +uint8 +| pvmaxcomp | pv compressor max power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 149 | 1 | 1/10 | +uint8 +| powerreduction | power reduction | uint8 (>=30<=60) | % | true | DEVICE_DATA | 150 | 1 | 10 | +uint8 +| hpsetdiffpress | set differential pressure | uint8 (>=150<=750) | mbar | true | DEVICE_DATA | 151 | 1 | 50 | +| hpcompon | hp compressor | boolean | | false | DEVICE_DATA | 152 | 1 | 1 | +| hpactivity | compressor activity | enum | | false | DEVICE_DATA | 153 | 1 | 1 | +| hppoolon | hp pool | boolean | | false | DEVICE_DATA | 154 | 1 | 1 | +| hpbrinepumpspd | brine pump speed | uint8 | % | false | DEVICE_DATA | 155 | 1 | 1 | +| hpswitchvalve | switch valve | boolean | | false | DEVICE_DATA | 156 | 1 | 1 | +| hpcompspd | compressor speed | uint8 | % | false | DEVICE_DATA | 157 | 1 | 1 | +| hptargetspd | compressor target speed | uint8 | % | false | DEVICE_DATA | 158 | 1 | 1 | +| hpcircspd | circulation pump speed | uint8 | % | false | DEVICE_DATA | 159 | 1 | 1 | +| recvalve | receiver valve VR0 | uint8 | % | false | DEVICE_DATA | 160 | 1 | 1 | +| expvalve | expansion valve VR1 | uint8 | % | false | DEVICE_DATA | 161 | 1 | 1 | +| hpbrinein | brine in/evaporator | int16 | C | false | DEVICE_DATA | 162 | 1 | 1/10 | +| hpbrineout | brine out/condenser | int16 | C | false | DEVICE_DATA | 163 | 1 | 1/10 | +| hptc0 | heat carrier return (TC0) | int16 | C | false | DEVICE_DATA | 164 | 1 | 1/10 | +| hptc1 | heat carrier forward (TC1) | int16 | C | false | DEVICE_DATA | 165 | 1 | 1/10 | +| hptc3 | condenser temperature (TC3) | int16 | C | false | DEVICE_DATA | 166 | 1 | 1/10 | +| hptr1 | compressor temperature (TR1) | int16 | C | false | DEVICE_DATA | 167 | 1 | 1/10 | +| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 | C | false | DEVICE_DATA | 168 | 1 | 1/10 | +| hptr4 | evaporator inlet temperature (TR4) | int16 | C | false | DEVICE_DATA | 169 | 1 | 1/10 | +| hptr5 | compressor inlet temperature (TR5) | int16 | C | false | DEVICE_DATA | 170 | 1 | 1/10 | +| hptr6 | compressor outlet temperature (TR6) | int16 | C | false | DEVICE_DATA | 171 | 1 | 1/10 | +| hptr7 | refrigerant temperature gas side (condenser input) (TR7) | int16 | C | false | DEVICE_DATA | 172 | 1 | 1/10 | +| hptl2 | air inlet temperature (TL2) | int16 | C | false | DEVICE_DATA | 173 | 1 | 1/10 | +| hppl1 | low pressure side temperature (PL1) | int16 | C | false | DEVICE_DATA | 174 | 1 | 1/10 | +| hpph1 | high pressure side temperature (PH1) | int16 | C | false | DEVICE_DATA | 175 | 1 | 1/10 | +| hpta4 | drain pan temp (TA4) | int16 | C | false | DEVICE_DATA | 176 | 1 | 1/10 | +| hptw1 | reservoir temp (TW1) | int16 | C | false | DEVICE_DATA | 177 | 1 | 1/10 | +| poolon | pool on | boolean | | true | DEVICE_DATA | 178 | 1 | 1 | +uint8 +| poolsettemp | pool setpoint | uint8 (>=0<=0) | C | true | DEVICE_DATA | 179 | 1 | 1/2 | +| hp4way | 4-way valve (VR4) | boolean | | false | DEVICE_DATA | 180 | 1 | 1 | +| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 181 | 1 | 1 | +| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 182 | 8 | 1 | +| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 190 | 1 | 1 | +| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 191 | 8 | 1 | +| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 199 | 1 | 1 | +| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 200 | 8 | 1 | +| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 208 | 1 | 1 | +| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 209 | 8 | 1 | +| maxheatcomp | heat limit compressor | enum | | true | DEVICE_DATA | 217 | 1 | 1 | +| maxheatheat | heat limit heating | enum | | true | DEVICE_DATA | 218 | 1 | 1 | +| dhw.maxheat | heat limit | enum | | true | DHW | 14 | 1 | 1 | +| auxheatersource | aux heater source | enum | | true | DEVICE_DATA | 219 | 1 | 1 | +| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 220 | 1 | 1 | +| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 221 | 1 | 1 | +| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 222 | 1 | 1 | +| auxheaterstatus | aux heater status | enum | | false | DEVICE_DATA | 223 | 1 | 1 | +| auxheaterlevel | aux heater level | uint8 | % | false | DEVICE_DATA | 224 | 1 | 1 | +uint16 +| auxheaterdelay | aux heater on delay | uint16 (>=10<=1000) | K*min | true | DEVICE_DATA | 225 | 1 | 10 | +uint8 +| auxmaxlimit | aux heater max limit | uint8 (>=0<=10) | K | true | DEVICE_DATA | 226 | 1 | 1/10 | +uint8 +| auxlimitstart | aux heater limit start | uint8 (>=0<=10) | K | true | DEVICE_DATA | 227 | 1 | 1/10 | +| auxheatrmode | aux heater mode | enum | | true | DEVICE_DATA | 228 | 1 | 1 | +uint16 +| hphystheat | on/off hyst heat | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 229 | 1 | 5 | +uint16 +| hphystcool | on/off hyst cool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 230 | 1 | 5 | +uint16 +| hphystpool | on/off hyst pool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 231 | 1 | 5 | +| silentmode | silent mode | enum | | true | DEVICE_DATA | 232 | 1 | 1 | +uint8 +| silentfrom | silent mode from | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 233 | 1 | 15 | +uint8 +| silentto | silent mode to | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 234 | 1 | 15 | +int8 +| mintempsilent | min outside temp for silent mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 235 | 1 | 1 | +int8 +| tempparmode | outside temp parallel mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 236 | 1 | 1 | +| auxheatmix | aux heater mixing valve | int8 | % | false | DEVICE_DATA | 237 | 1 | 1 | +uint8 +| tempdiffheat | temp diff TC3/TC0 heat | uint8 (>=2<=10) | K | true | DEVICE_DATA | 238 | 1 | 1/10 | +uint8 +| tempdiffcool | temp diff TC3/TC0 cool | uint8 (>=2<=10) | K | true | DEVICE_DATA | 239 | 1 | 1/10 | +| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 240 | 1 | 1 | +| heatcable | heating cable | boolean | | true | DEVICE_DATA | 241 | 1 | 1 | +| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 242 | 1 | 1 | +| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 243 | 1 | 1 | +uint8 +| primepumpmod | primary heatpump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 244 | 1 | 1 | +| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 245 | 1 | 1 | +| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 246 | 1 | 1 | +| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 247 | 1 | 1 | +| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 248 | 1 | 1 | +| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 249 | 1 | 1 | +| hppumpmode | primary heatpump mode | enum | | true | DEVICE_DATA | 250 | 1 | 1 | +uint8 +| fan | fan | uint8 (>=20<=100) | % | true | DEVICE_DATA | 251 | 1 | 1 | +| fanspd | fan speed | uint8 | % | false | DEVICE_DATA | 252 | 1 | 1 | +| shutdown | shutdown | cmd | | true | DEVICE_DATA | 253 | 1 | 1 | +| hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 254 | 1 | 1 | +uint16 +| hppowerlimit | power limit | uint16 (>=0<=0) | W | true | DEVICE_DATA | 255 | 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 | +uint8 +| dhw.altopprio | prioritise dhw during heating | uint8 (>=30<=120) | minutes | true | DHW | 17 | 1 | 1 | +uint8 +| dhw.comfoff | comfort switch off | uint8 (>=15<=65) | C | true | DHW | 18 | 1 | 1 | +uint8 +| dhw.ecooff | eco switch off | uint8 (>=15<=65) | C | true | DHW | 19 | 1 | 1 | +uint8 +| dhw.ecoplusoff | eco+ switch off | uint8 (>=48<=63) | C | true | DHW | 20 | 1 | 1 | +uint8 +| dhw.comfdiff | comfort diff | uint8 (>=6<=18) | K | true | DHW | 21 | 1 | 1 | +uint8 +| dhw.ecodiff | eco diff | uint8 (>=6<=18) | K | true | DHW | 22 | 1 | 1 | +uint8 +| dhw.ecoplusdiff | eco+ diff | uint8 (>=6<=15) | K | true | DHW | 23 | 1 | 1 | +uint8 +| dhw.comfstop | comfort stop temp | uint8 (>=0<=0) | C | true | DHW | 24 | 1 | 1 | +uint8 +| dhw.ecostop | eco stop temp | uint8 (>=0<=0) | C | true | DHW | 25 | 1 | 1 | +uint8 +| dhw.ecoplusstop | eco+ stop temp | uint8 (>=0<=0) | C | true | DHW | 26 | 1 | 1 | +| dhw.hpcircpump | circulation pump available during dhw | boolean | | true | DHW | 27 | 1 | 1 | +| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | +| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | + +### Geo 5xx + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | +| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | +uint8 +| heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| mandefrost | manual defrost | cmd | | true | DEVICE_DATA | 88 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +| dhw.nrg | energy | uint24 | kWh | false | DHW | 0 | 2 | 1/100 | +| nrgheat | energy heating | uint24 | kWh | false | DEVICE_DATA | 91 | 2 | 1/100 | +| nrgcool | energy cooling | uint24 | kWh | false | DEVICE_DATA | 93 | 2 | 1/100 | +| metertotal | meter total | uint24 | kWh | false | DEVICE_DATA | 95 | 2 | 1/100 | +| metercomp | meter compressor | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/100 | +| metereheat | meter e-heater | uint24 | kWh | false | DEVICE_DATA | 99 | 2 | 1/100 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/100 | +| metercool | meter cooling | uint24 | kWh | false | DEVICE_DATA | 103 | 2 | 1/100 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/100 | +| uptimetotal | heatpump total uptime | time | minutes | false | DEVICE_DATA | 105 | 2 | 1/60 | +| uptimecontrol | total operating time heat | time | minutes | false | DEVICE_DATA | 107 | 2 | 1/60 | +| uptimecompheating | operating time compressor heating | time | minutes | false | DEVICE_DATA | 109 | 2 | 1/60 | +| uptimecompcooling | operating time compressor cooling | time | minutes | false | DEVICE_DATA | 111 | 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 | 113 | 2 | 1/60 | +| totalcompstarts | total compressor control starts | uint24 | | false | DEVICE_DATA | 115 | 2 | 1 | +| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 117 | 2 | 1 | +| coolingstarts | cooling control starts | uint24 | | false | DEVICE_DATA | 119 | 2 | 1 | +| dhw.startshp | starts hp | uint24 | | false | DHW | 6 | 2 | 1 | +| poolstarts | pool control starts | uint24 | | false | DEVICE_DATA | 121 | 2 | 1 | +| nrgconstotal | total energy consumption | uint24 | kWh | false | DEVICE_DATA | 123 | 2 | 1 | +| nrgconscomptotal | total energy consumption compressor | uint24 | kWh | false | DEVICE_DATA | 125 | 2 | 1 | +| nrgconscompheating | energy consumption compressor heating | uint24 | kWh | false | DEVICE_DATA | 127 | 2 | 1 | +| dhw.nrgconscomp | energy consumption compressor | uint24 | kWh | false | DHW | 8 | 2 | 1 | +| nrgconscompcooling | energy consumption compressor cooling | uint24 | kWh | false | DEVICE_DATA | 129 | 2 | 1 | +| nrgconscomppool | energy consumption compressor pool | uint24 | kWh | false | DEVICE_DATA | 131 | 2 | 1 | +| auxelecheatnrgconstotal | total aux elec. heater energy consumption | uint24 | kWh | false | DEVICE_DATA | 133 | 2 | 1 | +| auxelecheatnrgconsheating | aux elec. heater energy consumption heating | uint24 | kWh | false | DEVICE_DATA | 135 | 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 | 137 | 2 | 1 | +| nrgsupptotal | total energy supplied | uint24 | kWh | false | DEVICE_DATA | 139 | 2 | 1 | +| nrgsuppheating | total energy supplied heating | uint24 | kWh | false | DEVICE_DATA | 141 | 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 | 143 | 2 | 1 | +| nrgsupppool | total energy supplied pool | uint24 | kWh | false | DEVICE_DATA | 145 | 2 | 1 | +| hppower | compressor power output | uint16 | kW | false | DEVICE_DATA | 147 | 1 | 1/10 | +uint8 +| hpmaxpower | compressor max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 148 | 1 | 1 | +uint8 +| pvmaxcomp | pv compressor max power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 149 | 1 | 1/10 | +uint8 +| powerreduction | power reduction | uint8 (>=30<=60) | % | true | DEVICE_DATA | 150 | 1 | 10 | +uint8 +| hpsetdiffpress | set differential pressure | uint8 (>=150<=750) | mbar | true | DEVICE_DATA | 151 | 1 | 50 | +| hpcompon | hp compressor | boolean | | false | DEVICE_DATA | 152 | 1 | 1 | +| hpactivity | compressor activity | enum | | false | DEVICE_DATA | 153 | 1 | 1 | +| hppoolon | hp pool | boolean | | false | DEVICE_DATA | 154 | 1 | 1 | +| hpbrinepumpspd | brine pump speed | uint8 | % | false | DEVICE_DATA | 155 | 1 | 1 | +| hpswitchvalve | switch valve | boolean | | false | DEVICE_DATA | 156 | 1 | 1 | +| hpcompspd | compressor speed | uint8 | % | false | DEVICE_DATA | 157 | 1 | 1 | +| hptargetspd | compressor target speed | uint8 | % | false | DEVICE_DATA | 158 | 1 | 1 | +| hpcircspd | circulation pump speed | uint8 | % | false | DEVICE_DATA | 159 | 1 | 1 | +| recvalve | receiver valve VR0 | uint8 | % | false | DEVICE_DATA | 160 | 1 | 1 | +| expvalve | expansion valve VR1 | uint8 | % | false | DEVICE_DATA | 161 | 1 | 1 | +| hpbrinein | brine in/evaporator | int16 | C | false | DEVICE_DATA | 162 | 1 | 1/10 | +| hpbrineout | brine out/condenser | int16 | C | false | DEVICE_DATA | 163 | 1 | 1/10 | +| hptc0 | heat carrier return (TC0) | int16 | C | false | DEVICE_DATA | 164 | 1 | 1/10 | +| hptc1 | heat carrier forward (TC1) | int16 | C | false | DEVICE_DATA | 165 | 1 | 1/10 | +| hptc3 | condenser temperature (TC3) | int16 | C | false | DEVICE_DATA | 166 | 1 | 1/10 | +| hptr1 | compressor temperature (TR1) | int16 | C | false | DEVICE_DATA | 167 | 1 | 1/10 | +| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 | C | false | DEVICE_DATA | 168 | 1 | 1/10 | +| hptr4 | evaporator inlet temperature (TR4) | int16 | C | false | DEVICE_DATA | 169 | 1 | 1/10 | +| hptr5 | compressor inlet temperature (TR5) | int16 | C | false | DEVICE_DATA | 170 | 1 | 1/10 | +| hptr6 | compressor outlet temperature (TR6) | int16 | C | false | DEVICE_DATA | 171 | 1 | 1/10 | +| hptr7 | refrigerant temperature gas side (condenser input) (TR7) | int16 | C | false | DEVICE_DATA | 172 | 1 | 1/10 | +| hptl2 | air inlet temperature (TL2) | int16 | C | false | DEVICE_DATA | 173 | 1 | 1/10 | +| hppl1 | low pressure side temperature (PL1) | int16 | C | false | DEVICE_DATA | 174 | 1 | 1/10 | +| hpph1 | high pressure side temperature (PH1) | int16 | C | false | DEVICE_DATA | 175 | 1 | 1/10 | +| hpta4 | drain pan temp (TA4) | int16 | C | false | DEVICE_DATA | 176 | 1 | 1/10 | +| hptw1 | reservoir temp (TW1) | int16 | C | false | DEVICE_DATA | 177 | 1 | 1/10 | +| poolon | pool on | boolean | | true | DEVICE_DATA | 178 | 1 | 1 | +uint8 +| poolsettemp | pool setpoint | uint8 (>=0<=0) | C | true | DEVICE_DATA | 179 | 1 | 1/2 | +| hp4way | 4-way valve (VR4) | boolean | | false | DEVICE_DATA | 180 | 1 | 1 | +| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 181 | 1 | 1 | +| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 182 | 8 | 1 | +| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 190 | 1 | 1 | +| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 191 | 8 | 1 | +| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 199 | 1 | 1 | +| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 200 | 8 | 1 | +| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 208 | 1 | 1 | +| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 209 | 8 | 1 | +| maxheatcomp | heat limit compressor | enum | | true | DEVICE_DATA | 217 | 1 | 1 | +| maxheatheat | heat limit heating | enum | | true | DEVICE_DATA | 218 | 1 | 1 | +| dhw.maxheat | heat limit | enum | | true | DHW | 14 | 1 | 1 | +| auxheatersource | aux heater source | enum | | true | DEVICE_DATA | 219 | 1 | 1 | +| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 220 | 1 | 1 | +| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 221 | 1 | 1 | +| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 222 | 1 | 1 | +| auxheaterstatus | aux heater status | enum | | false | DEVICE_DATA | 223 | 1 | 1 | +| auxheaterlevel | aux heater level | uint8 | % | false | DEVICE_DATA | 224 | 1 | 1 | +uint16 +| auxheaterdelay | aux heater on delay | uint16 (>=10<=1000) | K*min | true | DEVICE_DATA | 225 | 1 | 10 | +uint8 +| auxmaxlimit | aux heater max limit | uint8 (>=0<=10) | K | true | DEVICE_DATA | 226 | 1 | 1/10 | +uint8 +| auxlimitstart | aux heater limit start | uint8 (>=0<=10) | K | true | DEVICE_DATA | 227 | 1 | 1/10 | +| auxheatrmode | aux heater mode | enum | | true | DEVICE_DATA | 228 | 1 | 1 | +uint16 +| hphystheat | on/off hyst heat | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 229 | 1 | 5 | +uint16 +| hphystcool | on/off hyst cool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 230 | 1 | 5 | +uint16 +| hphystpool | on/off hyst pool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 231 | 1 | 5 | +| silentmode | silent mode | enum | | true | DEVICE_DATA | 232 | 1 | 1 | +uint8 +| silentfrom | silent mode from | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 233 | 1 | 15 | +uint8 +| silentto | silent mode to | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 234 | 1 | 15 | +int8 +| mintempsilent | min outside temp for silent mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 235 | 1 | 1 | +int8 +| tempparmode | outside temp parallel mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 236 | 1 | 1 | +| auxheatmix | aux heater mixing valve | int8 | % | false | DEVICE_DATA | 237 | 1 | 1 | +uint8 +| tempdiffheat | temp diff TC3/TC0 heat | uint8 (>=2<=10) | K | true | DEVICE_DATA | 238 | 1 | 1/10 | +uint8 +| tempdiffcool | temp diff TC3/TC0 cool | uint8 (>=2<=10) | K | true | DEVICE_DATA | 239 | 1 | 1/10 | +| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 240 | 1 | 1 | +| heatcable | heating cable | boolean | | true | DEVICE_DATA | 241 | 1 | 1 | +| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 242 | 1 | 1 | +| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 243 | 1 | 1 | +uint8 +| primepumpmod | primary heatpump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 244 | 1 | 1 | +| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 245 | 1 | 1 | +| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 246 | 1 | 1 | +| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 247 | 1 | 1 | +| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 248 | 1 | 1 | +| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 249 | 1 | 1 | +| hppumpmode | primary heatpump mode | enum | | true | DEVICE_DATA | 250 | 1 | 1 | +uint8 +| fan | fan | uint8 (>=20<=100) | % | true | DEVICE_DATA | 251 | 1 | 1 | +| fanspd | fan speed | uint8 | % | false | DEVICE_DATA | 252 | 1 | 1 | +| shutdown | shutdown | cmd | | true | DEVICE_DATA | 253 | 1 | 1 | +| hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 254 | 1 | 1 | +uint16 +| hppowerlimit | power limit | uint16 (>=0<=0) | W | true | DEVICE_DATA | 255 | 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 | +uint8 +| dhw.altopprio | prioritise dhw during heating | uint8 (>=30<=120) | minutes | true | DHW | 17 | 1 | 1 | +uint8 +| dhw.comfoff | comfort switch off | uint8 (>=15<=65) | C | true | DHW | 18 | 1 | 1 | +uint8 +| dhw.ecooff | eco switch off | uint8 (>=15<=65) | C | true | DHW | 19 | 1 | 1 | +uint8 +| dhw.ecoplusoff | eco+ switch off | uint8 (>=48<=63) | C | true | DHW | 20 | 1 | 1 | +uint8 +| dhw.comfdiff | comfort diff | uint8 (>=6<=18) | K | true | DHW | 21 | 1 | 1 | +uint8 +| dhw.ecodiff | eco diff | uint8 (>=6<=18) | K | true | DHW | 22 | 1 | 1 | +uint8 +| dhw.ecoplusdiff | eco+ diff | uint8 (>=6<=15) | K | true | DHW | 23 | 1 | 1 | +uint8 +| dhw.comfstop | comfort stop temp | uint8 (>=0<=0) | C | true | DHW | 24 | 1 | 1 | +uint8 +| dhw.ecostop | eco stop temp | uint8 (>=0<=0) | C | true | DHW | 25 | 1 | 1 | +uint8 +| dhw.ecoplusstop | eco+ stop temp | uint8 (>=0<=0) | C | true | DHW | 26 | 1 | 1 | +| dhw.hpcircpump | circulation pump available during dhw | boolean | | true | DHW | 27 | 1 | 1 | +| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 | +| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | + +### Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | +uint8 +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | +uint8 +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | +uint8 +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | +int8 +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +int8 +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | +int8 +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | +int8 +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | +uint8 +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | +uint8 +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | +uint8 +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| 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 | 282 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +uint24 +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | +uint24 +| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | + +### Logamax U122, Cerapur + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | +uint8 +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | +uint8 +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | +uint8 +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | +int8 +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +int8 +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | +int8 +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | +int8 +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | +uint8 +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | +uint8 +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | +uint8 +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| 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 | 282 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +uint24 +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | +uint24 +| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | + +### Ecomline Excellent + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | +uint8 +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | +uint8 +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | +uint8 +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | +int8 +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +int8 +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | +int8 +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | +int8 +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | +uint8 +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | +uint8 +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | +uint8 +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| 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 | 282 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +uint24 +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | +uint24 +| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | + +### Logamax Plus, GB192, Condens GC9000, Greenstar ErP + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | +uint8 +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | +uint8 +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | +uint8 +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | +int8 +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +int8 +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | +int8 +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | +int8 +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | +uint8 +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | +uint8 +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | +uint8 +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| 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 | 282 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +uint24 +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | +uint24 +| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | + +### Cascade MC400 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | +uint8 +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | +uint8 +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | +uint8 +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | +int8 +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +int8 +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | +int8 +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | +int8 +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | +uint8 +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | +uint8 +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | +uint8 +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| 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 | 282 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +uint24 +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | +uint24 +| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | + +### EasyControl Adapter + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | +uint8 +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | +uint8 +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | +uint8 +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | +int8 +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +int8 +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | +int8 +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | +int8 +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | +uint8 +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | +uint8 +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | +uint8 +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| 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 | 282 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +uint24 +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | +uint24 +| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | + +### Greenstar HIU, Logamax kompakt WS170 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| netflowtemp | heat network flow temp | uint16 | C | false | DEVICE_DATA | 283 | 1 | 1/10 | +| heatvalve | heating valve | uint8 | % | false | DEVICE_DATA | 284 | 1 | 1 | +| dhw.dhwvalve | valve | uint8 | % | false | DHW | 75 | 1 | 1 | +uint8 +| keepwarmtemp | keep warm temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 285 | 1 | 1 | +uint8 +| setreturntemp | set temp return | uint8 (>=0<=0) | C | true | DEVICE_DATA | 286 | 1 | 1 | +| heating | heating | boolean | | false | DEVICE_DATA | 287 | 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | +| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 1 | 1 | +uint8 +| heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 15 | 1 | 1 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | + +### Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| heatingactive | heating active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 | +| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 6 | 1 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| curflowtemp | current flow temperature | uint16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| rettemp | return temperature | uint16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| switchtemp | mixing switch temperature | uint16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| 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 | 256 | 1 | 1/10 | +| burngas | gas | boolean | | false | DEVICE_DATA | 257 | 1 | 1 | +| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 258 | 1 | 1 | +| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 259 | 1 | 1/10 | +| fanwork | fan | boolean | | false | DEVICE_DATA | 260 | 1 | 1 | +| ignwork | ignition | boolean | | false | DEVICE_DATA | 261 | 1 | 1 | +| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 262 | 1 | 1 | +uint8 +| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 263 | 1 | 1 | +uint8 +| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 264 | 1 | 1 | +uint8 +| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 265 | 1 | 1 | +| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 266 | 1 | 1 | +| heatblock | Heatblock temperature | uint16 | C | false | DEVICE_DATA | 267 | 1 | 1/10 | +int8 +| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 268 | 1 | 1 | +int8 +| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 269 | 1 | 1 | +int8 +| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 270 | 1 | 1 | +int8 +| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 271 | 1 | 1 | +| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 272 | 1 | 1 | +uint8 +| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 273 | 1 | 1 | +uint8 +| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 274 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 275 | 1 | 1 | +| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 276 | 1 | 1 | +uint8 +| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 277 | 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 | +| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 16 | 1 | 1 | +uint8 +| pumpmodmax | boiler pump max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 17 | 1 | 1 | +uint8 +| pumpmodmin | boiler pump min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 18 | 1 | 1 | +| pumpmode | boiler pump mode | enum | | true | DEVICE_DATA | 19 | 1 | 1 | +| pumpcharacter | boiler pump characteristic | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +uint8 +| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 21 | 1 | 1 | +uint8 +| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 22 | 1 | 1 | +uint8 +| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 23 | 1 | 1 | +| curburnpow | burner current power | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| burnstarts | burner starts | uint24 | | false | DEVICE_DATA | 25 | 2 | 1 | +| burnworkmin | total burner operating time | time | minutes | false | DEVICE_DATA | 27 | 2 | 1 | +| burn2workmin | burner stage 2 operating time | time | minutes | false | DEVICE_DATA | 29 | 2 | 1 | +| heatworkmin | total heat operating time | time | minutes | false | DEVICE_DATA | 31 | 2 | 1 | +| heatstarts | burner starts heating | uint24 | | false | DEVICE_DATA | 33 | 2 | 1 | +| ubauptime | total UBA operating time | time | minutes | false | DEVICE_DATA | 35 | 2 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 37 | 28 | 1 | +| servicecode | service code | string | | false | DEVICE_DATA | 65 | 2 | 1 | +| servicecodenumber | service code number | uint16 | | false | DEVICE_DATA | 67 | 1 | 1 | +| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 | +| maintenance | maintenance scheduled | enum | | true | DEVICE_DATA | 70 | 1 | 1 | +uint16 +| maintenancetime | time to next maintenance | uint16 (>=0<=0) | hours | true | DEVICE_DATA | 71 | 1 | 1 | +| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 72 | 6 | 1 | +| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 78 | 1 | 1 | +uint8 +| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 79 | 1 | 1 | +| pc0lpm | Flow PC0 | uint16 | l/min | false | DEVICE_DATA | 80 | 1 | 1/10 | +| pc0flow | Flow PC0 | uint16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 | +| pc1flow | Flow PC1 | uint16 | l/h | false | DEVICE_DATA | 82 | 1 | 1 | +| pc1on | PC1 | boolean | | false | DEVICE_DATA | 83 | 1 | 1 | +| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 84 | 1 | 1 | +uint8 +| pumpkickhour | pump kick hour | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 85 | 1 | 1 | +| pumpkickday | pump kick day | enum | | true | DEVICE_DATA | 86 | 1 | 1 | +uint16 +| pumpkickdelay | pump kick delay | uint16 (>=0<=32767) | minutes | true | DEVICE_DATA | 87 | 1 | 1 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | +| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 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 | +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 30 | 1 | 1 | +uint8 +| dhw.seltemplow | selected lower temperature | uint8 (>=0<=0) | C | true | DHW | 31 | 1 | 1 | +uint8 +| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=0) | C | true | DHW | 32 | 1 | 1 | +| dhw.seltempoff | selected temperature for off | uint8 | C | false | DHW | 33 | 1 | 1 | +uint8 +| dhw.seltempsingle | single charge temperature | uint8 (>=0<=0) | C | true | DHW | 34 | 1 | 1 | +| dhw.solartemp | solar boiler temperature | uint16 | C | false | DHW | 35 | 1 | 1/10 | +| dhw.type | type | enum | | false | DHW | 36 | 1 | 1 | +| dhw.comfort | comfort | enum | | true | DHW | 37 | 1 | 1 | +| dhw.comfort1 | comfort mode | enum | | true | DHW | 38 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 | +| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 | +uint8 +| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 | +| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 | +| dhw.chargetype | charging type | enum | | false | DHW | 44 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 45 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | +| 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 | 282 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | +uint24 +| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 91 | 2 | 1/100 | +uint24 +| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 | + +## Devices of type \_thermostat + +### Logamatic TC100, Moduline Easy + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| hc1.seltemp | selected room temperature | int16 | C | false | HC | 0 | 1 | 1/100 | +| hc1.currtemp | current room temperature | int16 | C | false | HC | 1 | 1 | 1/100 | +| hc1.haclimate | mqtt discovery current room temperature | enum | | false | HC | 2 | 1 | 1 | + +### EasyControl, CT200 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| hc1.seltemp | selected room temperature | int16 | C | false | HC | 0 | 1 | 1/100 | +| hc1.currtemp | current room temperature | int16 | C | false | HC | 1 | 1 | 1/100 | +| hc1.haclimate | mqtt discovery current room temperature | enum | | false | HC | 2 | 1 | 1 | + +### UI800, BC400 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | | true | DEVICE_DATA | 33 | 13 | 1 | +int8 +| intoffset | internal temperature offset | int8 (>=0<=0) | C | true | DEVICE_DATA | 46 | 1 | 1/10 | +| floordry | floor drying | enum | | false | DEVICE_DATA | 47 | 1 | 1 | +| dampedoutdoortemp | damped outdoor temperature | int16 | C | false | DEVICE_DATA | 48 | 1 | 1/10 | +| floordrytemp | floor drying temperature | uint8 | C | false | DEVICE_DATA | 49 | 1 | 1 | +| building | building type | enum | | true | DEVICE_DATA | 50 | 1 | 1 | +int8 +| minexttemp | minimal external temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 51 | 1 | 1 | +| damping | damping outdoor temperature | boolean | | true | DEVICE_DATA | 52 | 1 | 1 | +| solar | solar | boolean | | true | DEVICE_DATA | 53 | 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 | +uint8 +| energycostratio | energy cost ratio | uint8 (>=0<=20) | | true | DEVICE_DATA | 56 | 1 | 1/10 | +uint8 +| fossilefactor | fossile energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 57 | 1 | 1/10 | +uint8 +| electricfactor | electric energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 58 | 1 | 1/10 | +uint8 +| delayboiler | delay boiler support | uint8 (>=5<=120) | minutes | true | DEVICE_DATA | 59 | 1 | 1 | +uint8 +| tempdiffboiler | temp diff boiler support | uint8 (>=1<=99) | C | true | DEVICE_DATA | 60 | 1 | 1 | +| pvenabledhw | enable raise dhw | boolean | | true | DEVICE_DATA | 61 | 1 | 1 | +int8 +| pvraiseheat | raise heating with PV | int8 (>=0<=5) | K | true | DEVICE_DATA | 62 | 1 | 1 | +int8 +| pvlowercool | lower cooling with PV | int8 (>=-5<=0) | K | true | DEVICE_DATA | 63 | 1 | 1 | +| absent | absent | boolean | | true | DEVICE_DATA | 64 | 1 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/2 | +| 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.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +uint8 +| hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 | +uint8 +| hc1.manualtemp | manual temperature | uint8 (>=0<=0) | C | true | HC | 6 | 1 | 1/2 | +uint8 +| hc1.comforttemp | comfort temperature | uint8 (>=0<=0) | C | true | HC | 7 | 1 | 1/2 | +uint8 +| hc1.summertemp | summer temperature | uint8 (>=10<=30) | C | true | HC | 8 | 1 | 1 | +uint8 +| hc1.designtemp | design temperature | uint8 (>=0<=0) | C | true | HC | 9 | 1 | 1 | +int8 +| hc1.offsettemp | offset temperature | int8 (>=0<=0) | C | true | HC | 10 | 1 | 1 | +uint8 +| hc1.baseflowtemp | base flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 | +uint8 +| 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 | 13 | 1 | 1 | +uint8 +| 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 | 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 | 28 | 1 | 1/2 | +int8 +| hc1.cooltemp | cooling temperature | int8 (>=-1<=30) | C | true | HC | 29 | 1 | 1/2 | +uint8 +| hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 30 | 1 | 1 | +uint8 +| 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 | 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 | 35 | 1 | 1 | +int8 +| 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 | 41 | 1 | 1 | +uint8 +| 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 | 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 | 47 | 1 | 1 | +uint8 +| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 48 | 1 | 1 | +uint8 +| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 49 | 1 | 1 | +uint8 +| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 50 | 1 | 1 | +uint8 +| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 51 | 1 | 1 | +uint8 +| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 52 | 1 | 1 | +| hc1.boost | boost mode | boolean | | true | HC | 53 | 1 | 1 | +uint8 +| hc1.boosttime | boost time | uint8 (>=0<=0) | 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 | 56 | 1 | 1/2 | +int8 +| hc1.solarinfl | solar influence | int8 (>=-5<=0) | C | true | HC | 57 | 1 | 1 | +| hc1.currsolarinfl | current solar influence | int8 | 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 | 61 | 1 | 10 | +uint8 +| 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 +| dhw.settemp | set temperature | uint8 (>=0<=0) | C | true | DHW | 2 | 1 | 1 | +uint8 +| dhw.settemplow | set low temperature | uint8 (>=0<=0) | C | true | DHW | 3 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 4 | 1 | 1 | +uint8 +| dhw.chargeduration | charge duration | uint8 (>=0<=0) | minutes | true | DHW | 5 | 1 | 15 | +| dhw.charge | charge | boolean | | true | DHW | 6 | 1 | 1 | +| dhw.extra | extra | boolean | | false | DHW | 7 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 8 | 1 | 1 | +| dhw.disinfectday | disinfection day | enum | | true | DHW | 9 | 1 | 1 | +uint8 +| dhw.disinfecttime | disinfection time | uint8 (>=0<=1431) | minutes | true | DHW | 10 | 1 | 15 | +| dhw.dailyheating | daily heating | boolean | | true | DHW | 11 | 1 | 1 | +uint8 +| dhw.dailyheattime | daily heating time | uint8 (>=0<=1431) | minutes | true | DHW | 12 | 1 | 15 | + +### CR11 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| errorcode | error code | string | | false | DEVICE_DATA | 0 | 8 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 8 | 25 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/2 | +| 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 | 19 | 1 | 1 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | + +### RC10 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +int8 +| minexttemp | minimal external temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 51 | 1 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/2 | +| 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.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +uint8 +| 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 | 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 | 12 | 1 | 1 | +uint8 +| 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 | 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 | 23 | 1 | 1 | + +### RC30 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| display | display | enum | | true | DEVICE_DATA | 65 | 1 | 1 | +| language | language | enum | | false | DEVICE_DATA | 66 | 1 | 1 | +int8 +| clockoffset | clock offset | int8 (>=0<=0) | seconds | true | DEVICE_DATA | 67 | 1 | 1 | +int8 +| intoffset | internal temperature offset | int8 (>=0<=0) | C | true | DEVICE_DATA | 46 | 1 | 1/10 | +int8 +| minexttemp | minimal external temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 51 | 1 | 1 | +| inttemp1 | temperature sensor 1 | int16 | C | false | DEVICE_DATA | 68 | 1 | 1/10 | +| inttemp2 | temperature sensor 2 | int16 | C | false | DEVICE_DATA | 69 | 1 | 1/10 | +| damping | damping outdoor temperature | boolean | | true | DEVICE_DATA | 52 | 1 | 1 | +| dampedoutdoortemp | damped outdoor temperature | int8 | C | false | DEVICE_DATA | 48 | 1 | 1 | +| building | building type | enum | | true | DEVICE_DATA | 50 | 1 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/2 | +| 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.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +uint8 +| 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 | 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 | 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 | 23 | 1 | 1 | +| hc1.holidaymode | holiday mode | boolean | | false | HC | 66 | 1 | 1 | +int8 +| 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 | 14 | 1 | 1 | +uint8 +| 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 | 13 | 1 | 1 | +uint8 +| 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 | 94 | 1 | 1 | +uint8 +| 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 | 28 | 1 | 1/2 | +int8 +| 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 | 36 | 1 | 1 | +int8 +| 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 | +| dhw.circprog | circulation program | enum | | true | DHW | 14 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 8 | 1 | 1 | +| dhw.disinfectday | disinfection day | enum | | true | DHW | 9 | 1 | 1 | +uint8 +| dhw.disinfecthour | disinfection hour | uint8 (>=0<=23) | | true | DHW | 15 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=0) | C | true | DHW | 16 | 1 | 1 | +| dhw.onetimekey | one time key function | boolean | | true | DHW | 17 | 1 | 1 | +| dhw.switchtime | program switchtime | string | | true | DHW | 18 | 8 | 1 | +| dhw.circswitchtime | circulation program switchtime | string | | true | DHW | 26 | 8 | 1 | +| dhw.holidays | holiday dates | string | | true | DHW | 34 | 13 | 1 | +| dhw.vacations | vacation dates | string | | true | DHW | 47 | 13 | 1 | + +### RC20, Moduline 300 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/2 | +| 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 | +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 | 114 | 1 | 1/2 | +uint8 +| 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 | 116 | 1 | 1/2 | +uint8 +| 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 | 64 | 1 | 1/2 | +| hc1.switchtime | program switchtime | string | | true | HC | 118 | 8 | 1 | + +### Moduline 400 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +int8 +| clockoffset | clock offset | int8 (>=0<=0) | seconds | true | DEVICE_DATA | 67 | 1 | 1 | +| autodst | automatic change daylight saving time | boolean | | true | DEVICE_DATA | 70 | 1 | 1 | +| language | language | enum | | true | DEVICE_DATA | 66 | 1 | 1 | +| backlight | key backlight | boolean | | true | DEVICE_DATA | 71 | 1 | 1 | +int8 +| brightness | screen brightness | int8 (>=-15<=15) | | true | DEVICE_DATA | 72 | 1 | 1 | +uint8 +| mixingvalves | mixing valves | uint8 (>=0<=2) | | true | DEVICE_DATA | 73 | 1 | 1 | +| building | building type | enum | | true | DEVICE_DATA | 50 | 1 | 1 | +| heatingpid | heating PID | enum | | true | DEVICE_DATA | 74 | 1 | 1 | +| preheating | preheating in the clock program | boolean | | true | DEVICE_DATA | 75 | 1 | 1 | +int8 +| intoffset | internal temperature offset | int8 (>=0<=0) | C | true | DEVICE_DATA | 46 | 1 | 1/10 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/2 | +| 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 | +uint8 +| hc1.pause | pause time | uint8 (>=0<=0) | hours | true | HC | 94 | 1 | 1 | +uint8 +| 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 | 65 | 1 | 1/2 | +uint8 +| 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 | 115 | 1 | 1/2 | +uint8 +| 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 | 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 | 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 | +| dhw.disinfectday | disinfection day | enum | | true | DHW | 9 | 1 | 1 | +uint8 +| dhw.disinfecthour | disinfection hour | uint8 (>=0<=23) | | true | DHW | 15 | 1 | 1 | + +### RC10, Moduline 100 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| errorcode | error code | string | | false | DEVICE_DATA | 0 | 8 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 8 | 25 | 1 | +int8 +| intoffset | internal temperature offset | int8 (>=0<=0) | C | true | DEVICE_DATA | 46 | 1 | 1/10 | +| heatingpid | heating PID | enum | | true | DEVICE_DATA | 74 | 1 | 1 | +| backlight | key backlight | boolean | | true | DEVICE_DATA | 71 | 1 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/2 | +| 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 | +uint8 +| 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 | 64 | 1 | 1/2 | +uint8 +| 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 | +| datetime | date/time | string | | false | DEVICE_DATA | 33 | 13 | 1 | +int8 +| minexttemp | minimal external temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 51 | 1 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/2 | +| 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.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +uint8 +| 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 | 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 | 12 | 1 | 1 | +uint8 +| 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 | 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 | 23 | 1 | 1 | + +### Moduline 200 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| errorcode | error code | string | | false | DEVICE_DATA | 0 | 8 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 8 | 25 | 1 | +int8 +| intoffset | internal temperature offset | int8 (>=0<=0) | C | true | DEVICE_DATA | 46 | 1 | 1/10 | +| heatingpid | heating PID | enum | | true | DEVICE_DATA | 74 | 1 | 1 | +| backlight | key backlight | boolean | | true | DEVICE_DATA | 71 | 1 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/2 | +| 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 | +uint8 +| 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 | 64 | 1 | 1/2 | +uint8 +| 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 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | | true | DEVICE_DATA | 33 | 13 | 1 | +int8 +| intoffset | internal temperature offset | int8 (>=-5<=5) | C | true | DEVICE_DATA | 46 | 1 | 1/10 | +int8 +| minexttemp | minimal external temperature | int8 (>=-30<=0) | C | true | DEVICE_DATA | 51 | 1 | 1 | +| inttemp1 | temperature sensor 1 | int16 | C | false | DEVICE_DATA | 68 | 1 | 1/10 | +| inttemp2 | temperature sensor 2 | int16 | C | false | DEVICE_DATA | 69 | 1 | 1/10 | +| damping | damping outdoor temperature | boolean | | true | DEVICE_DATA | 52 | 1 | 1 | +| dampedoutdoortemp | damped outdoor temperature | int8 | C | false | DEVICE_DATA | 48 | 1 | 1 | +| building | building type | enum | | true | DEVICE_DATA | 50 | 1 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/2 | +| 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.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +uint8 +| 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 | 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 | 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 | 23 | 1 | 1 | +| hc1.holidaymode | holiday mode | boolean | | false | HC | 66 | 1 | 1 | +int8 +| 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 | 14 | 1 | 1 | +uint8 +| 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 | 13 | 1 | 1 | +uint8 +| 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 | 94 | 1 | 1 | +uint8 +| 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 | 28 | 1 | 1/2 | +int8 +| 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 | 36 | 1 | 1 | +int8 +| 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 | +| dhw.circprog | circulation program | enum | | true | DHW | 14 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 8 | 1 | 1 | +| dhw.disinfectday | disinfection day | enum | | true | DHW | 9 | 1 | 1 | +uint8 +| dhw.disinfecthour | disinfection hour | uint8 (>=0<=23) | | true | DHW | 15 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=60<=80) | C | true | DHW | 16 | 1 | 1 | +| dhw.onetimekey | one time key function | boolean | | true | DHW | 17 | 1 | 1 | +| dhw.switchtime | program switchtime | string | | true | DHW | 18 | 8 | 1 | +| dhw.circswitchtime | circulation program switchtime | string | | true | DHW | 26 | 8 | 1 | +| dhw.holidays | holiday dates | string | | true | DHW | 34 | 13 | 1 | +| dhw.vacations | vacation dates | string | | true | DHW | 47 | 13 | 1 | + +### RC20RF + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/2 | +| 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 | +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 | 114 | 1 | 1/2 | +uint8 +| 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 | 116 | 1 | 1/2 | +uint8 +| 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 | 64 | 1 | 1/2 | +| hc1.switchtime | program switchtime | string | | true | HC | 118 | 8 | 1 | + +### RFM20 Remote + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/2 | +| 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 | + +### RC25 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +int8 +| minexttemp | minimal external temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 51 | 1 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/2 | +| 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.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +uint8 +| 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 | 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 | 12 | 1 | 1 | +uint8 +| 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 | 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 | 23 | 1 | 1 | + +### RC200, CW100, CR120, CR50 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | | true | DEVICE_DATA | 33 | 13 | 1 | +int8 +| intoffset | internal temperature offset | int8 (>=0<=0) | C | true | DEVICE_DATA | 46 | 1 | 1/10 | +| floordry | floor drying | enum | | false | DEVICE_DATA | 47 | 1 | 1 | +| dampedoutdoortemp | damped outdoor temperature | int16 | C | false | DEVICE_DATA | 48 | 1 | 1/10 | +| floordrytemp | floor drying temperature | uint8 | C | false | DEVICE_DATA | 49 | 1 | 1 | +| building | building type | enum | | true | DEVICE_DATA | 50 | 1 | 1 | +int8 +| minexttemp | minimal external temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 51 | 1 | 1 | +| damping | damping outdoor temperature | boolean | | true | DEVICE_DATA | 52 | 1 | 1 | +| solar | solar | boolean | | true | DEVICE_DATA | 53 | 1 | 1 | +| vacations | vacation dates | string | | true | DEVICE_DATA | 76 | 13 | 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 | +uint8 +| energycostratio | energy cost ratio | uint8 (>=0<=20) | | true | DEVICE_DATA | 56 | 1 | 1/10 | +uint8 +| fossilefactor | fossile energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 57 | 1 | 1/10 | +uint8 +| electricfactor | electric energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 58 | 1 | 1/10 | +uint8 +| delayboiler | delay boiler support | uint8 (>=5<=120) | minutes | true | DEVICE_DATA | 59 | 1 | 1 | +uint8 +| tempdiffboiler | temp diff boiler support | uint8 (>=1<=99) | C | true | DEVICE_DATA | 60 | 1 | 1 | +| pvenabledhw | enable raise dhw | boolean | | true | DEVICE_DATA | 61 | 1 | 1 | +int8 +| pvraiseheat | raise heating with PV | int8 (>=0<=5) | K | true | DEVICE_DATA | 62 | 1 | 1 | +int8 +| pvlowercool | lower cooling with PV | int8 (>=-5<=0) | K | true | DEVICE_DATA | 63 | 1 | 1 | +| absent | absent | boolean | | true | DEVICE_DATA | 64 | 1 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/2 | +| 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.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +uint8 +| hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 | +uint8 +| hc1.manualtemp | manual temperature | uint8 (>=0<=0) | C | true | HC | 6 | 1 | 1/2 | +uint8 +| hc1.comforttemp | comfort temperature | uint8 (>=0<=0) | C | true | HC | 7 | 1 | 1/2 | +uint8 +| hc1.summertemp | summer temperature | uint8 (>=10<=30) | C | true | HC | 8 | 1 | 1 | +uint8 +| hc1.designtemp | design temperature | uint8 (>=0<=0) | C | true | HC | 9 | 1 | 1 | +int8 +| hc1.offsettemp | offset temperature | int8 (>=0<=0) | C | true | HC | 10 | 1 | 1 | +uint8 +| hc1.baseflowtemp | base flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 | +uint8 +| 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 | 13 | 1 | 1 | +uint8 +| 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 | 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 | 28 | 1 | 1/2 | +int8 +| hc1.cooltemp | cooling temperature | int8 (>=-1<=30) | C | true | HC | 29 | 1 | 1/2 | +uint8 +| hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 30 | 1 | 1 | +uint8 +| 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 | 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 | 35 | 1 | 1 | +int8 +| 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 | 41 | 1 | 1 | +uint8 +| 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 | 43 | 1 | 1 | +uint8 +| 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 | 48 | 1 | 1 | +uint8 +| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 49 | 1 | 1 | +uint8 +| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 50 | 1 | 1 | +uint8 +| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 51 | 1 | 1 | +uint8 +| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 52 | 1 | 1 | +| hc1.boost | boost mode | boolean | | true | HC | 53 | 1 | 1 | +uint8 +| hc1.boosttime | boost time | uint8 (>=0<=0) | 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 | 56 | 1 | 1/2 | +int8 +| hc1.solarinfl | solar influence | int8 (>=-5<=0) | C | true | HC | 57 | 1 | 1 | +| hc1.currsolarinfl | current solar influence | int8 | 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 | 61 | 1 | 10 | +uint8 +| 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 +| dhw.settemp | set temperature | uint8 (>=0<=0) | C | true | DHW | 2 | 1 | 1 | +uint8 +| dhw.settemplow | set low temperature | uint8 (>=0<=0) | C | true | DHW | 3 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 4 | 1 | 1 | +uint8 +| dhw.chargeduration | charge duration | uint8 (>=0<=0) | minutes | true | DHW | 5 | 1 | 15 | +| dhw.charge | charge | boolean | | true | DHW | 6 | 1 | 1 | +| dhw.extra | extra | boolean | | false | DHW | 7 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 8 | 1 | 1 | +| dhw.disinfectday | disinfection day | enum | | true | DHW | 9 | 1 | 1 | +uint8 +| dhw.disinfecttime | disinfection time | uint8 (>=0<=1431) | minutes | true | DHW | 10 | 1 | 15 | +| dhw.dailyheating | daily heating | boolean | | true | DHW | 11 | 1 | 1 | +uint8 +| dhw.dailyheattime | daily heating time | uint8 (>=0<=1431) | minutes | true | DHW | 12 | 1 | 15 | + +### RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | | true | DEVICE_DATA | 33 | 13 | 1 | +int8 +| intoffset | internal temperature offset | int8 (>=0<=0) | C | true | DEVICE_DATA | 46 | 1 | 1/10 | +| floordry | floor drying | enum | | false | DEVICE_DATA | 47 | 1 | 1 | +| dampedoutdoortemp | damped outdoor temperature | int16 | C | false | DEVICE_DATA | 48 | 1 | 1/10 | +| floordrytemp | floor drying temperature | uint8 | C | false | DEVICE_DATA | 49 | 1 | 1 | +| building | building type | enum | | true | DEVICE_DATA | 50 | 1 | 1 | +int8 +| minexttemp | minimal external temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 51 | 1 | 1 | +| damping | damping outdoor temperature | boolean | | true | DEVICE_DATA | 52 | 1 | 1 | +| solar | solar | boolean | | true | DEVICE_DATA | 53 | 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 | +uint8 +| energycostratio | energy cost ratio | uint8 (>=0<=20) | | true | DEVICE_DATA | 56 | 1 | 1/10 | +uint8 +| fossilefactor | fossile energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 57 | 1 | 1/10 | +uint8 +| electricfactor | electric energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 58 | 1 | 1/10 | +uint8 +| delayboiler | delay boiler support | uint8 (>=5<=120) | minutes | true | DEVICE_DATA | 59 | 1 | 1 | +uint8 +| tempdiffboiler | temp diff boiler support | uint8 (>=1<=99) | C | true | DEVICE_DATA | 60 | 1 | 1 | +| pvenabledhw | enable raise dhw | boolean | | true | DEVICE_DATA | 61 | 1 | 1 | +int8 +| pvraiseheat | raise heating with PV | int8 (>=0<=5) | K | true | DEVICE_DATA | 62 | 1 | 1 | +int8 +| pvlowercool | lower cooling with PV | int8 (>=-5<=0) | K | true | DEVICE_DATA | 63 | 1 | 1 | +| absent | absent | boolean | | true | DEVICE_DATA | 64 | 1 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/2 | +| 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.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +uint8 +| hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 | +uint8 +| hc1.manualtemp | manual temperature | uint8 (>=0<=0) | C | true | HC | 6 | 1 | 1/2 | +uint8 +| hc1.comforttemp | comfort temperature | uint8 (>=0<=0) | C | true | HC | 7 | 1 | 1/2 | +uint8 +| hc1.summertemp | summer temperature | uint8 (>=10<=30) | C | true | HC | 8 | 1 | 1 | +uint8 +| hc1.designtemp | design temperature | uint8 (>=0<=0) | C | true | HC | 9 | 1 | 1 | +int8 +| hc1.offsettemp | offset temperature | int8 (>=0<=0) | C | true | HC | 10 | 1 | 1 | +uint8 +| hc1.baseflowtemp | base flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 | +uint8 +| 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 | 13 | 1 | 1 | +uint8 +| 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 | 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 | 28 | 1 | 1/2 | +int8 +| hc1.cooltemp | cooling temperature | int8 (>=-1<=30) | C | true | HC | 29 | 1 | 1/2 | +uint8 +| hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 30 | 1 | 1 | +uint8 +| 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 | 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 | 35 | 1 | 1 | +int8 +| 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 | 41 | 1 | 1 | +uint8 +| 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 | 43 | 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 | 47 | 1 | 1 | +uint8 +| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 48 | 1 | 1 | +uint8 +| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 49 | 1 | 1 | +uint8 +| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 50 | 1 | 1 | +uint8 +| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 51 | 1 | 1 | +uint8 +| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 52 | 1 | 1 | +| hc1.boost | boost mode | boolean | | true | HC | 53 | 1 | 1 | +uint8 +| hc1.boosttime | boost time | uint8 (>=0<=0) | 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 | 56 | 1 | 1/2 | +int8 +| hc1.solarinfl | solar influence | int8 (>=-5<=0) | C | true | HC | 57 | 1 | 1 | +| hc1.currsolarinfl | current solar influence | int8 | 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 | 61 | 1 | 10 | +uint8 +| 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 +| dhw.settemp | set temperature | uint8 (>=0<=0) | C | true | DHW | 2 | 1 | 1 | +uint8 +| dhw.settemplow | set low temperature | uint8 (>=0<=0) | C | true | DHW | 3 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 4 | 1 | 1 | +uint8 +| dhw.chargeduration | charge duration | uint8 (>=0<=0) | minutes | true | DHW | 5 | 1 | 15 | +| dhw.charge | charge | boolean | | true | DHW | 6 | 1 | 1 | +| dhw.extra | extra | boolean | | false | DHW | 7 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 8 | 1 | 1 | +| dhw.disinfectday | disinfection day | enum | | true | DHW | 9 | 1 | 1 | +uint8 +| dhw.disinfecttime | disinfection time | uint8 (>=0<=1431) | minutes | true | DHW | 10 | 1 | 15 | +| dhw.dailyheating | daily heating | boolean | | true | DHW | 11 | 1 | 1 | +uint8 +| dhw.dailyheattime | daily heating time | uint8 (>=0<=1431) | minutes | true | DHW | 12 | 1 | 15 | + +### RC100, CR10, Moduline 1000/1010 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| errorcode | error code | string | | false | DEVICE_DATA | 0 | 8 | 1 | +| lastcode | last error code | string | | false | DEVICE_DATA | 8 | 25 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/2 | +| 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 | 19 | 1 | 1 | +| hc1.heatingtype | heating type | enum | | true | HC | 20 | 1 | 1 | + +### Rego 2000/3000 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | | true | DEVICE_DATA | 33 | 13 | 1 | +int8 +| intoffset | internal temperature offset | int8 (>=0<=0) | C | true | DEVICE_DATA | 46 | 1 | 1/10 | +| floordry | floor drying | enum | | false | DEVICE_DATA | 47 | 1 | 1 | +| dampedoutdoortemp | damped outdoor temperature | int16 | C | false | DEVICE_DATA | 48 | 1 | 1/10 | +| floordrytemp | floor drying temperature | uint8 | C | false | DEVICE_DATA | 49 | 1 | 1 | +| building | building type | enum | | true | DEVICE_DATA | 50 | 1 | 1 | +int8 +| minexttemp | minimal external temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 51 | 1 | 1 | +| damping | damping outdoor temperature | boolean | | true | DEVICE_DATA | 52 | 1 | 1 | +| solar | solar | boolean | | true | DEVICE_DATA | 53 | 1 | 1 | +| vacations | vacation dates | string | | true | DEVICE_DATA | 76 | 13 | 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 | +uint8 +| energycostratio | energy cost ratio | uint8 (>=0<=20) | | true | DEVICE_DATA | 56 | 1 | 1/10 | +uint8 +| fossilefactor | fossile energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 57 | 1 | 1/10 | +uint8 +| electricfactor | electric energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 58 | 1 | 1/10 | +uint8 +| delayboiler | delay boiler support | uint8 (>=5<=120) | minutes | true | DEVICE_DATA | 59 | 1 | 1 | +uint8 +| tempdiffboiler | temp diff boiler support | uint8 (>=1<=99) | C | true | DEVICE_DATA | 60 | 1 | 1 | +| pvenabledhw | enable raise dhw | boolean | | true | DEVICE_DATA | 61 | 1 | 1 | +int8 +| pvraiseheat | raise heating with PV | int8 (>=0<=5) | K | true | DEVICE_DATA | 62 | 1 | 1 | +int8 +| pvlowercool | lower cooling with PV | int8 (>=-5<=0) | K | true | DEVICE_DATA | 63 | 1 | 1 | +| absent | absent | boolean | | true | DEVICE_DATA | 64 | 1 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/2 | +| 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.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +uint8 +| hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 | +uint8 +| hc1.manualtemp | manual temperature | uint8 (>=0<=0) | C | true | HC | 6 | 1 | 1/2 | +uint8 +| hc1.comforttemp | comfort temperature | uint8 (>=0<=0) | C | true | HC | 7 | 1 | 1/2 | +uint8 +| hc1.summertemp | summer temperature | uint8 (>=10<=30) | C | true | HC | 8 | 1 | 1 | +uint8 +| hc1.designtemp | design temperature | uint8 (>=0<=0) | C | true | HC | 9 | 1 | 1 | +int8 +| hc1.offsettemp | offset temperature | int8 (>=0<=0) | C | true | HC | 10 | 1 | 1 | +uint8 +| hc1.baseflowtemp | base flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 | +uint8 +| 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 | 13 | 1 | 1 | +uint8 +| 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 | 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 | 28 | 1 | 1/2 | +int8 +| hc1.cooltemp | cooling temperature | int8 (>=-1<=30) | C | true | HC | 29 | 1 | 1/2 | +uint8 +| hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 30 | 1 | 1 | +uint8 +| 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 | 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 | 35 | 1 | 1 | +int8 +| 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 | 41 | 1 | 1 | +uint8 +| 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 | 43 | 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 | 47 | 1 | 1 | +uint8 +| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 48 | 1 | 1 | +uint8 +| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 49 | 1 | 1 | +uint8 +| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 50 | 1 | 1 | +uint8 +| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 51 | 1 | 1 | +uint8 +| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 52 | 1 | 1 | +| hc1.boost | boost mode | boolean | | true | HC | 53 | 1 | 1 | +uint8 +| hc1.boosttime | boost time | uint8 (>=0<=0) | 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 | 56 | 1 | 1/2 | +int8 +| hc1.solarinfl | solar influence | int8 (>=-5<=0) | C | true | HC | 57 | 1 | 1 | +| hc1.currsolarinfl | current solar influence | int8 | 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 | 61 | 1 | 10 | +uint8 +| 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 +| dhw.settemp | set temperature | uint8 (>=0<=0) | C | true | DHW | 2 | 1 | 1 | +uint8 +| dhw.settemplow | set low temperature | uint8 (>=0<=0) | C | true | DHW | 3 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 4 | 1 | 1 | +uint8 +| dhw.chargeduration | charge duration | uint8 (>=0<=0) | minutes | true | DHW | 5 | 1 | 15 | +| dhw.charge | charge | boolean | | true | DHW | 6 | 1 | 1 | +| dhw.extra | extra | boolean | | false | DHW | 7 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 8 | 1 | 1 | +| dhw.disinfectday | disinfection day | enum | | true | DHW | 9 | 1 | 1 | +uint8 +| dhw.disinfecttime | disinfection time | uint8 (>=0<=1431) | minutes | true | DHW | 10 | 1 | 15 | +| dhw.dailyheating | daily heating | boolean | | true | DHW | 11 | 1 | 1 | +uint8 +| dhw.dailyheattime | daily heating time | uint8 (>=0<=1431) | minutes | true | DHW | 12 | 1 | 15 | + +### Comfort RF + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| hc1.seltemp | selected room temperature | int16 | C | false | HC | 0 | 1 | 1/2 | +| 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 | | false | HC | 3 | 1 | 1 | +| hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | + +### CRF200S + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| hc1.seltemp | selected room temperature | int16 | C | false | HC | 0 | 1 | 1/2 | +| 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 | | false | HC | 3 | 1 | 1 | +| hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | + +### Comfort+2RF + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| hc1.seltemp | selected room temperature | int16 | C | false | HC | 0 | 1 | 1/2 | +| 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 | | false | HC | 3 | 1 | 1 | +| hc1.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 19 | 1 | 1 | + +### Rego 3000, UI800, Logamatic BC400 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | | true | DEVICE_DATA | 33 | 13 | 1 | +int8 +| intoffset | internal temperature offset | int8 (>=0<=0) | C | true | DEVICE_DATA | 46 | 1 | 1/10 | +| floordry | floor drying | enum | | false | DEVICE_DATA | 47 | 1 | 1 | +| dampedoutdoortemp | damped outdoor temperature | int16 | C | false | DEVICE_DATA | 48 | 1 | 1/10 | +| floordrytemp | floor drying temperature | uint8 | C | false | DEVICE_DATA | 49 | 1 | 1 | +| building | building type | enum | | true | DEVICE_DATA | 50 | 1 | 1 | +int8 +| minexttemp | minimal external temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 51 | 1 | 1 | +| damping | damping outdoor temperature | boolean | | true | DEVICE_DATA | 52 | 1 | 1 | +| solar | solar | boolean | | true | DEVICE_DATA | 53 | 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 | +uint8 +| energycostratio | energy cost ratio | uint8 (>=0<=20) | | true | DEVICE_DATA | 56 | 1 | 1/10 | +uint8 +| fossilefactor | fossile energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 57 | 1 | 1/10 | +uint8 +| electricfactor | electric energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 58 | 1 | 1/10 | +uint8 +| delayboiler | delay boiler support | uint8 (>=5<=120) | minutes | true | DEVICE_DATA | 59 | 1 | 1 | +uint8 +| tempdiffboiler | temp diff boiler support | uint8 (>=1<=99) | C | true | DEVICE_DATA | 60 | 1 | 1 | +| pvenabledhw | enable raise dhw | boolean | | true | DEVICE_DATA | 61 | 1 | 1 | +int8 +| pvraiseheat | raise heating with PV | int8 (>=0<=5) | K | true | DEVICE_DATA | 62 | 1 | 1 | +int8 +| pvlowercool | lower cooling with PV | int8 (>=-5<=0) | K | true | DEVICE_DATA | 63 | 1 | 1 | +| absent | absent | boolean | | true | DEVICE_DATA | 64 | 1 | 1 | +| hpoperatingmode | heatpump operating mode | enum | | true | DEVICE_DATA | 89 | 1 | 1 | +uint8 +| summertemp | summer temperature | uint8 (>=10<=30) | C | true | DEVICE_DATA | 90 | 1 | 1 | +uint8 +| instantstart | instant start | uint8 (>=1<=10) | K | true | DEVICE_DATA | 91 | 1 | 1 | +uint8 +| coolstart | cooling starttemp | uint8 (>=24<=35) | C | true | DEVICE_DATA | 92 | 1 | 1 | +uint8 +| heatondelay | heat-on delay | uint8 (>=1<=48) | hours | true | DEVICE_DATA | 93 | 1 | 1/4 | +uint8 +| heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | DEVICE_DATA | 94 | 1 | 1/4 | +uint8 +| coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | DEVICE_DATA | 95 | 1 | 1/4 | +uint8 +| cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | DEVICE_DATA | 96 | 1 | 1/4 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/2 | +| 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.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +uint8 +| hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 | +uint8 +| hc1.manualtemp | manual temperature | uint8 (>=0<=0) | C | true | HC | 6 | 1 | 1/2 | +uint8 +| hc1.comforttemp | comfort temperature | uint8 (>=0<=0) | C | true | HC | 7 | 1 | 1/2 | +uint8 +| hc1.summertemp | summer temperature | uint8 (>=10<=30) | C | true | HC | 8 | 1 | 1 | +uint8 +| hc1.designtemp | design temperature | uint8 (>=0<=0) | C | true | HC | 9 | 1 | 1 | +int8 +| hc1.offsettemp | offset temperature | int8 (>=0<=0) | C | true | HC | 10 | 1 | 1 | +uint8 +| hc1.baseflowtemp | base flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 | +uint8 +| 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 | 13 | 1 | 1 | +uint8 +| 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 | 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 | 28 | 1 | 1/2 | +int8 +| hc1.cooltemp | cooling temperature | int8 (>=-1<=30) | C | true | HC | 29 | 1 | 1/2 | +uint8 +| hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 30 | 1 | 1 | +uint8 +| 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 | 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 | 35 | 1 | 1 | +int8 +| 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 | 41 | 1 | 1 | +uint8 +| 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 | 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 | 47 | 1 | 1 | +uint8 +| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 48 | 1 | 1 | +uint8 +| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 49 | 1 | 1 | +uint8 +| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 50 | 1 | 1 | +uint8 +| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 51 | 1 | 1 | +uint8 +| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 52 | 1 | 1 | +| hc1.boost | boost mode | boolean | | true | HC | 53 | 1 | 1 | +uint8 +| hc1.boosttime | boost time | uint8 (>=0<=0) | 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 | 56 | 1 | 1/2 | +int8 +| hc1.solarinfl | solar influence | int8 (>=-5<=0) | C | true | HC | 57 | 1 | 1 | +| hc1.currsolarinfl | current solar influence | int8 | 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 | 61 | 1 | 10 | +uint8 +| 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 +| dhw.settemp | set temperature | uint8 (>=0<=0) | C | true | DHW | 2 | 1 | 1 | +uint8 +| dhw.settemplow | set low temperature | uint8 (>=0<=0) | C | true | DHW | 3 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 4 | 1 | 1 | +uint8 +| dhw.chargeduration | charge duration | uint8 (>=0<=0) | minutes | true | DHW | 5 | 1 | 15 | +| dhw.charge | charge | boolean | | true | DHW | 6 | 1 | 1 | +| dhw.extra | extra | boolean | | false | DHW | 7 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 8 | 1 | 1 | +| dhw.disinfectday | disinfection day | enum | | true | DHW | 9 | 1 | 1 | +uint8 +| dhw.disinfecttime | disinfection time | uint8 (>=0<=1431) | minutes | true | DHW | 10 | 1 | 15 | +| dhw.dailyheating | daily heating | boolean | | true | DHW | 11 | 1 | 1 | +uint8 +| dhw.dailyheattime | daily heating time | uint8 (>=0<=1431) | minutes | true | DHW | 12 | 1 | 15 | + +### ES72, RC20 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +int8 +| minexttemp | minimal external temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 51 | 1 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/2 | +| 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.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +uint8 +| 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 | 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 | 12 | 1 | 1 | +uint8 +| 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 | 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 | 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 | +int8 +| minexttemp | minimal external temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 51 | 1 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/2 | +| 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.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +uint8 +| 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 | 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 | 12 | 1 | 1 | +uint8 +| 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 | 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 | 23 | 1 | 1 | + +### ES73 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +| display | display | enum | | true | DEVICE_DATA | 65 | 1 | 1 | +| language | language | enum | | false | DEVICE_DATA | 66 | 1 | 1 | +int8 +| clockoffset | clock offset | int8 (>=0<=0) | seconds | true | DEVICE_DATA | 67 | 1 | 1 | +int8 +| intoffset | internal temperature offset | int8 (>=0<=0) | C | true | DEVICE_DATA | 46 | 1 | 1/10 | +int8 +| minexttemp | minimal external temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 51 | 1 | 1 | +| inttemp1 | temperature sensor 1 | int16 | C | false | DEVICE_DATA | 68 | 1 | 1/10 | +| inttemp2 | temperature sensor 2 | int16 | C | false | DEVICE_DATA | 69 | 1 | 1/10 | +| damping | damping outdoor temperature | boolean | | true | DEVICE_DATA | 52 | 1 | 1 | +| dampedoutdoortemp | damped outdoor temperature | int8 | C | false | DEVICE_DATA | 48 | 1 | 1 | +| building | building type | enum | | true | DEVICE_DATA | 50 | 1 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/2 | +| 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.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +uint8 +| 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 | 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 | 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 | 23 | 1 | 1 | +| hc1.holidaymode | holiday mode | boolean | | false | HC | 66 | 1 | 1 | +int8 +| 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 | 14 | 1 | 1 | +uint8 +| 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 | 13 | 1 | 1 | +uint8 +| 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 | 94 | 1 | 1 | +uint8 +| 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 | 28 | 1 | 1/2 | +int8 +| 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 | 36 | 1 | 1 | +int8 +| 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 | +| dhw.circprog | circulation program | enum | | true | DHW | 14 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 8 | 1 | 1 | +| dhw.disinfectday | disinfection day | enum | | true | DHW | 9 | 1 | 1 | +uint8 +| dhw.disinfecthour | disinfection hour | uint8 (>=0<=23) | | true | DHW | 15 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=0) | C | true | DHW | 16 | 1 | 1 | +| dhw.onetimekey | one time key function | boolean | | true | DHW | 17 | 1 | 1 | +| dhw.switchtime | program switchtime | string | | true | DHW | 18 | 8 | 1 | +| dhw.circswitchtime | circulation program switchtime | string | | true | DHW | 26 | 8 | 1 | +| dhw.holidays | holiday dates | string | | true | DHW | 34 | 13 | 1 | +| dhw.vacations | vacation dates | string | | true | DHW | 47 | 13 | 1 | + +### ES79 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | | true | DEVICE_DATA | 33 | 13 | 1 | +int8 +| intoffset | internal temperature offset | int8 (>=-5<=5) | C | true | DEVICE_DATA | 46 | 1 | 1/10 | +int8 +| minexttemp | minimal external temperature | int8 (>=-30<=0) | C | true | DEVICE_DATA | 51 | 1 | 1 | +| inttemp1 | temperature sensor 1 | int16 | C | false | DEVICE_DATA | 68 | 1 | 1/10 | +| inttemp2 | temperature sensor 2 | int16 | C | false | DEVICE_DATA | 69 | 1 | 1/10 | +| damping | damping outdoor temperature | boolean | | true | DEVICE_DATA | 52 | 1 | 1 | +| dampedoutdoortemp | damped outdoor temperature | int8 | C | false | DEVICE_DATA | 48 | 1 | 1 | +| building | building type | enum | | true | DEVICE_DATA | 50 | 1 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/2 | +| 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.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +uint8 +| 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 | 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 | 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 | 23 | 1 | 1 | +| hc1.holidaymode | holiday mode | boolean | | false | HC | 66 | 1 | 1 | +int8 +| 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 | 14 | 1 | 1 | +uint8 +| 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 | 13 | 1 | 1 | +uint8 +| 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 | 94 | 1 | 1 | +uint8 +| 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 | 28 | 1 | 1/2 | +int8 +| 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 | 36 | 1 | 1 | +int8 +| 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 | +| dhw.circprog | circulation program | enum | | true | DHW | 14 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 8 | 1 | 1 | +| dhw.disinfectday | disinfection day | enum | | true | DHW | 9 | 1 | 1 | +uint8 +| dhw.disinfecthour | disinfection hour | uint8 (>=0<=23) | | true | DHW | 15 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=60<=80) | C | true | DHW | 16 | 1 | 1 | +| dhw.onetimekey | one time key function | boolean | | true | DHW | 17 | 1 | 1 | +| dhw.switchtime | program switchtime | string | | true | DHW | 18 | 8 | 1 | +| dhw.circswitchtime | circulation program switchtime | string | | true | DHW | 26 | 8 | 1 | +| dhw.holidays | holiday dates | string | | true | DHW | 34 | 13 | 1 | +| dhw.vacations | vacation dates | string | | true | DHW | 47 | 13 | 1 | + +### FW100 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | | 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 | +uint8 +| energycostratio | energy cost ratio | uint8 (>=0<=20) | | true | DEVICE_DATA | 56 | 1 | 1/10 | +uint8 +| fossilefactor | fossile energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 57 | 1 | 1/10 | +uint8 +| electricfactor | electric energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 58 | 1 | 1/10 | +uint8 +| delayboiler | delay boiler support | uint8 (>=5<=120) | minutes | true | DEVICE_DATA | 59 | 1 | 1 | +uint8 +| tempdiffboiler | temp diff boiler support | uint8 (>=1<=99) | C | true | DEVICE_DATA | 60 | 1 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/10 | +| 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.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +uint8 +| 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 | 18 | 1 | 1/2 | +| 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 | 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 | 12 | 1 | 1 | +uint8 +| 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 | 14 | 1 | 1 | +uint8 +| 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 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | | 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 | +uint8 +| energycostratio | energy cost ratio | uint8 (>=0<=20) | | true | DEVICE_DATA | 56 | 1 | 1/10 | +uint8 +| fossilefactor | fossile energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 57 | 1 | 1/10 | +uint8 +| electricfactor | electric energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 58 | 1 | 1/10 | +uint8 +| delayboiler | delay boiler support | uint8 (>=5<=120) | minutes | true | DEVICE_DATA | 59 | 1 | 1 | +uint8 +| tempdiffboiler | temp diff boiler support | uint8 (>=1<=99) | C | true | DEVICE_DATA | 60 | 1 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/10 | +| 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.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +uint8 +| 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 | 18 | 1 | 1/2 | +| 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 | 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 | 12 | 1 | 1 | +uint8 +| 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 | 14 | 1 | 1 | +uint8 +| 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 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +uint8 +| energycostratio | energy cost ratio | uint8 (>=0<=20) | | true | DEVICE_DATA | 56 | 1 | 1/10 | +uint8 +| fossilefactor | fossile energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 57 | 1 | 1/10 | +uint8 +| electricfactor | electric energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 58 | 1 | 1/10 | +uint8 +| delayboiler | delay boiler support | uint8 (>=5<=120) | minutes | true | DEVICE_DATA | 59 | 1 | 1 | +uint8 +| tempdiffboiler | temp diff boiler support | uint8 (>=1<=99) | C | true | DEVICE_DATA | 60 | 1 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/10 | +| 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.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +uint8 +| 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 | 18 | 1 | 1/2 | +| 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 | 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 | 12 | 1 | 1 | +uint8 +| 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 | 14 | 1 | 1 | +uint8 +| 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 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +uint8 +| energycostratio | energy cost ratio | uint8 (>=0<=20) | | true | DEVICE_DATA | 56 | 1 | 1/10 | +uint8 +| fossilefactor | fossile energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 57 | 1 | 1/10 | +uint8 +| electricfactor | electric energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 58 | 1 | 1/10 | +uint8 +| delayboiler | delay boiler support | uint8 (>=5<=120) | minutes | true | DEVICE_DATA | 59 | 1 | 1 | +uint8 +| tempdiffboiler | temp diff boiler support | uint8 (>=1<=99) | C | true | DEVICE_DATA | 60 | 1 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/10 | +| 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.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +uint8 +| 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 | 18 | 1 | 1/2 | +| 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 | 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 | 12 | 1 | 1 | +uint8 +| 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 | 14 | 1 | 1 | +uint8 +| 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 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | | 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 | +uint8 +| energycostratio | energy cost ratio | uint8 (>=0<=20) | | true | DEVICE_DATA | 56 | 1 | 1/10 | +uint8 +| fossilefactor | fossile energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 57 | 1 | 1/10 | +uint8 +| electricfactor | electric energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 58 | 1 | 1/10 | +uint8 +| delayboiler | delay boiler support | uint8 (>=5<=120) | minutes | true | DEVICE_DATA | 59 | 1 | 1 | +uint8 +| tempdiffboiler | temp diff boiler support | uint8 (>=1<=99) | C | true | DEVICE_DATA | 60 | 1 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/10 | +| 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.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +uint8 +| 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 | 18 | 1 | 1/2 | +| 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 | 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 | 12 | 1 | 1 | +uint8 +| 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 | 14 | 1 | 1 | +uint8 +| 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 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | | 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 | +uint8 +| energycostratio | energy cost ratio | uint8 (>=0<=20) | | true | DEVICE_DATA | 56 | 1 | 1/10 | +uint8 +| fossilefactor | fossile energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 57 | 1 | 1/10 | +uint8 +| electricfactor | electric energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 58 | 1 | 1/10 | +uint8 +| delayboiler | delay boiler support | uint8 (>=5<=120) | minutes | true | DEVICE_DATA | 59 | 1 | 1 | +uint8 +| tempdiffboiler | temp diff boiler support | uint8 (>=1<=99) | C | true | DEVICE_DATA | 60 | 1 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/10 | +| 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.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +uint8 +| 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 | 18 | 1 | 1/2 | +| 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 | 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 | 12 | 1 | 1 | +uint8 +| 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 | 14 | 1 | 1 | +uint8 +| 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 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +uint8 +| energycostratio | energy cost ratio | uint8 (>=0<=20) | | true | DEVICE_DATA | 56 | 1 | 1/10 | +uint8 +| fossilefactor | fossile energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 57 | 1 | 1/10 | +uint8 +| electricfactor | electric energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 58 | 1 | 1/10 | +uint8 +| delayboiler | delay boiler support | uint8 (>=5<=120) | minutes | true | DEVICE_DATA | 59 | 1 | 1 | +uint8 +| tempdiffboiler | temp diff boiler support | uint8 (>=1<=99) | C | true | DEVICE_DATA | 60 | 1 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/10 | +| 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.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +uint8 +| 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 | 18 | 1 | 1/2 | +| 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 | 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 | 12 | 1 | 1 | +uint8 +| 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 | 14 | 1 | 1 | +uint8 +| 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 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | | 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 | +uint8 +| energycostratio | energy cost ratio | uint8 (>=0<=20) | | true | DEVICE_DATA | 56 | 1 | 1/10 | +uint8 +| fossilefactor | fossile energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 57 | 1 | 1/10 | +uint8 +| electricfactor | electric energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 58 | 1 | 1/10 | +uint8 +| delayboiler | delay boiler support | uint8 (>=5<=120) | minutes | true | DEVICE_DATA | 59 | 1 | 1 | +uint8 +| tempdiffboiler | temp diff boiler support | uint8 (>=1<=99) | C | true | DEVICE_DATA | 60 | 1 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/10 | +| 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.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +uint8 +| 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 | 18 | 1 | 1/2 | +| 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 | 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 | 12 | 1 | 1 | +uint8 +| 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 | 14 | 1 | 1 | +uint8 +| 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 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +uint8 +| energycostratio | energy cost ratio | uint8 (>=0<=20) | | true | DEVICE_DATA | 56 | 1 | 1/10 | +uint8 +| fossilefactor | fossile energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 57 | 1 | 1/10 | +uint8 +| electricfactor | electric energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 58 | 1 | 1/10 | +uint8 +| delayboiler | delay boiler support | uint8 (>=5<=120) | minutes | true | DEVICE_DATA | 59 | 1 | 1 | +uint8 +| tempdiffboiler | temp diff boiler support | uint8 (>=1<=99) | C | true | DEVICE_DATA | 60 | 1 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/10 | +| 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.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +uint8 +| 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 | 18 | 1 | 1/2 | +| 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 | 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 | 12 | 1 | 1 | +uint8 +| 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 | 14 | 1 | 1 | +uint8 +| 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 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +uint8 +| energycostratio | energy cost ratio | uint8 (>=0<=20) | | true | DEVICE_DATA | 56 | 1 | 1/10 | +uint8 +| fossilefactor | fossile energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 57 | 1 | 1/10 | +uint8 +| electricfactor | electric energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 58 | 1 | 1/10 | +uint8 +| delayboiler | delay boiler support | uint8 (>=5<=120) | minutes | true | DEVICE_DATA | 59 | 1 | 1 | +uint8 +| tempdiffboiler | temp diff boiler support | uint8 (>=1<=99) | C | true | DEVICE_DATA | 60 | 1 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/10 | +| 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.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +uint8 +| 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 | 18 | 1 | 1/2 | +| 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 | 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 | 12 | 1 | 1 | +uint8 +| 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 | 14 | 1 | 1 | +uint8 +| 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 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | | 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 | +uint8 +| energycostratio | energy cost ratio | uint8 (>=0<=20) | | true | DEVICE_DATA | 56 | 1 | 1/10 | +uint8 +| fossilefactor | fossile energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 57 | 1 | 1/10 | +uint8 +| electricfactor | electric energy factor | uint8 (>=0<=5) | | true | DEVICE_DATA | 58 | 1 | 1/10 | +uint8 +| delayboiler | delay boiler support | uint8 (>=5<=120) | minutes | true | DEVICE_DATA | 59 | 1 | 1 | +uint8 +| tempdiffboiler | temp diff boiler support | uint8 (>=1<=99) | C | true | DEVICE_DATA | 60 | 1 | 1 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/10 | +| 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.modetype | mode type | enum | | false | HC | 4 | 1 | 1 | +uint8 +| 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 | 18 | 1 | 1/2 | +| 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 | 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 | 12 | 1 | 1 | +uint8 +| 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 | 14 | 1 | 1 | +uint8 +| 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 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/2 | +| 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 | + +### RC100H, CR10H + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/2 | +| 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 | + +### RC120RF, TR120RF, CR20RF + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| 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 | +int16 +| hc1.seltemp | selected room temperature | int16 (>=0<=30) | C | true | HC | 0 | 1 | 1/2 | +| 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 | + +## Devices of type \_mixer + +### XCUMixer + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| hc1.flowtemphc | flow temperature (TC1) | uint16 | C | false | HC | 0 | 1 | 1/10 | +| hc1.valvestatus | mixing valve actuator (VC1) | uint8 | % | false | HC | 1 | 1 | 1 | +uint8 +| hc1.flowsettemp | setpoint flow temperature | uint8 (>=0<=0) | C | true | HC | 2 | 1 | 1 | +| hc1.pumpstatus | pump status (PC1) | boolean | | true | HC | 3 | 1 | 1 | +| hc1.activated | activated | boolean | | true | HC | 4 | 1 | 1 | +| hc1.flow | Durchfluss | uint16 | l/h | false | HC | 5 | 1 | 1 | +uint8 +| hc1.setdiffpress | set differential pressure | uint8 (>=0<=0) | mbar | true | HC | 6 | 1 | 50 | +uint8 +| hc1.valvesettime | time to set valve | uint8 (>=10<=600) | seconds | true | HC | 7 | 1 | 10 | +uint8 +| hc1.flowtempoffset | flow temperature offset for mixer | uint8 (>=0<=20) | K | true | HC | 8 | 1 | 1 | +| hc1.dhwprio | dhw priority | boolean | | true | HC | 9 | 1 | 1 | + +### MM10 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| hc1.flowtemphc | flow temperature (TC1) | uint16 | C | false | HC | 0 | 1 | 1/10 | +| hc1.valvestatus | mixing valve actuator (VC1) | int8 | % | false | HC | 1 | 1 | 1 | +uint8 +| hc1.flowsettemp | setpoint flow temperature | uint8 (>=0<=0) | C | true | HC | 2 | 1 | 1 | +| hc1.pumpstatus | pump status (PC1) | boolean | | true | HC | 3 | 1 | 1 | +| hc1.activated | activated | boolean | | true | HC | 4 | 1 | 1 | +uint8 +| hc1.valvesettime | time to set valve | uint8 (>=10<=600) | seconds | true | HC | 7 | 1 | 10 | + +### IPM + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| hc1.flowtemphc | flow temperature (TC1) | uint16 | C | false | HC | 0 | 1 | 1/10 | +| hc1.valvestatus | mixing valve actuator (VC1) | uint8 | % | false | HC | 1 | 1 | 1 | +uint8 +| hc1.flowsettemp | setpoint flow temperature | uint8 (>=0<=0) | C | true | HC | 2 | 1 | 1 | +| hc1.pumpstatus | pump status (PC1) | boolean | | true | HC | 3 | 1 | 1 | +| hc1.flowtempvf | flow temperature in header (T0/Vf) | uint16 | C | false | HC | 10 | 1 | 1/10 | + +### IPM2 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| hc1.flowtemphc | flow temperature (TC1) | uint16 | C | false | HC | 0 | 1 | 1/10 | +| hc1.valvestatus | mixing valve actuator (VC1) | uint8 | % | false | HC | 1 | 1 | 1 | +uint8 +| hc1.flowsettemp | setpoint flow temperature | uint8 (>=0<=0) | C | true | HC | 2 | 1 | 1 | +| hc1.pumpstatus | pump status (PC1) | boolean | | true | HC | 3 | 1 | 1 | +| hc1.flowtempvf | flow temperature in header (T0/Vf) | uint16 | C | false | HC | 10 | 1 | 1/10 | + +### MM50 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| hc1.flowtemphc | flow temperature (TC1) | uint16 | C | false | HC | 0 | 1 | 1/10 | +| hc1.valvestatus | mixing valve actuator (VC1) | uint8 | % | false | HC | 1 | 1 | 1 | +uint8 +| hc1.flowsettemp | setpoint flow temperature | uint8 (>=0<=0) | C | true | HC | 2 | 1 | 1 | +| hc1.pumpstatus | pump status (PC1) | boolean | | true | HC | 3 | 1 | 1 | +| hc1.activated | activated | boolean | | true | HC | 4 | 1 | 1 | +| hc1.flow | Durchfluss | uint16 | l/h | false | HC | 5 | 1 | 1 | +uint8 +| hc1.setdiffpress | set differential pressure | uint8 (>=0<=0) | mbar | true | HC | 6 | 1 | 50 | +uint8 +| hc1.valvesettime | time to set valve | uint8 (>=10<=600) | seconds | true | HC | 7 | 1 | 10 | +uint8 +| hc1.flowtempoffset | flow temperature offset for mixer | uint8 (>=0<=20) | K | true | HC | 8 | 1 | 1 | +| hc1.dhwprio | dhw priority | boolean | | true | HC | 9 | 1 | 1 | + +### MM100 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| hc1.flowtemphc | flow temperature (TC1) | uint16 | C | false | HC | 0 | 1 | 1/10 | +| hc1.valvestatus | mixing valve actuator (VC1) | uint8 | % | false | HC | 1 | 1 | 1 | +uint8 +| hc1.flowsettemp | setpoint flow temperature | uint8 (>=0<=0) | C | true | HC | 2 | 1 | 1 | +| hc1.pumpstatus | pump status (PC1) | boolean | | true | HC | 3 | 1 | 1 | +| hc1.activated | activated | boolean | | true | HC | 4 | 1 | 1 | +| hc1.flow | Durchfluss | uint16 | l/h | false | HC | 5 | 1 | 1 | +uint8 +| hc1.setdiffpress | set differential pressure | uint8 (>=0<=0) | mbar | true | HC | 6 | 1 | 50 | +uint8 +| hc1.valvesettime | time to set valve | uint8 (>=10<=600) | seconds | true | HC | 7 | 1 | 10 | +uint8 +| hc1.flowtempoffset | flow temperature offset for mixer | uint8 (>=0<=20) | K | true | HC | 8 | 1 | 1 | +| hc1.dhwprio | dhw priority | boolean | | true | HC | 9 | 1 | 1 | + +### MM200 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| hc1.flowtemphc | flow temperature (TC1) | uint16 | C | false | HC | 0 | 1 | 1/10 | +| hc1.valvestatus | mixing valve actuator (VC1) | uint8 | % | false | HC | 1 | 1 | 1 | +uint8 +| hc1.flowsettemp | setpoint flow temperature | uint8 (>=0<=0) | C | true | HC | 2 | 1 | 1 | +| hc1.pumpstatus | pump status (PC1) | boolean | | true | HC | 3 | 1 | 1 | +| hc1.activated | activated | boolean | | true | HC | 4 | 1 | 1 | +| hc1.flow | Durchfluss | uint16 | l/h | false | HC | 5 | 1 | 1 | +uint8 +| hc1.setdiffpress | set differential pressure | uint8 (>=0<=0) | mbar | true | HC | 6 | 1 | 50 | +uint8 +| hc1.valvesettime | time to set valve | uint8 (>=10<=600) | seconds | true | HC | 7 | 1 | 10 | +uint8 +| hc1.flowtempoffset | flow temperature offset for mixer | uint8 (>=0<=20) | K | true | HC | 8 | 1 | 1 | +| hc1.dhwprio | dhw priority | boolean | | true | HC | 9 | 1 | 1 | + +### MZ100 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| hc1.flowtemphc | flow temperature (TC1) | uint16 | C | false | HC | 0 | 1 | 1/10 | +| hc1.valvestatus | mixing valve actuator (VC1) | uint8 | % | false | HC | 1 | 1 | 1 | +uint8 +| hc1.flowsettemp | setpoint flow temperature | uint8 (>=0<=0) | C | true | HC | 2 | 1 | 1 | +| hc1.pumpstatus | pump status (PC1) | boolean | | true | HC | 3 | 1 | 1 | +| hc1.activated | activated | boolean | | true | HC | 4 | 1 | 1 | +| hc1.flow | Durchfluss | uint16 | l/h | false | HC | 5 | 1 | 1 | +uint8 +| hc1.setdiffpress | set differential pressure | uint8 (>=0<=0) | mbar | true | HC | 6 | 1 | 50 | +uint8 +| hc1.valvesettime | time to set valve | uint8 (>=10<=600) | seconds | true | HC | 7 | 1 | 10 | +uint8 +| hc1.flowtempoffset | flow temperature offset for mixer | uint8 (>=0<=20) | K | true | HC | 8 | 1 | 1 | +| hc1.dhwprio | dhw priority | boolean | | true | HC | 9 | 1 | 1 | + +### HM210 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| hc1.flowtemphc | flow temperature (TC1) | uint16 | C | false | HC | 0 | 1 | 1/10 | +| hc1.valvestatus | mixing valve actuator (VC1) | uint8 | % | false | HC | 1 | 1 | 1 | +uint8 +| hc1.flowsettemp | setpoint flow temperature | uint8 (>=0<=0) | C | true | HC | 2 | 1 | 1 | +| hc1.pumpstatus | pump status (PC1) | boolean | | true | HC | 3 | 1 | 1 | +| hc1.activated | activated | boolean | | true | HC | 4 | 1 | 1 | +| hc1.flow | Durchfluss | uint16 | l/h | false | HC | 5 | 1 | 1 | +uint8 +| hc1.setdiffpress | set differential pressure | uint8 (>=0<=0) | mbar | true | HC | 6 | 1 | 50 | +uint8 +| hc1.valvesettime | time to set valve | uint8 (>=10<=600) | seconds | true | HC | 7 | 1 | 10 | +uint8 +| hc1.flowtempoffset | flow temperature offset for mixer | uint8 (>=0<=20) | K | true | HC | 8 | 1 | 1 | +| hc1.dhwprio | dhw priority | boolean | | true | HC | 9 | 1 | 1 | + +## Devices of type \_solar + +### SM10 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| collectortemp | collector temperature (TS1) | int16 | C | false | DEVICE_DATA | 0 | 1 | 1/10 | +| cylbottomtemp | cylinder bottom temperature (TS2) | int16 | C | false | DEVICE_DATA | 1 | 1 | 1/10 | +| solarpump | pump (PS1) | boolean | | false | DEVICE_DATA | 2 | 1 | 1 | +| pumpworktime | pump working time | time | minutes | false | DEVICE_DATA | 3 | 2 | 1 | +uint8 +| cylmaxtemp | maximum cylinder temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| collectorshutdown | collector shutdown | boolean | | false | DEVICE_DATA | 6 | 1 | 1 | +| cylheated | cyl heated | boolean | | false | DEVICE_DATA | 7 | 1 | 1 | +| solarpumpmod | pump modulation (PS1) | uint8 | % | false | DEVICE_DATA | 8 | 1 | 1 | +uint8 +| pumpminmod | minimum pump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 9 | 1 | 1 | +uint8 +| turnondiff | pump turn on difference | uint8 (>=0<=0) | C | true | DEVICE_DATA | 10 | 1 | 1 | +uint8 +| turnoffdiff | pump turn off difference | uint8 (>=0<=0) | C | true | DEVICE_DATA | 11 | 1 | 1 | +| solarpower | actual solar power | int16 | W | false | DEVICE_DATA | 12 | 1 | 1 | +| energylasthour | energy last hour | uint24 | Wh | false | DEVICE_DATA | 13 | 2 | 1/10 | +uint8 +| maxflow | maximum solar flow | uint8 (>=0<=0) | l/min | true | DEVICE_DATA | 15 | 1 | 1/10 | +uint8 +| dhw.mintemp | minimum temperature | uint8 (>=0<=0) | C | true | DHW | 0 | 1 | 1 | +| solarenabled | solarmodule enabled | boolean | | true | DEVICE_DATA | 16 | 1 | 1 | + +### ISM1 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| collectortemp | collector temperature (TS1) | int16 | C | false | DEVICE_DATA | 0 | 1 | 1/10 | +| cylbottomtemp | cylinder bottom temperature (TS2) | int16 | C | false | DEVICE_DATA | 1 | 1 | 1/10 | +| solarpump | pump (PS1) | boolean | | false | DEVICE_DATA | 2 | 1 | 1 | +| pumpworktime | pump working time | time | minutes | false | DEVICE_DATA | 3 | 2 | 1 | +uint8 +| cylmaxtemp | maximum cylinder temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| collectorshutdown | collector shutdown | boolean | | false | DEVICE_DATA | 6 | 1 | 1 | +| cylheated | cyl heated | boolean | | false | DEVICE_DATA | 7 | 1 | 1 | +| cylmiddletemp | cylinder middle temperature (TS14) | int16 | C | false | DEVICE_DATA | 17 | 1 | 1/10 | +| retheatassist | return temperature heat assistance (TS4) | int16 | C | false | DEVICE_DATA | 18 | 1 | 1/10 | +| heatassistvalve | heat assistance valve (M1) | boolean | | false | DEVICE_DATA | 19 | 1 | 1 | +| energylasthour | energy last hour | uint24 | Wh | false | DEVICE_DATA | 13 | 2 | 1/10 | + +### ISM2 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| collectortemp | collector temperature (TS1) | int16 | C | false | DEVICE_DATA | 0 | 1 | 1/10 | +| cylbottomtemp | cylinder bottom temperature (TS2) | int16 | C | false | DEVICE_DATA | 1 | 1 | 1/10 | +| solarpump | pump (PS1) | boolean | | false | DEVICE_DATA | 2 | 1 | 1 | +| pumpworktime | pump working time | time | minutes | false | DEVICE_DATA | 3 | 2 | 1 | +uint8 +| cylmaxtemp | maximum cylinder temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| collectorshutdown | collector shutdown | boolean | | false | DEVICE_DATA | 6 | 1 | 1 | +| cylheated | cyl heated | boolean | | false | DEVICE_DATA | 7 | 1 | 1 | +| cylmiddletemp | cylinder middle temperature (TS14) | int16 | C | false | DEVICE_DATA | 17 | 1 | 1/10 | +| retheatassist | return temperature heat assistance (TS4) | int16 | C | false | DEVICE_DATA | 18 | 1 | 1/10 | +| heatassistvalve | heat assistance valve (M1) | boolean | | false | DEVICE_DATA | 19 | 1 | 1 | +| energylasthour | energy last hour | uint24 | Wh | false | DEVICE_DATA | 13 | 2 | 1/10 | + +### SM50 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| collectortemp | collector temperature (TS1) | int16 | C | false | DEVICE_DATA | 0 | 1 | 1/10 | +| cylbottomtemp | cylinder bottom temperature (TS2) | int16 | C | false | DEVICE_DATA | 1 | 1 | 1/10 | +| solarpump | pump (PS1) | boolean | | false | DEVICE_DATA | 2 | 1 | 1 | +| pumpworktime | pump working time | time | minutes | false | DEVICE_DATA | 3 | 2 | 1 | +uint8 +| cylmaxtemp | maximum cylinder temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| collectorshutdown | collector shutdown | boolean | | false | DEVICE_DATA | 6 | 1 | 1 | +| cylheated | cyl heated | boolean | | false | DEVICE_DATA | 7 | 1 | 1 | +| solarpumpmod | pump modulation (PS1) | uint8 | % | false | DEVICE_DATA | 8 | 1 | 1 | +uint8 +| pumpminmod | minimum pump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 9 | 1 | 5 | +uint8 +| turnondiff | pump turn on difference | uint8 (>=0<=0) | C | true | DEVICE_DATA | 10 | 1 | 1/10 | +uint8 +| turnoffdiff | pump turn off difference | uint8 (>=0<=0) | C | true | DEVICE_DATA | 11 | 1 | 1/10 | +| collector2temp | collector 2 temperature (TS7) | int16 | C | false | DEVICE_DATA | 20 | 1 | 1/10 | +| cylmiddletemp | cylinder middle temperature (TS14) | int16 | C | false | DEVICE_DATA | 17 | 1 | 1/10 | +| ts3 | cylinder middle temperature (TS3) | int16 | C | false | DEVICE_DATA | 21 | 1 | 1/10 | +| retheatassist | return temperature heat assistance (TS4) | int16 | C | false | DEVICE_DATA | 18 | 1 | 1/10 | +| ts8 | (TS8) | int16 | C | false | DEVICE_DATA | 22 | 1 | 1/10 | +| ts16 | (TS16) | int16 | C | false | DEVICE_DATA | 23 | 1 | 1/10 | +| heatassistvalve | heat assistance valve (M1) | boolean | | false | DEVICE_DATA | 19 | 1 | 1 | +| heatassistpower | heat assistance valve power (M1) | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| solarpump2 | pump 2 (PS4) | boolean | | false | DEVICE_DATA | 25 | 1 | 1 | +| solarpump2mod | pump 2 modulation (PS4) | uint8 | % | false | DEVICE_DATA | 26 | 1 | 1 | +| cyl2bottomtemp | second cylinder bottom temperature (TS5) | int16 | C | false | DEVICE_DATA | 27 | 1 | 1/10 | +| cyl3bottomtemp | third cylinder bottom temperature (TS11) | int16 | C | false | DEVICE_DATA | 28 | 1 | 1/10 | +| cyltoptemp | cylinder top temperature (TS10) | int16 | C | false | DEVICE_DATA | 29 | 1 | 1/10 | +| heatexchangertemp | heat exchanger temperature (TS6) | int16 | C | false | DEVICE_DATA | 30 | 1 | 1/10 | +| cylpumpmod | cylinder pump modulation (PS5) | uint8 | % | false | DEVICE_DATA | 31 | 1 | 1 | +| valvestatus | valve status | boolean | | false | DEVICE_DATA | 32 | 1 | 1 | +| vs1status | valve status VS1 | boolean | | false | DEVICE_DATA | 33 | 1 | 1 | +| vs3status | valve status VS3 | boolean | | false | DEVICE_DATA | 34 | 1 | 1 | +| transferpump | transfer pump | boolean | | false | DEVICE_DATA | 35 | 1 | 1 | +| transferpumpmod | transfer pump modulation | uint8 | % | false | DEVICE_DATA | 36 | 1 | 1 | +uint8 +| collectormaxtemp | maximum collector temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 37 | 1 | 1 | +uint8 +| collectormintemp | minimum collector temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 38 | 1 | 1 | +| energylasthour | energy last hour | uint24 | Wh | false | DEVICE_DATA | 13 | 2 | 1/10 | +| energytoday | total energy today | uint24 | Wh | false | DEVICE_DATA | 39 | 2 | 1 | +| energytotal | total energy | uint24 | kWh | false | DEVICE_DATA | 41 | 2 | 1/10 | +| pump2worktime | pump 2 working time | time | minutes | false | DEVICE_DATA | 43 | 2 | 1 | +| m1worktime | differential control working time | time | minutes | false | DEVICE_DATA | 45 | 2 | 1 | +| heattransfersystem | heattransfer system | boolean | | true | DEVICE_DATA | 47 | 1 | 1 | +| externalcyl | external cylinder | boolean | | true | DEVICE_DATA | 48 | 1 | 1 | +| thermaldisinfect | thermal disinfection | boolean | | true | DEVICE_DATA | 49 | 1 | 1 | +| heatmetering | heatmetering | boolean | | true | DEVICE_DATA | 50 | 1 | 1 | +| activated | activated | boolean | | true | DEVICE_DATA | 51 | 1 | 1 | +| solarpumpmode | solar pump mode | enum | | true | DEVICE_DATA | 52 | 1 | 1 | +| solarpumpkick | solar pump kick | boolean | | true | DEVICE_DATA | 53 | 1 | 1 | +| plainwatermode | plain water mode | boolean | | true | DEVICE_DATA | 54 | 1 | 1 | +| doublematchflow | doublematchflow | boolean | | true | DEVICE_DATA | 55 | 1 | 1 | +uint8 +| pump2minmod | minimum pump 2 modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 56 | 1 | 1 | +uint8 +| turnondiff2 | pump 2 turn on difference | uint8 (>=0<=0) | C | true | DEVICE_DATA | 57 | 1 | 1/10 | +uint8 +| turnoffdiff2 | pump 2 turn off difference | uint8 (>=0<=0) | C | true | DEVICE_DATA | 58 | 1 | 1/10 | +| pump2kick | pump kick 2 | boolean | | true | DEVICE_DATA | 59 | 1 | 1 | +uint8 +| climatezone | climate zone | uint8 (>=0<=0) | | true | DEVICE_DATA | 60 | 1 | 1 | +uint16 +| collector1area | collector 1 area | uint16 (>=0<=0) | m² | true | DEVICE_DATA | 61 | 1 | 1/10 | +| collector1type | collector 1 type | enum | | true | DEVICE_DATA | 62 | 1 | 1 | +uint16 +| collector2area | collector 2 area | uint16 (>=0<=0) | m² | true | DEVICE_DATA | 63 | 1 | 1/10 | +| collector2type | collector 2 type | enum | | true | DEVICE_DATA | 64 | 1 | 1 | +| cylpriority | cylinder priority | enum | | true | DEVICE_DATA | 65 | 1 | 1 | +| heatcntflowtemp | heat counter flow temperature | uint16 | C | false | DEVICE_DATA | 66 | 1 | 1/10 | +| heatcntrettemp | heat counter return temperature | uint16 | C | false | DEVICE_DATA | 67 | 1 | 1/10 | +| heatcnt | heat counter impulses | uint8 | | false | DEVICE_DATA | 68 | 1 | 1 | +| swapflowtemp | swap flow temperature (TS14) | uint16 | C | false | DEVICE_DATA | 69 | 1 | 1/10 | +| swaprettemp | swap return temperature (TS15) | uint16 | C | false | DEVICE_DATA | 70 | 1 | 1/10 | +int8 +| heatassiston | heat assistance on | int8 (>=0<=0) | K | true | DEVICE_DATA | 71 | 1 | 1/10 | +int8 +| heatassistoff | heat assistance off | int8 (>=0<=0) | K | true | DEVICE_DATA | 72 | 1 | 1/10 | + +### SM100, MS100 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| collectortemp | collector temperature (TS1) | int16 | C | false | DEVICE_DATA | 0 | 1 | 1/10 | +| cylbottomtemp | cylinder bottom temperature (TS2) | int16 | C | false | DEVICE_DATA | 1 | 1 | 1/10 | +| solarpump | pump (PS1) | boolean | | false | DEVICE_DATA | 2 | 1 | 1 | +| pumpworktime | pump working time | time | minutes | false | DEVICE_DATA | 3 | 2 | 1 | +uint8 +| cylmaxtemp | maximum cylinder temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| collectorshutdown | collector shutdown | boolean | | false | DEVICE_DATA | 6 | 1 | 1 | +| cylheated | cyl heated | boolean | | false | DEVICE_DATA | 7 | 1 | 1 | +| solarpumpmod | pump modulation (PS1) | uint8 | % | false | DEVICE_DATA | 8 | 1 | 1 | +uint8 +| pumpminmod | minimum pump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 9 | 1 | 5 | +uint8 +| turnondiff | pump turn on difference | uint8 (>=0<=0) | C | true | DEVICE_DATA | 10 | 1 | 1/10 | +uint8 +| turnoffdiff | pump turn off difference | uint8 (>=0<=0) | C | true | DEVICE_DATA | 11 | 1 | 1/10 | +| collector2temp | collector 2 temperature (TS7) | int16 | C | false | DEVICE_DATA | 20 | 1 | 1/10 | +| cylmiddletemp | cylinder middle temperature (TS14) | int16 | C | false | DEVICE_DATA | 17 | 1 | 1/10 | +| ts3 | cylinder middle temperature (TS3) | int16 | C | false | DEVICE_DATA | 21 | 1 | 1/10 | +| retheatassist | return temperature heat assistance (TS4) | int16 | C | false | DEVICE_DATA | 18 | 1 | 1/10 | +| ts8 | (TS8) | int16 | C | false | DEVICE_DATA | 22 | 1 | 1/10 | +| ts16 | (TS16) | int16 | C | false | DEVICE_DATA | 23 | 1 | 1/10 | +| heatassistvalve | heat assistance valve (M1) | boolean | | false | DEVICE_DATA | 19 | 1 | 1 | +| heatassistpower | heat assistance valve power (M1) | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| solarpump2 | pump 2 (PS4) | boolean | | false | DEVICE_DATA | 25 | 1 | 1 | +| solarpump2mod | pump 2 modulation (PS4) | uint8 | % | false | DEVICE_DATA | 26 | 1 | 1 | +| cyl2bottomtemp | second cylinder bottom temperature (TS5) | int16 | C | false | DEVICE_DATA | 27 | 1 | 1/10 | +| cyl3bottomtemp | third cylinder bottom temperature (TS11) | int16 | C | false | DEVICE_DATA | 28 | 1 | 1/10 | +| cyltoptemp | cylinder top temperature (TS10) | int16 | C | false | DEVICE_DATA | 29 | 1 | 1/10 | +| heatexchangertemp | heat exchanger temperature (TS6) | int16 | C | false | DEVICE_DATA | 30 | 1 | 1/10 | +| cylpumpmod | cylinder pump modulation (PS5) | uint8 | % | false | DEVICE_DATA | 31 | 1 | 1 | +| valvestatus | valve status | boolean | | false | DEVICE_DATA | 32 | 1 | 1 | +| vs1status | valve status VS1 | boolean | | false | DEVICE_DATA | 33 | 1 | 1 | +| vs3status | valve status VS3 | boolean | | false | DEVICE_DATA | 34 | 1 | 1 | +| transferpump | transfer pump | boolean | | false | DEVICE_DATA | 35 | 1 | 1 | +| transferpumpmod | transfer pump modulation | uint8 | % | false | DEVICE_DATA | 36 | 1 | 1 | +uint8 +| collectormaxtemp | maximum collector temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 37 | 1 | 1 | +uint8 +| collectormintemp | minimum collector temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 38 | 1 | 1 | +| energylasthour | energy last hour | uint24 | Wh | false | DEVICE_DATA | 13 | 2 | 1/10 | +| energytoday | total energy today | uint24 | Wh | false | DEVICE_DATA | 39 | 2 | 1 | +| energytotal | total energy | uint24 | kWh | false | DEVICE_DATA | 41 | 2 | 1/10 | +| pump2worktime | pump 2 working time | time | minutes | false | DEVICE_DATA | 43 | 2 | 1 | +| m1worktime | differential control working time | time | minutes | false | DEVICE_DATA | 45 | 2 | 1 | +| heattransfersystem | heattransfer system | boolean | | true | DEVICE_DATA | 47 | 1 | 1 | +| externalcyl | external cylinder | boolean | | true | DEVICE_DATA | 48 | 1 | 1 | +| thermaldisinfect | thermal disinfection | boolean | | true | DEVICE_DATA | 49 | 1 | 1 | +| heatmetering | heatmetering | boolean | | true | DEVICE_DATA | 50 | 1 | 1 | +| activated | activated | boolean | | true | DEVICE_DATA | 51 | 1 | 1 | +| solarpumpmode | solar pump mode | enum | | true | DEVICE_DATA | 52 | 1 | 1 | +| solarpumpkick | solar pump kick | boolean | | true | DEVICE_DATA | 53 | 1 | 1 | +| plainwatermode | plain water mode | boolean | | true | DEVICE_DATA | 54 | 1 | 1 | +| doublematchflow | doublematchflow | boolean | | true | DEVICE_DATA | 55 | 1 | 1 | +uint8 +| pump2minmod | minimum pump 2 modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 56 | 1 | 1 | +uint8 +| turnondiff2 | pump 2 turn on difference | uint8 (>=0<=0) | C | true | DEVICE_DATA | 57 | 1 | 1/10 | +uint8 +| turnoffdiff2 | pump 2 turn off difference | uint8 (>=0<=0) | C | true | DEVICE_DATA | 58 | 1 | 1/10 | +| pump2kick | pump kick 2 | boolean | | true | DEVICE_DATA | 59 | 1 | 1 | +uint8 +| climatezone | climate zone | uint8 (>=0<=0) | | true | DEVICE_DATA | 60 | 1 | 1 | +uint16 +| collector1area | collector 1 area | uint16 (>=0<=0) | m² | true | DEVICE_DATA | 61 | 1 | 1/10 | +| collector1type | collector 1 type | enum | | true | DEVICE_DATA | 62 | 1 | 1 | +uint16 +| collector2area | collector 2 area | uint16 (>=0<=0) | m² | true | DEVICE_DATA | 63 | 1 | 1/10 | +| collector2type | collector 2 type | enum | | true | DEVICE_DATA | 64 | 1 | 1 | +| cylpriority | cylinder priority | enum | | true | DEVICE_DATA | 65 | 1 | 1 | +| heatcntflowtemp | heat counter flow temperature | uint16 | C | false | DEVICE_DATA | 66 | 1 | 1/10 | +| heatcntrettemp | heat counter return temperature | uint16 | C | false | DEVICE_DATA | 67 | 1 | 1/10 | +| heatcnt | heat counter impulses | uint8 | | false | DEVICE_DATA | 68 | 1 | 1 | +| swapflowtemp | swap flow temperature (TS14) | uint16 | C | false | DEVICE_DATA | 69 | 1 | 1/10 | +| swaprettemp | swap return temperature (TS15) | uint16 | C | false | DEVICE_DATA | 70 | 1 | 1/10 | +int8 +| heatassiston | heat assistance on | int8 (>=0<=0) | K | true | DEVICE_DATA | 71 | 1 | 1/10 | +int8 +| heatassistoff | heat assistance off | int8 (>=0<=0) | K | true | DEVICE_DATA | 72 | 1 | 1/10 | + +### SM200, MS200 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| collectortemp | collector temperature (TS1) | int16 | C | false | DEVICE_DATA | 0 | 1 | 1/10 | +| cylbottomtemp | cylinder bottom temperature (TS2) | int16 | C | false | DEVICE_DATA | 1 | 1 | 1/10 | +| solarpump | pump (PS1) | boolean | | false | DEVICE_DATA | 2 | 1 | 1 | +| pumpworktime | pump working time | time | minutes | false | DEVICE_DATA | 3 | 2 | 1 | +uint8 +| cylmaxtemp | maximum cylinder temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 5 | 1 | 1 | +| collectorshutdown | collector shutdown | boolean | | false | DEVICE_DATA | 6 | 1 | 1 | +| cylheated | cyl heated | boolean | | false | DEVICE_DATA | 7 | 1 | 1 | +| solarpumpmod | pump modulation (PS1) | uint8 | % | false | DEVICE_DATA | 8 | 1 | 1 | +uint8 +| pumpminmod | minimum pump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 9 | 1 | 5 | +uint8 +| turnondiff | pump turn on difference | uint8 (>=0<=0) | C | true | DEVICE_DATA | 10 | 1 | 1/10 | +uint8 +| turnoffdiff | pump turn off difference | uint8 (>=0<=0) | C | true | DEVICE_DATA | 11 | 1 | 1/10 | +| collector2temp | collector 2 temperature (TS7) | int16 | C | false | DEVICE_DATA | 20 | 1 | 1/10 | +| cylmiddletemp | cylinder middle temperature (TS14) | int16 | C | false | DEVICE_DATA | 17 | 1 | 1/10 | +| ts3 | cylinder middle temperature (TS3) | int16 | C | false | DEVICE_DATA | 21 | 1 | 1/10 | +| retheatassist | return temperature heat assistance (TS4) | int16 | C | false | DEVICE_DATA | 18 | 1 | 1/10 | +| ts8 | (TS8) | int16 | C | false | DEVICE_DATA | 22 | 1 | 1/10 | +| ts16 | (TS16) | int16 | C | false | DEVICE_DATA | 23 | 1 | 1/10 | +| heatassistvalve | heat assistance valve (M1) | boolean | | false | DEVICE_DATA | 19 | 1 | 1 | +| heatassistpower | heat assistance valve power (M1) | uint8 | % | false | DEVICE_DATA | 24 | 1 | 1 | +| solarpump2 | pump 2 (PS4) | boolean | | false | DEVICE_DATA | 25 | 1 | 1 | +| solarpump2mod | pump 2 modulation (PS4) | uint8 | % | false | DEVICE_DATA | 26 | 1 | 1 | +| cyl2bottomtemp | second cylinder bottom temperature (TS5) | int16 | C | false | DEVICE_DATA | 27 | 1 | 1/10 | +| cyl3bottomtemp | third cylinder bottom temperature (TS11) | int16 | C | false | DEVICE_DATA | 28 | 1 | 1/10 | +| cyltoptemp | cylinder top temperature (TS10) | int16 | C | false | DEVICE_DATA | 29 | 1 | 1/10 | +| heatexchangertemp | heat exchanger temperature (TS6) | int16 | C | false | DEVICE_DATA | 30 | 1 | 1/10 | +| cylpumpmod | cylinder pump modulation (PS5) | uint8 | % | false | DEVICE_DATA | 31 | 1 | 1 | +| valvestatus | valve status | boolean | | false | DEVICE_DATA | 32 | 1 | 1 | +| vs1status | valve status VS1 | boolean | | false | DEVICE_DATA | 33 | 1 | 1 | +| vs3status | valve status VS3 | boolean | | false | DEVICE_DATA | 34 | 1 | 1 | +| transferpump | transfer pump | boolean | | false | DEVICE_DATA | 35 | 1 | 1 | +| transferpumpmod | transfer pump modulation | uint8 | % | false | DEVICE_DATA | 36 | 1 | 1 | +uint8 +| collectormaxtemp | maximum collector temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 37 | 1 | 1 | +uint8 +| collectormintemp | minimum collector temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 38 | 1 | 1 | +| energylasthour | energy last hour | uint24 | Wh | false | DEVICE_DATA | 13 | 2 | 1/10 | +| energytoday | total energy today | uint24 | Wh | false | DEVICE_DATA | 39 | 2 | 1 | +| energytotal | total energy | uint24 | kWh | false | DEVICE_DATA | 41 | 2 | 1/10 | +| pump2worktime | pump 2 working time | time | minutes | false | DEVICE_DATA | 43 | 2 | 1 | +| m1worktime | differential control working time | time | minutes | false | DEVICE_DATA | 45 | 2 | 1 | +| heattransfersystem | heattransfer system | boolean | | true | DEVICE_DATA | 47 | 1 | 1 | +| externalcyl | external cylinder | boolean | | true | DEVICE_DATA | 48 | 1 | 1 | +| thermaldisinfect | thermal disinfection | boolean | | true | DEVICE_DATA | 49 | 1 | 1 | +| heatmetering | heatmetering | boolean | | true | DEVICE_DATA | 50 | 1 | 1 | +| activated | activated | boolean | | true | DEVICE_DATA | 51 | 1 | 1 | +| solarpumpmode | solar pump mode | enum | | true | DEVICE_DATA | 52 | 1 | 1 | +| solarpumpkick | solar pump kick | boolean | | true | DEVICE_DATA | 53 | 1 | 1 | +| plainwatermode | plain water mode | boolean | | true | DEVICE_DATA | 54 | 1 | 1 | +| doublematchflow | doublematchflow | boolean | | true | DEVICE_DATA | 55 | 1 | 1 | +uint8 +| pump2minmod | minimum pump 2 modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 56 | 1 | 1 | +uint8 +| turnondiff2 | pump 2 turn on difference | uint8 (>=0<=0) | C | true | DEVICE_DATA | 57 | 1 | 1/10 | +uint8 +| turnoffdiff2 | pump 2 turn off difference | uint8 (>=0<=0) | C | true | DEVICE_DATA | 58 | 1 | 1/10 | +| pump2kick | pump kick 2 | boolean | | true | DEVICE_DATA | 59 | 1 | 1 | +uint8 +| climatezone | climate zone | uint8 (>=0<=0) | | true | DEVICE_DATA | 60 | 1 | 1 | +uint16 +| collector1area | collector 1 area | uint16 (>=0<=0) | m² | true | DEVICE_DATA | 61 | 1 | 1/10 | +| collector1type | collector 1 type | enum | | true | DEVICE_DATA | 62 | 1 | 1 | +uint16 +| collector2area | collector 2 area | uint16 (>=0<=0) | m² | true | DEVICE_DATA | 63 | 1 | 1/10 | +| collector2type | collector 2 type | enum | | true | DEVICE_DATA | 64 | 1 | 1 | +| cylpriority | cylinder priority | enum | | true | DEVICE_DATA | 65 | 1 | 1 | +| heatcntflowtemp | heat counter flow temperature | uint16 | C | false | DEVICE_DATA | 66 | 1 | 1/10 | +| heatcntrettemp | heat counter return temperature | uint16 | C | false | DEVICE_DATA | 67 | 1 | 1/10 | +| heatcnt | heat counter impulses | uint8 | | false | DEVICE_DATA | 68 | 1 | 1 | +| swapflowtemp | swap flow temperature (TS14) | uint16 | C | false | DEVICE_DATA | 69 | 1 | 1/10 | +| swaprettemp | swap return temperature (TS15) | uint16 | C | false | DEVICE_DATA | 70 | 1 | 1/10 | +int8 +| heatassiston | heat assistance on | int8 (>=0<=0) | K | true | DEVICE_DATA | 71 | 1 | 1/10 | +int8 +| heatassistoff | heat assistance off | int8 (>=0<=0) | K | true | DEVICE_DATA | 72 | 1 | 1/10 | + +## Devices of type \_heatpump + +### HP Module + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| airhumidity | relative air humidity | uint8 | % | false | DEVICE_DATA | 0 | 1 | 1 | +| dewtemperature | dew point temperature | uint8 | C | false | DEVICE_DATA | 1 | 1 | 1 | +| curflowtemp | current flow temperature | int16 | C | false | DEVICE_DATA | 2 | 1 | 1/10 | +| rettemp | return temperature | int16 | C | false | DEVICE_DATA | 3 | 1 | 1/10 | +| sysrettemp | system return temperature | int16 | C | false | DEVICE_DATA | 4 | 1 | 1/10 | +| hpta4 | drain pan temp (TA4) | int16 | C | false | DEVICE_DATA | 5 | 1 | 1/10 | +| hptr1 | compressor temperature (TR1) | int16 | C | false | DEVICE_DATA | 6 | 1 | 1/10 | +| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| hptr4 | evaporator inlet temperature (TR4) | int16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| hptr5 | compressor inlet temperature (TR5) | int16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| hptr6 | compressor outlet temperature (TR6) | int16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| hptl2 | air inlet temperature (TL2) | int16 | C | false | DEVICE_DATA | 11 | 1 | 1/10 | +| hppl1 | low pressure side temperature (PL1) | int16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | +| hpph1 | high pressure side temperature (PH1) | int16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 14 | 1 | 1 | +| hpcompspd | compressor speed | uint8 | % | false | DEVICE_DATA | 15 | 1 | 1 | +| hpactivity | compressor activity | enum | | false | DEVICE_DATA | 16 | 1 | 1 | +| hppower | compressor power output | uint16 | W | false | DEVICE_DATA | 17 | 1 | 1 | +| hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 18 | 1 | 1 | +| hppumpflow | volume flow | uint16 | l/h | false | DEVICE_DATA | 19 | 1 | 10 | +| hpcompspder1 | compressor speed ER1 | uint8 | % | false | DEVICE_DATA | 20 | 1 | 1 | +| hpSpeedSetpoint | speed setpoint | uint8 | % | false | DEVICE_DATA | 21 | 1 | 1 | +| smartgridmode | smart grid mode | uint8 | | false | DEVICE_DATA | 22 | 1 | 1 | +| hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 23 | 1 | 1 | +| lownoisemode | low noise mode | enum | | true | DEVICE_DATA | 24 | 1 | 1 | +uint8 +| lownoisestart | low noise starttime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 25 | 1 | 1 | +uint8 +| lownoisestop | low noise stoptime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 26 | 1 | 1 | +| dhw.hybriddhw | hybrid DHW | enum | | true | DHW | 0 | 1 | 1 | +uint8 +| energypricegas | energy price gas | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 27 | 1 | 1 | +uint8 +| energypriceel | energy price electric | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 28 | 1 | 1 | +uint8 +| energyfeedpv | feed in PV | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 29 | 1 | 1 | +int8 +| switchovertemp | outside switchover temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 30 | 1 | 1 | +| airpurgemode | air purge mode | boolean | | true | DEVICE_DATA | 31 | 1 | 1 | +uint8 +| heatpumpoutput | heatpump output | uint8 (>=0<=0) | % | true | DEVICE_DATA | 32 | 1 | 1 | +| coolingcircuit | cooling circuit | boolean | | true | DEVICE_DATA | 33 | 1 | 1 | +uint8 +| compstartmod | compressor start modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 34 | 1 | 1 | +| heatdrainpan | heat drain pan | boolean | | true | DEVICE_DATA | 35 | 1 | 1 | +| heatcable | heating cable | boolean | | true | DEVICE_DATA | 36 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 37 | 2 | 1/100 | +| dhw.nrg | energy | uint24 | kWh | false | DHW | 1 | 2 | 1/100 | +| nrgheat | energy heating | uint24 | kWh | false | DEVICE_DATA | 39 | 2 | 1/100 | +| metertotal | meter total | uint24 | kWh | false | DEVICE_DATA | 41 | 2 | 1/100 | +| metercomp | meter compressor | uint24 | kWh | false | DEVICE_DATA | 43 | 2 | 1/100 | +| metereheat | meter e-heater | uint24 | kWh | false | DEVICE_DATA | 45 | 2 | 1/100 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 47 | 2 | 1/100 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 3 | 2 | 1/100 | +| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 49 | 2 | 1 | +| dhw.startshp | starts hp | uint24 | | false | DHW | 5 | 2 | 1 | +| fuelheat | fuel consumption heating | uint32 | kWh | false | DEVICE_DATA | 51 | 2 | 1/10 | +| dhw.fueldhw | fuel consumption | uint32 | kWh | false | DHW | 7 | 2 | 1/10 | +| elheat | el. consumption heating | uint32 | kWh | false | DEVICE_DATA | 53 | 2 | 1/10 | +| dhw.eldhw | el. consumption | uint32 | kWh | false | DHW | 9 | 2 | 1/10 | +| elgenheat | el. generation heating | uint32 | kWh | false | DEVICE_DATA | 55 | 2 | 1/10 | +| dhw.elgendhw | el generation | uint32 | kWh | false | DHW | 11 | 2 | 1/10 | + +### Hybrid Manager HM200 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| airhumidity | relative air humidity | uint8 | % | false | DEVICE_DATA | 0 | 1 | 1 | +| dewtemperature | dew point temperature | uint8 | C | false | DEVICE_DATA | 1 | 1 | 1 | +| curflowtemp | current flow temperature | int16 | C | false | DEVICE_DATA | 2 | 1 | 1/10 | +| rettemp | return temperature | int16 | C | false | DEVICE_DATA | 3 | 1 | 1/10 | +| sysrettemp | system return temperature | int16 | C | false | DEVICE_DATA | 4 | 1 | 1/10 | +| hpta4 | drain pan temp (TA4) | int16 | C | false | DEVICE_DATA | 5 | 1 | 1/10 | +| hptr1 | compressor temperature (TR1) | int16 | C | false | DEVICE_DATA | 6 | 1 | 1/10 | +| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| hptr4 | evaporator inlet temperature (TR4) | int16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| hptr5 | compressor inlet temperature (TR5) | int16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| hptr6 | compressor outlet temperature (TR6) | int16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| hptl2 | air inlet temperature (TL2) | int16 | C | false | DEVICE_DATA | 11 | 1 | 1/10 | +| hppl1 | low pressure side temperature (PL1) | int16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | +| hpph1 | high pressure side temperature (PH1) | int16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 14 | 1 | 1 | +| hpcompspd | compressor speed | uint8 | % | false | DEVICE_DATA | 15 | 1 | 1 | +| hpactivity | compressor activity | enum | | false | DEVICE_DATA | 16 | 1 | 1 | +| hppower | compressor power output | uint16 | W | false | DEVICE_DATA | 17 | 1 | 1 | +| hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 18 | 1 | 1 | +| hppumpflow | volume flow | uint16 | l/h | false | DEVICE_DATA | 19 | 1 | 10 | +| hpcompspder1 | compressor speed ER1 | uint8 | % | false | DEVICE_DATA | 20 | 1 | 1 | +| hpSpeedSetpoint | speed setpoint | uint8 | % | false | DEVICE_DATA | 21 | 1 | 1 | +| smartgridmode | smart grid mode | uint8 | | false | DEVICE_DATA | 22 | 1 | 1 | +| hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 23 | 1 | 1 | +| lownoisemode | low noise mode | enum | | true | DEVICE_DATA | 24 | 1 | 1 | +uint8 +| lownoisestart | low noise starttime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 25 | 1 | 1 | +uint8 +| lownoisestop | low noise stoptime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 26 | 1 | 1 | +| dhw.hybriddhw | hybrid DHW | enum | | true | DHW | 0 | 1 | 1 | +uint8 +| energypricegas | energy price gas | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 27 | 1 | 1 | +uint8 +| energypriceel | energy price electric | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 28 | 1 | 1 | +uint8 +| energyfeedpv | feed in PV | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 29 | 1 | 1 | +int8 +| switchovertemp | outside switchover temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 30 | 1 | 1 | +| airpurgemode | air purge mode | boolean | | true | DEVICE_DATA | 31 | 1 | 1 | +uint8 +| heatpumpoutput | heatpump output | uint8 (>=0<=0) | % | true | DEVICE_DATA | 32 | 1 | 1 | +| coolingcircuit | cooling circuit | boolean | | true | DEVICE_DATA | 33 | 1 | 1 | +uint8 +| compstartmod | compressor start modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 34 | 1 | 1 | +| heatdrainpan | heat drain pan | boolean | | true | DEVICE_DATA | 35 | 1 | 1 | +| heatcable | heating cable | boolean | | true | DEVICE_DATA | 36 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 37 | 2 | 1/100 | +| dhw.nrg | energy | uint24 | kWh | false | DHW | 1 | 2 | 1/100 | +| nrgheat | energy heating | uint24 | kWh | false | DEVICE_DATA | 39 | 2 | 1/100 | +| metertotal | meter total | uint24 | kWh | false | DEVICE_DATA | 41 | 2 | 1/100 | +| metercomp | meter compressor | uint24 | kWh | false | DEVICE_DATA | 43 | 2 | 1/100 | +| metereheat | meter e-heater | uint24 | kWh | false | DEVICE_DATA | 45 | 2 | 1/100 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 47 | 2 | 1/100 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 3 | 2 | 1/100 | +| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 49 | 2 | 1 | +| dhw.startshp | starts hp | uint24 | | false | DHW | 5 | 2 | 1 | +| fuelheat | fuel consumption heating | uint32 | kWh | false | DEVICE_DATA | 51 | 2 | 1/10 | +| dhw.fueldhw | fuel consumption | uint32 | kWh | false | DHW | 7 | 2 | 1/10 | +| elheat | el. consumption heating | uint32 | kWh | false | DEVICE_DATA | 53 | 2 | 1/10 | +| dhw.eldhw | el. consumption | uint32 | kWh | false | DHW | 9 | 2 | 1/10 | +| elgenheat | el. generation heating | uint32 | kWh | false | DEVICE_DATA | 55 | 2 | 1/10 | +| dhw.elgendhw | el generation | uint32 | kWh | false | DHW | 11 | 2 | 1/10 | + +### CSH5800iG + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| airhumidity | relative air humidity | uint8 | % | false | DEVICE_DATA | 0 | 1 | 1 | +| dewtemperature | dew point temperature | uint8 | C | false | DEVICE_DATA | 1 | 1 | 1 | +| curflowtemp | current flow temperature | int16 | C | false | DEVICE_DATA | 2 | 1 | 1/10 | +| rettemp | return temperature | int16 | C | false | DEVICE_DATA | 3 | 1 | 1/10 | +| sysrettemp | system return temperature | int16 | C | false | DEVICE_DATA | 4 | 1 | 1/10 | +| hpta4 | drain pan temp (TA4) | int16 | C | false | DEVICE_DATA | 5 | 1 | 1/10 | +| hptr1 | compressor temperature (TR1) | int16 | C | false | DEVICE_DATA | 6 | 1 | 1/10 | +| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 | C | false | DEVICE_DATA | 7 | 1 | 1/10 | +| hptr4 | evaporator inlet temperature (TR4) | int16 | C | false | DEVICE_DATA | 8 | 1 | 1/10 | +| hptr5 | compressor inlet temperature (TR5) | int16 | C | false | DEVICE_DATA | 9 | 1 | 1/10 | +| hptr6 | compressor outlet temperature (TR6) | int16 | C | false | DEVICE_DATA | 10 | 1 | 1/10 | +| hptl2 | air inlet temperature (TL2) | int16 | C | false | DEVICE_DATA | 11 | 1 | 1/10 | +| hppl1 | low pressure side temperature (PL1) | int16 | C | false | DEVICE_DATA | 12 | 1 | 1/10 | +| hpph1 | high pressure side temperature (PH1) | int16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | +| heatingpumpmod | heating pump modulation | uint8 | % | false | DEVICE_DATA | 14 | 1 | 1 | +| hpcompspd | compressor speed | uint8 | % | false | DEVICE_DATA | 15 | 1 | 1 | +| hpactivity | compressor activity | enum | | false | DEVICE_DATA | 16 | 1 | 1 | +| hppower | compressor power output | uint16 | W | false | DEVICE_DATA | 17 | 1 | 1 | +| hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 18 | 1 | 1 | +| hppumpflow | volume flow | uint16 | l/h | false | DEVICE_DATA | 19 | 1 | 10 | +| hpcompspder1 | compressor speed ER1 | uint8 | % | false | DEVICE_DATA | 20 | 1 | 1 | +| hpSpeedSetpoint | speed setpoint | uint8 | % | false | DEVICE_DATA | 21 | 1 | 1 | +| smartgridmode | smart grid mode | uint8 | | false | DEVICE_DATA | 22 | 1 | 1 | +| hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 23 | 1 | 1 | +| lownoisemode | low noise mode | enum | | true | DEVICE_DATA | 24 | 1 | 1 | +uint8 +| lownoisestart | low noise starttime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 25 | 1 | 1 | +uint8 +| lownoisestop | low noise stoptime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 26 | 1 | 1 | +| dhw.hybriddhw | hybrid DHW | enum | | true | DHW | 0 | 1 | 1 | +uint8 +| energypricegas | energy price gas | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 27 | 1 | 1 | +uint8 +| energypriceel | energy price electric | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 28 | 1 | 1 | +uint8 +| energyfeedpv | feed in PV | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 29 | 1 | 1 | +int8 +| switchovertemp | outside switchover temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 30 | 1 | 1 | +| airpurgemode | air purge mode | boolean | | true | DEVICE_DATA | 31 | 1 | 1 | +uint8 +| heatpumpoutput | heatpump output | uint8 (>=0<=0) | % | true | DEVICE_DATA | 32 | 1 | 1 | +| coolingcircuit | cooling circuit | boolean | | true | DEVICE_DATA | 33 | 1 | 1 | +uint8 +| compstartmod | compressor start modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 34 | 1 | 1 | +| heatdrainpan | heat drain pan | boolean | | true | DEVICE_DATA | 35 | 1 | 1 | +| heatcable | heating cable | boolean | | true | DEVICE_DATA | 36 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 37 | 2 | 1/100 | +| dhw.nrg | energy | uint24 | kWh | false | DHW | 1 | 2 | 1/100 | +| nrgheat | energy heating | uint24 | kWh | false | DEVICE_DATA | 39 | 2 | 1/100 | +| metertotal | meter total | uint24 | kWh | false | DEVICE_DATA | 41 | 2 | 1/100 | +| metercomp | meter compressor | uint24 | kWh | false | DEVICE_DATA | 43 | 2 | 1/100 | +| metereheat | meter e-heater | uint24 | kWh | false | DEVICE_DATA | 45 | 2 | 1/100 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 47 | 2 | 1/100 | +| dhw.meter | meter | uint24 | kWh | false | DHW | 3 | 2 | 1/100 | +| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 49 | 2 | 1 | +| dhw.startshp | starts hp | uint24 | | false | DHW | 5 | 2 | 1 | +| fuelheat | fuel consumption heating | uint32 | kWh | false | DEVICE_DATA | 51 | 2 | 1/10 | +| dhw.fueldhw | fuel consumption | uint32 | kWh | false | DHW | 7 | 2 | 1/10 | +| elheat | el. consumption heating | uint32 | kWh | false | DEVICE_DATA | 53 | 2 | 1/10 | +| dhw.eldhw | el. consumption | uint32 | kWh | false | DHW | 9 | 2 | 1/10 | +| elgenheat | el. generation heating | uint32 | kWh | false | DEVICE_DATA | 55 | 2 | 1/10 | +| dhw.elgendhw | el generation | uint32 | kWh | false | DHW | 11 | 2 | 1/10 | + +## Devices of type \_switch + +### WM10 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| activated | activated | boolean | | false | DEVICE_DATA | 0 | 1 | 1 | +| flowtemphc | flow temperature (TC1) | uint16 | C | false | DEVICE_DATA | 1 | 1 | 1/10 | +| status | status | int8 | | false | DEVICE_DATA | 2 | 1 | 1 | + +## Devices of type \_controller + +### Rego 3000 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| datetime | date/time | string | | false | DEVICE_DATA | 0 | 13 | 1 | + +## Devices of type \_connect + +### MX400 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| datetime | date/time | string | | false | DEVICE_DATA | 0 | 13 | 1 | +| outdoortemp | outside temperature | int16 | C | false | DEVICE_DATA | 13 | 1 | 1/10 | +| src1.currtemp | current room temperature | int16 | C | false | SRC | 0 | 1 | 1/10 | +| src1.airhumidity | relative air humidity | uint8 | % | false | SRC | 1 | 1 | 1 | +| src1.dewtemperature | dew point temperature | int16 | C | false | SRC | 2 | 1 | 1/10 | +uint8 +| src1.seltemp | selected room temperature | uint8 (>=5<=30) | C | true | SRC | 3 | 1 | 1/2 | +| src1.mode | operating mode | enum | | true | SRC | 4 | 1 | 1 | +| src1.name | name | string | | true | SRC | 5 | 26 | 1 | +| src1.childlock | child lock | boolean | | true | SRC | 31 | 1 | 1 | +| src1.icon | icon | enum | | true | SRC | 32 | 1 | 1 | + +## Devices of type \_alert + +### EM10 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| setflowtemp | set flow temperature | uint8 | C | false | DEVICE_DATA | 0 | 1 | 1 | +| setburnpow | burner set power | uint8 | % | false | DEVICE_DATA | 1 | 1 | 1 | + +## Devices of type \_extension + +### EM10, EM100 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| flowtempvf | flow temperature in header (T0/Vf) | int16 | C | false | DEVICE_DATA | 0 | 1 | 1/10 | +| input | input | uint8 | V | false | DEVICE_DATA | 1 | 1 | 1/10 | +| outpow | output IO1 | uint8 | % | false | DEVICE_DATA | 2 | 1 | 1 | +| setpower | request power | uint8 | % | false | DEVICE_DATA | 3 | 1 | 1 | +| setpoint | set temp. | uint8 | C | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| minv | min volt. | uint8 (>=0<=0) | V | true | DEVICE_DATA | 5 | 1 | 1/10 | +uint8 +| maxv | max volt. | uint8 (>=0<=0) | V | true | DEVICE_DATA | 6 | 1 | 1/10 | +uint8 +| mint | min temp. | uint8 (>=0<=0) | C | true | DEVICE_DATA | 7 | 1 | 1 | +uint8 +| maxt | max temp. | uint8 (>=0<=0) | C | true | DEVICE_DATA | 8 | 1 | 1 | +| mode | operating mode | uint8 | | false | DEVICE_DATA | 9 | 1 | 1 | + +### T1RF + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| flowtempvf | flow temperature in header (T0/Vf) | int16 | C | false | DEVICE_DATA | 0 | 1 | 1/10 | +| input | input | uint8 | V | false | DEVICE_DATA | 1 | 1 | 1/10 | +| outpow | output IO1 | uint8 | % | false | DEVICE_DATA | 2 | 1 | 1 | +| setpower | request power | uint8 | % | false | DEVICE_DATA | 3 | 1 | 1 | +| setpoint | set temp. | uint8 | C | false | DEVICE_DATA | 4 | 1 | 1 | +uint8 +| minv | min volt. | uint8 (>=0<=0) | V | true | DEVICE_DATA | 5 | 1 | 1/10 | +uint8 +| maxv | max volt. | uint8 (>=0<=0) | V | true | DEVICE_DATA | 6 | 1 | 1/10 | +uint8 +| mint | min temp. | uint8 (>=0<=0) | C | true | DEVICE_DATA | 7 | 1 | 1 | +uint8 +| maxt | max temp. | uint8 (>=0<=0) | C | true | DEVICE_DATA | 8 | 1 | 1 | +| mode | operating mode | uint8 | | false | DEVICE_DATA | 9 | 1 | 1 | + +## Devices of type \_heatsource + +### AM200 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| ahs1.sysflowtemp | system flow temperature | int16 | C | false | AHS | 0 | 1 | 1/10 | +| ahs1.sysrettemp | system return temperature | int16 | C | false | AHS | 1 | 1 | 1/10 | +| ahs1.altflowtemp | alternative hs flow temperature | int16 | C | false | AHS | 2 | 1 | 1/10 | +| ahs1.altrettemp | alternative hs return temperature | int16 | C | false | AHS | 3 | 1 | 1/10 | +| ahs1.cyltoptemp | cylinder top temperature | int16 | C | false | AHS | 4 | 1 | 1/10 | +| ahs1.cylcentertemp | cylinder center temperature | int16 | C | false | AHS | 5 | 1 | 1/10 | +| ahs1.cylbottomtemp | cylinder bottom temperature | int16 | C | false | AHS | 6 | 1 | 1/10 | +| ahs1.fluegastemp | flue gas temperature | int16 | C | false | AHS | 7 | 1 | 1/10 | +| ahs1.valvebuffer | buffer valve | uint8 | % | false | AHS | 8 | 1 | 1 | +| ahs1.valvereturn | return valve | uint8 | % | false | AHS | 9 | 1 | 1 | +| ahs1.apumpmod | alternative hs pump modulation | uint8 | % | false | AHS | 10 | 1 | 1 | +| ahs1.vr2config | vr2 configuration | enum | | true | AHS | 11 | 1 | 1 | +| ahs1.ahsactivated | alternate heat source activation | boolean | | true | AHS | 12 | 1 | 1 | +| ahs1.apumpconfig | primary pump config | boolean | | true | AHS | 13 | 1 | 1 | +| ahs1.apumpsignal | output for pr1 pump | enum | | true | AHS | 14 | 1 | 1 | +uint8 +| ahs1.apumpmin | min output pump pr1 | uint8 (>=12<=50) | % | true | AHS | 15 | 1 | 1 | +| ahs1.temprise | ahs return temp rise | boolean | | true | AHS | 16 | 1 | 1 | +uint8 +| ahs1.setreturntemp | set temp return | uint8 (>=40<=75) | C | true | AHS | 17 | 1 | 1 | +uint16 +| ahs1.mixruntime | mixer run time | uint16 (>=0<=600) | seconds | true | AHS | 18 | 1 | 1 | +uint8 +| ahs1.setflowtemp | set flow temperature | uint8 (>=40<=75) | C | true | AHS | 19 | 1 | 1 | +| ahs1.bufbypass | buffer bypass config | enum | | true | AHS | 20 | 1 | 1 | +uint16 +| ahs1.bufmixruntime | bypass mixer run time | uint16 (>=0<=600) | seconds | true | AHS | 21 | 1 | 1 | +| ahs1.bufconfig | dhw buffer config | enum | | true | AHS | 22 | 1 | 1 | +| ahs1.blockmode | config htg. blocking mode | enum | | true | AHS | 23 | 1 | 1 | +| ahs1.blockterm | config of block terminal | enum | | true | AHS | 24 | 1 | 1 | +int8 +| ahs1.blockhyst | hyst. for boiler block | int8 (>=0<=50) | C | true | AHS | 25 | 1 | 1 | +uint8 +| ahs1.releasewait | boiler release wait time | uint8 (>=0<=240) | minutes | true | AHS | 26 | 1 | 1 | +| ahs1.burner | burner | boolean | | false | AHS | 27 | 1 | 1 | +| ahs1.apump | alternative hs pump | boolean | | false | AHS | 28 | 1 | 1 | +| ahs1.heatrequest | heat request | uint8 | % | false | AHS | 29 | 1 | 1 | +| ahs1.blockremain | remaining blocktime | uint8 | minutes | false | AHS | 30 | 1 | 1 | +| ahs1.blockremaindhw | remaining blocktime dhw | uint8 | minutes | false | AHS | 31 | 1 | 1 | + +## Devices of type \_ventilation + +### HRV176, HRV156, 5000c, MV200 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| outfresh | outdoor fresh air | int16 | C | false | DEVICE_DATA | 0 | 1 | 1/10 | +| infresh | indoor fresh air | int16 | C | false | DEVICE_DATA | 1 | 1 | 1/10 | +| outexhaust | outdoor exhaust air | int16 | C | false | DEVICE_DATA | 2 | 1 | 1/10 | +| inexhaust | indoor exhaust air | int16 | C | false | DEVICE_DATA | 3 | 1 | 1/10 | +| ventinspeed | in blower speed | uint8 | % | false | DEVICE_DATA | 4 | 1 | 1 | +| ventoutspeed | out blower speed | uint8 | % | false | DEVICE_DATA | 5 | 1 | 1 | +| ventmode | ventilation mode | enum | | true | DEVICE_DATA | 6 | 1 | 1 | +| airquality | air quality (voc) | uint16 | | false | DEVICE_DATA | 7 | 1 | 1 | +| airhumidity | relative air humidity | uint8 | % | false | DEVICE_DATA | 8 | 1 | 1 | +| bypass | bypass | boolean | | true | DEVICE_DATA | 9 | 1 | 1 | + +## Devices of type \_water + +### IPM + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 0 | 1 | 1 | +| dhw.temp | current temperature | uint16 | C | false | DHW | 1 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 2 | 1 | 1/10 | +| dhw.hydrTemp | hydraulic header temperature | uint16 | C | false | DHW | 3 | 1 | 1/10 | +| dhw.pump | pump | boolean | | false | DHW | 4 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=0) | C | true | DHW | 5 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 6 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 7 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=0<=0) | C | true | DHW | 8 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 9 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 10 | 1 | 1 | + +### IPM2 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +uint8 +| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 0 | 1 | 1 | +| dhw.temp | current temperature | uint16 | C | false | DHW | 1 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 2 | 1 | 1/10 | +| dhw.hydrTemp | hydraulic header temperature | uint16 | C | false | DHW | 3 | 1 | 1/10 | +| dhw.pump | pump | boolean | | false | DHW | 4 | 1 | 1 | +uint8 +| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=0) | C | true | DHW | 5 | 1 | 1 | +int8 +| dhw.hyston | hysteresis on temperature | int8 (>=0<=0) | C | true | DHW | 6 | 1 | 1 | +int8 +| dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 7 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=0<=0) | C | true | DHW | 8 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 9 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 10 | 1 | 1 | + +### MM100 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| dhw.temp | current temperature | uint16 | C | false | DHW | 1 | 1 | 1/10 | +| dhw.tempstatus | temperature switch in assigned dhw (MC1) | int8 | | false | DHW | 11 | 1 | 1 | +| dhw.pump | pump | boolean | | false | DHW | 4 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=0) | C | true | DHW | 12 | 1 | 1 | +int8 +| dhw.difftemp | start differential temperature | int8 (>=0<=0) | C | true | DHW | 13 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=0<=0) | C | true | DHW | 8 | 1 | 1 | +uint8 +| dhw.redtemp | reduced temperature | uint8 (>=0<=0) | C | true | DHW | 14 | 1 | 1 | +uint8 +| dhw.requiredtemp | required temperature | uint8 (>=0<=0) | C | true | DHW | 15 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 9 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 10 | 1 | 1 | + +### MM200 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| dhw.temp | current temperature | uint16 | C | false | DHW | 1 | 1 | 1/10 | +| dhw.tempstatus | temperature switch in assigned dhw (MC1) | int8 | | false | DHW | 11 | 1 | 1 | +| dhw.pump | pump | boolean | | false | DHW | 4 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=0) | C | true | DHW | 12 | 1 | 1 | +int8 +| dhw.difftemp | start differential temperature | int8 (>=0<=0) | C | true | DHW | 13 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=0<=0) | C | true | DHW | 8 | 1 | 1 | +uint8 +| dhw.redtemp | reduced temperature | uint8 (>=0<=0) | C | true | DHW | 14 | 1 | 1 | +uint8 +| dhw.requiredtemp | required temperature | uint8 (>=0<=0) | C | true | DHW | 15 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 9 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 10 | 1 | 1 | + +### SM100, MS100 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| dhw.temp | current temperature | uint16 | C | false | DHW | 1 | 1 | 1/10 | +| dhw.tempstatus | temperature switch in assigned dhw (MC1) | int8 | | false | DHW | 11 | 1 | 1 | +| dhw.pump | pump | boolean | | false | DHW | 4 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=0) | C | true | DHW | 12 | 1 | 1 | +int8 +| dhw.difftemp | start differential temperature | int8 (>=0<=0) | C | true | DHW | 13 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=0<=0) | C | true | DHW | 8 | 1 | 1 | +uint8 +| dhw.redtemp | reduced temperature | uint8 (>=0<=0) | C | true | DHW | 14 | 1 | 1 | +uint8 +| dhw.requiredtemp | required temperature | uint8 (>=0<=0) | C | true | DHW | 15 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 9 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 10 | 1 | 1 | + +### SM200, MS200 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| dhw.temp | current temperature | uint16 | C | false | DHW | 1 | 1 | 1/10 | +| dhw.tempstatus | temperature switch in assigned dhw (MC1) | int8 | | false | DHW | 11 | 1 | 1 | +| dhw.pump | pump | boolean | | false | DHW | 4 | 1 | 1 | +uint8 +| dhw.maxtemp | maximum temperature | uint8 (>=0<=0) | C | true | DHW | 12 | 1 | 1 | +int8 +| dhw.difftemp | start differential temperature | int8 (>=0<=0) | C | true | DHW | 13 | 1 | 1 | +uint8 +| dhw.disinfectiontemp | disinfection temperature | uint8 (>=0<=0) | C | true | DHW | 8 | 1 | 1 | +uint8 +| dhw.redtemp | reduced temperature | uint8 (>=0<=0) | C | true | DHW | 14 | 1 | 1 | +uint8 +| dhw.requiredtemp | required temperature | uint8 (>=0<=0) | C | true | DHW | 15 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 9 | 1 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 10 | 1 | 1 | + +## Devices of type \_pool + +### MP100 + +| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | +|-|-|-|-|-|-|-|-|-| +| pooltemp | pool temperature | int16 | C | false | DEVICE_DATA | -1 | 1 | 1/10 | +| poolshuntstatus | valve status | enum | | false | DEVICE_DATA | -1 | 1 | 1 | +| poolshunt | valve actual | uint8 | % | false | DEVICE_DATA | -1 | 1 | 1 | +| poolshuntset | valve setpoint | uint8 | % | false | DEVICE_DATA | -1 | 1 | 1 | +| poolrequest | pool request | boolean | | false | DEVICE_DATA | -1 | 1 | 1 | + diff --git a/dump_entities.csv b/dump_entities.csv new file mode 100644 index 000000000..a6e59358d --- /dev/null +++ b/dump_entities.csv @@ -0,0 +1,6069 @@ +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\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,6,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,6,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,6,0,1,2,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,6,0,1,3,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,0,1/10,11,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,6,0,1,85,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,6,0,1,86,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,mandefrost,manual defrost,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_manual_defrost,sensor.boiler_mandefrost,6,0,1,88,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.nrg,energy,uint24,kWh,false,sensor.boiler_dhw_energy,sensor.boiler_dhw_nrg,6,9,1/100,0,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgheat,energy heating,uint24,kWh,false,sensor.boiler_energy_heating,sensor.boiler_nrgheat,6,0,1/100,91,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgcool,energy cooling,uint24,kWh,false,sensor.boiler_energy_cooling,sensor.boiler_nrgcool,6,0,1/100,93,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,metertotal,meter total,uint24,kWh,false,sensor.boiler_meter_total,sensor.boiler_metertotal,6,0,1/100,95,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,metercomp,meter compressor,uint24,kWh,false,sensor.boiler_meter_compressor,sensor.boiler_metercomp,6,0,1/100,97,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,metereheat,meter e-heater,uint24,kWh,false,sensor.boiler_meter_e-heater,sensor.boiler_metereheat,6,0,1/100,99,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/100,101,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,metercool,meter cooling,uint24,kWh,false,sensor.boiler_meter_cooling,sensor.boiler_metercool,6,0,1/100,103,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/60,105,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,uptimecontrol,total operating time heat,time,minutes,false,sensor.boiler_total_operating_time_heat,sensor.boiler_uptimecontrol,6,0,1/60,107,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,uptimecompheating,operating time compressor heating,time,minutes,false,sensor.boiler_operating_time_compressor_heating,sensor.boiler_uptimecompheating,6,0,1/60,109,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,uptimecompcooling,operating time compressor cooling,time,minutes,false,sensor.boiler_operating_time_compressor_cooling,sensor.boiler_uptimecompcooling,6,0,1/60,111,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,6,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,6,0,1/60,113,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,totalcompstarts,total compressor control starts,uint24, ,false,sensor.boiler_total_compressor_control_starts,sensor.boiler_totalcompstarts,6,0,1,115,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatingstarts,heating control starts,uint24, ,false,sensor.boiler_heating_control_starts,sensor.boiler_heatingstarts,6,0,1,117,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,coolingstarts,cooling control starts,uint24, ,false,sensor.boiler_cooling_control_starts,sensor.boiler_coolingstarts,6,0,1,119,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.startshp,starts hp,uint24, ,false,sensor.boiler_dhw_starts_hp,sensor.boiler_dhw_startshp,6,9,1,6,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,poolstarts,pool control starts,uint24, ,false,sensor.boiler_pool_control_starts,sensor.boiler_poolstarts,6,0,1,121,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgconstotal,total energy consumption,uint24,kWh,false,sensor.boiler_total_energy_consumption,sensor.boiler_nrgconstotal,6,0,1,123,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgconscomptotal,total energy consumption compressor,uint24,kWh,false,sensor.boiler_total_energy_consumption_compressor,sensor.boiler_nrgconscomptotal,6,0,1,125,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgconscompheating,energy consumption compressor heating,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_heating,sensor.boiler_nrgconscompheating,6,0,1,127,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,6,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,6,0,1,129,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgconscomppool,energy consumption compressor pool,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_pool,sensor.boiler_nrgconscomppool,6,0,1,131,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,6,0,1,133,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,6,0,1,135,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,6,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,6,0,1,137,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgsupptotal,total energy supplied,uint24,kWh,false,sensor.boiler_total_energy_supplied,sensor.boiler_nrgsupptotal,6,0,1,139,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgsuppheating,total energy supplied heating,uint24,kWh,false,sensor.boiler_total_energy_supplied_heating,sensor.boiler_nrgsuppheating,6,0,1,141,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,6,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,6,0,1,143,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgsupppool,total energy supplied pool,uint24,kWh,false,sensor.boiler_total_energy_supplied_pool,sensor.boiler_nrgsupppool,6,0,1,145,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hppower,compressor power output,uint16,kW,false,sensor.boiler_compressor_power_output,sensor.boiler_hppower,6,0,1/10,147,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpmaxpower,compressor max power,uint8 (>=0<=0),%,true,number.boiler_compressor_max_power,number.boiler_hpmaxpower,6,0,1,148,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,6,0,1/10,149,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,powerreduction,power reduction,uint8 (>=30<=60),%,true,number.boiler_power_reduction,number.boiler_powerreduction,6,0,10,150,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpsetdiffpress,set differential pressure,uint8 (>=150<=750),mbar,true,number.boiler_set_differential_pressure,number.boiler_hpsetdiffpress,6,0,50,151,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcompon,hp compressor,boolean, ,false,binary_sensor.boiler_hp_compressor,binary_sensor.boiler_hpcompon,6,0,1,152,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,6,0,1,153,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hppoolon,hp pool,boolean, ,false,binary_sensor.boiler_hp_pool,binary_sensor.boiler_hppoolon,6,0,1,154,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpbrinepumpspd,brine pump speed,uint8,%,false,sensor.boiler_brine_pump_speed,sensor.boiler_hpbrinepumpspd,6,0,1,155,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpswitchvalve,switch valve,boolean, ,false,binary_sensor.boiler_switch_valve,binary_sensor.boiler_hpswitchvalve,6,0,1,156,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcompspd,compressor speed,uint8,%,false,sensor.boiler_compressor_speed,sensor.boiler_hpcompspd,6,0,1,157,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptargetspd,compressor target speed,uint8,%,false,sensor.boiler_compressor_target_speed,sensor.boiler_hptargetspd,6,0,1,158,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcircspd,circulation pump speed,uint8,%,false,sensor.boiler_circulation_pump_speed,sensor.boiler_hpcircspd,6,0,1,159,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,recvalve,receiver valve VR0,uint8,%,false,sensor.boiler_receiver_valve_VR0,sensor.boiler_recvalve,6,0,1,160,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,expvalve,expansion valve VR1,uint8,%,false,sensor.boiler_expansion_valve_VR1,sensor.boiler_expvalve,6,0,1,161,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpbrinein,brine in/evaporator,int16,C,false,sensor.boiler_brine_in/evaporator,sensor.boiler_hpbrinein,6,0,1/10,162,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpbrineout,brine out/condenser,int16,C,false,sensor.boiler_brine_out/condenser,sensor.boiler_hpbrineout,6,0,1/10,163,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptc0,heat carrier return (TC0),int16,C,false,sensor.boiler_heat_carrier_return_(TC0),sensor.boiler_hptc0,6,0,1/10,164,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptc1,heat carrier forward (TC1),int16,C,false,sensor.boiler_heat_carrier_forward_(TC1),sensor.boiler_hptc1,6,0,1/10,165,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptc3,condenser temperature (TC3),int16,C,false,sensor.boiler_condenser_temperature_(TC3),sensor.boiler_hptc3,6,0,1/10,166,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr1,compressor temperature (TR1),int16,C,false,sensor.boiler_compressor_temperature_(TR1),sensor.boiler_hptr1,6,0,1/10,167,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,6,0,1/10,168,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr4,evaporator inlet temperature (TR4),int16,C,false,sensor.boiler_evaporator_inlet_temperature_(TR4),sensor.boiler_hptr4,6,0,1/10,169,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr5,compressor inlet temperature (TR5),int16,C,false,sensor.boiler_compressor_inlet_temperature_(TR5),sensor.boiler_hptr5,6,0,1/10,170,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr6,compressor outlet temperature (TR6),int16,C,false,sensor.boiler_compressor_outlet_temperature_(TR6),sensor.boiler_hptr6,6,0,1/10,171,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,6,0,1/10,172,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptl2,air inlet temperature (TL2),int16,C,false,sensor.boiler_air_inlet_temperature_(TL2),sensor.boiler_hptl2,6,0,1/10,173,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,6,0,1/10,174,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,6,0,1/10,175,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpta4,drain pan temp (TA4),int16,C,false,sensor.boiler_drain_pan_temp_(TA4),sensor.boiler_hpta4,6,0,1/10,176,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptw1,reservoir temp (TW1),int16,C,false,sensor.boiler_reservoir_temp_(TW1),sensor.boiler_hptw1,6,0,1/10,177,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,poolon,pool on,boolean (>=0<=0), ,true,switch.boiler_pool_on,switch.boiler_poolon,6,0,1,178,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,poolsettemp,pool setpoint,uint8 (>=0<=0),C,true,number.boiler_pool_setpoint,number.boiler_poolsettemp,6,0,1/2,179,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,6,0,1,180,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin1,input 1 state,boolean, ,false,binary_sensor.boiler_input_1_state,binary_sensor.boiler_hpin1,6,0,1,181,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin1opt,input 1 options,string (>=0<=0), ,true,sensor.boiler_input_1_options,sensor.boiler_hpin1opt,6,0,1,182,8 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin2,input 2 state,boolean, ,false,binary_sensor.boiler_input_2_state,binary_sensor.boiler_hpin2,6,0,1,190,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin2opt,input 2 options,string (>=0<=0), ,true,sensor.boiler_input_2_options,sensor.boiler_hpin2opt,6,0,1,191,8 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin3,input 3 state,boolean, ,false,binary_sensor.boiler_input_3_state,binary_sensor.boiler_hpin3,6,0,1,199,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin3opt,input 3 options,string (>=0<=0), ,true,sensor.boiler_input_3_options,sensor.boiler_hpin3opt,6,0,1,200,8 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin4,input 4 state,boolean, ,false,binary_sensor.boiler_input_4_state,binary_sensor.boiler_hpin4,6,0,1,208,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin4opt,input 4 options,string (>=0<=0), ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt,6,0,1,209,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,6,0,1,217,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,6,0,1,218,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.maxheat,heat limit,enum [0 kW\|3 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_dhw_heat_limit,select.boiler_dhw_maxheat,6,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,6,0,1,219,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,6,0,1,220,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheateronly,aux heater only,boolean (>=0<=0), ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly,6,0,1,221,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheateroff,disable aux heater,boolean (>=0<=0), ,true,switch.boiler_disable_aux_heater,switch.boiler_auxheateroff,6,0,1,222,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,6,0,1,223,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheaterlevel,aux heater level,uint8,%,false,sensor.boiler_aux_heater_level,sensor.boiler_auxheaterlevel,6,0,1,224,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,6,0,10,225,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,6,0,1/10,226,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,6,0,1/10,227,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,6,0,1,228,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,6,0,5,229,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,6,0,5,230,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,6,0,5,231,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,silentmode,silent mode,enum [off\|auto\|on] (>=0<=0), ,true,select.boiler_silent_mode,select.boiler_silentmode,6,0,1,232,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,silentfrom,silent mode from,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_from,number.boiler_silentfrom,6,0,15,233,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,silentto,silent mode to,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_to,number.boiler_silentto,6,0,15,234,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,6,0,1,235,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,6,0,1,236,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheatmix,aux heater mixing valve,int8,%,false,sensor.boiler_aux_heater_mixing_valve,sensor.boiler_auxheatmix,6,0,1,237,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,6,0,1/10,238,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,6,0,1/10,239,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,vpcooling,valve/pump cooling,boolean (>=0<=0), ,true,switch.boiler_valve/pump_cooling,switch.boiler_vpcooling,6,0,1,240,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatcable,heating cable,boolean (>=0<=0), ,true,switch.boiler_heating_cable,switch.boiler_heatcable,6,0,1,241,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,vc0valve,VC0 valve,boolean (>=0<=0), ,true,switch.boiler_VC0_valve,switch.boiler_vc0valve,6,0,1,242,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,primepump,primary heatpump,boolean (>=0<=0), ,true,switch.boiler_primary_heatpump,switch.boiler_primepump,6,0,1,243,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,primepumpmod,primary heatpump modulation,uint8 (>=0<=0),%,true,number.boiler_primary_heatpump_modulation,number.boiler_primepumpmod,6,0,1,244,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hp3way,3-way valve,boolean (>=0<=0), ,true,switch.boiler_3-way_valve,switch.boiler_hp3way,6,0,1,245,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,6,0,1,246,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,6,0,1,247,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,6,0,1,248,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,6,0,1,249,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,6,0,1,250,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,fan,fan,uint8 (>=20<=100),%,true,number.boiler_fan,number.boiler_fan,6,0,1,251,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,fanspd,fan speed,uint8,%,false,sensor.boiler_fan_speed,sensor.boiler_fanspd,6,0,1,252,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,shutdown,shutdown,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_shutdown,sensor.boiler_shutdown,6,0,1,253,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcurrpower,compressor current power,uint16,W,false,sensor.boiler_compressor_current_power,sensor.boiler_hpcurrpower,6,0,1,254,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hppowerlimit,power limit,uint16 (>=0<=0),W,true,number.boiler_power_limit,number.boiler_hppowerlimit,6,0,1,255,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.alternatingop,alternating operation,boolean (>=0<=0), ,true,switch.boiler_dhw_alternating_operation,switch.boiler_dhw_alternatingop,6,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,6,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,6,9,1,17,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.comfoff,comfort switch off,uint8 (>=15<=65),C,true,number.boiler_dhw_comfort_switch_off,number.boiler_dhw_comfoff,6,9,1,18,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.ecooff,eco switch off,uint8 (>=15<=65),C,true,number.boiler_dhw_eco_switch_off,number.boiler_dhw_ecooff,6,9,1,19,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.ecoplusoff,eco+ switch off,uint8 (>=48<=63),C,true,number.boiler_dhw_eco+_switch_off,number.boiler_dhw_ecoplusoff,6,9,1,20,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.comfdiff,comfort diff,uint8 (>=6<=18),K,true,number.boiler_dhw_comfort_diff,number.boiler_dhw_comfdiff,6,9,1,21,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.ecodiff,eco diff,uint8 (>=6<=18),K,true,number.boiler_dhw_eco_diff,number.boiler_dhw_ecodiff,6,9,1,22,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.ecoplusdiff,eco+ diff,uint8 (>=6<=15),K,true,number.boiler_dhw_eco+_diff,number.boiler_dhw_ecoplusdiff,6,9,1,23,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.comfstop,comfort stop temp,uint8 (>=0<=0),C,true,number.boiler_dhw_comfort_stop_temp,number.boiler_dhw_comfstop,6,9,1,24,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.ecostop,eco stop temp,uint8 (>=0<=0),C,true,number.boiler_dhw_eco_stop_temp,number.boiler_dhw_ecostop,6,9,1,25,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.ecoplusstop,eco+ stop temp,uint8 (>=0<=0),C,true,number.boiler_dhw_eco+_stop_temp,number.boiler_dhw_ecoplusstop,6,9,1,26,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.hpcircpump,circulation pump available during dhw,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available_during_dhw,switch.boiler_dhw_hpcircpump,6,9,1,27,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"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,6,0,1,0,1 +"Greenstar 2000",boiler,11,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,6,0,1,1,1 +"Greenstar 2000",boiler,11,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,6,0,1,2,1 +"Greenstar 2000",boiler,11,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,6,0,1,3,1 +"Greenstar 2000",boiler,11,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"Greenstar 2000",boiler,11,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"Greenstar 2000",boiler,11,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"Greenstar 2000",boiler,11,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"Greenstar 2000",boiler,11,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"Greenstar 2000",boiler,11,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"Greenstar 2000",boiler,11,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"Greenstar 2000",boiler,11,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,0,1/10,11,1 +"Greenstar 2000",boiler,11,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 +"Greenstar 2000",boiler,11,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 +"Greenstar 2000",boiler,11,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Greenstar 2000",boiler,11,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Greenstar 2000",boiler,11,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Greenstar 2000",boiler,11,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Greenstar 2000",boiler,11,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Greenstar 2000",boiler,11,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Greenstar 2000",boiler,11,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Greenstar 2000",boiler,11,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Greenstar 2000",boiler,11,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Greenstar 2000",boiler,11,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Greenstar 2000",boiler,11,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Greenstar 2000",boiler,11,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Greenstar 2000",boiler,11,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Greenstar 2000",boiler,11,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Greenstar 2000",boiler,11,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Greenstar 2000",boiler,11,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Greenstar 2000",boiler,11,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Greenstar 2000",boiler,11,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Greenstar 2000",boiler,11,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Greenstar 2000",boiler,11,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 +"Greenstar 2000",boiler,11,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 +"Greenstar 2000",boiler,11,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 +"Greenstar 2000",boiler,11,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 +"Greenstar 2000",boiler,11,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"Greenstar 2000",boiler,11,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"Greenstar 2000",boiler,11,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"Greenstar 2000",boiler,11,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"Greenstar 2000",boiler,11,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"Greenstar 2000",boiler,11,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"Greenstar 2000",boiler,11,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"Greenstar 2000",boiler,11,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"Greenstar 2000",boiler,11,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"Greenstar 2000",boiler,11,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"Greenstar 2000",boiler,11,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"Greenstar 2000",boiler,11,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"Greenstar 2000",boiler,11,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"Greenstar 2000",boiler,11,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"Greenstar 2000",boiler,11,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"Greenstar 2000",boiler,11,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"Greenstar 2000",boiler,11,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"Greenstar 2000",boiler,11,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"Greenstar 2000",boiler,11,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"Greenstar 2000",boiler,11,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"Greenstar 2000",boiler,11,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"Greenstar 2000",boiler,11,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"Greenstar 2000",boiler,11,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"Greenstar 2000",boiler,11,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"Greenstar 2000",boiler,11,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"Greenstar 2000",boiler,11,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"Greenstar 2000",boiler,11,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"Greenstar 2000",boiler,11,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"Greenstar 2000",boiler,11,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,6,0,1,85,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,6,0,1,86,1 +"Greenstar 2000",boiler,11,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 +"Greenstar 2000",boiler,11,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 +"Greenstar 2000",boiler,11,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 +"Greenstar 2000",boiler,11,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 +"Greenstar 2000",boiler,11,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Greenstar 2000",boiler,11,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 +"Greenstar 2000",boiler,11,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 +"Greenstar 2000",boiler,11,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 +"Greenstar 2000",boiler,11,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"Greenstar 2000",boiler,11,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"Greenstar 2000",boiler,11,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"Greenstar 2000",boiler,11,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"Greenstar 2000",boiler,11,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"Greenstar 2000",boiler,11,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"Greenstar 2000",boiler,11,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"Greenstar 2000",boiler,11,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"Greenstar 2000",boiler,11,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"Greenstar 2000",boiler,11,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"Greenstar 2000",boiler,11,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"Greenstar 2000",boiler,11,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"Greenstar 2000",boiler,11,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"Greenstar 2000",boiler,11,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"Greenstar 2000",boiler,11,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"Greenstar 2000",boiler,11,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"Greenstar 2000",boiler,11,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"Greenstar 2000",boiler,11,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"Greenstar 2000",boiler,11,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"Greenstar 2000",boiler,11,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"Greenstar 2000",boiler,11,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"Greenstar 2000",boiler,11,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"Greenstar 2000",boiler,11,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"Greenstar 2000",boiler,11,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"Greenstar 2000",boiler,11,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"Greenstar 2000",boiler,11,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"Greenstar 2000",boiler,11,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"Greenstar 2000",boiler,11,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"Greenstar 2000",boiler,11,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"Greenstar 2000",boiler,11,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"Greenstar 2000",boiler,11,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"Greenstar 2000",boiler,11,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"Greenstar 2000",boiler,11,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"Greenstar 2000",boiler,11,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"Greenstar 2000",boiler,11,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"Greenstar 2000",boiler,11,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"Greenstar 2000",boiler,11,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 +"Greenstar 2000",boiler,11,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 +"Greenstar 2000",boiler,11,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Greenstar 2000",boiler,11,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 +"Greenstar 2000",boiler,11,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 +"Greenstar 2000",boiler,11,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 +"Greenstar 2000",boiler,11,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 +"C1200W",boiler,12,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,6,0,1,0,1 +"C1200W",boiler,12,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,6,0,1,1,1 +"C1200W",boiler,12,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,6,0,1,2,1 +"C1200W",boiler,12,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,6,0,1,3,1 +"C1200W",boiler,12,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"C1200W",boiler,12,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"C1200W",boiler,12,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"C1200W",boiler,12,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"C1200W",boiler,12,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"C1200W",boiler,12,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"C1200W",boiler,12,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"C1200W",boiler,12,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,0,1/10,11,1 +"C1200W",boiler,12,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 +"C1200W",boiler,12,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 +"C1200W",boiler,12,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"C1200W",boiler,12,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"C1200W",boiler,12,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"C1200W",boiler,12,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"C1200W",boiler,12,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"C1200W",boiler,12,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"C1200W",boiler,12,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"C1200W",boiler,12,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"C1200W",boiler,12,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"C1200W",boiler,12,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"C1200W",boiler,12,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"C1200W",boiler,12,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"C1200W",boiler,12,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"C1200W",boiler,12,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"C1200W",boiler,12,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"C1200W",boiler,12,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"C1200W",boiler,12,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"C1200W",boiler,12,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"C1200W",boiler,12,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"C1200W",boiler,12,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 +"C1200W",boiler,12,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 +"C1200W",boiler,12,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 +"C1200W",boiler,12,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 +"C1200W",boiler,12,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"C1200W",boiler,12,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"C1200W",boiler,12,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"C1200W",boiler,12,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"C1200W",boiler,12,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"C1200W",boiler,12,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"C1200W",boiler,12,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"C1200W",boiler,12,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"C1200W",boiler,12,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"C1200W",boiler,12,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"C1200W",boiler,12,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"C1200W",boiler,12,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"C1200W",boiler,12,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"C1200W",boiler,12,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"C1200W",boiler,12,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"C1200W",boiler,12,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"C1200W",boiler,12,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"C1200W",boiler,12,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"C1200W",boiler,12,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"C1200W",boiler,12,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"C1200W",boiler,12,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"C1200W",boiler,12,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"C1200W",boiler,12,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"C1200W",boiler,12,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"C1200W",boiler,12,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"C1200W",boiler,12,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"C1200W",boiler,12,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"C1200W",boiler,12,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"C1200W",boiler,12,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,6,0,1,85,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,6,0,1,86,1 +"C1200W",boiler,12,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 +"C1200W",boiler,12,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 +"C1200W",boiler,12,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 +"C1200W",boiler,12,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 +"C1200W",boiler,12,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"C1200W",boiler,12,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 +"C1200W",boiler,12,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 +"C1200W",boiler,12,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 +"C1200W",boiler,12,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"C1200W",boiler,12,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"C1200W",boiler,12,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"C1200W",boiler,12,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"C1200W",boiler,12,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"C1200W",boiler,12,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"C1200W",boiler,12,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"C1200W",boiler,12,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"C1200W",boiler,12,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"C1200W",boiler,12,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"C1200W",boiler,12,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"C1200W",boiler,12,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"C1200W",boiler,12,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"C1200W",boiler,12,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"C1200W",boiler,12,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"C1200W",boiler,12,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"C1200W",boiler,12,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"C1200W",boiler,12,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"C1200W",boiler,12,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"C1200W",boiler,12,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"C1200W",boiler,12,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"C1200W",boiler,12,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"C1200W",boiler,12,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"C1200W",boiler,12,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"C1200W",boiler,12,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"C1200W",boiler,12,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"C1200W",boiler,12,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"C1200W",boiler,12,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"C1200W",boiler,12,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"C1200W",boiler,12,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"C1200W",boiler,12,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"C1200W",boiler,12,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"C1200W",boiler,12,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"C1200W",boiler,12,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"C1200W",boiler,12,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"C1200W",boiler,12,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"C1200W",boiler,12,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 +"C1200W",boiler,12,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 +"C1200W",boiler,12,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"C1200W",boiler,12,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 +"C1200W",boiler,12,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 +"C1200W",boiler,12,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 +"C1200W",boiler,12,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 +"CS5800iG",boiler,16,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,6,0,1,0,1 +"CS5800iG",boiler,16,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,6,0,1,1,1 +"CS5800iG",boiler,16,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,6,0,1,2,1 +"CS5800iG",boiler,16,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,6,0,1,3,1 +"CS5800iG",boiler,16,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"CS5800iG",boiler,16,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"CS5800iG",boiler,16,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"CS5800iG",boiler,16,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"CS5800iG",boiler,16,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"CS5800iG",boiler,16,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"CS5800iG",boiler,16,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"CS5800iG",boiler,16,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,0,1/10,11,1 +"CS5800iG",boiler,16,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 +"CS5800iG",boiler,16,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 +"CS5800iG",boiler,16,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"CS5800iG",boiler,16,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"CS5800iG",boiler,16,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"CS5800iG",boiler,16,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"CS5800iG",boiler,16,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"CS5800iG",boiler,16,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"CS5800iG",boiler,16,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"CS5800iG",boiler,16,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"CS5800iG",boiler,16,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"CS5800iG",boiler,16,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"CS5800iG",boiler,16,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"CS5800iG",boiler,16,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"CS5800iG",boiler,16,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"CS5800iG",boiler,16,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"CS5800iG",boiler,16,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"CS5800iG",boiler,16,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"CS5800iG",boiler,16,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"CS5800iG",boiler,16,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"CS5800iG",boiler,16,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"CS5800iG",boiler,16,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 +"CS5800iG",boiler,16,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 +"CS5800iG",boiler,16,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 +"CS5800iG",boiler,16,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 +"CS5800iG",boiler,16,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"CS5800iG",boiler,16,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"CS5800iG",boiler,16,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"CS5800iG",boiler,16,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"CS5800iG",boiler,16,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"CS5800iG",boiler,16,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"CS5800iG",boiler,16,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"CS5800iG",boiler,16,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"CS5800iG",boiler,16,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"CS5800iG",boiler,16,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"CS5800iG",boiler,16,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"CS5800iG",boiler,16,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"CS5800iG",boiler,16,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"CS5800iG",boiler,16,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"CS5800iG",boiler,16,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"CS5800iG",boiler,16,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"CS5800iG",boiler,16,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"CS5800iG",boiler,16,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"CS5800iG",boiler,16,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"CS5800iG",boiler,16,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"CS5800iG",boiler,16,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"CS5800iG",boiler,16,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"CS5800iG",boiler,16,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"CS5800iG",boiler,16,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"CS5800iG",boiler,16,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"CS5800iG",boiler,16,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"CS5800iG",boiler,16,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"CS5800iG",boiler,16,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"CS5800iG",boiler,16,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,6,0,1,85,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,6,0,1,86,1 +"CS5800iG",boiler,16,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 +"CS5800iG",boiler,16,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 +"CS5800iG",boiler,16,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 +"CS5800iG",boiler,16,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 +"CS5800iG",boiler,16,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"CS5800iG",boiler,16,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 +"CS5800iG",boiler,16,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 +"CS5800iG",boiler,16,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 +"CS5800iG",boiler,16,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"CS5800iG",boiler,16,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"CS5800iG",boiler,16,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"CS5800iG",boiler,16,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"CS5800iG",boiler,16,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"CS5800iG",boiler,16,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"CS5800iG",boiler,16,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"CS5800iG",boiler,16,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"CS5800iG",boiler,16,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"CS5800iG",boiler,16,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"CS5800iG",boiler,16,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"CS5800iG",boiler,16,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"CS5800iG",boiler,16,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"CS5800iG",boiler,16,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"CS5800iG",boiler,16,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"CS5800iG",boiler,16,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"CS5800iG",boiler,16,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"CS5800iG",boiler,16,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"CS5800iG",boiler,16,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"CS5800iG",boiler,16,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"CS5800iG",boiler,16,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"CS5800iG",boiler,16,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"CS5800iG",boiler,16,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"CS5800iG",boiler,16,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"CS5800iG",boiler,16,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"CS5800iG",boiler,16,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"CS5800iG",boiler,16,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"CS5800iG",boiler,16,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"CS5800iG",boiler,16,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"CS5800iG",boiler,16,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"CS5800iG",boiler,16,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"CS5800iG",boiler,16,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"CS5800iG",boiler,16,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"CS5800iG",boiler,16,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"CS5800iG",boiler,16,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"CS5800iG",boiler,16,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"CS5800iG",boiler,16,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 +"CS5800iG",boiler,16,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 +"CS5800iG",boiler,16,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"CS5800iG",boiler,16,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 +"CS5800iG",boiler,16,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 +"CS5800iG",boiler,16,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 +"CS5800iG",boiler,16,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 +"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,6,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,6,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,6,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,6,0,1,3,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,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,6,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,6,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,6,0,1/10,256,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,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,6,0,1,265,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,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,6,0,1,268,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,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,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,6,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,6,0,1,16,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"BK13/BK15, Smartline, GB1*2",boiler,64,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"BK13/BK15, Smartline, GB1*2",boiler,64,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,6,0,1,85,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,6,0,1,86,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,6,0,1,87,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,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,6,0,1/10,280,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,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,6,9,1,29,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,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,6,0,1,282,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 +"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,6,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,6,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,6,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,6,0,1,3,1 +"Logano GB1*5, Logamatic MC10",boiler,72,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"Logano GB1*5, Logamatic MC10",boiler,72,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"Logano GB1*5, Logamatic MC10",boiler,72,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"Logano GB1*5, Logamatic MC10",boiler,72,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"Logano GB1*5, Logamatic MC10",boiler,72,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"Logano GB1*5, Logamatic MC10",boiler,72,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"Logano GB1*5, Logamatic MC10",boiler,72,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"Logano GB1*5, Logamatic MC10",boiler,72,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,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,6,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,6,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,6,0,1/10,256,1 +"Logano GB1*5, Logamatic MC10",boiler,72,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Logano GB1*5, Logamatic MC10",boiler,72,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Logano GB1*5, Logamatic MC10",boiler,72,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Logano GB1*5, Logamatic MC10",boiler,72,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Logano GB1*5, Logamatic MC10",boiler,72,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Logano GB1*5, Logamatic MC10",boiler,72,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Logano GB1*5, Logamatic MC10",boiler,72,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Logano GB1*5, Logamatic MC10",boiler,72,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,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,6,0,1,265,1 +"Logano GB1*5, Logamatic MC10",boiler,72,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Logano GB1*5, Logamatic MC10",boiler,72,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,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,6,0,1,268,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,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Logano GB1*5, Logamatic MC10",boiler,72,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Logano GB1*5, Logamatic MC10",boiler,72,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Logano GB1*5, Logamatic MC10",boiler,72,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Logano GB1*5, Logamatic MC10",boiler,72,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Logano GB1*5, Logamatic MC10",boiler,72,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Logano GB1*5, Logamatic MC10",boiler,72,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 +"Logano GB1*5, Logamatic MC10",boiler,72,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,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,6,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,6,0,1,16,1 +"Logano GB1*5, Logamatic MC10",boiler,72,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"Logano GB1*5, Logamatic MC10",boiler,72,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"Logano GB1*5, Logamatic MC10",boiler,72,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"Logano GB1*5, Logamatic MC10",boiler,72,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"Logano GB1*5, Logamatic MC10",boiler,72,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"Logano GB1*5, Logamatic MC10",boiler,72,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"Logano GB1*5, Logamatic MC10",boiler,72,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"Logano GB1*5, Logamatic MC10",boiler,72,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"Logano GB1*5, Logamatic MC10",boiler,72,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"Logano GB1*5, Logamatic MC10",boiler,72,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"Logano GB1*5, Logamatic MC10",boiler,72,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"Logano GB1*5, Logamatic MC10",boiler,72,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"Logano GB1*5, Logamatic MC10",boiler,72,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"Logano GB1*5, Logamatic MC10",boiler,72,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"Logano GB1*5, Logamatic MC10",boiler,72,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"Logano GB1*5, Logamatic MC10",boiler,72,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"Logano GB1*5, Logamatic MC10",boiler,72,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"Logano GB1*5, Logamatic MC10",boiler,72,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"Logano GB1*5, Logamatic MC10",boiler,72,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"Logano GB1*5, Logamatic MC10",boiler,72,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"Logano GB1*5, Logamatic MC10",boiler,72,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"Logano GB1*5, Logamatic MC10",boiler,72,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"Logano GB1*5, Logamatic MC10",boiler,72,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"Logano GB1*5, Logamatic MC10",boiler,72,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"Logano GB1*5, Logamatic MC10",boiler,72,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"Logano GB1*5, Logamatic MC10",boiler,72,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"Logano GB1*5, Logamatic MC10",boiler,72,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"Logano GB1*5, Logamatic MC10",boiler,72,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"Logano GB1*5, Logamatic MC10",boiler,72,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,6,0,1,85,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,6,0,1,86,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,6,0,1,87,1 +"Logano GB1*5, Logamatic MC10",boiler,72,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,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,6,0,1/10,280,2 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,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,6,9,1,29,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,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,6,0,1,282,1 +"Logano GB1*5, Logamatic MC10",boiler,72,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 +"Logano GB1*5, Logamatic MC10",boiler,72,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 +"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,6,0,1,0,1 +"Cascade CM10",boiler,81,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,6,0,1,1,1 +"Cascade CM10",boiler,81,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,6,0,1,2,1 +"Cascade CM10",boiler,81,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,6,0,1,3,1 +"Cascade CM10",boiler,81,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"Cascade CM10",boiler,81,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"Cascade CM10",boiler,81,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"Cascade CM10",boiler,81,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"Cascade CM10",boiler,81,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"Cascade CM10",boiler,81,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"Cascade CM10",boiler,81,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"Cascade CM10",boiler,81,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,0,1/10,11,1 +"Cascade CM10",boiler,81,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 +"Cascade CM10",boiler,81,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 +"Cascade CM10",boiler,81,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Cascade CM10",boiler,81,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Cascade CM10",boiler,81,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Cascade CM10",boiler,81,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Cascade CM10",boiler,81,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Cascade CM10",boiler,81,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Cascade CM10",boiler,81,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Cascade CM10",boiler,81,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Cascade CM10",boiler,81,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Cascade CM10",boiler,81,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Cascade CM10",boiler,81,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Cascade CM10",boiler,81,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Cascade CM10",boiler,81,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Cascade CM10",boiler,81,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Cascade CM10",boiler,81,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Cascade CM10",boiler,81,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Cascade CM10",boiler,81,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Cascade CM10",boiler,81,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Cascade CM10",boiler,81,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Cascade CM10",boiler,81,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 +"Cascade CM10",boiler,81,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 +"Cascade CM10",boiler,81,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 +"Cascade CM10",boiler,81,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 +"Cascade CM10",boiler,81,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"Cascade CM10",boiler,81,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"Cascade CM10",boiler,81,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"Cascade CM10",boiler,81,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"Cascade CM10",boiler,81,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"Cascade CM10",boiler,81,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"Cascade CM10",boiler,81,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"Cascade CM10",boiler,81,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"Cascade CM10",boiler,81,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"Cascade CM10",boiler,81,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"Cascade CM10",boiler,81,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"Cascade CM10",boiler,81,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"Cascade CM10",boiler,81,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"Cascade CM10",boiler,81,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"Cascade CM10",boiler,81,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"Cascade CM10",boiler,81,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"Cascade CM10",boiler,81,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"Cascade CM10",boiler,81,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"Cascade CM10",boiler,81,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"Cascade CM10",boiler,81,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"Cascade CM10",boiler,81,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"Cascade CM10",boiler,81,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"Cascade CM10",boiler,81,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"Cascade CM10",boiler,81,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"Cascade CM10",boiler,81,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"Cascade CM10",boiler,81,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"Cascade CM10",boiler,81,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"Cascade CM10",boiler,81,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"Cascade CM10",boiler,81,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,6,0,1,85,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,6,0,1,86,1 +"Cascade CM10",boiler,81,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 +"Cascade CM10",boiler,81,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 +"Cascade CM10",boiler,81,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 +"Cascade CM10",boiler,81,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 +"Cascade CM10",boiler,81,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Cascade CM10",boiler,81,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 +"Cascade CM10",boiler,81,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 +"Cascade CM10",boiler,81,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 +"Cascade CM10",boiler,81,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"Cascade CM10",boiler,81,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"Cascade CM10",boiler,81,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"Cascade CM10",boiler,81,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"Cascade CM10",boiler,81,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"Cascade CM10",boiler,81,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"Cascade CM10",boiler,81,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"Cascade CM10",boiler,81,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"Cascade CM10",boiler,81,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"Cascade CM10",boiler,81,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"Cascade CM10",boiler,81,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"Cascade CM10",boiler,81,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"Cascade CM10",boiler,81,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"Cascade CM10",boiler,81,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"Cascade CM10",boiler,81,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"Cascade CM10",boiler,81,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"Cascade CM10",boiler,81,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"Cascade CM10",boiler,81,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"Cascade CM10",boiler,81,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"Cascade CM10",boiler,81,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"Cascade CM10",boiler,81,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"Cascade CM10",boiler,81,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"Cascade CM10",boiler,81,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"Cascade CM10",boiler,81,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"Cascade CM10",boiler,81,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"Cascade CM10",boiler,81,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"Cascade CM10",boiler,81,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"Cascade CM10",boiler,81,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"Cascade CM10",boiler,81,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"Cascade CM10",boiler,81,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"Cascade CM10",boiler,81,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"Cascade CM10",boiler,81,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"Cascade CM10",boiler,81,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"Cascade CM10",boiler,81,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"Cascade CM10",boiler,81,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"Cascade CM10",boiler,81,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"Cascade CM10",boiler,81,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 +"Cascade CM10",boiler,81,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 +"Cascade CM10",boiler,81,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Cascade CM10",boiler,81,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 +"Cascade CM10",boiler,81,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 +"Cascade CM10",boiler,81,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 +"Cascade CM10",boiler,81,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 +"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,6,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,6,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,6,0,1,2,1 +"Logamax Plus GB022",boiler,84,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,6,0,1,3,1 +"Logamax Plus GB022",boiler,84,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"Logamax Plus GB022",boiler,84,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"Logamax Plus GB022",boiler,84,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"Logamax Plus GB022",boiler,84,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"Logamax Plus GB022",boiler,84,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"Logamax Plus GB022",boiler,84,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"Logamax Plus GB022",boiler,84,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"Logamax Plus GB022",boiler,84,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,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,6,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,6,0,1/10,13,1 +"Logamax Plus GB022",boiler,84,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Logamax Plus GB022",boiler,84,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Logamax Plus GB022",boiler,84,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Logamax Plus GB022",boiler,84,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Logamax Plus GB022",boiler,84,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Logamax Plus GB022",boiler,84,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Logamax Plus GB022",boiler,84,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Logamax Plus GB022",boiler,84,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Logamax Plus GB022",boiler,84,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Logamax Plus GB022",boiler,84,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Logamax Plus GB022",boiler,84,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Logamax Plus GB022",boiler,84,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Logamax Plus GB022",boiler,84,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Logamax Plus GB022",boiler,84,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Logamax Plus GB022",boiler,84,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Logamax Plus GB022",boiler,84,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Logamax Plus GB022",boiler,84,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Logamax Plus GB022",boiler,84,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Logamax Plus GB022",boiler,84,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Logamax Plus GB022",boiler,84,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 +"Logamax Plus GB022",boiler,84,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 +"Logamax Plus GB022",boiler,84,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 +"Logamax Plus GB022",boiler,84,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 +"Logamax Plus GB022",boiler,84,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"Logamax Plus GB022",boiler,84,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"Logamax Plus GB022",boiler,84,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"Logamax Plus GB022",boiler,84,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"Logamax Plus GB022",boiler,84,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"Logamax Plus GB022",boiler,84,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"Logamax Plus GB022",boiler,84,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"Logamax Plus GB022",boiler,84,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"Logamax Plus GB022",boiler,84,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"Logamax Plus GB022",boiler,84,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"Logamax Plus GB022",boiler,84,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"Logamax Plus GB022",boiler,84,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"Logamax Plus GB022",boiler,84,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"Logamax Plus GB022",boiler,84,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"Logamax Plus GB022",boiler,84,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"Logamax Plus GB022",boiler,84,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"Logamax Plus GB022",boiler,84,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"Logamax Plus GB022",boiler,84,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"Logamax Plus GB022",boiler,84,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"Logamax Plus GB022",boiler,84,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"Logamax Plus GB022",boiler,84,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"Logamax Plus GB022",boiler,84,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"Logamax Plus GB022",boiler,84,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"Logamax Plus GB022",boiler,84,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"Logamax Plus GB022",boiler,84,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"Logamax Plus GB022",boiler,84,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"Logamax Plus GB022",boiler,84,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"Logamax Plus GB022",boiler,84,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"Logamax Plus GB022",boiler,84,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,6,0,1,85,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,6,0,1,86,1 +"Logamax Plus GB022",boiler,84,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 +"Logamax Plus GB022",boiler,84,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 +"Logamax Plus GB022",boiler,84,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 +"Logamax Plus GB022",boiler,84,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,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,6,0,1/10,280,2 +"Logamax Plus GB022",boiler,84,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,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,6,9,1,29,1 +"Logamax Plus GB022",boiler,84,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"Logamax Plus GB022",boiler,84,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"Logamax Plus GB022",boiler,84,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"Logamax Plus GB022",boiler,84,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"Logamax Plus GB022",boiler,84,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"Logamax Plus GB022",boiler,84,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"Logamax Plus GB022",boiler,84,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"Logamax Plus GB022",boiler,84,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"Logamax Plus GB022",boiler,84,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"Logamax Plus GB022",boiler,84,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"Logamax Plus GB022",boiler,84,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"Logamax Plus GB022",boiler,84,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"Logamax Plus GB022",boiler,84,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"Logamax Plus GB022",boiler,84,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"Logamax Plus GB022",boiler,84,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"Logamax Plus GB022",boiler,84,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"Logamax Plus GB022",boiler,84,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"Logamax Plus GB022",boiler,84,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"Logamax Plus GB022",boiler,84,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"Logamax Plus GB022",boiler,84,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"Logamax Plus GB022",boiler,84,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"Logamax Plus GB022",boiler,84,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"Logamax Plus GB022",boiler,84,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"Logamax Plus GB022",boiler,84,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"Logamax Plus GB022",boiler,84,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"Logamax Plus GB022",boiler,84,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"Logamax Plus GB022",boiler,84,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"Logamax Plus GB022",boiler,84,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"Logamax Plus GB022",boiler,84,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"Logamax Plus GB022",boiler,84,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"Logamax Plus GB022",boiler,84,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"Logamax Plus GB022",boiler,84,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"Logamax Plus GB022",boiler,84,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"Logamax Plus GB022",boiler,84,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"Logamax Plus GB022",boiler,84,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"Logamax Plus GB022",boiler,84,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"Logamax Plus GB022",boiler,84,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 +"Logamax Plus GB022",boiler,84,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"Logamax Plus GB022",boiler,84,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 +"Logamax Plus GB022",boiler,84,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 +"Logamax Plus GB022",boiler,84,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 +"Logamax Plus GB022",boiler,84,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 +"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,6,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,6,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,6,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,6,0,1,3,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,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,6,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,6,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,6,0,1/10,256,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,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,6,0,1,258,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,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,6,0,1,262,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,6,0,1,263,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,6,0,1,264,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,6,0,1,265,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,6,0,1,266,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,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,6,0,1,268,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,6,0,1,269,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,6,0,1,270,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,6,0,1,271,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,6,0,1,272,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,6,0,1,273,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,6,0,1,274,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,6,0,1,275,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,6,0,1,276,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,6,0,1,277,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,6,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,6,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,6,0,1,16,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pumpmode,boiler pump mode,enum [pumpstep\|const.high\|const.medium\|const.low\|prop.high\|propo.low] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"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,6,0,1,85,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,6,0,1,86,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,6,0,1,87,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,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,6,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,6,0,1/10,278,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,6,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,6,0,1/10,280,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,6,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,6,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,6,9,1,29,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"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,6,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,6,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,6,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,6,0,1,282,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,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,6,0,1/100,91,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,6,9,1/100,0,2 +"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,6,0,1,0,1 +"Topline, GB162",boiler,115,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,6,0,1,1,1 +"Topline, GB162",boiler,115,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,6,0,1,2,1 +"Topline, GB162",boiler,115,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,6,0,1,3,1 +"Topline, GB162",boiler,115,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"Topline, GB162",boiler,115,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"Topline, GB162",boiler,115,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"Topline, GB162",boiler,115,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"Topline, GB162",boiler,115,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"Topline, GB162",boiler,115,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"Topline, GB162",boiler,115,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"Topline, GB162",boiler,115,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,0,1/10,11,1 +"Topline, GB162",boiler,115,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 +"Topline, GB162",boiler,115,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 +"Topline, GB162",boiler,115,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Topline, GB162",boiler,115,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Topline, GB162",boiler,115,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Topline, GB162",boiler,115,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Topline, GB162",boiler,115,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Topline, GB162",boiler,115,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Topline, GB162",boiler,115,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Topline, GB162",boiler,115,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Topline, GB162",boiler,115,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Topline, GB162",boiler,115,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Topline, GB162",boiler,115,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Topline, GB162",boiler,115,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Topline, GB162",boiler,115,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Topline, GB162",boiler,115,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Topline, GB162",boiler,115,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Topline, GB162",boiler,115,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Topline, GB162",boiler,115,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Topline, GB162",boiler,115,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Topline, GB162",boiler,115,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Topline, GB162",boiler,115,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 +"Topline, GB162",boiler,115,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 +"Topline, GB162",boiler,115,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 +"Topline, GB162",boiler,115,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 +"Topline, GB162",boiler,115,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"Topline, GB162",boiler,115,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"Topline, GB162",boiler,115,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"Topline, GB162",boiler,115,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"Topline, GB162",boiler,115,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"Topline, GB162",boiler,115,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"Topline, GB162",boiler,115,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"Topline, GB162",boiler,115,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"Topline, GB162",boiler,115,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"Topline, GB162",boiler,115,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"Topline, GB162",boiler,115,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"Topline, GB162",boiler,115,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"Topline, GB162",boiler,115,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"Topline, GB162",boiler,115,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"Topline, GB162",boiler,115,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"Topline, GB162",boiler,115,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"Topline, GB162",boiler,115,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"Topline, GB162",boiler,115,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"Topline, GB162",boiler,115,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"Topline, GB162",boiler,115,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"Topline, GB162",boiler,115,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"Topline, GB162",boiler,115,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"Topline, GB162",boiler,115,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"Topline, GB162",boiler,115,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"Topline, GB162",boiler,115,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"Topline, GB162",boiler,115,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"Topline, GB162",boiler,115,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"Topline, GB162",boiler,115,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"Topline, GB162",boiler,115,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,6,0,1,85,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,6,0,1,86,1 +"Topline, GB162",boiler,115,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 +"Topline, GB162",boiler,115,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 +"Topline, GB162",boiler,115,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 +"Topline, GB162",boiler,115,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 +"Topline, GB162",boiler,115,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Topline, GB162",boiler,115,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 +"Topline, GB162",boiler,115,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 +"Topline, GB162",boiler,115,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 +"Topline, GB162",boiler,115,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"Topline, GB162",boiler,115,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"Topline, GB162",boiler,115,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"Topline, GB162",boiler,115,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"Topline, GB162",boiler,115,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"Topline, GB162",boiler,115,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"Topline, GB162",boiler,115,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"Topline, GB162",boiler,115,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"Topline, GB162",boiler,115,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"Topline, GB162",boiler,115,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"Topline, GB162",boiler,115,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"Topline, GB162",boiler,115,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"Topline, GB162",boiler,115,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"Topline, GB162",boiler,115,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"Topline, GB162",boiler,115,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"Topline, GB162",boiler,115,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"Topline, GB162",boiler,115,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"Topline, GB162",boiler,115,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"Topline, GB162",boiler,115,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"Topline, GB162",boiler,115,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"Topline, GB162",boiler,115,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"Topline, GB162",boiler,115,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"Topline, GB162",boiler,115,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"Topline, GB162",boiler,115,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"Topline, GB162",boiler,115,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"Topline, GB162",boiler,115,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"Topline, GB162",boiler,115,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"Topline, GB162",boiler,115,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"Topline, GB162",boiler,115,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"Topline, GB162",boiler,115,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"Topline, GB162",boiler,115,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"Topline, GB162",boiler,115,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"Topline, GB162",boiler,115,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"Topline, GB162",boiler,115,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"Topline, GB162",boiler,115,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"Topline, GB162",boiler,115,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"Topline, GB162",boiler,115,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 +"Topline, GB162",boiler,115,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 +"Topline, GB162",boiler,115,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Topline, GB162",boiler,115,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 +"Topline, GB162",boiler,115,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 +"Topline, GB162",boiler,115,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 +"Topline, GB162",boiler,115,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 +"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,6,0,1,0,1 +"Cascade MCM10",boiler,121,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,6,0,1,1,1 +"Cascade MCM10",boiler,121,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,6,0,1,2,1 +"Cascade MCM10",boiler,121,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,6,0,1,3,1 +"Cascade MCM10",boiler,121,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"Cascade MCM10",boiler,121,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"Cascade MCM10",boiler,121,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"Cascade MCM10",boiler,121,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"Cascade MCM10",boiler,121,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"Cascade MCM10",boiler,121,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"Cascade MCM10",boiler,121,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"Cascade MCM10",boiler,121,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,0,1/10,11,1 +"Cascade MCM10",boiler,121,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 +"Cascade MCM10",boiler,121,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 +"Cascade MCM10",boiler,121,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Cascade MCM10",boiler,121,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Cascade MCM10",boiler,121,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Cascade MCM10",boiler,121,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Cascade MCM10",boiler,121,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Cascade MCM10",boiler,121,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Cascade MCM10",boiler,121,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Cascade MCM10",boiler,121,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Cascade MCM10",boiler,121,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Cascade MCM10",boiler,121,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Cascade MCM10",boiler,121,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Cascade MCM10",boiler,121,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Cascade MCM10",boiler,121,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Cascade MCM10",boiler,121,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Cascade MCM10",boiler,121,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Cascade MCM10",boiler,121,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Cascade MCM10",boiler,121,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Cascade MCM10",boiler,121,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Cascade MCM10",boiler,121,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Cascade MCM10",boiler,121,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 +"Cascade MCM10",boiler,121,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 +"Cascade MCM10",boiler,121,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 +"Cascade MCM10",boiler,121,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 +"Cascade MCM10",boiler,121,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"Cascade MCM10",boiler,121,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"Cascade MCM10",boiler,121,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"Cascade MCM10",boiler,121,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"Cascade MCM10",boiler,121,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"Cascade MCM10",boiler,121,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"Cascade MCM10",boiler,121,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"Cascade MCM10",boiler,121,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"Cascade MCM10",boiler,121,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"Cascade MCM10",boiler,121,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"Cascade MCM10",boiler,121,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"Cascade MCM10",boiler,121,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"Cascade MCM10",boiler,121,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"Cascade MCM10",boiler,121,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"Cascade MCM10",boiler,121,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"Cascade MCM10",boiler,121,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"Cascade MCM10",boiler,121,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"Cascade MCM10",boiler,121,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"Cascade MCM10",boiler,121,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"Cascade MCM10",boiler,121,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"Cascade MCM10",boiler,121,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"Cascade MCM10",boiler,121,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"Cascade MCM10",boiler,121,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"Cascade MCM10",boiler,121,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"Cascade MCM10",boiler,121,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"Cascade MCM10",boiler,121,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"Cascade MCM10",boiler,121,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"Cascade MCM10",boiler,121,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"Cascade MCM10",boiler,121,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,6,0,1,85,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,6,0,1,86,1 +"Cascade MCM10",boiler,121,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 +"Cascade MCM10",boiler,121,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 +"Cascade MCM10",boiler,121,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 +"Cascade MCM10",boiler,121,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 +"Cascade MCM10",boiler,121,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Cascade MCM10",boiler,121,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 +"Cascade MCM10",boiler,121,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 +"Cascade MCM10",boiler,121,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 +"Cascade MCM10",boiler,121,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"Cascade MCM10",boiler,121,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"Cascade MCM10",boiler,121,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"Cascade MCM10",boiler,121,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"Cascade MCM10",boiler,121,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"Cascade MCM10",boiler,121,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"Cascade MCM10",boiler,121,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"Cascade MCM10",boiler,121,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"Cascade MCM10",boiler,121,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"Cascade MCM10",boiler,121,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"Cascade MCM10",boiler,121,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"Cascade MCM10",boiler,121,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"Cascade MCM10",boiler,121,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"Cascade MCM10",boiler,121,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"Cascade MCM10",boiler,121,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"Cascade MCM10",boiler,121,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"Cascade MCM10",boiler,121,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"Cascade MCM10",boiler,121,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"Cascade MCM10",boiler,121,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"Cascade MCM10",boiler,121,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"Cascade MCM10",boiler,121,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"Cascade MCM10",boiler,121,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"Cascade MCM10",boiler,121,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"Cascade MCM10",boiler,121,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"Cascade MCM10",boiler,121,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"Cascade MCM10",boiler,121,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"Cascade MCM10",boiler,121,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"Cascade MCM10",boiler,121,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"Cascade MCM10",boiler,121,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"Cascade MCM10",boiler,121,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"Cascade MCM10",boiler,121,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"Cascade MCM10",boiler,121,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"Cascade MCM10",boiler,121,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"Cascade MCM10",boiler,121,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"Cascade MCM10",boiler,121,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"Cascade MCM10",boiler,121,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"Cascade MCM10",boiler,121,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 +"Cascade MCM10",boiler,121,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 +"Cascade MCM10",boiler,121,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Cascade MCM10",boiler,121,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 +"Cascade MCM10",boiler,121,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 +"Cascade MCM10",boiler,121,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 +"Cascade MCM10",boiler,121,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 +"Proline",boiler,122,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,6,0,1,0,1 +"Proline",boiler,122,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,6,0,1,1,1 +"Proline",boiler,122,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,6,0,1,2,1 +"Proline",boiler,122,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,6,0,1,3,1 +"Proline",boiler,122,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"Proline",boiler,122,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"Proline",boiler,122,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"Proline",boiler,122,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"Proline",boiler,122,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"Proline",boiler,122,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"Proline",boiler,122,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"Proline",boiler,122,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,0,1/10,11,1 +"Proline",boiler,122,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 +"Proline",boiler,122,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 +"Proline",boiler,122,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Proline",boiler,122,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Proline",boiler,122,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Proline",boiler,122,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Proline",boiler,122,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Proline",boiler,122,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Proline",boiler,122,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Proline",boiler,122,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Proline",boiler,122,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Proline",boiler,122,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Proline",boiler,122,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Proline",boiler,122,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Proline",boiler,122,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Proline",boiler,122,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Proline",boiler,122,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Proline",boiler,122,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Proline",boiler,122,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Proline",boiler,122,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Proline",boiler,122,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Proline",boiler,122,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 +"Proline",boiler,122,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 +"Proline",boiler,122,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 +"Proline",boiler,122,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 +"Proline",boiler,122,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"Proline",boiler,122,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"Proline",boiler,122,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"Proline",boiler,122,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"Proline",boiler,122,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"Proline",boiler,122,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"Proline",boiler,122,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"Proline",boiler,122,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"Proline",boiler,122,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"Proline",boiler,122,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"Proline",boiler,122,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"Proline",boiler,122,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"Proline",boiler,122,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"Proline",boiler,122,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"Proline",boiler,122,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"Proline",boiler,122,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"Proline",boiler,122,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"Proline",boiler,122,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"Proline",boiler,122,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"Proline",boiler,122,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"Proline",boiler,122,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"Proline",boiler,122,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"Proline",boiler,122,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"Proline",boiler,122,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"Proline",boiler,122,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"Proline",boiler,122,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"Proline",boiler,122,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"Proline",boiler,122,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"Proline",boiler,122,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,6,0,1,85,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,6,0,1,86,1 +"Proline",boiler,122,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 +"Proline",boiler,122,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 +"Proline",boiler,122,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 +"Proline",boiler,122,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 +"Proline",boiler,122,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Proline",boiler,122,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 +"Proline",boiler,122,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 +"Proline",boiler,122,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 +"Proline",boiler,122,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"Proline",boiler,122,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"Proline",boiler,122,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"Proline",boiler,122,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"Proline",boiler,122,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"Proline",boiler,122,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"Proline",boiler,122,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"Proline",boiler,122,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"Proline",boiler,122,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"Proline",boiler,122,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"Proline",boiler,122,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"Proline",boiler,122,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"Proline",boiler,122,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"Proline",boiler,122,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"Proline",boiler,122,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"Proline",boiler,122,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"Proline",boiler,122,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"Proline",boiler,122,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"Proline",boiler,122,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"Proline",boiler,122,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"Proline",boiler,122,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"Proline",boiler,122,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"Proline",boiler,122,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"Proline",boiler,122,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"Proline",boiler,122,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"Proline",boiler,122,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"Proline",boiler,122,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"Proline",boiler,122,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"Proline",boiler,122,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"Proline",boiler,122,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"Proline",boiler,122,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"Proline",boiler,122,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"Proline",boiler,122,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"Proline",boiler,122,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"Proline",boiler,122,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"Proline",boiler,122,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"Proline",boiler,122,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 +"Proline",boiler,122,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 +"Proline",boiler,122,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Proline",boiler,122,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 +"Proline",boiler,122,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 +"Proline",boiler,122,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 +"Proline",boiler,122,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 +"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,6,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,6,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,6,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,6,0,1,3,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,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,6,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,6,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,6,0,1/10,256,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,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,6,0,1,258,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,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,6,0,1,263,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,6,0,1,264,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,6,0,1,265,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,6,0,1,266,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,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,6,0,1,268,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,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,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,6,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,6,0,1,16,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"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,6,0,1,85,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,6,0,1,86,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,6,0,1,87,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,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,6,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,6,0,1/10,280,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,6,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,6,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,6,9,1,29,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"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,6,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,6,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,6,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,6,0,1,282,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,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,6,9,1/100,0,2 +"GB212",boiler,131,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,6,0,1,0,1 +"GB212",boiler,131,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,6,0,1,1,1 +"GB212",boiler,131,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,6,0,1,2,1 +"GB212",boiler,131,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,6,0,1,3,1 +"GB212",boiler,131,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"GB212",boiler,131,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"GB212",boiler,131,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"GB212",boiler,131,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"GB212",boiler,131,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"GB212",boiler,131,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"GB212",boiler,131,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"GB212",boiler,131,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,0,1/10,11,1 +"GB212",boiler,131,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 +"GB212",boiler,131,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 +"GB212",boiler,131,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"GB212",boiler,131,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"GB212",boiler,131,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"GB212",boiler,131,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"GB212",boiler,131,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"GB212",boiler,131,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"GB212",boiler,131,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"GB212",boiler,131,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"GB212",boiler,131,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"GB212",boiler,131,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"GB212",boiler,131,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"GB212",boiler,131,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"GB212",boiler,131,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"GB212",boiler,131,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"GB212",boiler,131,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"GB212",boiler,131,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"GB212",boiler,131,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"GB212",boiler,131,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"GB212",boiler,131,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"GB212",boiler,131,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 +"GB212",boiler,131,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 +"GB212",boiler,131,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 +"GB212",boiler,131,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 +"GB212",boiler,131,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"GB212",boiler,131,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"GB212",boiler,131,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"GB212",boiler,131,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"GB212",boiler,131,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"GB212",boiler,131,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"GB212",boiler,131,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"GB212",boiler,131,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"GB212",boiler,131,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"GB212",boiler,131,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"GB212",boiler,131,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"GB212",boiler,131,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"GB212",boiler,131,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"GB212",boiler,131,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"GB212",boiler,131,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"GB212",boiler,131,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"GB212",boiler,131,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"GB212",boiler,131,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"GB212",boiler,131,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"GB212",boiler,131,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"GB212",boiler,131,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"GB212",boiler,131,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"GB212",boiler,131,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"GB212",boiler,131,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"GB212",boiler,131,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"GB212",boiler,131,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"GB212",boiler,131,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"GB212",boiler,131,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"GB212",boiler,131,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,6,0,1,85,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,6,0,1,86,1 +"GB212",boiler,131,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 +"GB212",boiler,131,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 +"GB212",boiler,131,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 +"GB212",boiler,131,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 +"GB212",boiler,131,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"GB212",boiler,131,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 +"GB212",boiler,131,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 +"GB212",boiler,131,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 +"GB212",boiler,131,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"GB212",boiler,131,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"GB212",boiler,131,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"GB212",boiler,131,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"GB212",boiler,131,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"GB212",boiler,131,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"GB212",boiler,131,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"GB212",boiler,131,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"GB212",boiler,131,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"GB212",boiler,131,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"GB212",boiler,131,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"GB212",boiler,131,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"GB212",boiler,131,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"GB212",boiler,131,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"GB212",boiler,131,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"GB212",boiler,131,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"GB212",boiler,131,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"GB212",boiler,131,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"GB212",boiler,131,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"GB212",boiler,131,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"GB212",boiler,131,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"GB212",boiler,131,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"GB212",boiler,131,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"GB212",boiler,131,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"GB212",boiler,131,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"GB212",boiler,131,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"GB212",boiler,131,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"GB212",boiler,131,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"GB212",boiler,131,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"GB212",boiler,131,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"GB212",boiler,131,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"GB212",boiler,131,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"GB212",boiler,131,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"GB212",boiler,131,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"GB212",boiler,131,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"GB212",boiler,131,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"GB212",boiler,131,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 +"GB212",boiler,131,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 +"GB212",boiler,131,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"GB212",boiler,131,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 +"GB212",boiler,131,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 +"GB212",boiler,131,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 +"GB212",boiler,131,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 +"GC7000F",boiler,132,reset,reset,cmd [-\|maintenance\|error\|history\|message\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,6,0,1,0,1 +"GC7000F",boiler,132,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,6,0,1,1,1 +"GC7000F",boiler,132,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,6,0,1,2,1 +"GC7000F",boiler,132,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,6,0,1,3,1 +"GC7000F",boiler,132,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"GC7000F",boiler,132,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"GC7000F",boiler,132,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"GC7000F",boiler,132,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"GC7000F",boiler,132,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"GC7000F",boiler,132,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"GC7000F",boiler,132,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"GC7000F",boiler,132,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,0,1/10,11,1 +"GC7000F",boiler,132,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 +"GC7000F",boiler,132,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 +"GC7000F",boiler,132,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"GC7000F",boiler,132,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"GC7000F",boiler,132,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"GC7000F",boiler,132,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"GC7000F",boiler,132,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"GC7000F",boiler,132,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"GC7000F",boiler,132,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"GC7000F",boiler,132,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"GC7000F",boiler,132,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"GC7000F",boiler,132,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"GC7000F",boiler,132,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"GC7000F",boiler,132,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"GC7000F",boiler,132,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"GC7000F",boiler,132,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"GC7000F",boiler,132,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"GC7000F",boiler,132,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"GC7000F",boiler,132,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"GC7000F",boiler,132,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"GC7000F",boiler,132,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"GC7000F",boiler,132,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 +"GC7000F",boiler,132,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 +"GC7000F",boiler,132,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 +"GC7000F",boiler,132,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 +"GC7000F",boiler,132,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"GC7000F",boiler,132,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"GC7000F",boiler,132,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"GC7000F",boiler,132,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"GC7000F",boiler,132,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"GC7000F",boiler,132,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"GC7000F",boiler,132,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"GC7000F",boiler,132,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"GC7000F",boiler,132,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"GC7000F",boiler,132,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"GC7000F",boiler,132,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"GC7000F",boiler,132,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"GC7000F",boiler,132,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"GC7000F",boiler,132,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"GC7000F",boiler,132,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"GC7000F",boiler,132,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"GC7000F",boiler,132,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"GC7000F",boiler,132,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"GC7000F",boiler,132,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"GC7000F",boiler,132,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"GC7000F",boiler,132,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"GC7000F",boiler,132,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"GC7000F",boiler,132,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"GC7000F",boiler,132,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"GC7000F",boiler,132,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"GC7000F",boiler,132,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"GC7000F",boiler,132,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"GC7000F",boiler,132,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"GC7000F",boiler,132,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,6,0,1,85,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,6,0,1,86,1 +"GC7000F",boiler,132,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 +"GC7000F",boiler,132,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 +"GC7000F",boiler,132,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 +"GC7000F",boiler,132,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 +"GC7000F",boiler,132,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"GC7000F",boiler,132,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 +"GC7000F",boiler,132,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 +"GC7000F",boiler,132,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 +"GC7000F",boiler,132,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"GC7000F",boiler,132,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"GC7000F",boiler,132,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"GC7000F",boiler,132,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"GC7000F",boiler,132,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"GC7000F",boiler,132,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"GC7000F",boiler,132,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"GC7000F",boiler,132,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"GC7000F",boiler,132,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"GC7000F",boiler,132,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"GC7000F",boiler,132,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"GC7000F",boiler,132,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"GC7000F",boiler,132,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"GC7000F",boiler,132,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"GC7000F",boiler,132,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"GC7000F",boiler,132,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"GC7000F",boiler,132,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"GC7000F",boiler,132,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"GC7000F",boiler,132,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"GC7000F",boiler,132,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"GC7000F",boiler,132,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"GC7000F",boiler,132,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"GC7000F",boiler,132,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"GC7000F",boiler,132,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"GC7000F",boiler,132,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"GC7000F",boiler,132,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"GC7000F",boiler,132,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"GC7000F",boiler,132,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"GC7000F",boiler,132,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"GC7000F",boiler,132,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"GC7000F",boiler,132,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"GC7000F",boiler,132,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"GC7000F",boiler,132,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"GC7000F",boiler,132,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"GC7000F",boiler,132,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"GC7000F",boiler,132,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"GC7000F",boiler,132,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 +"GC7000F",boiler,132,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 +"GC7000F",boiler,132,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"GC7000F",boiler,132,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 +"GC7000F",boiler,132,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 +"GC7000F",boiler,132,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 +"GC7000F",boiler,132,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 +"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,6,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,6,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,6,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,6,0,1,3,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,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,6,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,6,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,6,0,1/10,256,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,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,6,0,1,265,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,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,6,0,1,268,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,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,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,6,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,6,0,1,16,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,6,0,1,85,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,6,0,1,86,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,6,0,1,87,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,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,6,0,1/10,280,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,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,6,9,1,29,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,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,6,0,1,282,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 +"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,6,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,6,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,6,0,1,2,1 +"Greenstar 30Ri Compact",boiler,154,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,6,0,1,3,1 +"Greenstar 30Ri Compact",boiler,154,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"Greenstar 30Ri Compact",boiler,154,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"Greenstar 30Ri Compact",boiler,154,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"Greenstar 30Ri Compact",boiler,154,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"Greenstar 30Ri Compact",boiler,154,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"Greenstar 30Ri Compact",boiler,154,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"Greenstar 30Ri Compact",boiler,154,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"Greenstar 30Ri Compact",boiler,154,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,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,6,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,6,0,1/10,13,1 +"Greenstar 30Ri Compact",boiler,154,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Greenstar 30Ri Compact",boiler,154,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Greenstar 30Ri Compact",boiler,154,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Greenstar 30Ri Compact",boiler,154,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Greenstar 30Ri Compact",boiler,154,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Greenstar 30Ri Compact",boiler,154,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Greenstar 30Ri Compact",boiler,154,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Greenstar 30Ri Compact",boiler,154,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Greenstar 30Ri Compact",boiler,154,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Greenstar 30Ri Compact",boiler,154,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Greenstar 30Ri Compact",boiler,154,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Greenstar 30Ri Compact",boiler,154,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Greenstar 30Ri Compact",boiler,154,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Greenstar 30Ri Compact",boiler,154,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Greenstar 30Ri Compact",boiler,154,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Greenstar 30Ri Compact",boiler,154,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Greenstar 30Ri Compact",boiler,154,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Greenstar 30Ri Compact",boiler,154,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Greenstar 30Ri Compact",boiler,154,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Greenstar 30Ri Compact",boiler,154,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 +"Greenstar 30Ri Compact",boiler,154,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 +"Greenstar 30Ri Compact",boiler,154,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 +"Greenstar 30Ri Compact",boiler,154,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 +"Greenstar 30Ri Compact",boiler,154,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"Greenstar 30Ri Compact",boiler,154,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"Greenstar 30Ri Compact",boiler,154,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"Greenstar 30Ri Compact",boiler,154,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"Greenstar 30Ri Compact",boiler,154,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"Greenstar 30Ri Compact",boiler,154,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"Greenstar 30Ri Compact",boiler,154,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"Greenstar 30Ri Compact",boiler,154,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"Greenstar 30Ri Compact",boiler,154,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"Greenstar 30Ri Compact",boiler,154,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"Greenstar 30Ri Compact",boiler,154,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"Greenstar 30Ri Compact",boiler,154,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"Greenstar 30Ri Compact",boiler,154,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"Greenstar 30Ri Compact",boiler,154,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"Greenstar 30Ri Compact",boiler,154,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"Greenstar 30Ri Compact",boiler,154,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"Greenstar 30Ri Compact",boiler,154,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"Greenstar 30Ri Compact",boiler,154,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"Greenstar 30Ri Compact",boiler,154,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"Greenstar 30Ri Compact",boiler,154,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"Greenstar 30Ri Compact",boiler,154,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"Greenstar 30Ri Compact",boiler,154,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"Greenstar 30Ri Compact",boiler,154,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"Greenstar 30Ri Compact",boiler,154,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"Greenstar 30Ri Compact",boiler,154,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"Greenstar 30Ri Compact",boiler,154,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"Greenstar 30Ri Compact",boiler,154,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"Greenstar 30Ri Compact",boiler,154,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"Greenstar 30Ri Compact",boiler,154,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,6,0,1,85,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,6,0,1,86,1 +"Greenstar 30Ri Compact",boiler,154,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 +"Greenstar 30Ri Compact",boiler,154,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 +"Greenstar 30Ri Compact",boiler,154,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 +"Greenstar 30Ri Compact",boiler,154,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,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,6,0,1/10,280,2 +"Greenstar 30Ri Compact",boiler,154,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,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,6,9,1,29,1 +"Greenstar 30Ri Compact",boiler,154,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"Greenstar 30Ri Compact",boiler,154,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"Greenstar 30Ri Compact",boiler,154,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"Greenstar 30Ri Compact",boiler,154,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"Greenstar 30Ri Compact",boiler,154,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"Greenstar 30Ri Compact",boiler,154,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"Greenstar 30Ri Compact",boiler,154,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"Greenstar 30Ri Compact",boiler,154,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"Greenstar 30Ri Compact",boiler,154,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"Greenstar 30Ri Compact",boiler,154,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"Greenstar 30Ri Compact",boiler,154,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"Greenstar 30Ri Compact",boiler,154,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"Greenstar 30Ri Compact",boiler,154,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"Greenstar 30Ri Compact",boiler,154,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"Greenstar 30Ri Compact",boiler,154,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"Greenstar 30Ri Compact",boiler,154,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"Greenstar 30Ri Compact",boiler,154,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"Greenstar 30Ri Compact",boiler,154,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"Greenstar 30Ri Compact",boiler,154,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"Greenstar 30Ri Compact",boiler,154,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"Greenstar 30Ri Compact",boiler,154,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"Greenstar 30Ri Compact",boiler,154,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"Greenstar 30Ri Compact",boiler,154,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"Greenstar 30Ri Compact",boiler,154,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"Greenstar 30Ri Compact",boiler,154,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"Greenstar 30Ri Compact",boiler,154,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"Greenstar 30Ri Compact",boiler,154,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"Greenstar 30Ri Compact",boiler,154,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"Greenstar 30Ri Compact",boiler,154,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"Greenstar 30Ri Compact",boiler,154,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"Greenstar 30Ri Compact",boiler,154,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"Greenstar 30Ri Compact",boiler,154,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"Greenstar 30Ri Compact",boiler,154,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"Greenstar 30Ri Compact",boiler,154,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"Greenstar 30Ri Compact",boiler,154,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"Greenstar 30Ri Compact",boiler,154,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"Greenstar 30Ri Compact",boiler,154,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 +"Greenstar 30Ri Compact",boiler,154,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"Greenstar 30Ri Compact",boiler,154,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 +"Greenstar 30Ri Compact",boiler,154,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 +"Greenstar 30Ri Compact",boiler,154,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 +"Greenstar 30Ri Compact",boiler,154,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 +"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,6,0,1,0,1 +"Suprapur-o",boiler,155,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,6,0,1,1,1 +"Suprapur-o",boiler,155,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,6,0,1,2,1 +"Suprapur-o",boiler,155,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,6,0,1,3,1 +"Suprapur-o",boiler,155,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"Suprapur-o",boiler,155,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"Suprapur-o",boiler,155,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"Suprapur-o",boiler,155,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"Suprapur-o",boiler,155,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"Suprapur-o",boiler,155,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"Suprapur-o",boiler,155,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"Suprapur-o",boiler,155,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,0,1/10,11,1 +"Suprapur-o",boiler,155,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 +"Suprapur-o",boiler,155,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 +"Suprapur-o",boiler,155,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Suprapur-o",boiler,155,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Suprapur-o",boiler,155,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Suprapur-o",boiler,155,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Suprapur-o",boiler,155,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Suprapur-o",boiler,155,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Suprapur-o",boiler,155,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Suprapur-o",boiler,155,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Suprapur-o",boiler,155,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Suprapur-o",boiler,155,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Suprapur-o",boiler,155,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Suprapur-o",boiler,155,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Suprapur-o",boiler,155,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Suprapur-o",boiler,155,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Suprapur-o",boiler,155,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Suprapur-o",boiler,155,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Suprapur-o",boiler,155,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Suprapur-o",boiler,155,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Suprapur-o",boiler,155,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Suprapur-o",boiler,155,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 +"Suprapur-o",boiler,155,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 +"Suprapur-o",boiler,155,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 +"Suprapur-o",boiler,155,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 +"Suprapur-o",boiler,155,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"Suprapur-o",boiler,155,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"Suprapur-o",boiler,155,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"Suprapur-o",boiler,155,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"Suprapur-o",boiler,155,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"Suprapur-o",boiler,155,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"Suprapur-o",boiler,155,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"Suprapur-o",boiler,155,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"Suprapur-o",boiler,155,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"Suprapur-o",boiler,155,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"Suprapur-o",boiler,155,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"Suprapur-o",boiler,155,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"Suprapur-o",boiler,155,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"Suprapur-o",boiler,155,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"Suprapur-o",boiler,155,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"Suprapur-o",boiler,155,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"Suprapur-o",boiler,155,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"Suprapur-o",boiler,155,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"Suprapur-o",boiler,155,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"Suprapur-o",boiler,155,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"Suprapur-o",boiler,155,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"Suprapur-o",boiler,155,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"Suprapur-o",boiler,155,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"Suprapur-o",boiler,155,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"Suprapur-o",boiler,155,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"Suprapur-o",boiler,155,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"Suprapur-o",boiler,155,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"Suprapur-o",boiler,155,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"Suprapur-o",boiler,155,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,6,0,1,85,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,6,0,1,86,1 +"Suprapur-o",boiler,155,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 +"Suprapur-o",boiler,155,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 +"Suprapur-o",boiler,155,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 +"Suprapur-o",boiler,155,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 +"Suprapur-o",boiler,155,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Suprapur-o",boiler,155,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 +"Suprapur-o",boiler,155,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 +"Suprapur-o",boiler,155,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 +"Suprapur-o",boiler,155,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"Suprapur-o",boiler,155,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"Suprapur-o",boiler,155,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"Suprapur-o",boiler,155,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"Suprapur-o",boiler,155,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"Suprapur-o",boiler,155,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"Suprapur-o",boiler,155,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"Suprapur-o",boiler,155,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"Suprapur-o",boiler,155,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"Suprapur-o",boiler,155,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"Suprapur-o",boiler,155,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"Suprapur-o",boiler,155,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"Suprapur-o",boiler,155,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"Suprapur-o",boiler,155,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"Suprapur-o",boiler,155,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"Suprapur-o",boiler,155,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"Suprapur-o",boiler,155,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"Suprapur-o",boiler,155,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"Suprapur-o",boiler,155,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"Suprapur-o",boiler,155,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"Suprapur-o",boiler,155,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"Suprapur-o",boiler,155,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"Suprapur-o",boiler,155,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"Suprapur-o",boiler,155,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"Suprapur-o",boiler,155,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"Suprapur-o",boiler,155,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"Suprapur-o",boiler,155,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"Suprapur-o",boiler,155,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"Suprapur-o",boiler,155,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"Suprapur-o",boiler,155,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"Suprapur-o",boiler,155,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"Suprapur-o",boiler,155,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"Suprapur-o",boiler,155,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"Suprapur-o",boiler,155,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"Suprapur-o",boiler,155,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"Suprapur-o",boiler,155,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"Suprapur-o",boiler,155,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 +"Suprapur-o",boiler,155,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 +"Suprapur-o",boiler,155,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Suprapur-o",boiler,155,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 +"Suprapur-o",boiler,155,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 +"Suprapur-o",boiler,155,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 +"Suprapur-o",boiler,155,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 +"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,6,0,1,0,1 +"Cerapur Aero",boiler,167,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,6,0,1,1,1 +"Cerapur Aero",boiler,167,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,6,0,1,2,1 +"Cerapur Aero",boiler,167,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,6,0,1,3,1 +"Cerapur Aero",boiler,167,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"Cerapur Aero",boiler,167,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"Cerapur Aero",boiler,167,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"Cerapur Aero",boiler,167,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"Cerapur Aero",boiler,167,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"Cerapur Aero",boiler,167,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"Cerapur Aero",boiler,167,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"Cerapur Aero",boiler,167,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,0,1/10,11,1 +"Cerapur Aero",boiler,167,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 +"Cerapur Aero",boiler,167,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 +"Cerapur Aero",boiler,167,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Cerapur Aero",boiler,167,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Cerapur Aero",boiler,167,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Cerapur Aero",boiler,167,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Cerapur Aero",boiler,167,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Cerapur Aero",boiler,167,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Cerapur Aero",boiler,167,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Cerapur Aero",boiler,167,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Cerapur Aero",boiler,167,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Cerapur Aero",boiler,167,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Cerapur Aero",boiler,167,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Cerapur Aero",boiler,167,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Cerapur Aero",boiler,167,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Cerapur Aero",boiler,167,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Cerapur Aero",boiler,167,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Cerapur Aero",boiler,167,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Cerapur Aero",boiler,167,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Cerapur Aero",boiler,167,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Cerapur Aero",boiler,167,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Cerapur Aero",boiler,167,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 +"Cerapur Aero",boiler,167,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 +"Cerapur Aero",boiler,167,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 +"Cerapur Aero",boiler,167,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 +"Cerapur Aero",boiler,167,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"Cerapur Aero",boiler,167,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"Cerapur Aero",boiler,167,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"Cerapur Aero",boiler,167,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"Cerapur Aero",boiler,167,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"Cerapur Aero",boiler,167,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"Cerapur Aero",boiler,167,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"Cerapur Aero",boiler,167,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"Cerapur Aero",boiler,167,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"Cerapur Aero",boiler,167,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"Cerapur Aero",boiler,167,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"Cerapur Aero",boiler,167,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"Cerapur Aero",boiler,167,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"Cerapur Aero",boiler,167,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"Cerapur Aero",boiler,167,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"Cerapur Aero",boiler,167,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"Cerapur Aero",boiler,167,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"Cerapur Aero",boiler,167,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"Cerapur Aero",boiler,167,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"Cerapur Aero",boiler,167,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"Cerapur Aero",boiler,167,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"Cerapur Aero",boiler,167,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"Cerapur Aero",boiler,167,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"Cerapur Aero",boiler,167,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"Cerapur Aero",boiler,167,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"Cerapur Aero",boiler,167,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"Cerapur Aero",boiler,167,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"Cerapur Aero",boiler,167,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"Cerapur Aero",boiler,167,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,6,0,1,85,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,6,0,1,86,1 +"Cerapur Aero",boiler,167,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 +"Cerapur Aero",boiler,167,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 +"Cerapur Aero",boiler,167,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 +"Cerapur Aero",boiler,167,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 +"Cerapur Aero",boiler,167,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Cerapur Aero",boiler,167,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 +"Cerapur Aero",boiler,167,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 +"Cerapur Aero",boiler,167,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 +"Cerapur Aero",boiler,167,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"Cerapur Aero",boiler,167,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"Cerapur Aero",boiler,167,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"Cerapur Aero",boiler,167,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"Cerapur Aero",boiler,167,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"Cerapur Aero",boiler,167,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"Cerapur Aero",boiler,167,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"Cerapur Aero",boiler,167,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"Cerapur Aero",boiler,167,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"Cerapur Aero",boiler,167,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"Cerapur Aero",boiler,167,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"Cerapur Aero",boiler,167,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"Cerapur Aero",boiler,167,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"Cerapur Aero",boiler,167,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"Cerapur Aero",boiler,167,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"Cerapur Aero",boiler,167,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"Cerapur Aero",boiler,167,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"Cerapur Aero",boiler,167,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"Cerapur Aero",boiler,167,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"Cerapur Aero",boiler,167,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"Cerapur Aero",boiler,167,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"Cerapur Aero",boiler,167,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"Cerapur Aero",boiler,167,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"Cerapur Aero",boiler,167,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"Cerapur Aero",boiler,167,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"Cerapur Aero",boiler,167,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"Cerapur Aero",boiler,167,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"Cerapur Aero",boiler,167,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"Cerapur Aero",boiler,167,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"Cerapur Aero",boiler,167,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"Cerapur Aero",boiler,167,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"Cerapur Aero",boiler,167,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"Cerapur Aero",boiler,167,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"Cerapur Aero",boiler,167,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"Cerapur Aero",boiler,167,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"Cerapur Aero",boiler,167,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"Cerapur Aero",boiler,167,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 +"Cerapur Aero",boiler,167,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 +"Cerapur Aero",boiler,167,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Cerapur Aero",boiler,167,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 +"Cerapur Aero",boiler,167,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 +"Cerapur Aero",boiler,167,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 +"Cerapur Aero",boiler,167,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 +"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,6,0,1,0,1 +"Hybrid Heatpump",boiler,168,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,6,0,1,1,1 +"Hybrid Heatpump",boiler,168,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,6,0,1,2,1 +"Hybrid Heatpump",boiler,168,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,6,0,1,3,1 +"Hybrid Heatpump",boiler,168,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"Hybrid Heatpump",boiler,168,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"Hybrid Heatpump",boiler,168,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"Hybrid Heatpump",boiler,168,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"Hybrid Heatpump",boiler,168,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"Hybrid Heatpump",boiler,168,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"Hybrid Heatpump",boiler,168,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"Hybrid Heatpump",boiler,168,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,0,1/10,11,1 +"Hybrid Heatpump",boiler,168,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 +"Hybrid Heatpump",boiler,168,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 +"Hybrid Heatpump",boiler,168,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Hybrid Heatpump",boiler,168,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Hybrid Heatpump",boiler,168,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Hybrid Heatpump",boiler,168,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Hybrid Heatpump",boiler,168,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Hybrid Heatpump",boiler,168,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Hybrid Heatpump",boiler,168,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Hybrid Heatpump",boiler,168,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Hybrid Heatpump",boiler,168,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Hybrid Heatpump",boiler,168,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Hybrid Heatpump",boiler,168,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Hybrid Heatpump",boiler,168,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Hybrid Heatpump",boiler,168,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Hybrid Heatpump",boiler,168,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Hybrid Heatpump",boiler,168,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Hybrid Heatpump",boiler,168,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Hybrid Heatpump",boiler,168,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Hybrid Heatpump",boiler,168,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Hybrid Heatpump",boiler,168,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Hybrid Heatpump",boiler,168,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 +"Hybrid Heatpump",boiler,168,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 +"Hybrid Heatpump",boiler,168,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 +"Hybrid Heatpump",boiler,168,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 +"Hybrid Heatpump",boiler,168,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"Hybrid Heatpump",boiler,168,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"Hybrid Heatpump",boiler,168,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"Hybrid Heatpump",boiler,168,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"Hybrid Heatpump",boiler,168,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"Hybrid Heatpump",boiler,168,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"Hybrid Heatpump",boiler,168,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"Hybrid Heatpump",boiler,168,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"Hybrid Heatpump",boiler,168,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"Hybrid Heatpump",boiler,168,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"Hybrid Heatpump",boiler,168,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"Hybrid Heatpump",boiler,168,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"Hybrid Heatpump",boiler,168,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"Hybrid Heatpump",boiler,168,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"Hybrid Heatpump",boiler,168,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"Hybrid Heatpump",boiler,168,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"Hybrid Heatpump",boiler,168,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"Hybrid Heatpump",boiler,168,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"Hybrid Heatpump",boiler,168,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"Hybrid Heatpump",boiler,168,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"Hybrid Heatpump",boiler,168,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"Hybrid Heatpump",boiler,168,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"Hybrid Heatpump",boiler,168,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"Hybrid Heatpump",boiler,168,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"Hybrid Heatpump",boiler,168,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"Hybrid Heatpump",boiler,168,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"Hybrid Heatpump",boiler,168,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"Hybrid Heatpump",boiler,168,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"Hybrid Heatpump",boiler,168,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,6,0,1,85,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,6,0,1,86,1 +"Hybrid Heatpump",boiler,168,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 +"Hybrid Heatpump",boiler,168,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 +"Hybrid Heatpump",boiler,168,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 +"Hybrid Heatpump",boiler,168,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 +"Hybrid Heatpump",boiler,168,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Hybrid Heatpump",boiler,168,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 +"Hybrid Heatpump",boiler,168,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 +"Hybrid Heatpump",boiler,168,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 +"Hybrid Heatpump",boiler,168,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"Hybrid Heatpump",boiler,168,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"Hybrid Heatpump",boiler,168,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"Hybrid Heatpump",boiler,168,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"Hybrid Heatpump",boiler,168,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"Hybrid Heatpump",boiler,168,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"Hybrid Heatpump",boiler,168,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"Hybrid Heatpump",boiler,168,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"Hybrid Heatpump",boiler,168,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"Hybrid Heatpump",boiler,168,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"Hybrid Heatpump",boiler,168,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"Hybrid Heatpump",boiler,168,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"Hybrid Heatpump",boiler,168,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"Hybrid Heatpump",boiler,168,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"Hybrid Heatpump",boiler,168,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"Hybrid Heatpump",boiler,168,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"Hybrid Heatpump",boiler,168,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"Hybrid Heatpump",boiler,168,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"Hybrid Heatpump",boiler,168,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"Hybrid Heatpump",boiler,168,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"Hybrid Heatpump",boiler,168,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"Hybrid Heatpump",boiler,168,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"Hybrid Heatpump",boiler,168,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"Hybrid Heatpump",boiler,168,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"Hybrid Heatpump",boiler,168,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"Hybrid Heatpump",boiler,168,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"Hybrid Heatpump",boiler,168,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"Hybrid Heatpump",boiler,168,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"Hybrid Heatpump",boiler,168,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"Hybrid Heatpump",boiler,168,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"Hybrid Heatpump",boiler,168,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"Hybrid Heatpump",boiler,168,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"Hybrid Heatpump",boiler,168,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"Hybrid Heatpump",boiler,168,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"Hybrid Heatpump",boiler,168,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"Hybrid Heatpump",boiler,168,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"Hybrid Heatpump",boiler,168,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 +"Hybrid Heatpump",boiler,168,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 +"Hybrid Heatpump",boiler,168,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Hybrid Heatpump",boiler,168,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 +"Hybrid Heatpump",boiler,168,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 +"Hybrid Heatpump",boiler,168,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 +"Hybrid Heatpump",boiler,168,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 +"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,6,0,1,0,1 +"Logano GB212",boiler,170,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,6,0,1,1,1 +"Logano GB212",boiler,170,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,6,0,1,2,1 +"Logano GB212",boiler,170,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,6,0,1,3,1 +"Logano GB212",boiler,170,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"Logano GB212",boiler,170,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"Logano GB212",boiler,170,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"Logano GB212",boiler,170,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"Logano GB212",boiler,170,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"Logano GB212",boiler,170,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"Logano GB212",boiler,170,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"Logano GB212",boiler,170,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,0,1/10,11,1 +"Logano GB212",boiler,170,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 +"Logano GB212",boiler,170,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 +"Logano GB212",boiler,170,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Logano GB212",boiler,170,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Logano GB212",boiler,170,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Logano GB212",boiler,170,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Logano GB212",boiler,170,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Logano GB212",boiler,170,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Logano GB212",boiler,170,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Logano GB212",boiler,170,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Logano GB212",boiler,170,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Logano GB212",boiler,170,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Logano GB212",boiler,170,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Logano GB212",boiler,170,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Logano GB212",boiler,170,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Logano GB212",boiler,170,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Logano GB212",boiler,170,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Logano GB212",boiler,170,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Logano GB212",boiler,170,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Logano GB212",boiler,170,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Logano GB212",boiler,170,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Logano GB212",boiler,170,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 +"Logano GB212",boiler,170,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 +"Logano GB212",boiler,170,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 +"Logano GB212",boiler,170,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 +"Logano GB212",boiler,170,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"Logano GB212",boiler,170,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"Logano GB212",boiler,170,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"Logano GB212",boiler,170,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"Logano GB212",boiler,170,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"Logano GB212",boiler,170,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"Logano GB212",boiler,170,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"Logano GB212",boiler,170,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"Logano GB212",boiler,170,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"Logano GB212",boiler,170,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"Logano GB212",boiler,170,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"Logano GB212",boiler,170,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"Logano GB212",boiler,170,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"Logano GB212",boiler,170,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"Logano GB212",boiler,170,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"Logano GB212",boiler,170,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"Logano GB212",boiler,170,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"Logano GB212",boiler,170,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"Logano GB212",boiler,170,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"Logano GB212",boiler,170,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"Logano GB212",boiler,170,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"Logano GB212",boiler,170,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"Logano GB212",boiler,170,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"Logano GB212",boiler,170,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"Logano GB212",boiler,170,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"Logano GB212",boiler,170,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"Logano GB212",boiler,170,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"Logano GB212",boiler,170,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"Logano GB212",boiler,170,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,6,0,1,85,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,6,0,1,86,1 +"Logano GB212",boiler,170,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 +"Logano GB212",boiler,170,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 +"Logano GB212",boiler,170,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 +"Logano GB212",boiler,170,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 +"Logano GB212",boiler,170,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Logano GB212",boiler,170,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 +"Logano GB212",boiler,170,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 +"Logano GB212",boiler,170,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 +"Logano GB212",boiler,170,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"Logano GB212",boiler,170,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"Logano GB212",boiler,170,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"Logano GB212",boiler,170,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"Logano GB212",boiler,170,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"Logano GB212",boiler,170,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"Logano GB212",boiler,170,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"Logano GB212",boiler,170,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"Logano GB212",boiler,170,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"Logano GB212",boiler,170,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"Logano GB212",boiler,170,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"Logano GB212",boiler,170,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"Logano GB212",boiler,170,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"Logano GB212",boiler,170,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"Logano GB212",boiler,170,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"Logano GB212",boiler,170,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"Logano GB212",boiler,170,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"Logano GB212",boiler,170,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"Logano GB212",boiler,170,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"Logano GB212",boiler,170,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"Logano GB212",boiler,170,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"Logano GB212",boiler,170,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"Logano GB212",boiler,170,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"Logano GB212",boiler,170,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"Logano GB212",boiler,170,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"Logano GB212",boiler,170,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"Logano GB212",boiler,170,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"Logano GB212",boiler,170,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"Logano GB212",boiler,170,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"Logano GB212",boiler,170,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"Logano GB212",boiler,170,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"Logano GB212",boiler,170,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"Logano GB212",boiler,170,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"Logano GB212",boiler,170,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"Logano GB212",boiler,170,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"Logano GB212",boiler,170,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"Logano GB212",boiler,170,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 +"Logano GB212",boiler,170,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 +"Logano GB212",boiler,170,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Logano GB212",boiler,170,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 +"Logano GB212",boiler,170,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 +"Logano GB212",boiler,170,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 +"Logano GB212",boiler,170,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,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\|hp error\|burner starts\|factory] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,6,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,6,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,6,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,6,0,1,3,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,0,1/10,11,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,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,6,0,1,83,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,6,0,1,84,1 +"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,6,0,1,85,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,6,0,1,86,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,6,0,1,87,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,6,0,1,88,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,6,0,1/100,89,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,6,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,6,0,1/100,91,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,6,0,1/100,93,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,6,0,1/100,95,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,6,0,1/100,97,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,6,0,1/100,99,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,6,0,1/100,101,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,6,0,1/100,103,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,6,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,6,0,1/60,105,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,6,0,1/60,107,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,6,0,1/60,109,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,6,0,1/60,111,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,6,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,6,0,1/60,113,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,6,0,1,115,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,6,0,1,117,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,6,0,1,119,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,6,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,6,0,1,121,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,6,0,1,123,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,6,0,1,125,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,6,0,1,127,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,6,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,6,0,1,129,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,6,0,1,131,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,6,0,1,133,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,6,0,1,135,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,6,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,6,0,1,137,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,6,0,1,139,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,6,0,1,141,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,6,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,6,0,1,143,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,6,0,1,145,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,6,0,1/10,147,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,6,0,1,148,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,6,0,1/10,149,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,6,0,10,150,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,6,0,50,151,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,6,0,1,152,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,6,0,1,153,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hppoolon,hp pool,boolean, ,false,binary_sensor.boiler_hp_pool,binary_sensor.boiler_hppoolon,6,0,1,154,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,6,0,1,155,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,6,0,1,156,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,6,0,1,157,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,6,0,1,158,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,6,0,1,159,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,6,0,1,160,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,6,0,1,161,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,6,0,1/10,162,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,6,0,1/10,163,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,6,0,1/10,164,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,6,0,1/10,165,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,6,0,1/10,166,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,6,0,1/10,167,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,6,0,1/10,168,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,6,0,1/10,169,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,6,0,1/10,170,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,6,0,1/10,171,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,6,0,1/10,172,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,6,0,1/10,173,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,6,0,1/10,174,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,6,0,1/10,175,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,6,0,1/10,176,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,6,0,1/10,177,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,poolon,pool on,boolean (>=0<=0), ,true,switch.boiler_pool_on,switch.boiler_poolon,6,0,1,178,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,poolsettemp,pool setpoint,uint8 (>=0<=0),C,true,number.boiler_pool_setpoint,number.boiler_poolsettemp,6,0,1/2,179,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,6,0,1,180,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,6,0,1,181,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,6,0,1,182,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,6,0,1,190,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,6,0,1,191,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,6,0,1,199,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,6,0,1,200,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,6,0,1,208,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,6,0,1,209,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\|12 kW\|15 kW] (>=0<=0), ,true,select.boiler_heat_limit_compressor,select.boiler_maxheatcomp,6,0,1,217,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\|12 kW\|15 kW] (>=0<=0), ,true,select.boiler_heat_limit_heating,select.boiler_maxheatheat,6,0,1,218,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\|12 kW\|15 kW] (>=0<=0), ,true,select.boiler_dhw_heat_limit,select.boiler_dhw_maxheat,6,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,6,0,1,219,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,6,0,1,220,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,6,0,1,221,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,6,0,1,222,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,6,0,1,223,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,6,0,1,224,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,6,0,10,225,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,6,0,1/10,226,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,6,0,1/10,227,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,6,0,1,228,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,6,0,5,229,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,6,0,5,230,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,6,0,5,231,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,6,0,1,232,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,6,0,15,233,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,6,0,15,234,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,6,0,1,235,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,6,0,1,236,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,6,0,1,237,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,6,0,1/10,238,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,6,0,1/10,239,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,6,0,1,240,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,6,0,1,241,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,6,0,1,242,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,6,0,1,243,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,6,0,1,244,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,6,0,1,245,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,6,0,1,246,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,6,0,1,247,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,6,0,1,248,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,6,0,1,249,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,6,0,1,250,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,6,0,1,251,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,6,0,1,252,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,6,0,1,253,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,6,0,1,254,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,6,0,1,255,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,6,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,6,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,6,9,1,17,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.comfoff,comfort switch off,uint8 (>=15<=65),C,true,number.boiler_dhw_comfort_switch_off,number.boiler_dhw_comfoff,6,9,1,18,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.ecooff,eco switch off,uint8 (>=15<=65),C,true,number.boiler_dhw_eco_switch_off,number.boiler_dhw_ecooff,6,9,1,19,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.ecoplusoff,eco+ switch off,uint8 (>=48<=63),C,true,number.boiler_dhw_eco+_switch_off,number.boiler_dhw_ecoplusoff,6,9,1,20,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.comfdiff,comfort diff,uint8 (>=6<=18),K,true,number.boiler_dhw_comfort_diff,number.boiler_dhw_comfdiff,6,9,1,21,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.ecodiff,eco diff,uint8 (>=6<=18),K,true,number.boiler_dhw_eco_diff,number.boiler_dhw_ecodiff,6,9,1,22,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.ecoplusdiff,eco+ diff,uint8 (>=6<=15),K,true,number.boiler_dhw_eco+_diff,number.boiler_dhw_ecoplusdiff,6,9,1,23,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.comfstop,comfort stop temp,uint8 (>=0<=0),C,true,number.boiler_dhw_comfort_stop_temp,number.boiler_dhw_comfstop,6,9,1,24,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.ecostop,eco stop temp,uint8 (>=0<=0),C,true,number.boiler_dhw_eco_stop_temp,number.boiler_dhw_ecostop,6,9,1,25,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.ecoplusstop,eco+ stop temp,uint8 (>=0<=0),C,true,number.boiler_dhw_eco+_stop_temp,number.boiler_dhw_ecoplusstop,6,9,1,26,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.hpcircpump,circulation pump available during dhw,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available_during_dhw,switch.boiler_dhw_hpcircpump,6,9,1,27,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"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,6,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,6,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,6,9,1,69,2 +"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,6,0,1,0,1 +"Geo 5xx",boiler,173,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,6,0,1,1,1 +"Geo 5xx",boiler,173,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,6,0,1,2,1 +"Geo 5xx",boiler,173,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,6,0,1,3,1 +"Geo 5xx",boiler,173,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"Geo 5xx",boiler,173,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"Geo 5xx",boiler,173,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"Geo 5xx",boiler,173,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"Geo 5xx",boiler,173,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"Geo 5xx",boiler,173,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"Geo 5xx",boiler,173,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"Geo 5xx",boiler,173,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,0,1/10,11,1 +"Geo 5xx",boiler,173,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 +"Geo 5xx",boiler,173,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 +"Geo 5xx",boiler,173,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 +"Geo 5xx",boiler,173,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 +"Geo 5xx",boiler,173,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 +"Geo 5xx",boiler,173,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"Geo 5xx",boiler,173,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"Geo 5xx",boiler,173,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"Geo 5xx",boiler,173,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"Geo 5xx",boiler,173,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"Geo 5xx",boiler,173,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"Geo 5xx",boiler,173,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"Geo 5xx",boiler,173,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"Geo 5xx",boiler,173,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"Geo 5xx",boiler,173,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"Geo 5xx",boiler,173,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"Geo 5xx",boiler,173,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"Geo 5xx",boiler,173,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"Geo 5xx",boiler,173,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"Geo 5xx",boiler,173,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"Geo 5xx",boiler,173,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"Geo 5xx",boiler,173,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"Geo 5xx",boiler,173,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"Geo 5xx",boiler,173,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"Geo 5xx",boiler,173,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"Geo 5xx",boiler,173,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"Geo 5xx",boiler,173,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"Geo 5xx",boiler,173,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"Geo 5xx",boiler,173,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"Geo 5xx",boiler,173,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"Geo 5xx",boiler,173,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"Geo 5xx",boiler,173,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"Geo 5xx",boiler,173,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"Geo 5xx",boiler,173,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,6,0,1,85,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,6,0,1,86,1 +"Geo 5xx",boiler,173,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 +"Geo 5xx",boiler,173,mandefrost,manual defrost,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_manual_defrost,sensor.boiler_mandefrost,6,0,1,88,1 +"Geo 5xx",boiler,173,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 +"Geo 5xx",boiler,173,dhw.nrg,energy,uint24,kWh,false,sensor.boiler_dhw_energy,sensor.boiler_dhw_nrg,6,9,1/100,0,2 +"Geo 5xx",boiler,173,nrgheat,energy heating,uint24,kWh,false,sensor.boiler_energy_heating,sensor.boiler_nrgheat,6,0,1/100,91,2 +"Geo 5xx",boiler,173,nrgcool,energy cooling,uint24,kWh,false,sensor.boiler_energy_cooling,sensor.boiler_nrgcool,6,0,1/100,93,2 +"Geo 5xx",boiler,173,metertotal,meter total,uint24,kWh,false,sensor.boiler_meter_total,sensor.boiler_metertotal,6,0,1/100,95,2 +"Geo 5xx",boiler,173,metercomp,meter compressor,uint24,kWh,false,sensor.boiler_meter_compressor,sensor.boiler_metercomp,6,0,1/100,97,2 +"Geo 5xx",boiler,173,metereheat,meter e-heater,uint24,kWh,false,sensor.boiler_meter_e-heater,sensor.boiler_metereheat,6,0,1/100,99,2 +"Geo 5xx",boiler,173,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/100,101,2 +"Geo 5xx",boiler,173,metercool,meter cooling,uint24,kWh,false,sensor.boiler_meter_cooling,sensor.boiler_metercool,6,0,1/100,103,2 +"Geo 5xx",boiler,173,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/100,2,2 +"Geo 5xx",boiler,173,uptimetotal,heatpump total uptime,time,minutes,false,sensor.boiler_heatpump_total_uptime,sensor.boiler_uptimetotal,6,0,1/60,105,2 +"Geo 5xx",boiler,173,uptimecontrol,total operating time heat,time,minutes,false,sensor.boiler_total_operating_time_heat,sensor.boiler_uptimecontrol,6,0,1/60,107,2 +"Geo 5xx",boiler,173,uptimecompheating,operating time compressor heating,time,minutes,false,sensor.boiler_operating_time_compressor_heating,sensor.boiler_uptimecompheating,6,0,1/60,109,2 +"Geo 5xx",boiler,173,uptimecompcooling,operating time compressor cooling,time,minutes,false,sensor.boiler_operating_time_compressor_cooling,sensor.boiler_uptimecompcooling,6,0,1/60,111,2 +"Geo 5xx",boiler,173,dhw.uptimecomp,operating time compressor,time,minutes,false,sensor.boiler_dhw_operating_time_compressor,sensor.boiler_dhw_uptimecomp,6,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,6,0,1/60,113,2 +"Geo 5xx",boiler,173,totalcompstarts,total compressor control starts,uint24, ,false,sensor.boiler_total_compressor_control_starts,sensor.boiler_totalcompstarts,6,0,1,115,2 +"Geo 5xx",boiler,173,heatingstarts,heating control starts,uint24, ,false,sensor.boiler_heating_control_starts,sensor.boiler_heatingstarts,6,0,1,117,2 +"Geo 5xx",boiler,173,coolingstarts,cooling control starts,uint24, ,false,sensor.boiler_cooling_control_starts,sensor.boiler_coolingstarts,6,0,1,119,2 +"Geo 5xx",boiler,173,dhw.startshp,starts hp,uint24, ,false,sensor.boiler_dhw_starts_hp,sensor.boiler_dhw_startshp,6,9,1,6,2 +"Geo 5xx",boiler,173,poolstarts,pool control starts,uint24, ,false,sensor.boiler_pool_control_starts,sensor.boiler_poolstarts,6,0,1,121,2 +"Geo 5xx",boiler,173,nrgconstotal,total energy consumption,uint24,kWh,false,sensor.boiler_total_energy_consumption,sensor.boiler_nrgconstotal,6,0,1,123,2 +"Geo 5xx",boiler,173,nrgconscomptotal,total energy consumption compressor,uint24,kWh,false,sensor.boiler_total_energy_consumption_compressor,sensor.boiler_nrgconscomptotal,6,0,1,125,2 +"Geo 5xx",boiler,173,nrgconscompheating,energy consumption compressor heating,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_heating,sensor.boiler_nrgconscompheating,6,0,1,127,2 +"Geo 5xx",boiler,173,dhw.nrgconscomp,energy consumption compressor,uint24,kWh,false,sensor.boiler_dhw_energy_consumption_compressor,sensor.boiler_dhw_nrgconscomp,6,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,6,0,1,129,2 +"Geo 5xx",boiler,173,nrgconscomppool,energy consumption compressor pool,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_pool,sensor.boiler_nrgconscomppool,6,0,1,131,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,6,0,1,133,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,6,0,1,135,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,6,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,6,0,1,137,2 +"Geo 5xx",boiler,173,nrgsupptotal,total energy supplied,uint24,kWh,false,sensor.boiler_total_energy_supplied,sensor.boiler_nrgsupptotal,6,0,1,139,2 +"Geo 5xx",boiler,173,nrgsuppheating,total energy supplied heating,uint24,kWh,false,sensor.boiler_total_energy_supplied_heating,sensor.boiler_nrgsuppheating,6,0,1,141,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,6,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,6,0,1,143,2 +"Geo 5xx",boiler,173,nrgsupppool,total energy supplied pool,uint24,kWh,false,sensor.boiler_total_energy_supplied_pool,sensor.boiler_nrgsupppool,6,0,1,145,2 +"Geo 5xx",boiler,173,hppower,compressor power output,uint16,kW,false,sensor.boiler_compressor_power_output,sensor.boiler_hppower,6,0,1/10,147,1 +"Geo 5xx",boiler,173,hpmaxpower,compressor max power,uint8 (>=0<=0),%,true,number.boiler_compressor_max_power,number.boiler_hpmaxpower,6,0,1,148,1 +"Geo 5xx",boiler,173,pvmaxcomp,pv compressor max power,uint8 (>=0<=0),kW,true,number.boiler_pv_compressor_max_power,number.boiler_pvmaxcomp,6,0,1/10,149,1 +"Geo 5xx",boiler,173,powerreduction,power reduction,uint8 (>=30<=60),%,true,number.boiler_power_reduction,number.boiler_powerreduction,6,0,10,150,1 +"Geo 5xx",boiler,173,hpsetdiffpress,set differential pressure,uint8 (>=150<=750),mbar,true,number.boiler_set_differential_pressure,number.boiler_hpsetdiffpress,6,0,50,151,1 +"Geo 5xx",boiler,173,hpcompon,hp compressor,boolean, ,false,binary_sensor.boiler_hp_compressor,binary_sensor.boiler_hpcompon,6,0,1,152,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,6,0,1,153,1 +"Geo 5xx",boiler,173,hppoolon,hp pool,boolean, ,false,binary_sensor.boiler_hp_pool,binary_sensor.boiler_hppoolon,6,0,1,154,1 +"Geo 5xx",boiler,173,hpbrinepumpspd,brine pump speed,uint8,%,false,sensor.boiler_brine_pump_speed,sensor.boiler_hpbrinepumpspd,6,0,1,155,1 +"Geo 5xx",boiler,173,hpswitchvalve,switch valve,boolean, ,false,binary_sensor.boiler_switch_valve,binary_sensor.boiler_hpswitchvalve,6,0,1,156,1 +"Geo 5xx",boiler,173,hpcompspd,compressor speed,uint8,%,false,sensor.boiler_compressor_speed,sensor.boiler_hpcompspd,6,0,1,157,1 +"Geo 5xx",boiler,173,hptargetspd,compressor target speed,uint8,%,false,sensor.boiler_compressor_target_speed,sensor.boiler_hptargetspd,6,0,1,158,1 +"Geo 5xx",boiler,173,hpcircspd,circulation pump speed,uint8,%,false,sensor.boiler_circulation_pump_speed,sensor.boiler_hpcircspd,6,0,1,159,1 +"Geo 5xx",boiler,173,recvalve,receiver valve VR0,uint8,%,false,sensor.boiler_receiver_valve_VR0,sensor.boiler_recvalve,6,0,1,160,1 +"Geo 5xx",boiler,173,expvalve,expansion valve VR1,uint8,%,false,sensor.boiler_expansion_valve_VR1,sensor.boiler_expvalve,6,0,1,161,1 +"Geo 5xx",boiler,173,hpbrinein,brine in/evaporator,int16,C,false,sensor.boiler_brine_in/evaporator,sensor.boiler_hpbrinein,6,0,1/10,162,1 +"Geo 5xx",boiler,173,hpbrineout,brine out/condenser,int16,C,false,sensor.boiler_brine_out/condenser,sensor.boiler_hpbrineout,6,0,1/10,163,1 +"Geo 5xx",boiler,173,hptc0,heat carrier return (TC0),int16,C,false,sensor.boiler_heat_carrier_return_(TC0),sensor.boiler_hptc0,6,0,1/10,164,1 +"Geo 5xx",boiler,173,hptc1,heat carrier forward (TC1),int16,C,false,sensor.boiler_heat_carrier_forward_(TC1),sensor.boiler_hptc1,6,0,1/10,165,1 +"Geo 5xx",boiler,173,hptc3,condenser temperature (TC3),int16,C,false,sensor.boiler_condenser_temperature_(TC3),sensor.boiler_hptc3,6,0,1/10,166,1 +"Geo 5xx",boiler,173,hptr1,compressor temperature (TR1),int16,C,false,sensor.boiler_compressor_temperature_(TR1),sensor.boiler_hptr1,6,0,1/10,167,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,6,0,1/10,168,1 +"Geo 5xx",boiler,173,hptr4,evaporator inlet temperature (TR4),int16,C,false,sensor.boiler_evaporator_inlet_temperature_(TR4),sensor.boiler_hptr4,6,0,1/10,169,1 +"Geo 5xx",boiler,173,hptr5,compressor inlet temperature (TR5),int16,C,false,sensor.boiler_compressor_inlet_temperature_(TR5),sensor.boiler_hptr5,6,0,1/10,170,1 +"Geo 5xx",boiler,173,hptr6,compressor outlet temperature (TR6),int16,C,false,sensor.boiler_compressor_outlet_temperature_(TR6),sensor.boiler_hptr6,6,0,1/10,171,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,6,0,1/10,172,1 +"Geo 5xx",boiler,173,hptl2,air inlet temperature (TL2),int16,C,false,sensor.boiler_air_inlet_temperature_(TL2),sensor.boiler_hptl2,6,0,1/10,173,1 +"Geo 5xx",boiler,173,hppl1,low pressure side temperature (PL1),int16,C,false,sensor.boiler_low_pressure_side_temperature_(PL1),sensor.boiler_hppl1,6,0,1/10,174,1 +"Geo 5xx",boiler,173,hpph1,high pressure side temperature (PH1),int16,C,false,sensor.boiler_high_pressure_side_temperature_(PH1),sensor.boiler_hpph1,6,0,1/10,175,1 +"Geo 5xx",boiler,173,hpta4,drain pan temp (TA4),int16,C,false,sensor.boiler_drain_pan_temp_(TA4),sensor.boiler_hpta4,6,0,1/10,176,1 +"Geo 5xx",boiler,173,hptw1,reservoir temp (TW1),int16,C,false,sensor.boiler_reservoir_temp_(TW1),sensor.boiler_hptw1,6,0,1/10,177,1 +"Geo 5xx",boiler,173,poolon,pool on,boolean (>=0<=0), ,true,switch.boiler_pool_on,switch.boiler_poolon,6,0,1,178,1 +"Geo 5xx",boiler,173,poolsettemp,pool setpoint,uint8 (>=0<=0),C,true,number.boiler_pool_setpoint,number.boiler_poolsettemp,6,0,1/2,179,1 +"Geo 5xx",boiler,173,hp4way,4-way valve (VR4),boolean, ,false,binary_sensor.boiler_4-way_valve_(VR4),binary_sensor.boiler_hp4way,6,0,1,180,1 +"Geo 5xx",boiler,173,hpin1,input 1 state,boolean, ,false,binary_sensor.boiler_input_1_state,binary_sensor.boiler_hpin1,6,0,1,181,1 +"Geo 5xx",boiler,173,hpin1opt,input 1 options,string (>=0<=0), ,true,sensor.boiler_input_1_options,sensor.boiler_hpin1opt,6,0,1,182,8 +"Geo 5xx",boiler,173,hpin2,input 2 state,boolean, ,false,binary_sensor.boiler_input_2_state,binary_sensor.boiler_hpin2,6,0,1,190,1 +"Geo 5xx",boiler,173,hpin2opt,input 2 options,string (>=0<=0), ,true,sensor.boiler_input_2_options,sensor.boiler_hpin2opt,6,0,1,191,8 +"Geo 5xx",boiler,173,hpin3,input 3 state,boolean, ,false,binary_sensor.boiler_input_3_state,binary_sensor.boiler_hpin3,6,0,1,199,1 +"Geo 5xx",boiler,173,hpin3opt,input 3 options,string (>=0<=0), ,true,sensor.boiler_input_3_options,sensor.boiler_hpin3opt,6,0,1,200,8 +"Geo 5xx",boiler,173,hpin4,input 4 state,boolean, ,false,binary_sensor.boiler_input_4_state,binary_sensor.boiler_hpin4,6,0,1,208,1 +"Geo 5xx",boiler,173,hpin4opt,input 4 options,string (>=0<=0), ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt,6,0,1,209,8 +"Geo 5xx",boiler,173,maxheatcomp,heat limit compressor,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW\|12 kW\|15 kW] (>=0<=0), ,true,select.boiler_heat_limit_compressor,select.boiler_maxheatcomp,6,0,1,217,1 +"Geo 5xx",boiler,173,maxheatheat,heat limit heating,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW\|12 kW\|15 kW] (>=0<=0), ,true,select.boiler_heat_limit_heating,select.boiler_maxheatheat,6,0,1,218,1 +"Geo 5xx",boiler,173,dhw.maxheat,heat limit,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW\|12 kW\|15 kW] (>=0<=0), ,true,select.boiler_dhw_heat_limit,select.boiler_dhw_maxheat,6,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,6,0,1,219,1 +"Geo 5xx",boiler,173,pvcooling,cooling only with PV,boolean (>=0<=0), ,true,switch.boiler_cooling_only_with_PV,switch.boiler_pvcooling,6,0,1,220,1 +"Geo 5xx",boiler,173,auxheateronly,aux heater only,boolean (>=0<=0), ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly,6,0,1,221,1 +"Geo 5xx",boiler,173,auxheateroff,disable aux heater,boolean (>=0<=0), ,true,switch.boiler_disable_aux_heater,switch.boiler_auxheateroff,6,0,1,222,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,6,0,1,223,1 +"Geo 5xx",boiler,173,auxheaterlevel,aux heater level,uint8,%,false,sensor.boiler_aux_heater_level,sensor.boiler_auxheaterlevel,6,0,1,224,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,6,0,10,225,1 +"Geo 5xx",boiler,173,auxmaxlimit,aux heater max limit,uint8 (>=0<=10),K,true,number.boiler_aux_heater_max_limit,number.boiler_auxmaxlimit,6,0,1/10,226,1 +"Geo 5xx",boiler,173,auxlimitstart,aux heater limit start,uint8 (>=0<=10),K,true,number.boiler_aux_heater_limit_start,number.boiler_auxlimitstart,6,0,1/10,227,1 +"Geo 5xx",boiler,173,auxheatrmode,aux heater mode,enum [eco\|comfort] (>=0<=0), ,true,select.boiler_aux_heater_mode,select.boiler_auxheatrmode,6,0,1,228,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,6,0,5,229,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,6,0,5,230,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,6,0,5,231,1 +"Geo 5xx",boiler,173,silentmode,silent mode,enum [off\|auto\|on] (>=0<=0), ,true,select.boiler_silent_mode,select.boiler_silentmode,6,0,1,232,1 +"Geo 5xx",boiler,173,silentfrom,silent mode from,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_from,number.boiler_silentfrom,6,0,15,233,1 +"Geo 5xx",boiler,173,silentto,silent mode to,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_to,number.boiler_silentto,6,0,15,234,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,6,0,1,235,1 +"Geo 5xx",boiler,173,tempparmode,outside temp parallel mode,int8 (>=0<=0),C,true,number.boiler_outside_temp_parallel_mode,number.boiler_tempparmode,6,0,1,236,1 +"Geo 5xx",boiler,173,auxheatmix,aux heater mixing valve,int8,%,false,sensor.boiler_aux_heater_mixing_valve,sensor.boiler_auxheatmix,6,0,1,237,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,6,0,1/10,238,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,6,0,1/10,239,1 +"Geo 5xx",boiler,173,vpcooling,valve/pump cooling,boolean (>=0<=0), ,true,switch.boiler_valve/pump_cooling,switch.boiler_vpcooling,6,0,1,240,1 +"Geo 5xx",boiler,173,heatcable,heating cable,boolean (>=0<=0), ,true,switch.boiler_heating_cable,switch.boiler_heatcable,6,0,1,241,1 +"Geo 5xx",boiler,173,vc0valve,VC0 valve,boolean (>=0<=0), ,true,switch.boiler_VC0_valve,switch.boiler_vc0valve,6,0,1,242,1 +"Geo 5xx",boiler,173,primepump,primary heatpump,boolean (>=0<=0), ,true,switch.boiler_primary_heatpump,switch.boiler_primepump,6,0,1,243,1 +"Geo 5xx",boiler,173,primepumpmod,primary heatpump modulation,uint8 (>=0<=0),%,true,number.boiler_primary_heatpump_modulation,number.boiler_primepumpmod,6,0,1,244,1 +"Geo 5xx",boiler,173,hp3way,3-way valve,boolean (>=0<=0), ,true,switch.boiler_3-way_valve,switch.boiler_hp3way,6,0,1,245,1 +"Geo 5xx",boiler,173,elheatstep1,el. heater step 1,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_1,switch.boiler_elheatstep1,6,0,1,246,1 +"Geo 5xx",boiler,173,elheatstep2,el. heater step 2,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_2,switch.boiler_elheatstep2,6,0,1,247,1 +"Geo 5xx",boiler,173,elheatstep3,el. heater step 3,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_3,switch.boiler_elheatstep3,6,0,1,248,1 +"Geo 5xx",boiler,173,hpea0,condensate reservoir heating (EA0),boolean, ,false,binary_sensor.boiler_condensate_reservoir_heating_(EA0),binary_sensor.boiler_hpea0,6,0,1,249,1 +"Geo 5xx",boiler,173,hppumpmode,primary heatpump mode,enum [auto\|continuous] (>=0<=0), ,true,select.boiler_primary_heatpump_mode,select.boiler_hppumpmode,6,0,1,250,1 +"Geo 5xx",boiler,173,fan,fan,uint8 (>=20<=100),%,true,number.boiler_fan,number.boiler_fan,6,0,1,251,1 +"Geo 5xx",boiler,173,fanspd,fan speed,uint8,%,false,sensor.boiler_fan_speed,sensor.boiler_fanspd,6,0,1,252,1 +"Geo 5xx",boiler,173,shutdown,shutdown,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_shutdown,sensor.boiler_shutdown,6,0,1,253,1 +"Geo 5xx",boiler,173,hpcurrpower,compressor current power,uint16,W,false,sensor.boiler_compressor_current_power,sensor.boiler_hpcurrpower,6,0,1,254,1 +"Geo 5xx",boiler,173,hppowerlimit,power limit,uint16 (>=0<=0),W,true,number.boiler_power_limit,number.boiler_hppowerlimit,6,0,1,255,1 +"Geo 5xx",boiler,173,dhw.alternatingop,alternating operation,boolean (>=0<=0), ,true,switch.boiler_dhw_alternating_operation,switch.boiler_dhw_alternatingop,6,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,6,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,6,9,1,17,1 +"Geo 5xx",boiler,173,dhw.comfoff,comfort switch off,uint8 (>=15<=65),C,true,number.boiler_dhw_comfort_switch_off,number.boiler_dhw_comfoff,6,9,1,18,1 +"Geo 5xx",boiler,173,dhw.ecooff,eco switch off,uint8 (>=15<=65),C,true,number.boiler_dhw_eco_switch_off,number.boiler_dhw_ecooff,6,9,1,19,1 +"Geo 5xx",boiler,173,dhw.ecoplusoff,eco+ switch off,uint8 (>=48<=63),C,true,number.boiler_dhw_eco+_switch_off,number.boiler_dhw_ecoplusoff,6,9,1,20,1 +"Geo 5xx",boiler,173,dhw.comfdiff,comfort diff,uint8 (>=6<=18),K,true,number.boiler_dhw_comfort_diff,number.boiler_dhw_comfdiff,6,9,1,21,1 +"Geo 5xx",boiler,173,dhw.ecodiff,eco diff,uint8 (>=6<=18),K,true,number.boiler_dhw_eco_diff,number.boiler_dhw_ecodiff,6,9,1,22,1 +"Geo 5xx",boiler,173,dhw.ecoplusdiff,eco+ diff,uint8 (>=6<=15),K,true,number.boiler_dhw_eco+_diff,number.boiler_dhw_ecoplusdiff,6,9,1,23,1 +"Geo 5xx",boiler,173,dhw.comfstop,comfort stop temp,uint8 (>=0<=0),C,true,number.boiler_dhw_comfort_stop_temp,number.boiler_dhw_comfstop,6,9,1,24,1 +"Geo 5xx",boiler,173,dhw.ecostop,eco stop temp,uint8 (>=0<=0),C,true,number.boiler_dhw_eco_stop_temp,number.boiler_dhw_ecostop,6,9,1,25,1 +"Geo 5xx",boiler,173,dhw.ecoplusstop,eco+ stop temp,uint8 (>=0<=0),C,true,number.boiler_dhw_eco+_stop_temp,number.boiler_dhw_ecoplusstop,6,9,1,26,1 +"Geo 5xx",boiler,173,dhw.hpcircpump,circulation pump available during dhw,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available_during_dhw,switch.boiler_dhw_hpcircpump,6,9,1,27,1 +"Geo 5xx",boiler,173,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 +"Geo 5xx",boiler,173,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 +"Geo 5xx",boiler,173,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"Geo 5xx",boiler,173,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"Geo 5xx",boiler,173,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"Geo 5xx",boiler,173,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"Geo 5xx",boiler,173,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"Geo 5xx",boiler,173,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"Geo 5xx",boiler,173,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"Geo 5xx",boiler,173,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"Geo 5xx",boiler,173,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"Geo 5xx",boiler,173,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"Geo 5xx",boiler,173,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"Geo 5xx",boiler,173,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"Geo 5xx",boiler,173,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"Geo 5xx",boiler,173,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"Geo 5xx",boiler,173,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"Geo 5xx",boiler,173,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"Geo 5xx",boiler,173,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"Geo 5xx",boiler,173,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"Geo 5xx",boiler,173,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"Geo 5xx",boiler,173,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"Geo 5xx",boiler,173,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"Geo 5xx",boiler,173,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"Geo 5xx",boiler,173,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"Geo 5xx",boiler,173,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"Geo 5xx",boiler,173,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"Geo 5xx",boiler,173,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"Geo 5xx",boiler,173,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"Geo 5xx",boiler,173,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"Geo 5xx",boiler,173,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"Geo 5xx",boiler,173,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"Geo 5xx",boiler,173,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"Geo 5xx",boiler,173,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"Geo 5xx",boiler,173,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"Geo 5xx",boiler,173,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"Geo 5xx",boiler,173,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"Geo 5xx",boiler,173,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"Geo 5xx",boiler,173,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 +"Geo 5xx",boiler,173,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 +"Geo 5xx",boiler,173,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"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,6,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,6,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,6,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,6,0,1,3,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,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,6,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,6,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,6,0,1/10,256,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,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,6,0,1,258,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,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,6,0,1,263,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,6,0,1,264,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,6,0,1,265,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,6,0,1,266,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,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,6,0,1,268,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,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,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,6,0,1,273,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,6,0,1,274,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,6,0,1,275,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,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,6,0,1,277,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,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,6,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,6,0,1,16,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"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,6,0,1,85,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,6,0,1,86,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,6,0,1,87,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,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,6,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,6,0,1/10,280,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,6,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,6,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,6,9,1,29,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"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,6,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,6,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,6,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,6,0,1,282,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,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,6,0,1/100,91,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,6,9,1/100,0,2 +"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,6,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,6,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,6,0,1,2,1 +"Logamax U122, Cerapur",boiler,203,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,6,0,1,3,1 +"Logamax U122, Cerapur",boiler,203,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"Logamax U122, Cerapur",boiler,203,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"Logamax U122, Cerapur",boiler,203,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"Logamax U122, Cerapur",boiler,203,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"Logamax U122, Cerapur",boiler,203,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"Logamax U122, Cerapur",boiler,203,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"Logamax U122, Cerapur",boiler,203,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"Logamax U122, Cerapur",boiler,203,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,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,6,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,6,0,1/10,13,1 +"Logamax U122, Cerapur",boiler,203,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Logamax U122, Cerapur",boiler,203,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Logamax U122, Cerapur",boiler,203,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Logamax U122, Cerapur",boiler,203,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Logamax U122, Cerapur",boiler,203,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Logamax U122, Cerapur",boiler,203,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Logamax U122, Cerapur",boiler,203,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Logamax U122, Cerapur",boiler,203,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Logamax U122, Cerapur",boiler,203,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Logamax U122, Cerapur",boiler,203,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Logamax U122, Cerapur",boiler,203,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Logamax U122, Cerapur",boiler,203,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Logamax U122, Cerapur",boiler,203,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Logamax U122, Cerapur",boiler,203,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Logamax U122, Cerapur",boiler,203,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Logamax U122, Cerapur",boiler,203,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Logamax U122, Cerapur",boiler,203,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Logamax U122, Cerapur",boiler,203,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Logamax U122, Cerapur",boiler,203,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Logamax U122, Cerapur",boiler,203,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 +"Logamax U122, Cerapur",boiler,203,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 +"Logamax U122, Cerapur",boiler,203,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 +"Logamax U122, Cerapur",boiler,203,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 +"Logamax U122, Cerapur",boiler,203,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"Logamax U122, Cerapur",boiler,203,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"Logamax U122, Cerapur",boiler,203,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"Logamax U122, Cerapur",boiler,203,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"Logamax U122, Cerapur",boiler,203,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"Logamax U122, Cerapur",boiler,203,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"Logamax U122, Cerapur",boiler,203,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"Logamax U122, Cerapur",boiler,203,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"Logamax U122, Cerapur",boiler,203,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"Logamax U122, Cerapur",boiler,203,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"Logamax U122, Cerapur",boiler,203,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"Logamax U122, Cerapur",boiler,203,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"Logamax U122, Cerapur",boiler,203,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"Logamax U122, Cerapur",boiler,203,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"Logamax U122, Cerapur",boiler,203,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"Logamax U122, Cerapur",boiler,203,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"Logamax U122, Cerapur",boiler,203,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"Logamax U122, Cerapur",boiler,203,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"Logamax U122, Cerapur",boiler,203,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"Logamax U122, Cerapur",boiler,203,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"Logamax U122, Cerapur",boiler,203,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"Logamax U122, Cerapur",boiler,203,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"Logamax U122, Cerapur",boiler,203,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"Logamax U122, Cerapur",boiler,203,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"Logamax U122, Cerapur",boiler,203,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"Logamax U122, Cerapur",boiler,203,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"Logamax U122, Cerapur",boiler,203,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"Logamax U122, Cerapur",boiler,203,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"Logamax U122, Cerapur",boiler,203,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,6,0,1,85,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,6,0,1,86,1 +"Logamax U122, Cerapur",boiler,203,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 +"Logamax U122, Cerapur",boiler,203,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 +"Logamax U122, Cerapur",boiler,203,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 +"Logamax U122, Cerapur",boiler,203,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,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,6,0,1/10,280,2 +"Logamax U122, Cerapur",boiler,203,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,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,6,9,1,29,1 +"Logamax U122, Cerapur",boiler,203,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"Logamax U122, Cerapur",boiler,203,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"Logamax U122, Cerapur",boiler,203,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"Logamax U122, Cerapur",boiler,203,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"Logamax U122, Cerapur",boiler,203,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"Logamax U122, Cerapur",boiler,203,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"Logamax U122, Cerapur",boiler,203,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"Logamax U122, Cerapur",boiler,203,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"Logamax U122, Cerapur",boiler,203,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"Logamax U122, Cerapur",boiler,203,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"Logamax U122, Cerapur",boiler,203,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"Logamax U122, Cerapur",boiler,203,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"Logamax U122, Cerapur",boiler,203,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"Logamax U122, Cerapur",boiler,203,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"Logamax U122, Cerapur",boiler,203,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"Logamax U122, Cerapur",boiler,203,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"Logamax U122, Cerapur",boiler,203,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"Logamax U122, Cerapur",boiler,203,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"Logamax U122, Cerapur",boiler,203,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"Logamax U122, Cerapur",boiler,203,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"Logamax U122, Cerapur",boiler,203,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"Logamax U122, Cerapur",boiler,203,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"Logamax U122, Cerapur",boiler,203,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"Logamax U122, Cerapur",boiler,203,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"Logamax U122, Cerapur",boiler,203,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"Logamax U122, Cerapur",boiler,203,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"Logamax U122, Cerapur",boiler,203,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"Logamax U122, Cerapur",boiler,203,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"Logamax U122, Cerapur",boiler,203,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"Logamax U122, Cerapur",boiler,203,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"Logamax U122, Cerapur",boiler,203,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"Logamax U122, Cerapur",boiler,203,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"Logamax U122, Cerapur",boiler,203,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"Logamax U122, Cerapur",boiler,203,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"Logamax U122, Cerapur",boiler,203,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"Logamax U122, Cerapur",boiler,203,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"Logamax U122, Cerapur",boiler,203,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 +"Logamax U122, Cerapur",boiler,203,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"Logamax U122, Cerapur",boiler,203,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 +"Logamax U122, Cerapur",boiler,203,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 +"Logamax U122, Cerapur",boiler,203,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 +"Logamax U122, Cerapur",boiler,203,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 +"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,6,0,1,0,1 +"Ecomline Excellent",boiler,206,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,6,0,1,1,1 +"Ecomline Excellent",boiler,206,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,6,0,1,2,1 +"Ecomline Excellent",boiler,206,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,6,0,1,3,1 +"Ecomline Excellent",boiler,206,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"Ecomline Excellent",boiler,206,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"Ecomline Excellent",boiler,206,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"Ecomline Excellent",boiler,206,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"Ecomline Excellent",boiler,206,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"Ecomline Excellent",boiler,206,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"Ecomline Excellent",boiler,206,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"Ecomline Excellent",boiler,206,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,0,1/10,11,1 +"Ecomline Excellent",boiler,206,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 +"Ecomline Excellent",boiler,206,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 +"Ecomline Excellent",boiler,206,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Ecomline Excellent",boiler,206,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Ecomline Excellent",boiler,206,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Ecomline Excellent",boiler,206,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Ecomline Excellent",boiler,206,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Ecomline Excellent",boiler,206,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Ecomline Excellent",boiler,206,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Ecomline Excellent",boiler,206,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Ecomline Excellent",boiler,206,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Ecomline Excellent",boiler,206,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Ecomline Excellent",boiler,206,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Ecomline Excellent",boiler,206,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Ecomline Excellent",boiler,206,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Ecomline Excellent",boiler,206,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Ecomline Excellent",boiler,206,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Ecomline Excellent",boiler,206,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Ecomline Excellent",boiler,206,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Ecomline Excellent",boiler,206,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Ecomline Excellent",boiler,206,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Ecomline Excellent",boiler,206,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 +"Ecomline Excellent",boiler,206,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 +"Ecomline Excellent",boiler,206,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 +"Ecomline Excellent",boiler,206,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 +"Ecomline Excellent",boiler,206,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"Ecomline Excellent",boiler,206,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"Ecomline Excellent",boiler,206,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"Ecomline Excellent",boiler,206,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"Ecomline Excellent",boiler,206,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"Ecomline Excellent",boiler,206,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"Ecomline Excellent",boiler,206,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"Ecomline Excellent",boiler,206,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"Ecomline Excellent",boiler,206,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"Ecomline Excellent",boiler,206,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"Ecomline Excellent",boiler,206,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"Ecomline Excellent",boiler,206,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"Ecomline Excellent",boiler,206,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"Ecomline Excellent",boiler,206,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"Ecomline Excellent",boiler,206,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"Ecomline Excellent",boiler,206,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"Ecomline Excellent",boiler,206,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"Ecomline Excellent",boiler,206,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"Ecomline Excellent",boiler,206,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"Ecomline Excellent",boiler,206,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"Ecomline Excellent",boiler,206,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"Ecomline Excellent",boiler,206,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"Ecomline Excellent",boiler,206,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"Ecomline Excellent",boiler,206,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"Ecomline Excellent",boiler,206,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"Ecomline Excellent",boiler,206,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"Ecomline Excellent",boiler,206,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"Ecomline Excellent",boiler,206,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"Ecomline Excellent",boiler,206,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,6,0,1,85,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,6,0,1,86,1 +"Ecomline Excellent",boiler,206,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 +"Ecomline Excellent",boiler,206,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 +"Ecomline Excellent",boiler,206,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 +"Ecomline Excellent",boiler,206,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 +"Ecomline Excellent",boiler,206,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Ecomline Excellent",boiler,206,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 +"Ecomline Excellent",boiler,206,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 +"Ecomline Excellent",boiler,206,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 +"Ecomline Excellent",boiler,206,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"Ecomline Excellent",boiler,206,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"Ecomline Excellent",boiler,206,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"Ecomline Excellent",boiler,206,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"Ecomline Excellent",boiler,206,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"Ecomline Excellent",boiler,206,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"Ecomline Excellent",boiler,206,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"Ecomline Excellent",boiler,206,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"Ecomline Excellent",boiler,206,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"Ecomline Excellent",boiler,206,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"Ecomline Excellent",boiler,206,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"Ecomline Excellent",boiler,206,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"Ecomline Excellent",boiler,206,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"Ecomline Excellent",boiler,206,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"Ecomline Excellent",boiler,206,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"Ecomline Excellent",boiler,206,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"Ecomline Excellent",boiler,206,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"Ecomline Excellent",boiler,206,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"Ecomline Excellent",boiler,206,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"Ecomline Excellent",boiler,206,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"Ecomline Excellent",boiler,206,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"Ecomline Excellent",boiler,206,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"Ecomline Excellent",boiler,206,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"Ecomline Excellent",boiler,206,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"Ecomline Excellent",boiler,206,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"Ecomline Excellent",boiler,206,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"Ecomline Excellent",boiler,206,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"Ecomline Excellent",boiler,206,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"Ecomline Excellent",boiler,206,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"Ecomline Excellent",boiler,206,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"Ecomline Excellent",boiler,206,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"Ecomline Excellent",boiler,206,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"Ecomline Excellent",boiler,206,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"Ecomline Excellent",boiler,206,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"Ecomline Excellent",boiler,206,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"Ecomline Excellent",boiler,206,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"Ecomline Excellent",boiler,206,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 +"Ecomline Excellent",boiler,206,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 +"Ecomline Excellent",boiler,206,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Ecomline Excellent",boiler,206,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 +"Ecomline Excellent",boiler,206,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 +"Ecomline Excellent",boiler,206,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 +"Ecomline Excellent",boiler,206,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 +"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,6,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,6,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,6,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,6,0,1,3,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,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,6,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,6,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,6,0,1/10,256,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,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,6,0,1,258,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,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,6,0,1,263,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,6,0,1,264,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,6,0,1,265,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,6,0,1,266,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,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,6,0,1,268,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,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,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,6,0,1,273,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,6,0,1,274,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,6,0,1,275,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,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,6,0,1,277,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,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,6,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,6,0,1,16,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"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,6,0,1,85,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,6,0,1,86,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,6,0,1,87,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,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,6,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,6,0,1/10,280,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,6,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,6,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,6,9,1,29,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"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,6,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,6,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,6,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,6,0,1,282,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,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,6,0,1/100,91,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,6,9,1/100,0,2 +"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,6,0,1,0,1 +"Cascade MC400",boiler,210,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,6,0,1,1,1 +"Cascade MC400",boiler,210,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,6,0,1,2,1 +"Cascade MC400",boiler,210,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,6,0,1,3,1 +"Cascade MC400",boiler,210,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"Cascade MC400",boiler,210,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"Cascade MC400",boiler,210,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"Cascade MC400",boiler,210,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"Cascade MC400",boiler,210,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"Cascade MC400",boiler,210,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"Cascade MC400",boiler,210,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"Cascade MC400",boiler,210,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,0,1/10,11,1 +"Cascade MC400",boiler,210,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 +"Cascade MC400",boiler,210,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 +"Cascade MC400",boiler,210,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"Cascade MC400",boiler,210,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"Cascade MC400",boiler,210,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"Cascade MC400",boiler,210,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Cascade MC400",boiler,210,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Cascade MC400",boiler,210,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"Cascade MC400",boiler,210,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"Cascade MC400",boiler,210,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"Cascade MC400",boiler,210,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"Cascade MC400",boiler,210,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"Cascade MC400",boiler,210,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"Cascade MC400",boiler,210,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"Cascade MC400",boiler,210,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"Cascade MC400",boiler,210,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"Cascade MC400",boiler,210,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"Cascade MC400",boiler,210,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"Cascade MC400",boiler,210,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"Cascade MC400",boiler,210,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"Cascade MC400",boiler,210,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"Cascade MC400",boiler,210,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 +"Cascade MC400",boiler,210,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 +"Cascade MC400",boiler,210,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 +"Cascade MC400",boiler,210,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 +"Cascade MC400",boiler,210,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"Cascade MC400",boiler,210,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"Cascade MC400",boiler,210,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"Cascade MC400",boiler,210,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"Cascade MC400",boiler,210,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"Cascade MC400",boiler,210,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"Cascade MC400",boiler,210,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"Cascade MC400",boiler,210,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"Cascade MC400",boiler,210,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"Cascade MC400",boiler,210,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"Cascade MC400",boiler,210,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"Cascade MC400",boiler,210,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"Cascade MC400",boiler,210,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"Cascade MC400",boiler,210,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"Cascade MC400",boiler,210,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"Cascade MC400",boiler,210,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"Cascade MC400",boiler,210,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"Cascade MC400",boiler,210,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"Cascade MC400",boiler,210,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"Cascade MC400",boiler,210,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"Cascade MC400",boiler,210,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"Cascade MC400",boiler,210,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"Cascade MC400",boiler,210,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"Cascade MC400",boiler,210,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"Cascade MC400",boiler,210,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"Cascade MC400",boiler,210,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"Cascade MC400",boiler,210,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"Cascade MC400",boiler,210,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"Cascade MC400",boiler,210,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,6,0,1,85,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,6,0,1,86,1 +"Cascade MC400",boiler,210,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 +"Cascade MC400",boiler,210,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 +"Cascade MC400",boiler,210,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 +"Cascade MC400",boiler,210,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 +"Cascade MC400",boiler,210,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Cascade MC400",boiler,210,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 +"Cascade MC400",boiler,210,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 +"Cascade MC400",boiler,210,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 +"Cascade MC400",boiler,210,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"Cascade MC400",boiler,210,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"Cascade MC400",boiler,210,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"Cascade MC400",boiler,210,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"Cascade MC400",boiler,210,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"Cascade MC400",boiler,210,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"Cascade MC400",boiler,210,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"Cascade MC400",boiler,210,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"Cascade MC400",boiler,210,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"Cascade MC400",boiler,210,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"Cascade MC400",boiler,210,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"Cascade MC400",boiler,210,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"Cascade MC400",boiler,210,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"Cascade MC400",boiler,210,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"Cascade MC400",boiler,210,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"Cascade MC400",boiler,210,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"Cascade MC400",boiler,210,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"Cascade MC400",boiler,210,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"Cascade MC400",boiler,210,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"Cascade MC400",boiler,210,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"Cascade MC400",boiler,210,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"Cascade MC400",boiler,210,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"Cascade MC400",boiler,210,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"Cascade MC400",boiler,210,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"Cascade MC400",boiler,210,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"Cascade MC400",boiler,210,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"Cascade MC400",boiler,210,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"Cascade MC400",boiler,210,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"Cascade MC400",boiler,210,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"Cascade MC400",boiler,210,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"Cascade MC400",boiler,210,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"Cascade MC400",boiler,210,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"Cascade MC400",boiler,210,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"Cascade MC400",boiler,210,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"Cascade MC400",boiler,210,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"Cascade MC400",boiler,210,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"Cascade MC400",boiler,210,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 +"Cascade MC400",boiler,210,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 +"Cascade MC400",boiler,210,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Cascade MC400",boiler,210,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 +"Cascade MC400",boiler,210,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 +"Cascade MC400",boiler,210,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 +"Cascade MC400",boiler,210,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,9,1/100,0,2 +"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,6,0,1,0,1 +"EasyControl Adapter",boiler,211,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,6,0,1,1,1 +"EasyControl Adapter",boiler,211,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,6,0,1,2,1 +"EasyControl Adapter",boiler,211,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,6,0,1,3,1 +"EasyControl Adapter",boiler,211,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"EasyControl Adapter",boiler,211,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"EasyControl Adapter",boiler,211,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"EasyControl Adapter",boiler,211,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"EasyControl Adapter",boiler,211,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"EasyControl Adapter",boiler,211,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"EasyControl Adapter",boiler,211,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"EasyControl Adapter",boiler,211,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,0,1/10,11,1 +"EasyControl Adapter",boiler,211,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 +"EasyControl Adapter",boiler,211,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 +"EasyControl Adapter",boiler,211,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,6,0,1/10,256,1 +"EasyControl Adapter",boiler,211,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,1 +"EasyControl Adapter",boiler,211,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,6,0,1,258,1 +"EasyControl Adapter",boiler,211,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"EasyControl Adapter",boiler,211,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"EasyControl Adapter",boiler,211,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,1 +"EasyControl Adapter",boiler,211,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,6,0,1,262,1 +"EasyControl Adapter",boiler,211,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,6,0,1,263,1 +"EasyControl Adapter",boiler,211,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,6,0,1,264,1 +"EasyControl Adapter",boiler,211,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,6,0,1,265,1 +"EasyControl Adapter",boiler,211,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,6,0,1,266,1 +"EasyControl Adapter",boiler,211,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,1 +"EasyControl Adapter",boiler,211,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,6,0,1,268,1 +"EasyControl Adapter",boiler,211,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,6,0,1,269,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,6,0,1,270,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,6,0,1,271,1 +"EasyControl Adapter",boiler,211,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,6,0,1,272,1 +"EasyControl Adapter",boiler,211,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,6,0,1,273,1 +"EasyControl Adapter",boiler,211,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,6,0,1,274,1 +"EasyControl Adapter",boiler,211,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,6,0,1,275,1 +"EasyControl Adapter",boiler,211,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,6,0,1,276,1 +"EasyControl Adapter",boiler,211,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,6,0,1,277,1 +"EasyControl Adapter",boiler,211,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 +"EasyControl Adapter",boiler,211,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 +"EasyControl Adapter",boiler,211,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 +"EasyControl Adapter",boiler,211,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"EasyControl Adapter",boiler,211,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"EasyControl Adapter",boiler,211,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"EasyControl Adapter",boiler,211,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"EasyControl Adapter",boiler,211,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"EasyControl Adapter",boiler,211,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"EasyControl Adapter",boiler,211,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"EasyControl Adapter",boiler,211,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"EasyControl Adapter",boiler,211,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"EasyControl Adapter",boiler,211,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"EasyControl Adapter",boiler,211,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"EasyControl Adapter",boiler,211,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"EasyControl Adapter",boiler,211,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"EasyControl Adapter",boiler,211,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"EasyControl Adapter",boiler,211,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"EasyControl Adapter",boiler,211,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"EasyControl Adapter",boiler,211,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"EasyControl Adapter",boiler,211,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"EasyControl Adapter",boiler,211,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"EasyControl Adapter",boiler,211,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"EasyControl Adapter",boiler,211,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"EasyControl Adapter",boiler,211,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"EasyControl Adapter",boiler,211,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"EasyControl Adapter",boiler,211,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"EasyControl Adapter",boiler,211,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"EasyControl Adapter",boiler,211,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"EasyControl Adapter",boiler,211,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"EasyControl Adapter",boiler,211,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"EasyControl Adapter",boiler,211,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,6,0,1,85,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,6,0,1,86,1 +"EasyControl Adapter",boiler,211,pumpkickdelay,pump kick delay,uint16 (>=0<=32767),minutes,true,number.boiler_pump_kick_delay,number.boiler_pumpkickdelay,6,0,1,87,1 +"EasyControl Adapter",boiler,211,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 +"EasyControl Adapter",boiler,211,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 +"EasyControl Adapter",boiler,211,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 +"EasyControl Adapter",boiler,211,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"EasyControl Adapter",boiler,211,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 +"EasyControl Adapter",boiler,211,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,9,1,28,1 +"EasyControl Adapter",boiler,211,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 +"EasyControl Adapter",boiler,211,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"EasyControl Adapter",boiler,211,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"EasyControl Adapter",boiler,211,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"EasyControl Adapter",boiler,211,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"EasyControl Adapter",boiler,211,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"EasyControl Adapter",boiler,211,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"EasyControl Adapter",boiler,211,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"EasyControl Adapter",boiler,211,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"EasyControl Adapter",boiler,211,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"EasyControl Adapter",boiler,211,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"EasyControl Adapter",boiler,211,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"EasyControl Adapter",boiler,211,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"EasyControl Adapter",boiler,211,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"EasyControl Adapter",boiler,211,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"EasyControl Adapter",boiler,211,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"EasyControl Adapter",boiler,211,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"EasyControl Adapter",boiler,211,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"EasyControl Adapter",boiler,211,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"EasyControl Adapter",boiler,211,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"EasyControl Adapter",boiler,211,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"EasyControl Adapter",boiler,211,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"EasyControl Adapter",boiler,211,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"EasyControl Adapter",boiler,211,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"EasyControl Adapter",boiler,211,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"EasyControl Adapter",boiler,211,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"EasyControl Adapter",boiler,211,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"EasyControl Adapter",boiler,211,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"EasyControl Adapter",boiler,211,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"EasyControl Adapter",boiler,211,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"EasyControl Adapter",boiler,211,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"EasyControl Adapter",boiler,211,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"EasyControl Adapter",boiler,211,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"EasyControl Adapter",boiler,211,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"EasyControl Adapter",boiler,211,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"EasyControl Adapter",boiler,211,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"EasyControl Adapter",boiler,211,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"EasyControl Adapter",boiler,211,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 +"EasyControl Adapter",boiler,211,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 +"EasyControl Adapter",boiler,211,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"EasyControl Adapter",boiler,211,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 +"EasyControl Adapter",boiler,211,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 +"EasyControl Adapter",boiler,211,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 +"EasyControl Adapter",boiler,211,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,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,6,0,1/10,283,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,heatvalve,heating valve,uint8,%,false,sensor.boiler_heating_valve,sensor.boiler_heatvalve,6,0,1,284,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.dhwvalve,valve,uint8,%,false,sensor.boiler_dhw_valve,sensor.boiler_dhw_dhwvalve,6,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,6,0,1,285,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,6,0,1,286,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,heating,heating,boolean, ,false,binary_sensor.boiler_heating,binary_sensor.boiler_heating,6,0,1,287,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,6,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,6,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,6,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,6,0,1,3,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,0,1/10,11,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,6,0,1/10,12,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,6,0,1/10,13,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,6,0,1,14,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,6,0,1,15,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,6,0,1,16,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,pumpkickhour,pump kick hour,uint8 (>=0<=23),hours,true,number.boiler_pump_kick_hour,number.boiler_pumpkickhour,6,0,1,85,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,6,0,1,86,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,6,0,1,87,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,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,6,0,1/10,280,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,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,6,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,6,9,1,29,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"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,6,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,6,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,6,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,6,0,1,3,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,6,0,1,4,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,6,0,1,5,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,6,0,1,6,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,6,0,1/10,7,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,6,0,1/10,8,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,6,0,1/10,9,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,6,0,1/10,10,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,6,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,6,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,6,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,6,0,1/10,256,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,6,0,1,257,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,6,0,1,258,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,6,0,1/10,259,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,6,0,1,260,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,6,0,1,261,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,6,0,1,262,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,6,0,1,263,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,6,0,1,264,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,6,0,1,265,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,6,0,1,266,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatblock,Heatblock temperature,uint16,C,false,sensor.boiler_Heatblock_temperature,sensor.boiler_heatblock,6,0,1/10,267,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,6,0,1,268,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,6,0,1,269,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,6,0,1,270,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,6,0,1,271,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,6,0,1,272,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,6,0,1,273,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,6,0,1,274,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,6,0,1,275,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,6,0,1,276,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,6,0,1,277,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,6,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,6,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,6,0,1,16,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,6,0,1,17,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pumpmodmin,boiler pump min power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,6,0,1,18,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] (>=0<=0), ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,6,0,1,19,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] (>=0<=0), ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,6,0,1,20,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,6,0,1,21,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,6,0,1,22,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,6,0,1,23,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,6,0,1,24,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,6,0,1,25,2 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,6,0,1,27,2 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burn2workmin,burner stage 2 operating time,time,minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,6,0,1,29,2 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,6,0,1,31,2 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,6,0,1,33,2 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,6,0,1,35,2 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,6,0,1,37,28 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,6,0,1,65,2 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,6,0,1,67,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,6,0,1,68,2 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,6,0,1,70,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,maintenancetime,time to next maintenance,uint16 (>=0<=0),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,6,0,1,71,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,6,0,1,72,6 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,6,0,1,78,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,6,0,1,79,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pc0lpm,Flow PC0,uint16,l/min,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0lpm,6,0,1/10,80,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pc0flow,Flow PC0,uint16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,6,0,1,81,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pc1flow,Flow PC1,uint16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,6,0,1,82,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,6,0,1,83,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,6,0,1,84,1 +"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,6,0,1,85,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,6,0,1,86,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,6,0,1,87,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,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,6,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,6,0,1/10,278,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,6,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,6,0,1/10,280,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,6,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,6,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,6,9,1,29,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.seltemplow,selected lower temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,6,9,1,31,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,6,9,1,32,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.seltempoff,selected temperature for off,uint8,C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,6,9,1,33,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.seltempsingle,single charge temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,6,9,1,34,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.solartemp,solar boiler temperature,uint16,C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,6,9,1/10,35,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,6,9,1,36,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,6,9,1,37,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.comfort1,comfort mode,enum [high comfort\|eco] (>=0<=0), ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,6,9,1,38,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,6,9,1,39,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,6,9,1,40,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,6,9,1,41,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,6,9,1,42,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,6,9,1,43,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,6,9,1,44,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 +"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,6,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,6,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,6,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,6,0,1,282,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,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,6,0,1/100,91,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,6,9,1/100,0,2 +"Logamatic TC100, Moduline Easy",thermostat,202,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"Logamatic TC100, Moduline Easy",thermostat,202,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"Logamatic TC100, Moduline Easy",thermostat,202,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"Logamatic TC100, Moduline Easy",thermostat,202,hc1.seltemp,selected room temperature,int16,C,false,sensor.thermostat_hc1_selected_room_temperature,sensor.thermostat_hc1_seltemp,7,1,1/100,0,1 +"Logamatic TC100, Moduline Easy",thermostat,202,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/100,1,1 +"Logamatic TC100, Moduline Easy",thermostat,202,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,7,1,1,2,1 +"EasyControl, CT200",thermostat,203,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"EasyControl, CT200",thermostat,203,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"EasyControl, CT200",thermostat,203,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"EasyControl, CT200",thermostat,203,hc1.seltemp,selected room temperature,int16,C,false,sensor.thermostat_hc1_selected_room_temperature,sensor.thermostat_hc1_seltemp,7,1,1/100,0,1 +"EasyControl, CT200",thermostat,203,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/100,1,1 +"EasyControl, CT200",thermostat,203,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,7,1,1,2,1 +"UI800, BC400",thermostat,4,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"UI800, BC400",thermostat,4,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"UI800, BC400",thermostat,4,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"UI800, BC400",thermostat,4,intoffset,internal temperature offset,int8 (>=0<=0),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,7,0,1/10,46,1 +"UI800, BC400",thermostat,4,floordry,floor drying,enum [off\|start\|heat\|hold\|cool\|end], ,false,sensor.thermostat_floor_drying,sensor.thermostat_floordry,7,0,1,47,1 +"UI800, BC400",thermostat,4,dampedoutdoortemp,damped outdoor temperature,int16,C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp,7,0,1/10,48,1 +"UI800, BC400",thermostat,4,floordrytemp,floor drying temperature,uint8,C,false,sensor.thermostat_floor_drying_temperature,sensor.thermostat_floordrytemp,7,0,1,49,1 +"UI800, BC400",thermostat,4,building,building type,enum [light\|medium\|heavy] (>=0<=0), ,true,select.thermostat_building_type,select.thermostat_building,7,0,1,50,1 +"UI800, BC400",thermostat,4,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,7,0,1,51,1 +"UI800, BC400",thermostat,4,damping,damping outdoor temperature,boolean (>=0<=0), ,true,switch.thermostat_damping_outdoor_temperature,switch.thermostat_damping,7,0,1,52,1 +"UI800, BC400",thermostat,4,solar,solar,boolean (>=0<=0), ,true,switch.thermostat_solar,switch.thermostat_solar,7,0,1,53,1 +"UI800, BC400",thermostat,4,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,7,0,1,54,1 +"UI800, BC400",thermostat,4,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,7,0,1,55,1 +"UI800, BC400",thermostat,4,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,7,0,1/10,56,1 +"UI800, BC400",thermostat,4,fossilefactor,fossile energy factor,uint8 (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor,7,0,1/10,57,1 +"UI800, BC400",thermostat,4,electricfactor,electric energy factor,uint8 (>=0<=5), ,true,number.thermostat_electric_energy_factor,number.thermostat_electricfactor,7,0,1/10,58,1 +"UI800, BC400",thermostat,4,delayboiler,delay boiler support,uint8 (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler,7,0,1,59,1 +"UI800, BC400",thermostat,4,tempdiffboiler,temp diff boiler support,uint8 (>=1<=99),C,true,number.thermostat_temp_diff_boiler_support,number.thermostat_tempdiffboiler,7,0,1,60,1 +"UI800, BC400",thermostat,4,pvenabledhw,enable raise dhw,boolean (>=0<=0), ,true,switch.thermostat_enable_raise_dhw,switch.thermostat_pvenabledhw,7,0,1,61,1 +"UI800, BC400",thermostat,4,pvraiseheat,raise heating with PV,int8 (>=0<=5),K,true,number.thermostat_raise_heating_with_PV,number.thermostat_pvraiseheat,7,0,1,62,1 +"UI800, BC400",thermostat,4,pvlowercool,lower cooling with PV,int8 (>=-5<=0),K,true,number.thermostat_lower_cooling_with_PV,number.thermostat_pvlowercool,7,0,1,63,1 +"UI800, BC400",thermostat,4,absent,absent,boolean (>=0<=0), ,true,switch.thermostat_absent,switch.thermostat_absent,7,0,1,64,1 +"UI800, BC400",thermostat,4,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/2,0,1 +"UI800, BC400",thermostat,4,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"UI800, BC400",thermostat,4,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,7,1,1,2,1 +"UI800, BC400",thermostat,4,hc1.mode,operating mode,enum [off\|manual\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,7,1,1,3,1 +"UI800, BC400",thermostat,4,hc1.modetype,mode type,enum [eco\|comfort], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,7,1,1,4,1 +"UI800, BC400",thermostat,4,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,7,1,1/2,5,1 +"UI800, BC400",thermostat,4,hc1.manualtemp,manual temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp,7,1,1/2,6,1 +"UI800, BC400",thermostat,4,hc1.comforttemp,comfort temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_comfort_temperature,number.thermostat_hc1_comforttemp,7,1,1/2,7,1 +"UI800, BC400",thermostat,4,hc1.summertemp,summer temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,7,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,7,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,7,1,1,10,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,43,1 +"UI800, BC400",thermostat,4,hc1.control,control device,enum [off\|-\|RC100\|RC100H\|-\|RC120RF\|RC220\|single] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,7,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,7,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,7,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,7,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,7,1,1,48,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,7,1,1,49,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,7,1,1,50,1 +"UI800, BC400",thermostat,4,hc1.instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_hc1_instant_start,number.thermostat_hc1_instantstart,7,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,7,1,1,52,1 +"UI800, BC400",thermostat,4,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,7,1,1,53,1 +"UI800, BC400",thermostat,4,hc1.boosttime,boost time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,7,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,7,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,7,1,1/2,56,1 +"UI800, BC400",thermostat,4,hc1.solarinfl,solar influence,int8 (>=-5<=0),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,7,1,1,57,1 +"UI800, BC400",thermostat,4,hc1.currsolarinfl,current solar influence,int8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,9,1,2,1 +"UI800, BC400",thermostat,4,dhw.settemplow,set low temperature,uint8 (>=0<=0),C,true,number.thermostat_dhw_set_low_temperature,number.thermostat_dhw_settemplow,7,9,1,3,1 +"UI800, BC400",thermostat,4,dhw.circmode,circulation pump mode,enum [off\|on\|auto\|own prog] (>=0<=0), ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,7,9,1,4,1 +"UI800, BC400",thermostat,4,dhw.chargeduration,charge duration,uint8 (>=0<=0),minutes,true,number.thermostat_dhw_charge_duration,number.thermostat_dhw_chargeduration,7,9,15,5,1 +"UI800, BC400",thermostat,4,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,7,9,1,6,1 +"UI800, BC400",thermostat,4,dhw.extra,extra,boolean, ,false,binary_sensor.thermostat_dhw_extra,binary_sensor.thermostat_dhw_extra,7,9,1,7,1 +"UI800, BC400",thermostat,4,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,7,9,1,8,1 +"UI800, BC400",thermostat,4,dhw.disinfectday,disinfection day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.thermostat_dhw_disinfection_day,select.thermostat_dhw_disinfectday,7,9,1,9,1 +"UI800, BC400",thermostat,4,dhw.disinfecttime,disinfection time,uint8 (>=0<=1431),minutes,true,number.thermostat_dhw_disinfection_time,number.thermostat_dhw_disinfecttime,7,9,15,10,1 +"UI800, BC400",thermostat,4,dhw.dailyheating,daily heating,boolean (>=0<=0), ,true,switch.thermostat_dhw_daily_heating,switch.thermostat_dhw_dailyheating,7,9,1,11,1 +"UI800, BC400",thermostat,4,dhw.dailyheattime,daily heating time,uint8 (>=0<=1431),minutes,true,number.thermostat_dhw_daily_heating_time,number.thermostat_dhw_dailyheattime,7,9,15,12,1 +"CR11",thermostat,10,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"CR11",thermostat,10,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"CR11",thermostat,10,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/2,0,1 +"CR11",thermostat,10,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,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,7,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,7,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,7,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,7,1,1,20,1 +"RC10",thermostat,65,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"RC10",thermostat,65,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"RC10",thermostat,65,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"RC10",thermostat,65,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,7,0,1,51,1 +"RC10",thermostat,65,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/2,0,1 +"RC10",thermostat,65,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"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,7,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,7,1,1,3,1 +"RC10",thermostat,65,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,8,1 +"RC10",thermostat,65,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,7,1,1,23,1 +"RC30",thermostat,67,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"RC30",thermostat,67,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"RC30",thermostat,67,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"RC30",thermostat,67,display,display,enum [internal temperature\|internal setpoint\|external temperature\|burner temperature\|dhw temperature\|functioning mode\|time\|date\|smoke temperature] (>=0<=0), ,true,select.thermostat_display,select.thermostat_display,7,0,1,65,1 +"RC30",thermostat,67,language,language,enum [german\|dutch\|french\|italian], ,false,sensor.thermostat_language,sensor.thermostat_language,7,0,1,66,1 +"RC30",thermostat,67,clockoffset,clock offset,int8 (>=0<=0),seconds,true,number.thermostat_clock_offset,number.thermostat_clockoffset,7,0,1,67,1 +"RC30",thermostat,67,intoffset,internal temperature offset,int8 (>=0<=0),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,7,0,1/10,46,1 +"RC30",thermostat,67,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,7,0,1,51,1 +"RC30",thermostat,67,inttemp1,temperature sensor 1,int16,C,false,sensor.thermostat_temperature_sensor_1,sensor.thermostat_inttemp1,7,0,1/10,68,1 +"RC30",thermostat,67,inttemp2,temperature sensor 2,int16,C,false,sensor.thermostat_temperature_sensor_2,sensor.thermostat_inttemp2,7,0,1/10,69,1 +"RC30",thermostat,67,damping,damping outdoor temperature,boolean (>=0<=0), ,true,switch.thermostat_damping_outdoor_temperature,switch.thermostat_damping,7,0,1,52,1 +"RC30",thermostat,67,dampedoutdoortemp,damped outdoor temperature,int8,C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp,7,0,1,48,1 +"RC30",thermostat,67,building,building type,enum [light\|medium\|heavy] (>=0<=0), ,true,select.thermostat_building_type,select.thermostat_building,7,0,1,50,1 +"RC30",thermostat,67,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/2,0,1 +"RC30",thermostat,67,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"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,7,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,7,1,1,3,1 +"RC30",thermostat,67,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,8,1 +"RC30",thermostat,67,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,7,1,1,23,1 +"RC30",thermostat,67,hc1.holidaymode,holiday mode,boolean, ,false,binary_sensor.thermostat_hc1_holiday_mode,binary_sensor.thermostat_hc1_holidaymode,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,44,1 +"RC30",thermostat,67,hc1.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,7,1,1,68,13 +"RC30",thermostat,67,hc1.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,9,1,13,1 +"RC30",thermostat,67,dhw.circprog,circulation program,enum [std prog\|own prog] (>=0<=0), ,true,select.thermostat_dhw_circulation_program,select.thermostat_dhw_circprog,7,9,1,14,1 +"RC30",thermostat,67,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,7,9,1,8,1 +"RC30",thermostat,67,dhw.disinfectday,disinfection day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.thermostat_dhw_disinfection_day,select.thermostat_dhw_disinfectday,7,9,1,9,1 +"RC30",thermostat,67,dhw.disinfecthour,disinfection hour,uint8 (>=0<=23), ,true,number.thermostat_dhw_disinfection_hour,number.thermostat_dhw_disinfecthour,7,9,1,15,1 +"RC30",thermostat,67,dhw.maxtemp,maximum temperature,uint8 (>=0<=0),C,true,number.thermostat_dhw_maximum_temperature,number.thermostat_dhw_maxtemp,7,9,1,16,1 +"RC30",thermostat,67,dhw.onetimekey,one time key function,boolean (>=0<=0), ,true,switch.thermostat_dhw_one_time_key_function,switch.thermostat_dhw_onetimekey,7,9,1,17,1 +"RC30",thermostat,67,dhw.switchtime,program switchtime,string (>=0<=0), ,true,sensor.thermostat_dhw_program_switchtime,sensor.thermostat_dhw_switchtime,7,9,1,18,8 +"RC30",thermostat,67,dhw.circswitchtime,circulation program switchtime,string (>=0<=0), ,true,sensor.thermostat_dhw_circulation_program_switchtime,sensor.thermostat_dhw_circswitchtime,7,9,1,26,8 +"RC30",thermostat,67,dhw.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_dhw_holiday_dates,sensor.thermostat_dhw_holidays,7,9,1,34,13 +"RC30",thermostat,67,dhw.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_dhw_vacation_dates,sensor.thermostat_dhw_vacations,7,9,1,47,13 +"RC20, Moduline 300",thermostat,77,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"RC20, Moduline 300",thermostat,77,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"RC20, Moduline 300",thermostat,77,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"RC20, Moduline 300",thermostat,77,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/2,0,1 +"RC20, Moduline 300",thermostat,77,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,118,8 +"Moduline 400",thermostat,78,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"Moduline 400",thermostat,78,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"Moduline 400",thermostat,78,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"Moduline 400",thermostat,78,clockoffset,clock offset,int8 (>=0<=0),seconds,true,number.thermostat_clock_offset,number.thermostat_clockoffset,7,0,1,67,1 +"Moduline 400",thermostat,78,autodst,automatic change daylight saving time,boolean (>=0<=0), ,true,switch.thermostat_automatic_change_daylight_saving_time,switch.thermostat_autodst,7,0,1,70,1 +"Moduline 400",thermostat,78,language,language,enum [german\|dutch] (>=0<=0), ,true,select.thermostat_language,select.thermostat_language,7,0,1,66,1 +"Moduline 400",thermostat,78,backlight,key backlight,boolean (>=0<=0), ,true,switch.thermostat_key_backlight,switch.thermostat_backlight,7,0,1,71,1 +"Moduline 400",thermostat,78,brightness,screen brightness,int8 (>=-15<=15), ,true,number.thermostat_screen_brightness,number.thermostat_brightness,7,0,1,72,1 +"Moduline 400",thermostat,78,mixingvalves,mixing valves,uint8 (>=0<=2), ,true,number.thermostat_mixing_valves,number.thermostat_mixingvalves,7,0,1,73,1 +"Moduline 400",thermostat,78,building,building type,enum [light\|medium\|heavy] (>=0<=0), ,true,select.thermostat_building_type,select.thermostat_building,7,0,1,50,1 +"Moduline 400",thermostat,78,heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_heating_PID,select.thermostat_heatingpid,7,0,1,74,1 +"Moduline 400",thermostat,78,preheating,preheating in the clock program,boolean (>=0<=0), ,true,switch.thermostat_preheating_in_the_clock_program,switch.thermostat_preheating,7,0,1,75,1 +"Moduline 400",thermostat,78,intoffset,internal temperature offset,int8 (>=0<=0),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,7,0,1/10,46,1 +"Moduline 400",thermostat,78,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/2,0,1 +"Moduline 400",thermostat,78,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,9,1,60,1 +"Moduline 400",thermostat,78,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,7,9,1,8,1 +"Moduline 400",thermostat,78,dhw.disinfectday,disinfection day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.thermostat_dhw_disinfection_day,select.thermostat_dhw_disinfectday,7,9,1,9,1 +"Moduline 400",thermostat,78,dhw.disinfecthour,disinfection hour,uint8 (>=0<=23), ,true,number.thermostat_dhw_disinfection_hour,number.thermostat_dhw_disinfecthour,7,9,1,15,1 +"RC10, Moduline 100",thermostat,79,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"RC10, Moduline 100",thermostat,79,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"RC10, Moduline 100",thermostat,79,intoffset,internal temperature offset,int8 (>=0<=0),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,7,0,1/10,46,1 +"RC10, Moduline 100",thermostat,79,heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_heating_PID,select.thermostat_heatingpid,7,0,1,74,1 +"RC10, Moduline 100",thermostat,79,backlight,key backlight,boolean (>=0<=0), ,true,switch.thermostat_key_backlight,switch.thermostat_backlight,7,0,1,71,1 +"RC10, Moduline 100",thermostat,79,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/2,0,1 +"RC10, Moduline 100",thermostat,79,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,9,1,0,1 +"Moduline 200",thermostat,80,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"Moduline 200",thermostat,80,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"Moduline 200",thermostat,80,intoffset,internal temperature offset,int8 (>=0<=0),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,7,0,1/10,46,1 +"Moduline 200",thermostat,80,heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_heating_PID,select.thermostat_heatingpid,7,0,1,74,1 +"Moduline 200",thermostat,80,backlight,key backlight,boolean (>=0<=0), ,true,switch.thermostat_key_backlight,switch.thermostat_backlight,7,0,1,71,1 +"Moduline 200",thermostat,80,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/2,0,1 +"Moduline 200",thermostat,80,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,9,1,0,1 +"RC35",thermostat,86,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"RC35",thermostat,86,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"RC35",thermostat,86,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"RC35",thermostat,86,intoffset,internal temperature offset,int8 (>=-5<=5),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,7,0,1/10,46,1 +"RC35",thermostat,86,minexttemp,minimal external temperature,int8 (>=-30<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,7,0,1,51,1 +"RC35",thermostat,86,inttemp1,temperature sensor 1,int16,C,false,sensor.thermostat_temperature_sensor_1,sensor.thermostat_inttemp1,7,0,1/10,68,1 +"RC35",thermostat,86,inttemp2,temperature sensor 2,int16,C,false,sensor.thermostat_temperature_sensor_2,sensor.thermostat_inttemp2,7,0,1/10,69,1 +"RC35",thermostat,86,damping,damping outdoor temperature,boolean (>=0<=0), ,true,switch.thermostat_damping_outdoor_temperature,switch.thermostat_damping,7,0,1,52,1 +"RC35",thermostat,86,dampedoutdoortemp,damped outdoor temperature,int8,C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp,7,0,1,48,1 +"RC35",thermostat,86,building,building type,enum [light\|medium\|heavy] (>=0<=0), ,true,select.thermostat_building_type,select.thermostat_building,7,0,1,50,1 +"RC35",thermostat,86,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/2,0,1 +"RC35",thermostat,86,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"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,7,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,7,1,1,3,1 +"RC35",thermostat,86,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,8,1 +"RC35",thermostat,86,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,7,1,1,23,1 +"RC35",thermostat,86,hc1.holidaymode,holiday mode,boolean, ,false,binary_sensor.thermostat_hc1_holiday_mode,binary_sensor.thermostat_hc1_holidaymode,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,44,1 +"RC35",thermostat,86,hc1.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,7,1,1,68,13 +"RC35",thermostat,86,hc1.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,9,1,13,1 +"RC35",thermostat,86,dhw.circprog,circulation program,enum [std prog\|own prog] (>=0<=0), ,true,select.thermostat_dhw_circulation_program,select.thermostat_dhw_circprog,7,9,1,14,1 +"RC35",thermostat,86,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,7,9,1,8,1 +"RC35",thermostat,86,dhw.disinfectday,disinfection day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.thermostat_dhw_disinfection_day,select.thermostat_dhw_disinfectday,7,9,1,9,1 +"RC35",thermostat,86,dhw.disinfecthour,disinfection hour,uint8 (>=0<=23), ,true,number.thermostat_dhw_disinfection_hour,number.thermostat_dhw_disinfecthour,7,9,1,15,1 +"RC35",thermostat,86,dhw.maxtemp,maximum temperature,uint8 (>=60<=80),C,true,number.thermostat_dhw_maximum_temperature,number.thermostat_dhw_maxtemp,7,9,1,16,1 +"RC35",thermostat,86,dhw.onetimekey,one time key function,boolean (>=0<=0), ,true,switch.thermostat_dhw_one_time_key_function,switch.thermostat_dhw_onetimekey,7,9,1,17,1 +"RC35",thermostat,86,dhw.switchtime,program switchtime,string (>=0<=0), ,true,sensor.thermostat_dhw_program_switchtime,sensor.thermostat_dhw_switchtime,7,9,1,18,8 +"RC35",thermostat,86,dhw.circswitchtime,circulation program switchtime,string (>=0<=0), ,true,sensor.thermostat_dhw_circulation_program_switchtime,sensor.thermostat_dhw_circswitchtime,7,9,1,26,8 +"RC35",thermostat,86,dhw.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_dhw_holiday_dates,sensor.thermostat_dhw_holidays,7,9,1,34,13 +"RC35",thermostat,86,dhw.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_dhw_vacation_dates,sensor.thermostat_dhw_vacations,7,9,1,47,13 +"RC10, Moduline 100",thermostat,90,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"RC10, Moduline 100",thermostat,90,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"RC10, Moduline 100",thermostat,90,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"RC10, Moduline 100",thermostat,90,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,7,0,1,51,1 +"RC10, Moduline 100",thermostat,90,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/2,0,1 +"RC10, Moduline 100",thermostat,90,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,23,1 +"RC20RF",thermostat,93,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"RC20RF",thermostat,93,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"RC20RF",thermostat,93,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"RC20RF",thermostat,93,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/2,0,1 +"RC20RF",thermostat,93,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,118,8 +"RFM20 Remote",thermostat,94,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"RFM20 Remote",thermostat,94,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"RFM20 Remote",thermostat,94,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"RFM20 Remote",thermostat,94,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/2,0,1 +"RFM20 Remote",thermostat,94,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"RFM20 Remote",thermostat,94,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,7,1,1,2,1 +"RC25",thermostat,151,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"RC25",thermostat,151,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"RC25",thermostat,151,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"RC25",thermostat,151,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,7,0,1,51,1 +"RC25",thermostat,151,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/2,0,1 +"RC25",thermostat,151,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"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,7,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,7,1,1,3,1 +"RC25",thermostat,151,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,8,1 +"RC25",thermostat,151,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,7,1,1,23,1 +"RC200, CW100, CR120, CR50",thermostat,157,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"RC200, CW100, CR120, CR50",thermostat,157,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"RC200, CW100, CR120, CR50",thermostat,157,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"RC200, CW100, CR120, CR50",thermostat,157,intoffset,internal temperature offset,int8 (>=0<=0),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,7,0,1/10,46,1 +"RC200, CW100, CR120, CR50",thermostat,157,floordry,floor drying,enum [off\|start\|heat\|hold\|cool\|end], ,false,sensor.thermostat_floor_drying,sensor.thermostat_floordry,7,0,1,47,1 +"RC200, CW100, CR120, CR50",thermostat,157,dampedoutdoortemp,damped outdoor temperature,int16,C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp,7,0,1/10,48,1 +"RC200, CW100, CR120, CR50",thermostat,157,floordrytemp,floor drying temperature,uint8,C,false,sensor.thermostat_floor_drying_temperature,sensor.thermostat_floordrytemp,7,0,1,49,1 +"RC200, CW100, CR120, CR50",thermostat,157,building,building type,enum [light\|medium\|heavy] (>=0<=0), ,true,select.thermostat_building_type,select.thermostat_building,7,0,1,50,1 +"RC200, CW100, CR120, CR50",thermostat,157,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,7,0,1,51,1 +"RC200, CW100, CR120, CR50",thermostat,157,damping,damping outdoor temperature,boolean (>=0<=0), ,true,switch.thermostat_damping_outdoor_temperature,switch.thermostat_damping,7,0,1,52,1 +"RC200, CW100, CR120, CR50",thermostat,157,solar,solar,boolean (>=0<=0), ,true,switch.thermostat_solar,switch.thermostat_solar,7,0,1,53,1 +"RC200, CW100, CR120, CR50",thermostat,157,vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_vacation_dates,sensor.thermostat_vacations,7,0,1,76,13 +"RC200, CW100, CR120, CR50",thermostat,157,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,7,0,1,54,1 +"RC200, CW100, CR120, CR50",thermostat,157,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,7,0,1,55,1 +"RC200, CW100, CR120, CR50",thermostat,157,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,7,0,1/10,56,1 +"RC200, CW100, CR120, CR50",thermostat,157,fossilefactor,fossile energy factor,uint8 (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor,7,0,1/10,57,1 +"RC200, CW100, CR120, CR50",thermostat,157,electricfactor,electric energy factor,uint8 (>=0<=5), ,true,number.thermostat_electric_energy_factor,number.thermostat_electricfactor,7,0,1/10,58,1 +"RC200, CW100, CR120, CR50",thermostat,157,delayboiler,delay boiler support,uint8 (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler,7,0,1,59,1 +"RC200, CW100, CR120, CR50",thermostat,157,tempdiffboiler,temp diff boiler support,uint8 (>=1<=99),C,true,number.thermostat_temp_diff_boiler_support,number.thermostat_tempdiffboiler,7,0,1,60,1 +"RC200, CW100, CR120, CR50",thermostat,157,pvenabledhw,enable raise dhw,boolean (>=0<=0), ,true,switch.thermostat_enable_raise_dhw,switch.thermostat_pvenabledhw,7,0,1,61,1 +"RC200, CW100, CR120, CR50",thermostat,157,pvraiseheat,raise heating with PV,int8 (>=0<=5),K,true,number.thermostat_raise_heating_with_PV,number.thermostat_pvraiseheat,7,0,1,62,1 +"RC200, CW100, CR120, CR50",thermostat,157,pvlowercool,lower cooling with PV,int8 (>=-5<=0),K,true,number.thermostat_lower_cooling_with_PV,number.thermostat_pvlowercool,7,0,1,63,1 +"RC200, CW100, CR120, CR50",thermostat,157,absent,absent,boolean (>=0<=0), ,true,switch.thermostat_absent,switch.thermostat_absent,7,0,1,64,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/2,0,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,7,1,1,2,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.mode,operating mode,enum [manual\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,7,1,1,3,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.modetype,mode type,enum [eco\|comfort], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,7,1,1,4,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,7,1,1/2,5,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.manualtemp,manual temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp,7,1,1/2,6,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.comforttemp,comfort temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_comfort_temperature,number.thermostat_hc1_comforttemp,7,1,1/2,7,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.summertemp,summer temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,7,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,7,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,7,1,1,10,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,48,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,7,1,1,49,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,7,1,1,50,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,7,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,7,1,1,52,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,7,1,1,53,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,7,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,7,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,7,1,1/2,56,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.solarinfl,solar influence,int8 (>=-5<=0),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,7,1,1,57,1 +"RC200, CW100, CR120, CR50",thermostat,157,hc1.currsolarinfl,current solar influence,int8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,9,1,2,1 +"RC200, CW100, CR120, CR50",thermostat,157,dhw.settemplow,set low temperature,uint8 (>=0<=0),C,true,number.thermostat_dhw_set_low_temperature,number.thermostat_dhw_settemplow,7,9,1,3,1 +"RC200, CW100, CR120, CR50",thermostat,157,dhw.circmode,circulation pump mode,enum [off\|on\|auto\|own prog] (>=0<=0), ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,7,9,1,4,1 +"RC200, CW100, CR120, CR50",thermostat,157,dhw.chargeduration,charge duration,uint8 (>=0<=0),minutes,true,number.thermostat_dhw_charge_duration,number.thermostat_dhw_chargeduration,7,9,15,5,1 +"RC200, CW100, CR120, CR50",thermostat,157,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,7,9,1,6,1 +"RC200, CW100, CR120, CR50",thermostat,157,dhw.extra,extra,boolean, ,false,binary_sensor.thermostat_dhw_extra,binary_sensor.thermostat_dhw_extra,7,9,1,7,1 +"RC200, CW100, CR120, CR50",thermostat,157,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,7,9,1,8,1 +"RC200, CW100, CR120, CR50",thermostat,157,dhw.disinfectday,disinfection day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.thermostat_dhw_disinfection_day,select.thermostat_dhw_disinfectday,7,9,1,9,1 +"RC200, CW100, CR120, CR50",thermostat,157,dhw.disinfecttime,disinfection time,uint8 (>=0<=1431),minutes,true,number.thermostat_dhw_disinfection_time,number.thermostat_dhw_disinfecttime,7,9,15,10,1 +"RC200, CW100, CR120, CR50",thermostat,157,dhw.dailyheating,daily heating,boolean (>=0<=0), ,true,switch.thermostat_dhw_daily_heating,switch.thermostat_dhw_dailyheating,7,9,1,11,1 +"RC200, CW100, CR120, CR50",thermostat,157,dhw.dailyheattime,daily heating time,uint8 (>=0<=1431),minutes,true,number.thermostat_dhw_daily_heating_time,number.thermostat_dhw_dailyheattime,7,9,15,12,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,intoffset,internal temperature offset,int8 (>=0<=0),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,7,0,1/10,46,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,floordry,floor drying,enum [off\|start\|heat\|hold\|cool\|end], ,false,sensor.thermostat_floor_drying,sensor.thermostat_floordry,7,0,1,47,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dampedoutdoortemp,damped outdoor temperature,int16,C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp,7,0,1/10,48,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,floordrytemp,floor drying temperature,uint8,C,false,sensor.thermostat_floor_drying_temperature,sensor.thermostat_floordrytemp,7,0,1,49,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,building,building type,enum [light\|medium\|heavy] (>=0<=0), ,true,select.thermostat_building_type,select.thermostat_building,7,0,1,50,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,7,0,1,51,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,damping,damping outdoor temperature,boolean (>=0<=0), ,true,switch.thermostat_damping_outdoor_temperature,switch.thermostat_damping,7,0,1,52,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,solar,solar,boolean (>=0<=0), ,true,switch.thermostat_solar,switch.thermostat_solar,7,0,1,53,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,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,7,0,1,54,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,7,0,1,55,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,7,0,1/10,56,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,fossilefactor,fossile energy factor,uint8 (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor,7,0,1/10,57,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,electricfactor,electric energy factor,uint8 (>=0<=5), ,true,number.thermostat_electric_energy_factor,number.thermostat_electricfactor,7,0,1/10,58,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,delayboiler,delay boiler support,uint8 (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler,7,0,1,59,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,tempdiffboiler,temp diff boiler support,uint8 (>=1<=99),C,true,number.thermostat_temp_diff_boiler_support,number.thermostat_tempdiffboiler,7,0,1,60,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,pvenabledhw,enable raise dhw,boolean (>=0<=0), ,true,switch.thermostat_enable_raise_dhw,switch.thermostat_pvenabledhw,7,0,1,61,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,pvraiseheat,raise heating with PV,int8 (>=0<=5),K,true,number.thermostat_raise_heating_with_PV,number.thermostat_pvraiseheat,7,0,1,62,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,pvlowercool,lower cooling with PV,int8 (>=-5<=0),K,true,number.thermostat_lower_cooling_with_PV,number.thermostat_pvlowercool,7,0,1,63,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,absent,absent,boolean (>=0<=0), ,true,switch.thermostat_absent,switch.thermostat_absent,7,0,1,64,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/2,0,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,7,1,1,2,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.mode,operating mode,enum [manual\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,7,1,1,3,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.modetype,mode type,enum [eco\|comfort], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,7,1,1,4,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,7,1,1/2,5,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.manualtemp,manual temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp,7,1,1/2,6,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.comforttemp,comfort temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_comfort_temperature,number.thermostat_hc1_comforttemp,7,1,1/2,7,1 +"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,7,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,7,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,7,1,1,10,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,48,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,7,1,1,49,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,7,1,1,50,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,7,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,7,1,1,52,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,7,1,1,53,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,7,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,7,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,7,1,1/2,56,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.solarinfl,solar influence,int8 (>=-5<=0),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,7,1,1,57,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.currsolarinfl,current solar influence,int8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,9,1,2,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dhw.settemplow,set low temperature,uint8 (>=0<=0),C,true,number.thermostat_dhw_set_low_temperature,number.thermostat_dhw_settemplow,7,9,1,3,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dhw.circmode,circulation pump mode,enum [off\|on\|auto\|own prog] (>=0<=0), ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,7,9,1,4,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dhw.chargeduration,charge duration,uint8 (>=0<=0),minutes,true,number.thermostat_dhw_charge_duration,number.thermostat_dhw_chargeduration,7,9,15,5,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,7,9,1,6,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dhw.extra,extra,boolean, ,false,binary_sensor.thermostat_dhw_extra,binary_sensor.thermostat_dhw_extra,7,9,1,7,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,7,9,1,8,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dhw.disinfectday,disinfection day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.thermostat_dhw_disinfection_day,select.thermostat_dhw_disinfectday,7,9,1,9,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dhw.disinfecttime,disinfection time,uint8 (>=0<=1431),minutes,true,number.thermostat_dhw_disinfection_time,number.thermostat_dhw_disinfecttime,7,9,15,10,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dhw.dailyheating,daily heating,boolean (>=0<=0), ,true,switch.thermostat_dhw_daily_heating,switch.thermostat_dhw_dailyheating,7,9,1,11,1 +"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dhw.dailyheattime,daily heating time,uint8 (>=0<=1431),minutes,true,number.thermostat_dhw_daily_heating_time,number.thermostat_dhw_dailyheattime,7,9,15,12,1 +"RC100, CR10, Moduline 1000/1010",thermostat,165,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"RC100, CR10, Moduline 1000/1010",thermostat,165,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"RC100, CR10, Moduline 1000/1010",thermostat,165,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/2,0,1 +"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,7,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,7,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,7,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,7,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,7,1,1,20,1 +"Rego 2000/3000",thermostat,172,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"Rego 2000/3000",thermostat,172,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"Rego 2000/3000",thermostat,172,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"Rego 2000/3000",thermostat,172,intoffset,internal temperature offset,int8 (>=0<=0),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,7,0,1/10,46,1 +"Rego 2000/3000",thermostat,172,floordry,floor drying,enum [off\|start\|heat\|hold\|cool\|end], ,false,sensor.thermostat_floor_drying,sensor.thermostat_floordry,7,0,1,47,1 +"Rego 2000/3000",thermostat,172,dampedoutdoortemp,damped outdoor temperature,int16,C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp,7,0,1/10,48,1 +"Rego 2000/3000",thermostat,172,floordrytemp,floor drying temperature,uint8,C,false,sensor.thermostat_floor_drying_temperature,sensor.thermostat_floordrytemp,7,0,1,49,1 +"Rego 2000/3000",thermostat,172,building,building type,enum [light\|medium\|heavy] (>=0<=0), ,true,select.thermostat_building_type,select.thermostat_building,7,0,1,50,1 +"Rego 2000/3000",thermostat,172,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,7,0,1,51,1 +"Rego 2000/3000",thermostat,172,damping,damping outdoor temperature,boolean (>=0<=0), ,true,switch.thermostat_damping_outdoor_temperature,switch.thermostat_damping,7,0,1,52,1 +"Rego 2000/3000",thermostat,172,solar,solar,boolean (>=0<=0), ,true,switch.thermostat_solar,switch.thermostat_solar,7,0,1,53,1 +"Rego 2000/3000",thermostat,172,vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_vacation_dates,sensor.thermostat_vacations,7,0,1,76,13 +"Rego 2000/3000",thermostat,172,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,7,0,1,54,1 +"Rego 2000/3000",thermostat,172,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,7,0,1,55,1 +"Rego 2000/3000",thermostat,172,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,7,0,1/10,56,1 +"Rego 2000/3000",thermostat,172,fossilefactor,fossile energy factor,uint8 (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor,7,0,1/10,57,1 +"Rego 2000/3000",thermostat,172,electricfactor,electric energy factor,uint8 (>=0<=5), ,true,number.thermostat_electric_energy_factor,number.thermostat_electricfactor,7,0,1/10,58,1 +"Rego 2000/3000",thermostat,172,delayboiler,delay boiler support,uint8 (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler,7,0,1,59,1 +"Rego 2000/3000",thermostat,172,tempdiffboiler,temp diff boiler support,uint8 (>=1<=99),C,true,number.thermostat_temp_diff_boiler_support,number.thermostat_tempdiffboiler,7,0,1,60,1 +"Rego 2000/3000",thermostat,172,pvenabledhw,enable raise dhw,boolean (>=0<=0), ,true,switch.thermostat_enable_raise_dhw,switch.thermostat_pvenabledhw,7,0,1,61,1 +"Rego 2000/3000",thermostat,172,pvraiseheat,raise heating with PV,int8 (>=0<=5),K,true,number.thermostat_raise_heating_with_PV,number.thermostat_pvraiseheat,7,0,1,62,1 +"Rego 2000/3000",thermostat,172,pvlowercool,lower cooling with PV,int8 (>=-5<=0),K,true,number.thermostat_lower_cooling_with_PV,number.thermostat_pvlowercool,7,0,1,63,1 +"Rego 2000/3000",thermostat,172,absent,absent,boolean (>=0<=0), ,true,switch.thermostat_absent,switch.thermostat_absent,7,0,1,64,1 +"Rego 2000/3000",thermostat,172,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/2,0,1 +"Rego 2000/3000",thermostat,172,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"Rego 2000/3000",thermostat,172,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,7,1,1,2,1 +"Rego 2000/3000",thermostat,172,hc1.mode,operating mode,enum [manual\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,7,1,1,3,1 +"Rego 2000/3000",thermostat,172,hc1.modetype,mode type,enum [eco\|comfort], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,7,1,1,4,1 +"Rego 2000/3000",thermostat,172,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,7,1,1/2,5,1 +"Rego 2000/3000",thermostat,172,hc1.manualtemp,manual temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp,7,1,1/2,6,1 +"Rego 2000/3000",thermostat,172,hc1.comforttemp,comfort temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_comfort_temperature,number.thermostat_hc1_comforttemp,7,1,1/2,7,1 +"Rego 2000/3000",thermostat,172,hc1.summertemp,summer temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,7,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,7,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,7,1,1,10,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,48,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,7,1,1,49,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,7,1,1,50,1 +"Rego 2000/3000",thermostat,172,hc1.instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_hc1_instant_start,number.thermostat_hc1_instantstart,7,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,7,1,1,52,1 +"Rego 2000/3000",thermostat,172,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,7,1,1,53,1 +"Rego 2000/3000",thermostat,172,hc1.boosttime,boost time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,7,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,7,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,7,1,1/2,56,1 +"Rego 2000/3000",thermostat,172,hc1.solarinfl,solar influence,int8 (>=-5<=0),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,7,1,1,57,1 +"Rego 2000/3000",thermostat,172,hc1.currsolarinfl,current solar influence,int8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,9,1,2,1 +"Rego 2000/3000",thermostat,172,dhw.settemplow,set low temperature,uint8 (>=0<=0),C,true,number.thermostat_dhw_set_low_temperature,number.thermostat_dhw_settemplow,7,9,1,3,1 +"Rego 2000/3000",thermostat,172,dhw.circmode,circulation pump mode,enum [off\|on\|auto\|own prog] (>=0<=0), ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,7,9,1,4,1 +"Rego 2000/3000",thermostat,172,dhw.chargeduration,charge duration,uint8 (>=0<=0),minutes,true,number.thermostat_dhw_charge_duration,number.thermostat_dhw_chargeduration,7,9,15,5,1 +"Rego 2000/3000",thermostat,172,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,7,9,1,6,1 +"Rego 2000/3000",thermostat,172,dhw.extra,extra,boolean, ,false,binary_sensor.thermostat_dhw_extra,binary_sensor.thermostat_dhw_extra,7,9,1,7,1 +"Rego 2000/3000",thermostat,172,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,7,9,1,8,1 +"Rego 2000/3000",thermostat,172,dhw.disinfectday,disinfection day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.thermostat_dhw_disinfection_day,select.thermostat_dhw_disinfectday,7,9,1,9,1 +"Rego 2000/3000",thermostat,172,dhw.disinfecttime,disinfection time,uint8 (>=0<=1431),minutes,true,number.thermostat_dhw_disinfection_time,number.thermostat_dhw_disinfecttime,7,9,15,10,1 +"Rego 2000/3000",thermostat,172,dhw.dailyheating,daily heating,boolean (>=0<=0), ,true,switch.thermostat_dhw_daily_heating,switch.thermostat_dhw_dailyheating,7,9,1,11,1 +"Rego 2000/3000",thermostat,172,dhw.dailyheattime,daily heating time,uint8 (>=0<=1431),minutes,true,number.thermostat_dhw_daily_heating_time,number.thermostat_dhw_dailyheattime,7,9,15,12,1 +"Comfort RF",thermostat,215,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"Comfort RF",thermostat,215,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"Comfort RF",thermostat,215,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"Comfort RF",thermostat,215,hc1.seltemp,selected room temperature,int16,C,false,sensor.thermostat_hc1_selected_room_temperature,sensor.thermostat_hc1_seltemp,7,1,1/2,0,1 +"Comfort RF",thermostat,215,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"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,7,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,7,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,7,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,7,1,1,19,1 +"CRF200S",thermostat,216,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"CRF200S",thermostat,216,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"CRF200S",thermostat,216,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"CRF200S",thermostat,216,hc1.seltemp,selected room temperature,int16,C,false,sensor.thermostat_hc1_selected_room_temperature,sensor.thermostat_hc1_seltemp,7,1,1/2,0,1 +"CRF200S",thermostat,216,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"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,7,1,1,2,1 +"CRF200S",thermostat,216,hc1.mode,operating mode,enum [auto\|off], ,false,sensor.thermostat_hc1_operating_mode,sensor.thermostat_hc1_mode,7,1,1,3,1 +"CRF200S",thermostat,216,hc1.modetype,mode type,enum [off\|on], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,7,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,7,1,1,19,1 +"Comfort+2RF",thermostat,246,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"Comfort+2RF",thermostat,246,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"Comfort+2RF",thermostat,246,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"Comfort+2RF",thermostat,246,hc1.seltemp,selected room temperature,int16,C,false,sensor.thermostat_hc1_selected_room_temperature,sensor.thermostat_hc1_seltemp,7,1,1/2,0,1 +"Comfort+2RF",thermostat,246,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"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,7,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,7,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,7,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,7,1,1,19,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,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,7,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,7,0,1,33,13 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,intoffset,internal temperature offset,int8 (>=0<=0),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,7,0,1/10,46,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,floordry,floor drying,enum [off\|start\|heat\|hold\|cool\|end], ,false,sensor.thermostat_floor_drying,sensor.thermostat_floordry,7,0,1,47,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,dampedoutdoortemp,damped outdoor temperature,int16,C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp,7,0,1/10,48,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,floordrytemp,floor drying temperature,uint8,C,false,sensor.thermostat_floor_drying_temperature,sensor.thermostat_floordrytemp,7,0,1,49,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,building,building type,enum [light\|medium\|heavy] (>=0<=0), ,true,select.thermostat_building_type,select.thermostat_building,7,0,1,50,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,7,0,1,51,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,damping,damping outdoor temperature,boolean (>=0<=0), ,true,switch.thermostat_damping_outdoor_temperature,switch.thermostat_damping,7,0,1,52,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,solar,solar,boolean (>=0<=0), ,true,switch.thermostat_solar,switch.thermostat_solar,7,0,1,53,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,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,7,0,1,54,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,7,0,1,55,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,7,0,1/10,56,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,fossilefactor,fossile energy factor,uint8 (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor,7,0,1/10,57,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,electricfactor,electric energy factor,uint8 (>=0<=5), ,true,number.thermostat_electric_energy_factor,number.thermostat_electricfactor,7,0,1/10,58,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,delayboiler,delay boiler support,uint8 (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler,7,0,1,59,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,tempdiffboiler,temp diff boiler support,uint8 (>=1<=99),C,true,number.thermostat_temp_diff_boiler_support,number.thermostat_tempdiffboiler,7,0,1,60,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,pvenabledhw,enable raise dhw,boolean (>=0<=0), ,true,switch.thermostat_enable_raise_dhw,switch.thermostat_pvenabledhw,7,0,1,61,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,pvraiseheat,raise heating with PV,int8 (>=0<=5),K,true,number.thermostat_raise_heating_with_PV,number.thermostat_pvraiseheat,7,0,1,62,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,pvlowercool,lower cooling with PV,int8 (>=-5<=0),K,true,number.thermostat_lower_cooling_with_PV,number.thermostat_pvlowercool,7,0,1,63,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,absent,absent,boolean (>=0<=0), ,true,switch.thermostat_absent,switch.thermostat_absent,7,0,1,64,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hpoperatingmode,heatpump operating mode,enum [summer\|auto\|winter] (>=0<=0), ,true,select.thermostat_heatpump_operating_mode,select.thermostat_hpoperatingmode,7,0,1,89,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,summertemp,summer temperature,uint8 (>=10<=30),C,true,number.thermostat_summer_temperature,number.thermostat_summertemp,7,0,1,90,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_instant_start,number.thermostat_instantstart,7,0,1,91,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,coolstart,cooling starttemp,uint8 (>=24<=35),C,true,number.thermostat_cooling_starttemp,number.thermostat_coolstart,7,0,1,92,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,heatondelay,heat-on delay,uint8 (>=1<=48),hours,true,number.thermostat_heat-on_delay,number.thermostat_heatondelay,7,0,1/4,93,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,heatoffdelay,heat-off delay,uint8 (>=1<=48),hours,true,number.thermostat_heat-off_delay,number.thermostat_heatoffdelay,7,0,1/4,94,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,coolondelay,cooling on delay,uint8 (>=1<=48),hours,true,number.thermostat_cooling_on_delay,number.thermostat_coolondelay,7,0,1/4,95,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_cooling_off_delay,number.thermostat_cooloffdelay,7,0,1/4,96,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/2,0,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,7,1,1,2,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.mode,operating mode,enum [off\|manual\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,7,1,1,3,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.modetype,mode type,enum [eco\|comfort], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,7,1,1,4,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,7,1,1/2,5,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.manualtemp,manual temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp,7,1,1/2,6,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.comforttemp,comfort temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_comfort_temperature,number.thermostat_hc1_comforttemp,7,1,1/2,7,1 +"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,7,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,7,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,7,1,1,10,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,43,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.control,control device,enum [off\|-\|CR10\|CR10H\|-\|CR20RF\|RT800\|single] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,7,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,7,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,7,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,7,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,7,1,1,48,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,7,1,1,49,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,7,1,1,50,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,7,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,7,1,1,52,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,7,1,1,53,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,7,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,7,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,7,1,1/2,56,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.solarinfl,solar influence,int8 (>=-5<=0),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,7,1,1,57,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.currsolarinfl,current solar influence,int8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,9,1,2,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.settemplow,set low temperature,uint8 (>=0<=0),C,true,number.thermostat_dhw_set_low_temperature,number.thermostat_dhw_settemplow,7,9,1,3,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.circmode,circulation pump mode,enum [off\|on\|auto\|own prog] (>=0<=0), ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,7,9,1,4,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.chargeduration,charge duration,uint8 (>=0<=0),minutes,true,number.thermostat_dhw_charge_duration,number.thermostat_dhw_chargeduration,7,9,15,5,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,7,9,1,6,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.extra,extra,boolean, ,false,binary_sensor.thermostat_dhw_extra,binary_sensor.thermostat_dhw_extra,7,9,1,7,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,7,9,1,8,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.disinfectday,disinfection day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.thermostat_dhw_disinfection_day,select.thermostat_dhw_disinfectday,7,9,1,9,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.disinfecttime,disinfection time,uint8 (>=0<=1431),minutes,true,number.thermostat_dhw_disinfection_time,number.thermostat_dhw_disinfecttime,7,9,15,10,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.dailyheating,daily heating,boolean (>=0<=0), ,true,switch.thermostat_dhw_daily_heating,switch.thermostat_dhw_dailyheating,7,9,1,11,1 +"Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.dailyheattime,daily heating time,uint8 (>=0<=1431),minutes,true,number.thermostat_dhw_daily_heating_time,number.thermostat_dhw_dailyheattime,7,9,15,12,1 +"ES72, RC20",thermostat,66,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"ES72, RC20",thermostat,66,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"ES72, RC20",thermostat,66,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"ES72, RC20",thermostat,66,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,7,0,1,51,1 +"ES72, RC20",thermostat,66,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/2,0,1 +"ES72, RC20",thermostat,66,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,23,1 +"ES73",thermostat,76,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"ES73",thermostat,76,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"ES73",thermostat,76,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"ES73",thermostat,76,display,display,enum [internal temperature\|internal setpoint\|external temperature\|burner temperature\|dhw temperature\|functioning mode\|time\|date\|smoke temperature] (>=0<=0), ,true,select.thermostat_display,select.thermostat_display,7,0,1,65,1 +"ES73",thermostat,76,language,language,enum [german\|dutch\|french\|italian], ,false,sensor.thermostat_language,sensor.thermostat_language,7,0,1,66,1 +"ES73",thermostat,76,clockoffset,clock offset,int8 (>=0<=0),seconds,true,number.thermostat_clock_offset,number.thermostat_clockoffset,7,0,1,67,1 +"ES73",thermostat,76,intoffset,internal temperature offset,int8 (>=0<=0),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,7,0,1/10,46,1 +"ES73",thermostat,76,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,7,0,1,51,1 +"ES73",thermostat,76,inttemp1,temperature sensor 1,int16,C,false,sensor.thermostat_temperature_sensor_1,sensor.thermostat_inttemp1,7,0,1/10,68,1 +"ES73",thermostat,76,inttemp2,temperature sensor 2,int16,C,false,sensor.thermostat_temperature_sensor_2,sensor.thermostat_inttemp2,7,0,1/10,69,1 +"ES73",thermostat,76,damping,damping outdoor temperature,boolean (>=0<=0), ,true,switch.thermostat_damping_outdoor_temperature,switch.thermostat_damping,7,0,1,52,1 +"ES73",thermostat,76,dampedoutdoortemp,damped outdoor temperature,int8,C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp,7,0,1,48,1 +"ES73",thermostat,76,building,building type,enum [light\|medium\|heavy] (>=0<=0), ,true,select.thermostat_building_type,select.thermostat_building,7,0,1,50,1 +"ES73",thermostat,76,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/2,0,1 +"ES73",thermostat,76,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"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,7,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,7,1,1,3,1 +"ES73",thermostat,76,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,8,1 +"ES73",thermostat,76,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,7,1,1,23,1 +"ES73",thermostat,76,hc1.holidaymode,holiday mode,boolean, ,false,binary_sensor.thermostat_hc1_holiday_mode,binary_sensor.thermostat_hc1_holidaymode,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,44,1 +"ES73",thermostat,76,hc1.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,7,1,1,68,13 +"ES73",thermostat,76,hc1.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,9,1,13,1 +"ES73",thermostat,76,dhw.circprog,circulation program,enum [std prog\|own prog] (>=0<=0), ,true,select.thermostat_dhw_circulation_program,select.thermostat_dhw_circprog,7,9,1,14,1 +"ES73",thermostat,76,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,7,9,1,8,1 +"ES73",thermostat,76,dhw.disinfectday,disinfection day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.thermostat_dhw_disinfection_day,select.thermostat_dhw_disinfectday,7,9,1,9,1 +"ES73",thermostat,76,dhw.disinfecthour,disinfection hour,uint8 (>=0<=23), ,true,number.thermostat_dhw_disinfection_hour,number.thermostat_dhw_disinfecthour,7,9,1,15,1 +"ES73",thermostat,76,dhw.maxtemp,maximum temperature,uint8 (>=0<=0),C,true,number.thermostat_dhw_maximum_temperature,number.thermostat_dhw_maxtemp,7,9,1,16,1 +"ES73",thermostat,76,dhw.onetimekey,one time key function,boolean (>=0<=0), ,true,switch.thermostat_dhw_one_time_key_function,switch.thermostat_dhw_onetimekey,7,9,1,17,1 +"ES73",thermostat,76,dhw.switchtime,program switchtime,string (>=0<=0), ,true,sensor.thermostat_dhw_program_switchtime,sensor.thermostat_dhw_switchtime,7,9,1,18,8 +"ES73",thermostat,76,dhw.circswitchtime,circulation program switchtime,string (>=0<=0), ,true,sensor.thermostat_dhw_circulation_program_switchtime,sensor.thermostat_dhw_circswitchtime,7,9,1,26,8 +"ES73",thermostat,76,dhw.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_dhw_holiday_dates,sensor.thermostat_dhw_holidays,7,9,1,34,13 +"ES73",thermostat,76,dhw.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_dhw_vacation_dates,sensor.thermostat_dhw_vacations,7,9,1,47,13 +"ES72, RC20",thermostat,113,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"ES72, RC20",thermostat,113,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"ES72, RC20",thermostat,113,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"ES72, RC20",thermostat,113,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,7,0,1,51,1 +"ES72, RC20",thermostat,113,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/2,0,1 +"ES72, RC20",thermostat,113,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,23,1 +"ES79",thermostat,156,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"ES79",thermostat,156,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"ES79",thermostat,156,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"ES79",thermostat,156,intoffset,internal temperature offset,int8 (>=-5<=5),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,7,0,1/10,46,1 +"ES79",thermostat,156,minexttemp,minimal external temperature,int8 (>=-30<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,7,0,1,51,1 +"ES79",thermostat,156,inttemp1,temperature sensor 1,int16,C,false,sensor.thermostat_temperature_sensor_1,sensor.thermostat_inttemp1,7,0,1/10,68,1 +"ES79",thermostat,156,inttemp2,temperature sensor 2,int16,C,false,sensor.thermostat_temperature_sensor_2,sensor.thermostat_inttemp2,7,0,1/10,69,1 +"ES79",thermostat,156,damping,damping outdoor temperature,boolean (>=0<=0), ,true,switch.thermostat_damping_outdoor_temperature,switch.thermostat_damping,7,0,1,52,1 +"ES79",thermostat,156,dampedoutdoortemp,damped outdoor temperature,int8,C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp,7,0,1,48,1 +"ES79",thermostat,156,building,building type,enum [light\|medium\|heavy] (>=0<=0), ,true,select.thermostat_building_type,select.thermostat_building,7,0,1,50,1 +"ES79",thermostat,156,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/2,0,1 +"ES79",thermostat,156,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"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,7,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,7,1,1,3,1 +"ES79",thermostat,156,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,8,1 +"ES79",thermostat,156,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,7,1,1,23,1 +"ES79",thermostat,156,hc1.holidaymode,holiday mode,boolean, ,false,binary_sensor.thermostat_hc1_holiday_mode,binary_sensor.thermostat_hc1_holidaymode,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,44,1 +"ES79",thermostat,156,hc1.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,7,1,1,68,13 +"ES79",thermostat,156,hc1.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,9,1,13,1 +"ES79",thermostat,156,dhw.circprog,circulation program,enum [std prog\|own prog] (>=0<=0), ,true,select.thermostat_dhw_circulation_program,select.thermostat_dhw_circprog,7,9,1,14,1 +"ES79",thermostat,156,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,7,9,1,8,1 +"ES79",thermostat,156,dhw.disinfectday,disinfection day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] (>=0<=0), ,true,select.thermostat_dhw_disinfection_day,select.thermostat_dhw_disinfectday,7,9,1,9,1 +"ES79",thermostat,156,dhw.disinfecthour,disinfection hour,uint8 (>=0<=23), ,true,number.thermostat_dhw_disinfection_hour,number.thermostat_dhw_disinfecthour,7,9,1,15,1 +"ES79",thermostat,156,dhw.maxtemp,maximum temperature,uint8 (>=60<=80),C,true,number.thermostat_dhw_maximum_temperature,number.thermostat_dhw_maxtemp,7,9,1,16,1 +"ES79",thermostat,156,dhw.onetimekey,one time key function,boolean (>=0<=0), ,true,switch.thermostat_dhw_one_time_key_function,switch.thermostat_dhw_onetimekey,7,9,1,17,1 +"ES79",thermostat,156,dhw.switchtime,program switchtime,string (>=0<=0), ,true,sensor.thermostat_dhw_program_switchtime,sensor.thermostat_dhw_switchtime,7,9,1,18,8 +"ES79",thermostat,156,dhw.circswitchtime,circulation program switchtime,string (>=0<=0), ,true,sensor.thermostat_dhw_circulation_program_switchtime,sensor.thermostat_dhw_circswitchtime,7,9,1,26,8 +"ES79",thermostat,156,dhw.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_dhw_holiday_dates,sensor.thermostat_dhw_holidays,7,9,1,34,13 +"ES79",thermostat,156,dhw.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_dhw_vacation_dates,sensor.thermostat_dhw_vacations,7,9,1,47,13 +"FW100",thermostat,105,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"FW100",thermostat,105,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"FW100",thermostat,105,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"FW100",thermostat,105,display,display,enum [dhw temperature\|date\|external temperature] (>=0<=0), ,true,select.thermostat_display,select.thermostat_display,7,0,1,65,1 +"FW100",thermostat,105,language,language,enum [german\|italian\|french\|dutch] (>=0<=0), ,true,select.thermostat_language,select.thermostat_language,7,0,1,66,1 +"FW100",thermostat,105,building,building type,uint8 (>=0<=0),%,true,number.thermostat_building_type,number.thermostat_building,7,0,10,50,1 +"FW100",thermostat,105,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,7,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,7,0,1,54,1 +"FW100",thermostat,105,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,7,0,1,55,1 +"FW100",thermostat,105,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,7,0,1/10,56,1 +"FW100",thermostat,105,fossilefactor,fossile energy factor,uint8 (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor,7,0,1/10,57,1 +"FW100",thermostat,105,electricfactor,electric energy factor,uint8 (>=0<=5), ,true,number.thermostat_electric_energy_factor,number.thermostat_electricfactor,7,0,1/10,58,1 +"FW100",thermostat,105,delayboiler,delay boiler support,uint8 (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler,7,0,1,59,1 +"FW100",thermostat,105,tempdiffboiler,temp diff boiler support,uint8 (>=1<=99),C,true,number.thermostat_temp_diff_boiler_support,number.thermostat_tempdiffboiler,7,0,1,60,1 +"FW100",thermostat,105,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/10,0,1 +"FW100",thermostat,105,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"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,7,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,7,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,7,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,7,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,7,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,7,1,1/2,18,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,26,1 +"FW100",thermostat,105,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,7,9,1,6,1 +"FW200",thermostat,106,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"FW200",thermostat,106,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"FW200",thermostat,106,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"FW200",thermostat,106,display,display,enum [dhw temperature\|date\|external temperature] (>=0<=0), ,true,select.thermostat_display,select.thermostat_display,7,0,1,65,1 +"FW200",thermostat,106,language,language,enum [german\|italian\|french\|dutch] (>=0<=0), ,true,select.thermostat_language,select.thermostat_language,7,0,1,66,1 +"FW200",thermostat,106,building,building type,uint8 (>=0<=0),%,true,number.thermostat_building_type,number.thermostat_building,7,0,10,50,1 +"FW200",thermostat,106,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,7,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,7,0,1,54,1 +"FW200",thermostat,106,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,7,0,1,55,1 +"FW200",thermostat,106,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,7,0,1/10,56,1 +"FW200",thermostat,106,fossilefactor,fossile energy factor,uint8 (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor,7,0,1/10,57,1 +"FW200",thermostat,106,electricfactor,electric energy factor,uint8 (>=0<=5), ,true,number.thermostat_electric_energy_factor,number.thermostat_electricfactor,7,0,1/10,58,1 +"FW200",thermostat,106,delayboiler,delay boiler support,uint8 (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler,7,0,1,59,1 +"FW200",thermostat,106,tempdiffboiler,temp diff boiler support,uint8 (>=1<=99),C,true,number.thermostat_temp_diff_boiler_support,number.thermostat_tempdiffboiler,7,0,1,60,1 +"FW200",thermostat,106,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/10,0,1 +"FW200",thermostat,106,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"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,7,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,7,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,7,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,7,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,7,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,7,1,1/2,18,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,26,1 +"FW200",thermostat,106,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,7,9,1,6,1 +"FR100",thermostat,107,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"FR100",thermostat,107,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"FR100",thermostat,107,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"FR100",thermostat,107,building,building type,uint8 (>=0<=0),%,true,number.thermostat_building_type,number.thermostat_building,7,0,10,50,1 +"FR100",thermostat,107,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,7,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,7,0,1,54,1 +"FR100",thermostat,107,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,7,0,1,55,1 +"FR100",thermostat,107,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,7,0,1/10,56,1 +"FR100",thermostat,107,fossilefactor,fossile energy factor,uint8 (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor,7,0,1/10,57,1 +"FR100",thermostat,107,electricfactor,electric energy factor,uint8 (>=0<=5), ,true,number.thermostat_electric_energy_factor,number.thermostat_electricfactor,7,0,1/10,58,1 +"FR100",thermostat,107,delayboiler,delay boiler support,uint8 (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler,7,0,1,59,1 +"FR100",thermostat,107,tempdiffboiler,temp diff boiler support,uint8 (>=1<=99),C,true,number.thermostat_temp_diff_boiler_support,number.thermostat_tempdiffboiler,7,0,1,60,1 +"FR100",thermostat,107,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/10,0,1 +"FR100",thermostat,107,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"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,7,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,7,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,7,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,7,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,7,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,7,1,1/2,18,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,26,1 +"FR100",thermostat,107,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,7,9,1,6,1 +"FR110",thermostat,108,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"FR110",thermostat,108,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"FR110",thermostat,108,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"FR110",thermostat,108,building,building type,uint8 (>=0<=0),%,true,number.thermostat_building_type,number.thermostat_building,7,0,10,50,1 +"FR110",thermostat,108,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,7,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,7,0,1,54,1 +"FR110",thermostat,108,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,7,0,1,55,1 +"FR110",thermostat,108,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,7,0,1/10,56,1 +"FR110",thermostat,108,fossilefactor,fossile energy factor,uint8 (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor,7,0,1/10,57,1 +"FR110",thermostat,108,electricfactor,electric energy factor,uint8 (>=0<=5), ,true,number.thermostat_electric_energy_factor,number.thermostat_electricfactor,7,0,1/10,58,1 +"FR110",thermostat,108,delayboiler,delay boiler support,uint8 (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler,7,0,1,59,1 +"FR110",thermostat,108,tempdiffboiler,temp diff boiler support,uint8 (>=1<=99),C,true,number.thermostat_temp_diff_boiler_support,number.thermostat_tempdiffboiler,7,0,1,60,1 +"FR110",thermostat,108,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/10,0,1 +"FR110",thermostat,108,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"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,7,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,7,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,7,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,7,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,7,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,7,1,1/2,18,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,26,1 +"FR110",thermostat,108,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,7,9,1,6,1 +"FB10",thermostat,109,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"FB10",thermostat,109,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"FB10",thermostat,109,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"FB10",thermostat,109,display,display,enum [dhw temperature\|date\|external temperature] (>=0<=0), ,true,select.thermostat_display,select.thermostat_display,7,0,1,65,1 +"FB10",thermostat,109,language,language,enum [german\|italian\|french\|dutch] (>=0<=0), ,true,select.thermostat_language,select.thermostat_language,7,0,1,66,1 +"FB10",thermostat,109,building,building type,uint8 (>=0<=0),%,true,number.thermostat_building_type,number.thermostat_building,7,0,10,50,1 +"FB10",thermostat,109,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,7,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,7,0,1,54,1 +"FB10",thermostat,109,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,7,0,1,55,1 +"FB10",thermostat,109,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,7,0,1/10,56,1 +"FB10",thermostat,109,fossilefactor,fossile energy factor,uint8 (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor,7,0,1/10,57,1 +"FB10",thermostat,109,electricfactor,electric energy factor,uint8 (>=0<=5), ,true,number.thermostat_electric_energy_factor,number.thermostat_electricfactor,7,0,1/10,58,1 +"FB10",thermostat,109,delayboiler,delay boiler support,uint8 (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler,7,0,1,59,1 +"FB10",thermostat,109,tempdiffboiler,temp diff boiler support,uint8 (>=1<=99),C,true,number.thermostat_temp_diff_boiler_support,number.thermostat_tempdiffboiler,7,0,1,60,1 +"FB10",thermostat,109,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/10,0,1 +"FB10",thermostat,109,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"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,7,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,7,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,7,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,7,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,7,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,7,1,1/2,18,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,26,1 +"FB10",thermostat,109,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,7,9,1,6,1 +"FB100",thermostat,110,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"FB100",thermostat,110,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"FB100",thermostat,110,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"FB100",thermostat,110,display,display,enum [dhw temperature\|date\|external temperature] (>=0<=0), ,true,select.thermostat_display,select.thermostat_display,7,0,1,65,1 +"FB100",thermostat,110,language,language,enum [german\|italian\|french\|dutch] (>=0<=0), ,true,select.thermostat_language,select.thermostat_language,7,0,1,66,1 +"FB100",thermostat,110,building,building type,uint8 (>=0<=0),%,true,number.thermostat_building_type,number.thermostat_building,7,0,10,50,1 +"FB100",thermostat,110,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,7,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,7,0,1,54,1 +"FB100",thermostat,110,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,7,0,1,55,1 +"FB100",thermostat,110,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,7,0,1/10,56,1 +"FB100",thermostat,110,fossilefactor,fossile energy factor,uint8 (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor,7,0,1/10,57,1 +"FB100",thermostat,110,electricfactor,electric energy factor,uint8 (>=0<=5), ,true,number.thermostat_electric_energy_factor,number.thermostat_electricfactor,7,0,1/10,58,1 +"FB100",thermostat,110,delayboiler,delay boiler support,uint8 (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler,7,0,1,59,1 +"FB100",thermostat,110,tempdiffboiler,temp diff boiler support,uint8 (>=1<=99),C,true,number.thermostat_temp_diff_boiler_support,number.thermostat_tempdiffboiler,7,0,1,60,1 +"FB100",thermostat,110,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/10,0,1 +"FB100",thermostat,110,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"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,7,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,7,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,7,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,7,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,7,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,7,1,1/2,18,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,26,1 +"FB100",thermostat,110,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,7,9,1,6,1 +"FR10",thermostat,111,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"FR10",thermostat,111,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"FR10",thermostat,111,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"FR10",thermostat,111,building,building type,uint8 (>=0<=0),%,true,number.thermostat_building_type,number.thermostat_building,7,0,10,50,1 +"FR10",thermostat,111,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,7,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,7,0,1,54,1 +"FR10",thermostat,111,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,7,0,1,55,1 +"FR10",thermostat,111,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,7,0,1/10,56,1 +"FR10",thermostat,111,fossilefactor,fossile energy factor,uint8 (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor,7,0,1/10,57,1 +"FR10",thermostat,111,electricfactor,electric energy factor,uint8 (>=0<=5), ,true,number.thermostat_electric_energy_factor,number.thermostat_electricfactor,7,0,1/10,58,1 +"FR10",thermostat,111,delayboiler,delay boiler support,uint8 (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler,7,0,1,59,1 +"FR10",thermostat,111,tempdiffboiler,temp diff boiler support,uint8 (>=1<=99),C,true,number.thermostat_temp_diff_boiler_support,number.thermostat_tempdiffboiler,7,0,1,60,1 +"FR10",thermostat,111,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/10,0,1 +"FR10",thermostat,111,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"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,7,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,7,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,7,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,7,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,7,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,7,1,1/2,18,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,26,1 +"FR10",thermostat,111,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,7,9,1,6,1 +"FW500",thermostat,116,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"FW500",thermostat,116,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"FW500",thermostat,116,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"FW500",thermostat,116,display,display,enum [dhw temperature\|date\|external temperature] (>=0<=0), ,true,select.thermostat_display,select.thermostat_display,7,0,1,65,1 +"FW500",thermostat,116,language,language,enum [german\|italian\|french\|dutch] (>=0<=0), ,true,select.thermostat_language,select.thermostat_language,7,0,1,66,1 +"FW500",thermostat,116,building,building type,uint8 (>=0<=0),%,true,number.thermostat_building_type,number.thermostat_building,7,0,10,50,1 +"FW500",thermostat,116,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,7,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,7,0,1,54,1 +"FW500",thermostat,116,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,7,0,1,55,1 +"FW500",thermostat,116,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,7,0,1/10,56,1 +"FW500",thermostat,116,fossilefactor,fossile energy factor,uint8 (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor,7,0,1/10,57,1 +"FW500",thermostat,116,electricfactor,electric energy factor,uint8 (>=0<=5), ,true,number.thermostat_electric_energy_factor,number.thermostat_electricfactor,7,0,1/10,58,1 +"FW500",thermostat,116,delayboiler,delay boiler support,uint8 (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler,7,0,1,59,1 +"FW500",thermostat,116,tempdiffboiler,temp diff boiler support,uint8 (>=1<=99),C,true,number.thermostat_temp_diff_boiler_support,number.thermostat_tempdiffboiler,7,0,1,60,1 +"FW500",thermostat,116,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/10,0,1 +"FW500",thermostat,116,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"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,7,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,7,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,7,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,7,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,7,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,7,1,1/2,18,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,26,1 +"FW500",thermostat,116,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,7,9,1,6,1 +"FR50",thermostat,147,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"FR50",thermostat,147,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"FR50",thermostat,147,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"FR50",thermostat,147,building,building type,uint8 (>=0<=0),%,true,number.thermostat_building_type,number.thermostat_building,7,0,10,50,1 +"FR50",thermostat,147,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,7,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,7,0,1,54,1 +"FR50",thermostat,147,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,7,0,1,55,1 +"FR50",thermostat,147,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,7,0,1/10,56,1 +"FR50",thermostat,147,fossilefactor,fossile energy factor,uint8 (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor,7,0,1/10,57,1 +"FR50",thermostat,147,electricfactor,electric energy factor,uint8 (>=0<=5), ,true,number.thermostat_electric_energy_factor,number.thermostat_electricfactor,7,0,1/10,58,1 +"FR50",thermostat,147,delayboiler,delay boiler support,uint8 (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler,7,0,1,59,1 +"FR50",thermostat,147,tempdiffboiler,temp diff boiler support,uint8 (>=1<=99),C,true,number.thermostat_temp_diff_boiler_support,number.thermostat_tempdiffboiler,7,0,1,60,1 +"FR50",thermostat,147,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/10,0,1 +"FR50",thermostat,147,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"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,7,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,7,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,7,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,7,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,7,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,7,1,1/2,18,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,26,1 +"FR50",thermostat,147,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,7,9,1,6,1 +"FR120",thermostat,191,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"FR120",thermostat,191,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"FR120",thermostat,191,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"FR120",thermostat,191,building,building type,uint8 (>=0<=0),%,true,number.thermostat_building_type,number.thermostat_building,7,0,10,50,1 +"FR120",thermostat,191,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,7,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,7,0,1,54,1 +"FR120",thermostat,191,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,7,0,1,55,1 +"FR120",thermostat,191,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,7,0,1/10,56,1 +"FR120",thermostat,191,fossilefactor,fossile energy factor,uint8 (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor,7,0,1/10,57,1 +"FR120",thermostat,191,electricfactor,electric energy factor,uint8 (>=0<=5), ,true,number.thermostat_electric_energy_factor,number.thermostat_electricfactor,7,0,1/10,58,1 +"FR120",thermostat,191,delayboiler,delay boiler support,uint8 (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler,7,0,1,59,1 +"FR120",thermostat,191,tempdiffboiler,temp diff boiler support,uint8 (>=1<=99),C,true,number.thermostat_temp_diff_boiler_support,number.thermostat_tempdiffboiler,7,0,1,60,1 +"FR120",thermostat,191,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/10,0,1 +"FR120",thermostat,191,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"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,7,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,7,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,7,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,7,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,7,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,7,1,1/2,18,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,26,1 +"FR120",thermostat,191,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,7,9,1,6,1 +"FW120",thermostat,192,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"FW120",thermostat,192,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"FW120",thermostat,192,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"FW120",thermostat,192,display,display,enum [dhw temperature\|date\|external temperature] (>=0<=0), ,true,select.thermostat_display,select.thermostat_display,7,0,1,65,1 +"FW120",thermostat,192,language,language,enum [german\|italian\|french\|dutch] (>=0<=0), ,true,select.thermostat_language,select.thermostat_language,7,0,1,66,1 +"FW120",thermostat,192,building,building type,uint8 (>=0<=0),%,true,number.thermostat_building_type,number.thermostat_building,7,0,10,50,1 +"FW120",thermostat,192,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,7,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,7,0,1,54,1 +"FW120",thermostat,192,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,7,0,1,55,1 +"FW120",thermostat,192,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,7,0,1/10,56,1 +"FW120",thermostat,192,fossilefactor,fossile energy factor,uint8 (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor,7,0,1/10,57,1 +"FW120",thermostat,192,electricfactor,electric energy factor,uint8 (>=0<=5), ,true,number.thermostat_electric_energy_factor,number.thermostat_electricfactor,7,0,1/10,58,1 +"FW120",thermostat,192,delayboiler,delay boiler support,uint8 (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler,7,0,1,59,1 +"FW120",thermostat,192,tempdiffboiler,temp diff boiler support,uint8 (>=1<=99),C,true,number.thermostat_temp_diff_boiler_support,number.thermostat_tempdiffboiler,7,0,1,60,1 +"FW120",thermostat,192,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/10,0,1 +"FW120",thermostat,192,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"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,7,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,7,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,7,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,7,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,7,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,7,1,1/2,18,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,26,1 +"FW120",thermostat,192,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,7,9,1,6,1 +"RT800, RC220",thermostat,3,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"RT800, RC220",thermostat,3,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"RT800, RC220",thermostat,3,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"RT800, RC220",thermostat,3,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/2,0,1 +"RT800, RC220",thermostat,3,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"RT800, RC220",thermostat,3,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,7,1,1,2,1 +"RC100H, CR10H",thermostat,200,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"RC100H, CR10H",thermostat,200,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"RC100H, CR10H",thermostat,200,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"RC100H, CR10H",thermostat,200,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/2,0,1 +"RC100H, CR10H",thermostat,200,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"RC100H, CR10H",thermostat,200,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,7,1,1,2,1 +"RC120RF, TR120RF, CR20RF",thermostat,249,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,7,0,1,0,8 +"RC120RF, TR120RF, CR20RF",thermostat,249,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,7,0,1,8,25 +"RC120RF, TR120RF, CR20RF",thermostat,249,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,7,0,1,33,13 +"RC120RF, TR120RF, CR20RF",thermostat,249,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,7,1,1/2,0,1 +"RC120RF, TR120RF, CR20RF",thermostat,249,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,7,1,1/10,1,1 +"RC120RF, TR120RF, CR20RF",thermostat,249,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,7,1,1,2,1 +"XCUMixer",mixer,8,hc1.flowtemphc,flow temperature (TC1),uint16,C,false,sensor.mixer_hc1_flow_temperature_(TC1),sensor.mixer_hc1_flowtemphc,8,1,1/10,0,1 +"XCUMixer",mixer,8,hc1.valvestatus,mixing valve actuator (VC1),uint8,%,false,sensor.mixer_hc1_mixing_valve_actuator_(VC1),sensor.mixer_hc1_valvestatus,8,1,1,1,1 +"XCUMixer",mixer,8,hc1.flowsettemp,setpoint flow temperature,uint8 (>=0<=0),C,true,number.mixer_hc1_setpoint_flow_temperature,number.mixer_hc1_flowsettemp,8,1,1,2,1 +"XCUMixer",mixer,8,hc1.pumpstatus,pump status (PC1),boolean (>=0<=0), ,true,switch.mixer_hc1_pump_status_(PC1),switch.mixer_hc1_pumpstatus,8,1,1,3,1 +"XCUMixer",mixer,8,hc1.activated,activated,boolean (>=0<=0), ,true,switch.mixer_hc1_activated,switch.mixer_hc1_activated,8,1,1,4,1 +"XCUMixer",mixer,8,hc1.flow,Durchfluss,uint16,l/h,false,sensor.mixer_hc1_Durchfluss,sensor.mixer_hc1_flow,8,1,1,5,1 +"XCUMixer",mixer,8,hc1.setdiffpress,set differential pressure,uint8 (>=0<=0),mbar,true,number.mixer_hc1_set_differential_pressure,number.mixer_hc1_setdiffpress,8,1,50,6,1 +"XCUMixer",mixer,8,hc1.valvesettime,time to set valve,uint8 (>=10<=600),seconds,true,number.mixer_hc1_time_to_set_valve,number.mixer_hc1_valvesettime,8,1,10,7,1 +"XCUMixer",mixer,8,hc1.flowtempoffset,flow temperature offset for mixer,uint8 (>=0<=20),K,true,number.mixer_hc1_flow_temperature_offset_for_mixer,number.mixer_hc1_flowtempoffset,8,1,1,8,1 +"XCUMixer",mixer,8,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.mixer_hc1_dhw_priority,switch.mixer_hc1_dhwprio,8,1,1,9,1 +"MM10",mixer,69,hc1.flowtemphc,flow temperature (TC1),uint16,C,false,sensor.mixer_hc1_flow_temperature_(TC1),sensor.mixer_hc1_flowtemphc,8,1,1/10,0,1 +"MM10",mixer,69,hc1.valvestatus,mixing valve actuator (VC1),int8,%,false,sensor.mixer_hc1_mixing_valve_actuator_(VC1),sensor.mixer_hc1_valvestatus,8,1,1,1,1 +"MM10",mixer,69,hc1.flowsettemp,setpoint flow temperature,uint8 (>=0<=0),C,true,number.mixer_hc1_setpoint_flow_temperature,number.mixer_hc1_flowsettemp,8,1,1,2,1 +"MM10",mixer,69,hc1.pumpstatus,pump status (PC1),boolean (>=0<=0), ,true,switch.mixer_hc1_pump_status_(PC1),switch.mixer_hc1_pumpstatus,8,1,1,3,1 +"MM10",mixer,69,hc1.activated,activated,boolean (>=0<=0), ,true,switch.mixer_hc1_activated,switch.mixer_hc1_activated,8,1,1,4,1 +"MM10",mixer,69,hc1.valvesettime,time to set valve,uint8 (>=10<=600),seconds,true,number.mixer_hc1_time_to_set_valve,number.mixer_hc1_valvesettime,8,1,10,7,1 +"IPM",mixer,100,hc1.flowtemphc,flow temperature (TC1),uint16,C,false,sensor.mixer_hc1_flow_temperature_(TC1),sensor.mixer_hc1_flowtemphc,8,1,1/10,0,1 +"IPM",mixer,100,hc1.valvestatus,mixing valve actuator (VC1),uint8,%,false,sensor.mixer_hc1_mixing_valve_actuator_(VC1),sensor.mixer_hc1_valvestatus,8,1,1,1,1 +"IPM",mixer,100,hc1.flowsettemp,setpoint flow temperature,uint8 (>=0<=0),C,true,number.mixer_hc1_setpoint_flow_temperature,number.mixer_hc1_flowsettemp,8,1,1,2,1 +"IPM",mixer,100,hc1.pumpstatus,pump status (PC1),boolean (>=0<=0), ,true,switch.mixer_hc1_pump_status_(PC1),switch.mixer_hc1_pumpstatus,8,1,1,3,1 +"IPM",mixer,100,hc1.flowtempvf,flow temperature in header (T0/Vf),uint16,C,false,sensor.mixer_hc1_flow_temperature_in_header_(T0/Vf),sensor.mixer_hc1_flowtempvf,8,1,1/10,10,1 +"IPM2",mixer,102,hc1.flowtemphc,flow temperature (TC1),uint16,C,false,sensor.mixer_hc1_flow_temperature_(TC1),sensor.mixer_hc1_flowtemphc,8,1,1/10,0,1 +"IPM2",mixer,102,hc1.valvestatus,mixing valve actuator (VC1),uint8,%,false,sensor.mixer_hc1_mixing_valve_actuator_(VC1),sensor.mixer_hc1_valvestatus,8,1,1,1,1 +"IPM2",mixer,102,hc1.flowsettemp,setpoint flow temperature,uint8 (>=0<=0),C,true,number.mixer_hc1_setpoint_flow_temperature,number.mixer_hc1_flowsettemp,8,1,1,2,1 +"IPM2",mixer,102,hc1.pumpstatus,pump status (PC1),boolean (>=0<=0), ,true,switch.mixer_hc1_pump_status_(PC1),switch.mixer_hc1_pumpstatus,8,1,1,3,1 +"IPM2",mixer,102,hc1.flowtempvf,flow temperature in header (T0/Vf),uint16,C,false,sensor.mixer_hc1_flow_temperature_in_header_(T0/Vf),sensor.mixer_hc1_flowtempvf,8,1,1/10,10,1 +"MM50",mixer,159,hc1.flowtemphc,flow temperature (TC1),uint16,C,false,sensor.mixer_hc1_flow_temperature_(TC1),sensor.mixer_hc1_flowtemphc,8,1,1/10,0,1 +"MM50",mixer,159,hc1.valvestatus,mixing valve actuator (VC1),uint8,%,false,sensor.mixer_hc1_mixing_valve_actuator_(VC1),sensor.mixer_hc1_valvestatus,8,1,1,1,1 +"MM50",mixer,159,hc1.flowsettemp,setpoint flow temperature,uint8 (>=0<=0),C,true,number.mixer_hc1_setpoint_flow_temperature,number.mixer_hc1_flowsettemp,8,1,1,2,1 +"MM50",mixer,159,hc1.pumpstatus,pump status (PC1),boolean (>=0<=0), ,true,switch.mixer_hc1_pump_status_(PC1),switch.mixer_hc1_pumpstatus,8,1,1,3,1 +"MM50",mixer,159,hc1.activated,activated,boolean (>=0<=0), ,true,switch.mixer_hc1_activated,switch.mixer_hc1_activated,8,1,1,4,1 +"MM50",mixer,159,hc1.flow,Durchfluss,uint16,l/h,false,sensor.mixer_hc1_Durchfluss,sensor.mixer_hc1_flow,8,1,1,5,1 +"MM50",mixer,159,hc1.setdiffpress,set differential pressure,uint8 (>=0<=0),mbar,true,number.mixer_hc1_set_differential_pressure,number.mixer_hc1_setdiffpress,8,1,50,6,1 +"MM50",mixer,159,hc1.valvesettime,time to set valve,uint8 (>=10<=600),seconds,true,number.mixer_hc1_time_to_set_valve,number.mixer_hc1_valvesettime,8,1,10,7,1 +"MM50",mixer,159,hc1.flowtempoffset,flow temperature offset for mixer,uint8 (>=0<=20),K,true,number.mixer_hc1_flow_temperature_offset_for_mixer,number.mixer_hc1_flowtempoffset,8,1,1,8,1 +"MM50",mixer,159,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.mixer_hc1_dhw_priority,switch.mixer_hc1_dhwprio,8,1,1,9,1 +"MM100",mixer,160,hc1.flowtemphc,flow temperature (TC1),uint16,C,false,sensor.mixer_hc1_flow_temperature_(TC1),sensor.mixer_hc1_flowtemphc,8,1,1/10,0,1 +"MM100",mixer,160,hc1.valvestatus,mixing valve actuator (VC1),uint8,%,false,sensor.mixer_hc1_mixing_valve_actuator_(VC1),sensor.mixer_hc1_valvestatus,8,1,1,1,1 +"MM100",mixer,160,hc1.flowsettemp,setpoint flow temperature,uint8 (>=0<=0),C,true,number.mixer_hc1_setpoint_flow_temperature,number.mixer_hc1_flowsettemp,8,1,1,2,1 +"MM100",mixer,160,hc1.pumpstatus,pump status (PC1),boolean (>=0<=0), ,true,switch.mixer_hc1_pump_status_(PC1),switch.mixer_hc1_pumpstatus,8,1,1,3,1 +"MM100",mixer,160,hc1.activated,activated,boolean (>=0<=0), ,true,switch.mixer_hc1_activated,switch.mixer_hc1_activated,8,1,1,4,1 +"MM100",mixer,160,hc1.flow,Durchfluss,uint16,l/h,false,sensor.mixer_hc1_Durchfluss,sensor.mixer_hc1_flow,8,1,1,5,1 +"MM100",mixer,160,hc1.setdiffpress,set differential pressure,uint8 (>=0<=0),mbar,true,number.mixer_hc1_set_differential_pressure,number.mixer_hc1_setdiffpress,8,1,50,6,1 +"MM100",mixer,160,hc1.valvesettime,time to set valve,uint8 (>=10<=600),seconds,true,number.mixer_hc1_time_to_set_valve,number.mixer_hc1_valvesettime,8,1,10,7,1 +"MM100",mixer,160,hc1.flowtempoffset,flow temperature offset for mixer,uint8 (>=0<=20),K,true,number.mixer_hc1_flow_temperature_offset_for_mixer,number.mixer_hc1_flowtempoffset,8,1,1,8,1 +"MM100",mixer,160,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.mixer_hc1_dhw_priority,switch.mixer_hc1_dhwprio,8,1,1,9,1 +"MM200",mixer,161,hc1.flowtemphc,flow temperature (TC1),uint16,C,false,sensor.mixer_hc1_flow_temperature_(TC1),sensor.mixer_hc1_flowtemphc,8,1,1/10,0,1 +"MM200",mixer,161,hc1.valvestatus,mixing valve actuator (VC1),uint8,%,false,sensor.mixer_hc1_mixing_valve_actuator_(VC1),sensor.mixer_hc1_valvestatus,8,1,1,1,1 +"MM200",mixer,161,hc1.flowsettemp,setpoint flow temperature,uint8 (>=0<=0),C,true,number.mixer_hc1_setpoint_flow_temperature,number.mixer_hc1_flowsettemp,8,1,1,2,1 +"MM200",mixer,161,hc1.pumpstatus,pump status (PC1),boolean (>=0<=0), ,true,switch.mixer_hc1_pump_status_(PC1),switch.mixer_hc1_pumpstatus,8,1,1,3,1 +"MM200",mixer,161,hc1.activated,activated,boolean (>=0<=0), ,true,switch.mixer_hc1_activated,switch.mixer_hc1_activated,8,1,1,4,1 +"MM200",mixer,161,hc1.flow,Durchfluss,uint16,l/h,false,sensor.mixer_hc1_Durchfluss,sensor.mixer_hc1_flow,8,1,1,5,1 +"MM200",mixer,161,hc1.setdiffpress,set differential pressure,uint8 (>=0<=0),mbar,true,number.mixer_hc1_set_differential_pressure,number.mixer_hc1_setdiffpress,8,1,50,6,1 +"MM200",mixer,161,hc1.valvesettime,time to set valve,uint8 (>=10<=600),seconds,true,number.mixer_hc1_time_to_set_valve,number.mixer_hc1_valvesettime,8,1,10,7,1 +"MM200",mixer,161,hc1.flowtempoffset,flow temperature offset for mixer,uint8 (>=0<=20),K,true,number.mixer_hc1_flow_temperature_offset_for_mixer,number.mixer_hc1_flowtempoffset,8,1,1,8,1 +"MM200",mixer,161,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.mixer_hc1_dhw_priority,switch.mixer_hc1_dhwprio,8,1,1,9,1 +"MZ100",mixer,193,hc1.flowtemphc,flow temperature (TC1),uint16,C,false,sensor.mixer_hc1_flow_temperature_(TC1),sensor.mixer_hc1_flowtemphc,8,1,1/10,0,1 +"MZ100",mixer,193,hc1.valvestatus,mixing valve actuator (VC1),uint8,%,false,sensor.mixer_hc1_mixing_valve_actuator_(VC1),sensor.mixer_hc1_valvestatus,8,1,1,1,1 +"MZ100",mixer,193,hc1.flowsettemp,setpoint flow temperature,uint8 (>=0<=0),C,true,number.mixer_hc1_setpoint_flow_temperature,number.mixer_hc1_flowsettemp,8,1,1,2,1 +"MZ100",mixer,193,hc1.pumpstatus,pump status (PC1),boolean (>=0<=0), ,true,switch.mixer_hc1_pump_status_(PC1),switch.mixer_hc1_pumpstatus,8,1,1,3,1 +"MZ100",mixer,193,hc1.activated,activated,boolean (>=0<=0), ,true,switch.mixer_hc1_activated,switch.mixer_hc1_activated,8,1,1,4,1 +"MZ100",mixer,193,hc1.flow,Durchfluss,uint16,l/h,false,sensor.mixer_hc1_Durchfluss,sensor.mixer_hc1_flow,8,1,1,5,1 +"MZ100",mixer,193,hc1.setdiffpress,set differential pressure,uint8 (>=0<=0),mbar,true,number.mixer_hc1_set_differential_pressure,number.mixer_hc1_setdiffpress,8,1,50,6,1 +"MZ100",mixer,193,hc1.valvesettime,time to set valve,uint8 (>=10<=600),seconds,true,number.mixer_hc1_time_to_set_valve,number.mixer_hc1_valvesettime,8,1,10,7,1 +"MZ100",mixer,193,hc1.flowtempoffset,flow temperature offset for mixer,uint8 (>=0<=20),K,true,number.mixer_hc1_flow_temperature_offset_for_mixer,number.mixer_hc1_flowtempoffset,8,1,1,8,1 +"MZ100",mixer,193,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.mixer_hc1_dhw_priority,switch.mixer_hc1_dhwprio,8,1,1,9,1 +"HM210",mixer,248,hc1.flowtemphc,flow temperature (TC1),uint16,C,false,sensor.mixer_hc1_flow_temperature_(TC1),sensor.mixer_hc1_flowtemphc,8,1,1/10,0,1 +"HM210",mixer,248,hc1.valvestatus,mixing valve actuator (VC1),uint8,%,false,sensor.mixer_hc1_mixing_valve_actuator_(VC1),sensor.mixer_hc1_valvestatus,8,1,1,1,1 +"HM210",mixer,248,hc1.flowsettemp,setpoint flow temperature,uint8 (>=0<=0),C,true,number.mixer_hc1_setpoint_flow_temperature,number.mixer_hc1_flowsettemp,8,1,1,2,1 +"HM210",mixer,248,hc1.pumpstatus,pump status (PC1),boolean (>=0<=0), ,true,switch.mixer_hc1_pump_status_(PC1),switch.mixer_hc1_pumpstatus,8,1,1,3,1 +"HM210",mixer,248,hc1.activated,activated,boolean (>=0<=0), ,true,switch.mixer_hc1_activated,switch.mixer_hc1_activated,8,1,1,4,1 +"HM210",mixer,248,hc1.flow,Durchfluss,uint16,l/h,false,sensor.mixer_hc1_Durchfluss,sensor.mixer_hc1_flow,8,1,1,5,1 +"HM210",mixer,248,hc1.setdiffpress,set differential pressure,uint8 (>=0<=0),mbar,true,number.mixer_hc1_set_differential_pressure,number.mixer_hc1_setdiffpress,8,1,50,6,1 +"HM210",mixer,248,hc1.valvesettime,time to set valve,uint8 (>=10<=600),seconds,true,number.mixer_hc1_time_to_set_valve,number.mixer_hc1_valvesettime,8,1,10,7,1 +"HM210",mixer,248,hc1.flowtempoffset,flow temperature offset for mixer,uint8 (>=0<=20),K,true,number.mixer_hc1_flow_temperature_offset_for_mixer,number.mixer_hc1_flowtempoffset,8,1,1,8,1 +"HM210",mixer,248,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.mixer_hc1_dhw_priority,switch.mixer_hc1_dhwprio,8,1,1,9,1 +"SM10",solar,73,collectortemp,collector temperature (TS1),int16,C,false,sensor.solar_collector_temperature_(TS1),sensor.solar_collectortemp,9,0,1/10,0,1 +"SM10",solar,73,cylbottomtemp,cylinder bottom temperature (TS2),int16,C,false,sensor.solar_cylinder_bottom_temperature_(TS2),sensor.solar_cylbottomtemp,9,0,1/10,1,1 +"SM10",solar,73,solarpump,pump (PS1),boolean, ,false,binary_sensor.solar_pump_(PS1),binary_sensor.solar_solarpump,9,0,1,2,1 +"SM10",solar,73,pumpworktime,pump working time,time,minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime,9,0,1,3,2 +"SM10",solar,73,cylmaxtemp,maximum cylinder temperature,uint8 (>=0<=0),C,true,number.solar_maximum_cylinder_temperature,number.solar_cylmaxtemp,9,0,1,5,1 +"SM10",solar,73,collectorshutdown,collector shutdown,boolean, ,false,binary_sensor.solar_collector_shutdown,binary_sensor.solar_collectorshutdown,9,0,1,6,1 +"SM10",solar,73,cylheated,cyl heated,boolean, ,false,binary_sensor.solar_cyl_heated,binary_sensor.solar_cylheated,9,0,1,7,1 +"SM10",solar,73,solarpumpmod,pump modulation (PS1),uint8,%,false,sensor.solar_pump_modulation_(PS1),sensor.solar_solarpumpmod,9,0,1,8,1 +"SM10",solar,73,pumpminmod,minimum pump modulation,uint8 (>=0<=0),%,true,number.solar_minimum_pump_modulation,number.solar_pumpminmod,9,0,1,9,1 +"SM10",solar,73,turnondiff,pump turn on difference,uint8 (>=0<=0),C,true,number.solar_pump_turn_on_difference,number.solar_turnondiff,9,0,1,10,1 +"SM10",solar,73,turnoffdiff,pump turn off difference,uint8 (>=0<=0),C,true,number.solar_pump_turn_off_difference,number.solar_turnoffdiff,9,0,1,11,1 +"SM10",solar,73,solarpower,actual solar power,int16,W,false,sensor.solar_actual_solar_power,sensor.solar_solarpower,9,0,1,12,1 +"SM10",solar,73,energylasthour,energy last hour,uint24,Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour,9,0,1/10,13,2 +"SM10",solar,73,maxflow,maximum solar flow,uint8 (>=0<=0),l/min,true,number.solar_maximum_solar_flow,number.solar_maxflow,9,0,1/10,15,1 +"SM10",solar,73,dhw.mintemp,minimum temperature,uint8 (>=0<=0),C,true,number.solar_dhw_minimum_temperature,number.solar_dhw_mintemp,9,9,1,0,1 +"SM10",solar,73,solarenabled,solarmodule enabled,boolean (>=0<=0), ,true,switch.solar_solarmodule_enabled,switch.solar_solarenabled,9,0,1,16,1 +"ISM1",solar,101,collectortemp,collector temperature (TS1),int16,C,false,sensor.solar_collector_temperature_(TS1),sensor.solar_collectortemp,9,0,1/10,0,1 +"ISM1",solar,101,cylbottomtemp,cylinder bottom temperature (TS2),int16,C,false,sensor.solar_cylinder_bottom_temperature_(TS2),sensor.solar_cylbottomtemp,9,0,1/10,1,1 +"ISM1",solar,101,solarpump,pump (PS1),boolean, ,false,binary_sensor.solar_pump_(PS1),binary_sensor.solar_solarpump,9,0,1,2,1 +"ISM1",solar,101,pumpworktime,pump working time,time,minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime,9,0,1,3,2 +"ISM1",solar,101,cylmaxtemp,maximum cylinder temperature,uint8 (>=0<=0),C,true,number.solar_maximum_cylinder_temperature,number.solar_cylmaxtemp,9,0,1,5,1 +"ISM1",solar,101,collectorshutdown,collector shutdown,boolean, ,false,binary_sensor.solar_collector_shutdown,binary_sensor.solar_collectorshutdown,9,0,1,6,1 +"ISM1",solar,101,cylheated,cyl heated,boolean, ,false,binary_sensor.solar_cyl_heated,binary_sensor.solar_cylheated,9,0,1,7,1 +"ISM1",solar,101,cylmiddletemp,cylinder middle temperature (TS14),int16,C,false,sensor.solar_cylinder_middle_temperature_(TS14),sensor.solar_cylmiddletemp,9,0,1/10,17,1 +"ISM1",solar,101,retheatassist,return temperature heat assistance (TS4),int16,C,false,sensor.solar_return_temperature_heat_assistance_(TS4),sensor.solar_retheatassist,9,0,1/10,18,1 +"ISM1",solar,101,heatassistvalve,heat assistance valve (M1),boolean, ,false,binary_sensor.solar_heat_assistance_valve_(M1),binary_sensor.solar_heatassistvalve,9,0,1,19,1 +"ISM1",solar,101,energylasthour,energy last hour,uint24,Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour,9,0,1/10,13,2 +"ISM2",solar,103,collectortemp,collector temperature (TS1),int16,C,false,sensor.solar_collector_temperature_(TS1),sensor.solar_collectortemp,9,0,1/10,0,1 +"ISM2",solar,103,cylbottomtemp,cylinder bottom temperature (TS2),int16,C,false,sensor.solar_cylinder_bottom_temperature_(TS2),sensor.solar_cylbottomtemp,9,0,1/10,1,1 +"ISM2",solar,103,solarpump,pump (PS1),boolean, ,false,binary_sensor.solar_pump_(PS1),binary_sensor.solar_solarpump,9,0,1,2,1 +"ISM2",solar,103,pumpworktime,pump working time,time,minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime,9,0,1,3,2 +"ISM2",solar,103,cylmaxtemp,maximum cylinder temperature,uint8 (>=0<=0),C,true,number.solar_maximum_cylinder_temperature,number.solar_cylmaxtemp,9,0,1,5,1 +"ISM2",solar,103,collectorshutdown,collector shutdown,boolean, ,false,binary_sensor.solar_collector_shutdown,binary_sensor.solar_collectorshutdown,9,0,1,6,1 +"ISM2",solar,103,cylheated,cyl heated,boolean, ,false,binary_sensor.solar_cyl_heated,binary_sensor.solar_cylheated,9,0,1,7,1 +"ISM2",solar,103,cylmiddletemp,cylinder middle temperature (TS14),int16,C,false,sensor.solar_cylinder_middle_temperature_(TS14),sensor.solar_cylmiddletemp,9,0,1/10,17,1 +"ISM2",solar,103,retheatassist,return temperature heat assistance (TS4),int16,C,false,sensor.solar_return_temperature_heat_assistance_(TS4),sensor.solar_retheatassist,9,0,1/10,18,1 +"ISM2",solar,103,heatassistvalve,heat assistance valve (M1),boolean, ,false,binary_sensor.solar_heat_assistance_valve_(M1),binary_sensor.solar_heatassistvalve,9,0,1,19,1 +"ISM2",solar,103,energylasthour,energy last hour,uint24,Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour,9,0,1/10,13,2 +"SM50",solar,162,collectortemp,collector temperature (TS1),int16,C,false,sensor.solar_collector_temperature_(TS1),sensor.solar_collectortemp,9,0,1/10,0,1 +"SM50",solar,162,cylbottomtemp,cylinder bottom temperature (TS2),int16,C,false,sensor.solar_cylinder_bottom_temperature_(TS2),sensor.solar_cylbottomtemp,9,0,1/10,1,1 +"SM50",solar,162,solarpump,pump (PS1),boolean, ,false,binary_sensor.solar_pump_(PS1),binary_sensor.solar_solarpump,9,0,1,2,1 +"SM50",solar,162,pumpworktime,pump working time,time,minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime,9,0,1,3,2 +"SM50",solar,162,cylmaxtemp,maximum cylinder temperature,uint8 (>=0<=0),C,true,number.solar_maximum_cylinder_temperature,number.solar_cylmaxtemp,9,0,1,5,1 +"SM50",solar,162,collectorshutdown,collector shutdown,boolean, ,false,binary_sensor.solar_collector_shutdown,binary_sensor.solar_collectorshutdown,9,0,1,6,1 +"SM50",solar,162,cylheated,cyl heated,boolean, ,false,binary_sensor.solar_cyl_heated,binary_sensor.solar_cylheated,9,0,1,7,1 +"SM50",solar,162,solarpumpmod,pump modulation (PS1),uint8,%,false,sensor.solar_pump_modulation_(PS1),sensor.solar_solarpumpmod,9,0,1,8,1 +"SM50",solar,162,pumpminmod,minimum pump modulation,uint8 (>=0<=0),%,true,number.solar_minimum_pump_modulation,number.solar_pumpminmod,9,0,5,9,1 +"SM50",solar,162,turnondiff,pump turn on difference,uint8 (>=0<=0),C,true,number.solar_pump_turn_on_difference,number.solar_turnondiff,9,0,1/10,10,1 +"SM50",solar,162,turnoffdiff,pump turn off difference,uint8 (>=0<=0),C,true,number.solar_pump_turn_off_difference,number.solar_turnoffdiff,9,0,1/10,11,1 +"SM50",solar,162,collector2temp,collector 2 temperature (TS7),int16,C,false,sensor.solar_collector_2_temperature_(TS7),sensor.solar_collector2temp,9,0,1/10,20,1 +"SM50",solar,162,cylmiddletemp,cylinder middle temperature (TS14),int16,C,false,sensor.solar_cylinder_middle_temperature_(TS14),sensor.solar_cylmiddletemp,9,0,1/10,17,1 +"SM50",solar,162,ts3,cylinder middle temperature (TS3),int16,C,false,sensor.solar_cylinder_middle_temperature_(TS3),sensor.solar_ts3,9,0,1/10,21,1 +"SM50",solar,162,retheatassist,return temperature heat assistance (TS4),int16,C,false,sensor.solar_return_temperature_heat_assistance_(TS4),sensor.solar_retheatassist,9,0,1/10,18,1 +"SM50",solar,162,ts8,(TS8),int16,C,false,sensor.solar_(TS8),sensor.solar_ts8,9,0,1/10,22,1 +"SM50",solar,162,ts16,(TS16),int16,C,false,sensor.solar_(TS16),sensor.solar_ts16,9,0,1/10,23,1 +"SM50",solar,162,heatassistvalve,heat assistance valve (M1),boolean, ,false,binary_sensor.solar_heat_assistance_valve_(M1),binary_sensor.solar_heatassistvalve,9,0,1,19,1 +"SM50",solar,162,heatassistpower,heat assistance valve power (M1),uint8,%,false,sensor.solar_heat_assistance_valve_power_(M1),sensor.solar_heatassistpower,9,0,1,24,1 +"SM50",solar,162,solarpump2,pump 2 (PS4),boolean, ,false,binary_sensor.solar_pump_2_(PS4),binary_sensor.solar_solarpump2,9,0,1,25,1 +"SM50",solar,162,solarpump2mod,pump 2 modulation (PS4),uint8,%,false,sensor.solar_pump_2_modulation_(PS4),sensor.solar_solarpump2mod,9,0,1,26,1 +"SM50",solar,162,cyl2bottomtemp,second cylinder bottom temperature (TS5),int16,C,false,sensor.solar_second_cylinder_bottom_temperature_(TS5),sensor.solar_cyl2bottomtemp,9,0,1/10,27,1 +"SM50",solar,162,cyl3bottomtemp,third cylinder bottom temperature (TS11),int16,C,false,sensor.solar_third_cylinder_bottom_temperature_(TS11),sensor.solar_cyl3bottomtemp,9,0,1/10,28,1 +"SM50",solar,162,cyltoptemp,cylinder top temperature (TS10),int16,C,false,sensor.solar_cylinder_top_temperature_(TS10),sensor.solar_cyltoptemp,9,0,1/10,29,1 +"SM50",solar,162,heatexchangertemp,heat exchanger temperature (TS6),int16,C,false,sensor.solar_heat_exchanger_temperature_(TS6),sensor.solar_heatexchangertemp,9,0,1/10,30,1 +"SM50",solar,162,cylpumpmod,cylinder pump modulation (PS5),uint8,%,false,sensor.solar_cylinder_pump_modulation_(PS5),sensor.solar_cylpumpmod,9,0,1,31,1 +"SM50",solar,162,valvestatus,valve status,boolean, ,false,binary_sensor.solar_valve_status,binary_sensor.solar_valvestatus,9,0,1,32,1 +"SM50",solar,162,vs1status,valve status VS1,boolean, ,false,binary_sensor.solar_valve_status_VS1,binary_sensor.solar_vs1status,9,0,1,33,1 +"SM50",solar,162,vs3status,valve status VS3,boolean, ,false,binary_sensor.solar_valve_status_VS3,binary_sensor.solar_vs3status,9,0,1,34,1 +"SM50",solar,162,transferpump,transfer pump,boolean, ,false,binary_sensor.solar_transfer_pump,binary_sensor.solar_transferpump,9,0,1,35,1 +"SM50",solar,162,transferpumpmod,transfer pump modulation,uint8,%,false,sensor.solar_transfer_pump_modulation,sensor.solar_transferpumpmod,9,0,1,36,1 +"SM50",solar,162,collectormaxtemp,maximum collector temperature,uint8 (>=0<=0),C,true,number.solar_maximum_collector_temperature,number.solar_collectormaxtemp,9,0,1,37,1 +"SM50",solar,162,collectormintemp,minimum collector temperature,uint8 (>=0<=0),C,true,number.solar_minimum_collector_temperature,number.solar_collectormintemp,9,0,1,38,1 +"SM50",solar,162,energylasthour,energy last hour,uint24,Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour,9,0,1/10,13,2 +"SM50",solar,162,energytoday,total energy today,uint24,Wh,false,sensor.solar_total_energy_today,sensor.solar_energytoday,9,0,1,39,2 +"SM50",solar,162,energytotal,total energy,uint24,kWh,false,sensor.solar_total_energy,sensor.solar_energytotal,9,0,1/10,41,2 +"SM50",solar,162,pump2worktime,pump 2 working time,time,minutes,false,sensor.solar_pump_2_working_time,sensor.solar_pump2worktime,9,0,1,43,2 +"SM50",solar,162,m1worktime,differential control working time,time,minutes,false,sensor.solar_differential_control_working_time,sensor.solar_m1worktime,9,0,1,45,2 +"SM50",solar,162,heattransfersystem,heattransfer system,boolean (>=0<=0), ,true,switch.solar_heattransfer_system,switch.solar_heattransfersystem,9,0,1,47,1 +"SM50",solar,162,externalcyl,external cylinder,boolean (>=0<=0), ,true,switch.solar_external_cylinder,switch.solar_externalcyl,9,0,1,48,1 +"SM50",solar,162,thermaldisinfect,thermal disinfection,boolean (>=0<=0), ,true,switch.solar_thermal_disinfection,switch.solar_thermaldisinfect,9,0,1,49,1 +"SM50",solar,162,heatmetering,heatmetering,boolean (>=0<=0), ,true,switch.solar_heatmetering,switch.solar_heatmetering,9,0,1,50,1 +"SM50",solar,162,activated,activated,boolean (>=0<=0), ,true,switch.solar_activated,switch.solar_activated,9,0,1,51,1 +"SM50",solar,162,solarpumpmode,solar pump mode,enum [constant\|pwm\|analog] (>=0<=0), ,true,select.solar_solar_pump_mode,select.solar_solarpumpmode,9,0,1,52,1 +"SM50",solar,162,solarpumpkick,solar pump kick,boolean (>=0<=0), ,true,switch.solar_solar_pump_kick,switch.solar_solarpumpkick,9,0,1,53,1 +"SM50",solar,162,plainwatermode,plain water mode,boolean (>=0<=0), ,true,switch.solar_plain_water_mode,switch.solar_plainwatermode,9,0,1,54,1 +"SM50",solar,162,doublematchflow,doublematchflow,boolean (>=0<=0), ,true,switch.solar_doublematchflow,switch.solar_doublematchflow,9,0,1,55,1 +"SM50",solar,162,pump2minmod,minimum pump 2 modulation,uint8 (>=0<=0),%,true,number.solar_minimum_pump_2_modulation,number.solar_pump2minmod,9,0,1,56,1 +"SM50",solar,162,turnondiff2,pump 2 turn on difference,uint8 (>=0<=0),C,true,number.solar_pump_2_turn_on_difference,number.solar_turnondiff2,9,0,1/10,57,1 +"SM50",solar,162,turnoffdiff2,pump 2 turn off difference,uint8 (>=0<=0),C,true,number.solar_pump_2_turn_off_difference,number.solar_turnoffdiff2,9,0,1/10,58,1 +"SM50",solar,162,pump2kick,pump kick 2,boolean (>=0<=0), ,true,switch.solar_pump_kick_2,switch.solar_pump2kick,9,0,1,59,1 +"SM50",solar,162,climatezone,climate zone,uint8 (>=0<=0), ,true,number.solar_climate_zone,number.solar_climatezone,9,0,1,60,1 +"SM50",solar,162,collector1area,collector 1 area,uint16 (>=0<=0),m²,true,number.solar_collector_1_area,number.solar_collector1area,9,0,1/10,61,1 +"SM50",solar,162,collector1type,collector 1 type,enum [flat\|vacuum] (>=0<=0), ,true,select.solar_collector_1_type,select.solar_collector1type,9,0,1,62,1 +"SM50",solar,162,collector2area,collector 2 area,uint16 (>=0<=0),m²,true,number.solar_collector_2_area,number.solar_collector2area,9,0,1/10,63,1 +"SM50",solar,162,collector2type,collector 2 type,enum [flat\|vacuum] (>=0<=0), ,true,select.solar_collector_2_type,select.solar_collector2type,9,0,1,64,1 +"SM50",solar,162,cylpriority,cylinder priority,enum [cyl 1\|cyl 2] (>=0<=0), ,true,select.solar_cylinder_priority,select.solar_cylpriority,9,0,1,65,1 +"SM50",solar,162,heatcntflowtemp,heat counter flow temperature,uint16,C,false,sensor.solar_heat_counter_flow_temperature,sensor.solar_heatcntflowtemp,9,0,1/10,66,1 +"SM50",solar,162,heatcntrettemp,heat counter return temperature,uint16,C,false,sensor.solar_heat_counter_return_temperature,sensor.solar_heatcntrettemp,9,0,1/10,67,1 +"SM50",solar,162,heatcnt,heat counter impulses,uint8, ,false,sensor.solar_heat_counter_impulses,sensor.solar_heatcnt,9,0,1,68,1 +"SM50",solar,162,swapflowtemp,swap flow temperature (TS14),uint16,C,false,sensor.solar_swap_flow_temperature_(TS14),sensor.solar_swapflowtemp,9,0,1/10,69,1 +"SM50",solar,162,swaprettemp,swap return temperature (TS15),uint16,C,false,sensor.solar_swap_return_temperature_(TS15),sensor.solar_swaprettemp,9,0,1/10,70,1 +"SM50",solar,162,heatassiston,heat assistance on,int8 (>=0<=0),K,true,number.solar_heat_assistance_on,number.solar_heatassiston,9,0,1/10,71,1 +"SM50",solar,162,heatassistoff,heat assistance off,int8 (>=0<=0),K,true,number.solar_heat_assistance_off,number.solar_heatassistoff,9,0,1/10,72,1 +"SM100, MS100",solar,163,collectortemp,collector temperature (TS1),int16,C,false,sensor.solar_collector_temperature_(TS1),sensor.solar_collectortemp,9,0,1/10,0,1 +"SM100, MS100",solar,163,cylbottomtemp,cylinder bottom temperature (TS2),int16,C,false,sensor.solar_cylinder_bottom_temperature_(TS2),sensor.solar_cylbottomtemp,9,0,1/10,1,1 +"SM100, MS100",solar,163,solarpump,pump (PS1),boolean, ,false,binary_sensor.solar_pump_(PS1),binary_sensor.solar_solarpump,9,0,1,2,1 +"SM100, MS100",solar,163,pumpworktime,pump working time,time,minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime,9,0,1,3,2 +"SM100, MS100",solar,163,cylmaxtemp,maximum cylinder temperature,uint8 (>=0<=0),C,true,number.solar_maximum_cylinder_temperature,number.solar_cylmaxtemp,9,0,1,5,1 +"SM100, MS100",solar,163,collectorshutdown,collector shutdown,boolean, ,false,binary_sensor.solar_collector_shutdown,binary_sensor.solar_collectorshutdown,9,0,1,6,1 +"SM100, MS100",solar,163,cylheated,cyl heated,boolean, ,false,binary_sensor.solar_cyl_heated,binary_sensor.solar_cylheated,9,0,1,7,1 +"SM100, MS100",solar,163,solarpumpmod,pump modulation (PS1),uint8,%,false,sensor.solar_pump_modulation_(PS1),sensor.solar_solarpumpmod,9,0,1,8,1 +"SM100, MS100",solar,163,pumpminmod,minimum pump modulation,uint8 (>=0<=0),%,true,number.solar_minimum_pump_modulation,number.solar_pumpminmod,9,0,5,9,1 +"SM100, MS100",solar,163,turnondiff,pump turn on difference,uint8 (>=0<=0),C,true,number.solar_pump_turn_on_difference,number.solar_turnondiff,9,0,1/10,10,1 +"SM100, MS100",solar,163,turnoffdiff,pump turn off difference,uint8 (>=0<=0),C,true,number.solar_pump_turn_off_difference,number.solar_turnoffdiff,9,0,1/10,11,1 +"SM100, MS100",solar,163,collector2temp,collector 2 temperature (TS7),int16,C,false,sensor.solar_collector_2_temperature_(TS7),sensor.solar_collector2temp,9,0,1/10,20,1 +"SM100, MS100",solar,163,cylmiddletemp,cylinder middle temperature (TS14),int16,C,false,sensor.solar_cylinder_middle_temperature_(TS14),sensor.solar_cylmiddletemp,9,0,1/10,17,1 +"SM100, MS100",solar,163,ts3,cylinder middle temperature (TS3),int16,C,false,sensor.solar_cylinder_middle_temperature_(TS3),sensor.solar_ts3,9,0,1/10,21,1 +"SM100, MS100",solar,163,retheatassist,return temperature heat assistance (TS4),int16,C,false,sensor.solar_return_temperature_heat_assistance_(TS4),sensor.solar_retheatassist,9,0,1/10,18,1 +"SM100, MS100",solar,163,ts8,(TS8),int16,C,false,sensor.solar_(TS8),sensor.solar_ts8,9,0,1/10,22,1 +"SM100, MS100",solar,163,ts16,(TS16),int16,C,false,sensor.solar_(TS16),sensor.solar_ts16,9,0,1/10,23,1 +"SM100, MS100",solar,163,heatassistvalve,heat assistance valve (M1),boolean, ,false,binary_sensor.solar_heat_assistance_valve_(M1),binary_sensor.solar_heatassistvalve,9,0,1,19,1 +"SM100, MS100",solar,163,heatassistpower,heat assistance valve power (M1),uint8,%,false,sensor.solar_heat_assistance_valve_power_(M1),sensor.solar_heatassistpower,9,0,1,24,1 +"SM100, MS100",solar,163,solarpump2,pump 2 (PS4),boolean, ,false,binary_sensor.solar_pump_2_(PS4),binary_sensor.solar_solarpump2,9,0,1,25,1 +"SM100, MS100",solar,163,solarpump2mod,pump 2 modulation (PS4),uint8,%,false,sensor.solar_pump_2_modulation_(PS4),sensor.solar_solarpump2mod,9,0,1,26,1 +"SM100, MS100",solar,163,cyl2bottomtemp,second cylinder bottom temperature (TS5),int16,C,false,sensor.solar_second_cylinder_bottom_temperature_(TS5),sensor.solar_cyl2bottomtemp,9,0,1/10,27,1 +"SM100, MS100",solar,163,cyl3bottomtemp,third cylinder bottom temperature (TS11),int16,C,false,sensor.solar_third_cylinder_bottom_temperature_(TS11),sensor.solar_cyl3bottomtemp,9,0,1/10,28,1 +"SM100, MS100",solar,163,cyltoptemp,cylinder top temperature (TS10),int16,C,false,sensor.solar_cylinder_top_temperature_(TS10),sensor.solar_cyltoptemp,9,0,1/10,29,1 +"SM100, MS100",solar,163,heatexchangertemp,heat exchanger temperature (TS6),int16,C,false,sensor.solar_heat_exchanger_temperature_(TS6),sensor.solar_heatexchangertemp,9,0,1/10,30,1 +"SM100, MS100",solar,163,cylpumpmod,cylinder pump modulation (PS5),uint8,%,false,sensor.solar_cylinder_pump_modulation_(PS5),sensor.solar_cylpumpmod,9,0,1,31,1 +"SM100, MS100",solar,163,valvestatus,valve status,boolean, ,false,binary_sensor.solar_valve_status,binary_sensor.solar_valvestatus,9,0,1,32,1 +"SM100, MS100",solar,163,vs1status,valve status VS1,boolean, ,false,binary_sensor.solar_valve_status_VS1,binary_sensor.solar_vs1status,9,0,1,33,1 +"SM100, MS100",solar,163,vs3status,valve status VS3,boolean, ,false,binary_sensor.solar_valve_status_VS3,binary_sensor.solar_vs3status,9,0,1,34,1 +"SM100, MS100",solar,163,transferpump,transfer pump,boolean, ,false,binary_sensor.solar_transfer_pump,binary_sensor.solar_transferpump,9,0,1,35,1 +"SM100, MS100",solar,163,transferpumpmod,transfer pump modulation,uint8,%,false,sensor.solar_transfer_pump_modulation,sensor.solar_transferpumpmod,9,0,1,36,1 +"SM100, MS100",solar,163,collectormaxtemp,maximum collector temperature,uint8 (>=0<=0),C,true,number.solar_maximum_collector_temperature,number.solar_collectormaxtemp,9,0,1,37,1 +"SM100, MS100",solar,163,collectormintemp,minimum collector temperature,uint8 (>=0<=0),C,true,number.solar_minimum_collector_temperature,number.solar_collectormintemp,9,0,1,38,1 +"SM100, MS100",solar,163,energylasthour,energy last hour,uint24,Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour,9,0,1/10,13,2 +"SM100, MS100",solar,163,energytoday,total energy today,uint24,Wh,false,sensor.solar_total_energy_today,sensor.solar_energytoday,9,0,1,39,2 +"SM100, MS100",solar,163,energytotal,total energy,uint24,kWh,false,sensor.solar_total_energy,sensor.solar_energytotal,9,0,1/10,41,2 +"SM100, MS100",solar,163,pump2worktime,pump 2 working time,time,minutes,false,sensor.solar_pump_2_working_time,sensor.solar_pump2worktime,9,0,1,43,2 +"SM100, MS100",solar,163,m1worktime,differential control working time,time,minutes,false,sensor.solar_differential_control_working_time,sensor.solar_m1worktime,9,0,1,45,2 +"SM100, MS100",solar,163,heattransfersystem,heattransfer system,boolean (>=0<=0), ,true,switch.solar_heattransfer_system,switch.solar_heattransfersystem,9,0,1,47,1 +"SM100, MS100",solar,163,externalcyl,external cylinder,boolean (>=0<=0), ,true,switch.solar_external_cylinder,switch.solar_externalcyl,9,0,1,48,1 +"SM100, MS100",solar,163,thermaldisinfect,thermal disinfection,boolean (>=0<=0), ,true,switch.solar_thermal_disinfection,switch.solar_thermaldisinfect,9,0,1,49,1 +"SM100, MS100",solar,163,heatmetering,heatmetering,boolean (>=0<=0), ,true,switch.solar_heatmetering,switch.solar_heatmetering,9,0,1,50,1 +"SM100, MS100",solar,163,activated,activated,boolean (>=0<=0), ,true,switch.solar_activated,switch.solar_activated,9,0,1,51,1 +"SM100, MS100",solar,163,solarpumpmode,solar pump mode,enum [constant\|pwm\|analog] (>=0<=0), ,true,select.solar_solar_pump_mode,select.solar_solarpumpmode,9,0,1,52,1 +"SM100, MS100",solar,163,solarpumpkick,solar pump kick,boolean (>=0<=0), ,true,switch.solar_solar_pump_kick,switch.solar_solarpumpkick,9,0,1,53,1 +"SM100, MS100",solar,163,plainwatermode,plain water mode,boolean (>=0<=0), ,true,switch.solar_plain_water_mode,switch.solar_plainwatermode,9,0,1,54,1 +"SM100, MS100",solar,163,doublematchflow,doublematchflow,boolean (>=0<=0), ,true,switch.solar_doublematchflow,switch.solar_doublematchflow,9,0,1,55,1 +"SM100, MS100",solar,163,pump2minmod,minimum pump 2 modulation,uint8 (>=0<=0),%,true,number.solar_minimum_pump_2_modulation,number.solar_pump2minmod,9,0,1,56,1 +"SM100, MS100",solar,163,turnondiff2,pump 2 turn on difference,uint8 (>=0<=0),C,true,number.solar_pump_2_turn_on_difference,number.solar_turnondiff2,9,0,1/10,57,1 +"SM100, MS100",solar,163,turnoffdiff2,pump 2 turn off difference,uint8 (>=0<=0),C,true,number.solar_pump_2_turn_off_difference,number.solar_turnoffdiff2,9,0,1/10,58,1 +"SM100, MS100",solar,163,pump2kick,pump kick 2,boolean (>=0<=0), ,true,switch.solar_pump_kick_2,switch.solar_pump2kick,9,0,1,59,1 +"SM100, MS100",solar,163,climatezone,climate zone,uint8 (>=0<=0), ,true,number.solar_climate_zone,number.solar_climatezone,9,0,1,60,1 +"SM100, MS100",solar,163,collector1area,collector 1 area,uint16 (>=0<=0),m²,true,number.solar_collector_1_area,number.solar_collector1area,9,0,1/10,61,1 +"SM100, MS100",solar,163,collector1type,collector 1 type,enum [flat\|vacuum] (>=0<=0), ,true,select.solar_collector_1_type,select.solar_collector1type,9,0,1,62,1 +"SM100, MS100",solar,163,collector2area,collector 2 area,uint16 (>=0<=0),m²,true,number.solar_collector_2_area,number.solar_collector2area,9,0,1/10,63,1 +"SM100, MS100",solar,163,collector2type,collector 2 type,enum [flat\|vacuum] (>=0<=0), ,true,select.solar_collector_2_type,select.solar_collector2type,9,0,1,64,1 +"SM100, MS100",solar,163,cylpriority,cylinder priority,enum [cyl 1\|cyl 2] (>=0<=0), ,true,select.solar_cylinder_priority,select.solar_cylpriority,9,0,1,65,1 +"SM100, MS100",solar,163,heatcntflowtemp,heat counter flow temperature,uint16,C,false,sensor.solar_heat_counter_flow_temperature,sensor.solar_heatcntflowtemp,9,0,1/10,66,1 +"SM100, MS100",solar,163,heatcntrettemp,heat counter return temperature,uint16,C,false,sensor.solar_heat_counter_return_temperature,sensor.solar_heatcntrettemp,9,0,1/10,67,1 +"SM100, MS100",solar,163,heatcnt,heat counter impulses,uint8, ,false,sensor.solar_heat_counter_impulses,sensor.solar_heatcnt,9,0,1,68,1 +"SM100, MS100",solar,163,swapflowtemp,swap flow temperature (TS14),uint16,C,false,sensor.solar_swap_flow_temperature_(TS14),sensor.solar_swapflowtemp,9,0,1/10,69,1 +"SM100, MS100",solar,163,swaprettemp,swap return temperature (TS15),uint16,C,false,sensor.solar_swap_return_temperature_(TS15),sensor.solar_swaprettemp,9,0,1/10,70,1 +"SM100, MS100",solar,163,heatassiston,heat assistance on,int8 (>=0<=0),K,true,number.solar_heat_assistance_on,number.solar_heatassiston,9,0,1/10,71,1 +"SM100, MS100",solar,163,heatassistoff,heat assistance off,int8 (>=0<=0),K,true,number.solar_heat_assistance_off,number.solar_heatassistoff,9,0,1/10,72,1 +"SM200, MS200",solar,164,collectortemp,collector temperature (TS1),int16,C,false,sensor.solar_collector_temperature_(TS1),sensor.solar_collectortemp,9,0,1/10,0,1 +"SM200, MS200",solar,164,cylbottomtemp,cylinder bottom temperature (TS2),int16,C,false,sensor.solar_cylinder_bottom_temperature_(TS2),sensor.solar_cylbottomtemp,9,0,1/10,1,1 +"SM200, MS200",solar,164,solarpump,pump (PS1),boolean, ,false,binary_sensor.solar_pump_(PS1),binary_sensor.solar_solarpump,9,0,1,2,1 +"SM200, MS200",solar,164,pumpworktime,pump working time,time,minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime,9,0,1,3,2 +"SM200, MS200",solar,164,cylmaxtemp,maximum cylinder temperature,uint8 (>=0<=0),C,true,number.solar_maximum_cylinder_temperature,number.solar_cylmaxtemp,9,0,1,5,1 +"SM200, MS200",solar,164,collectorshutdown,collector shutdown,boolean, ,false,binary_sensor.solar_collector_shutdown,binary_sensor.solar_collectorshutdown,9,0,1,6,1 +"SM200, MS200",solar,164,cylheated,cyl heated,boolean, ,false,binary_sensor.solar_cyl_heated,binary_sensor.solar_cylheated,9,0,1,7,1 +"SM200, MS200",solar,164,solarpumpmod,pump modulation (PS1),uint8,%,false,sensor.solar_pump_modulation_(PS1),sensor.solar_solarpumpmod,9,0,1,8,1 +"SM200, MS200",solar,164,pumpminmod,minimum pump modulation,uint8 (>=0<=0),%,true,number.solar_minimum_pump_modulation,number.solar_pumpminmod,9,0,5,9,1 +"SM200, MS200",solar,164,turnondiff,pump turn on difference,uint8 (>=0<=0),C,true,number.solar_pump_turn_on_difference,number.solar_turnondiff,9,0,1/10,10,1 +"SM200, MS200",solar,164,turnoffdiff,pump turn off difference,uint8 (>=0<=0),C,true,number.solar_pump_turn_off_difference,number.solar_turnoffdiff,9,0,1/10,11,1 +"SM200, MS200",solar,164,collector2temp,collector 2 temperature (TS7),int16,C,false,sensor.solar_collector_2_temperature_(TS7),sensor.solar_collector2temp,9,0,1/10,20,1 +"SM200, MS200",solar,164,cylmiddletemp,cylinder middle temperature (TS14),int16,C,false,sensor.solar_cylinder_middle_temperature_(TS14),sensor.solar_cylmiddletemp,9,0,1/10,17,1 +"SM200, MS200",solar,164,ts3,cylinder middle temperature (TS3),int16,C,false,sensor.solar_cylinder_middle_temperature_(TS3),sensor.solar_ts3,9,0,1/10,21,1 +"SM200, MS200",solar,164,retheatassist,return temperature heat assistance (TS4),int16,C,false,sensor.solar_return_temperature_heat_assistance_(TS4),sensor.solar_retheatassist,9,0,1/10,18,1 +"SM200, MS200",solar,164,ts8,(TS8),int16,C,false,sensor.solar_(TS8),sensor.solar_ts8,9,0,1/10,22,1 +"SM200, MS200",solar,164,ts16,(TS16),int16,C,false,sensor.solar_(TS16),sensor.solar_ts16,9,0,1/10,23,1 +"SM200, MS200",solar,164,heatassistvalve,heat assistance valve (M1),boolean, ,false,binary_sensor.solar_heat_assistance_valve_(M1),binary_sensor.solar_heatassistvalve,9,0,1,19,1 +"SM200, MS200",solar,164,heatassistpower,heat assistance valve power (M1),uint8,%,false,sensor.solar_heat_assistance_valve_power_(M1),sensor.solar_heatassistpower,9,0,1,24,1 +"SM200, MS200",solar,164,solarpump2,pump 2 (PS4),boolean, ,false,binary_sensor.solar_pump_2_(PS4),binary_sensor.solar_solarpump2,9,0,1,25,1 +"SM200, MS200",solar,164,solarpump2mod,pump 2 modulation (PS4),uint8,%,false,sensor.solar_pump_2_modulation_(PS4),sensor.solar_solarpump2mod,9,0,1,26,1 +"SM200, MS200",solar,164,cyl2bottomtemp,second cylinder bottom temperature (TS5),int16,C,false,sensor.solar_second_cylinder_bottom_temperature_(TS5),sensor.solar_cyl2bottomtemp,9,0,1/10,27,1 +"SM200, MS200",solar,164,cyl3bottomtemp,third cylinder bottom temperature (TS11),int16,C,false,sensor.solar_third_cylinder_bottom_temperature_(TS11),sensor.solar_cyl3bottomtemp,9,0,1/10,28,1 +"SM200, MS200",solar,164,cyltoptemp,cylinder top temperature (TS10),int16,C,false,sensor.solar_cylinder_top_temperature_(TS10),sensor.solar_cyltoptemp,9,0,1/10,29,1 +"SM200, MS200",solar,164,heatexchangertemp,heat exchanger temperature (TS6),int16,C,false,sensor.solar_heat_exchanger_temperature_(TS6),sensor.solar_heatexchangertemp,9,0,1/10,30,1 +"SM200, MS200",solar,164,cylpumpmod,cylinder pump modulation (PS5),uint8,%,false,sensor.solar_cylinder_pump_modulation_(PS5),sensor.solar_cylpumpmod,9,0,1,31,1 +"SM200, MS200",solar,164,valvestatus,valve status,boolean, ,false,binary_sensor.solar_valve_status,binary_sensor.solar_valvestatus,9,0,1,32,1 +"SM200, MS200",solar,164,vs1status,valve status VS1,boolean, ,false,binary_sensor.solar_valve_status_VS1,binary_sensor.solar_vs1status,9,0,1,33,1 +"SM200, MS200",solar,164,vs3status,valve status VS3,boolean, ,false,binary_sensor.solar_valve_status_VS3,binary_sensor.solar_vs3status,9,0,1,34,1 +"SM200, MS200",solar,164,transferpump,transfer pump,boolean, ,false,binary_sensor.solar_transfer_pump,binary_sensor.solar_transferpump,9,0,1,35,1 +"SM200, MS200",solar,164,transferpumpmod,transfer pump modulation,uint8,%,false,sensor.solar_transfer_pump_modulation,sensor.solar_transferpumpmod,9,0,1,36,1 +"SM200, MS200",solar,164,collectormaxtemp,maximum collector temperature,uint8 (>=0<=0),C,true,number.solar_maximum_collector_temperature,number.solar_collectormaxtemp,9,0,1,37,1 +"SM200, MS200",solar,164,collectormintemp,minimum collector temperature,uint8 (>=0<=0),C,true,number.solar_minimum_collector_temperature,number.solar_collectormintemp,9,0,1,38,1 +"SM200, MS200",solar,164,energylasthour,energy last hour,uint24,Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour,9,0,1/10,13,2 +"SM200, MS200",solar,164,energytoday,total energy today,uint24,Wh,false,sensor.solar_total_energy_today,sensor.solar_energytoday,9,0,1,39,2 +"SM200, MS200",solar,164,energytotal,total energy,uint24,kWh,false,sensor.solar_total_energy,sensor.solar_energytotal,9,0,1/10,41,2 +"SM200, MS200",solar,164,pump2worktime,pump 2 working time,time,minutes,false,sensor.solar_pump_2_working_time,sensor.solar_pump2worktime,9,0,1,43,2 +"SM200, MS200",solar,164,m1worktime,differential control working time,time,minutes,false,sensor.solar_differential_control_working_time,sensor.solar_m1worktime,9,0,1,45,2 +"SM200, MS200",solar,164,heattransfersystem,heattransfer system,boolean (>=0<=0), ,true,switch.solar_heattransfer_system,switch.solar_heattransfersystem,9,0,1,47,1 +"SM200, MS200",solar,164,externalcyl,external cylinder,boolean (>=0<=0), ,true,switch.solar_external_cylinder,switch.solar_externalcyl,9,0,1,48,1 +"SM200, MS200",solar,164,thermaldisinfect,thermal disinfection,boolean (>=0<=0), ,true,switch.solar_thermal_disinfection,switch.solar_thermaldisinfect,9,0,1,49,1 +"SM200, MS200",solar,164,heatmetering,heatmetering,boolean (>=0<=0), ,true,switch.solar_heatmetering,switch.solar_heatmetering,9,0,1,50,1 +"SM200, MS200",solar,164,activated,activated,boolean (>=0<=0), ,true,switch.solar_activated,switch.solar_activated,9,0,1,51,1 +"SM200, MS200",solar,164,solarpumpmode,solar pump mode,enum [constant\|pwm\|analog] (>=0<=0), ,true,select.solar_solar_pump_mode,select.solar_solarpumpmode,9,0,1,52,1 +"SM200, MS200",solar,164,solarpumpkick,solar pump kick,boolean (>=0<=0), ,true,switch.solar_solar_pump_kick,switch.solar_solarpumpkick,9,0,1,53,1 +"SM200, MS200",solar,164,plainwatermode,plain water mode,boolean (>=0<=0), ,true,switch.solar_plain_water_mode,switch.solar_plainwatermode,9,0,1,54,1 +"SM200, MS200",solar,164,doublematchflow,doublematchflow,boolean (>=0<=0), ,true,switch.solar_doublematchflow,switch.solar_doublematchflow,9,0,1,55,1 +"SM200, MS200",solar,164,pump2minmod,minimum pump 2 modulation,uint8 (>=0<=0),%,true,number.solar_minimum_pump_2_modulation,number.solar_pump2minmod,9,0,1,56,1 +"SM200, MS200",solar,164,turnondiff2,pump 2 turn on difference,uint8 (>=0<=0),C,true,number.solar_pump_2_turn_on_difference,number.solar_turnondiff2,9,0,1/10,57,1 +"SM200, MS200",solar,164,turnoffdiff2,pump 2 turn off difference,uint8 (>=0<=0),C,true,number.solar_pump_2_turn_off_difference,number.solar_turnoffdiff2,9,0,1/10,58,1 +"SM200, MS200",solar,164,pump2kick,pump kick 2,boolean (>=0<=0), ,true,switch.solar_pump_kick_2,switch.solar_pump2kick,9,0,1,59,1 +"SM200, MS200",solar,164,climatezone,climate zone,uint8 (>=0<=0), ,true,number.solar_climate_zone,number.solar_climatezone,9,0,1,60,1 +"SM200, MS200",solar,164,collector1area,collector 1 area,uint16 (>=0<=0),m²,true,number.solar_collector_1_area,number.solar_collector1area,9,0,1/10,61,1 +"SM200, MS200",solar,164,collector1type,collector 1 type,enum [flat\|vacuum] (>=0<=0), ,true,select.solar_collector_1_type,select.solar_collector1type,9,0,1,62,1 +"SM200, MS200",solar,164,collector2area,collector 2 area,uint16 (>=0<=0),m²,true,number.solar_collector_2_area,number.solar_collector2area,9,0,1/10,63,1 +"SM200, MS200",solar,164,collector2type,collector 2 type,enum [flat\|vacuum] (>=0<=0), ,true,select.solar_collector_2_type,select.solar_collector2type,9,0,1,64,1 +"SM200, MS200",solar,164,cylpriority,cylinder priority,enum [cyl 1\|cyl 2] (>=0<=0), ,true,select.solar_cylinder_priority,select.solar_cylpriority,9,0,1,65,1 +"SM200, MS200",solar,164,heatcntflowtemp,heat counter flow temperature,uint16,C,false,sensor.solar_heat_counter_flow_temperature,sensor.solar_heatcntflowtemp,9,0,1/10,66,1 +"SM200, MS200",solar,164,heatcntrettemp,heat counter return temperature,uint16,C,false,sensor.solar_heat_counter_return_temperature,sensor.solar_heatcntrettemp,9,0,1/10,67,1 +"SM200, MS200",solar,164,heatcnt,heat counter impulses,uint8, ,false,sensor.solar_heat_counter_impulses,sensor.solar_heatcnt,9,0,1,68,1 +"SM200, MS200",solar,164,swapflowtemp,swap flow temperature (TS14),uint16,C,false,sensor.solar_swap_flow_temperature_(TS14),sensor.solar_swapflowtemp,9,0,1/10,69,1 +"SM200, MS200",solar,164,swaprettemp,swap return temperature (TS15),uint16,C,false,sensor.solar_swap_return_temperature_(TS15),sensor.solar_swaprettemp,9,0,1/10,70,1 +"SM200, MS200",solar,164,heatassiston,heat assistance on,int8 (>=0<=0),K,true,number.solar_heat_assistance_on,number.solar_heatassiston,9,0,1/10,71,1 +"SM200, MS200",solar,164,heatassistoff,heat assistance off,int8 (>=0<=0),K,true,number.solar_heat_assistance_off,number.solar_heatassistoff,9,0,1/10,72,1 +"HP Module",heatpump,252,airhumidity,relative air humidity,uint8,%,false,sensor.heatpump_relative_air_humidity,sensor.heatpump_airhumidity,10,0,1,0,1 +"HP Module",heatpump,252,dewtemperature,dew point temperature,uint8,C,false,sensor.heatpump_dew_point_temperature,sensor.heatpump_dewtemperature,10,0,1,1,1 +"HP Module",heatpump,252,curflowtemp,current flow temperature,int16,C,false,sensor.heatpump_current_flow_temperature,sensor.heatpump_curflowtemp,10,0,1/10,2,1 +"HP Module",heatpump,252,rettemp,return temperature,int16,C,false,sensor.heatpump_return_temperature,sensor.heatpump_rettemp,10,0,1/10,3,1 +"HP Module",heatpump,252,sysrettemp,system return temperature,int16,C,false,sensor.heatpump_system_return_temperature,sensor.heatpump_sysrettemp,10,0,1/10,4,1 +"HP Module",heatpump,252,hpta4,drain pan temp (TA4),int16,C,false,sensor.heatpump_drain_pan_temp_(TA4),sensor.heatpump_hpta4,10,0,1/10,5,1 +"HP Module",heatpump,252,hptr1,compressor temperature (TR1),int16,C,false,sensor.heatpump_compressor_temperature_(TR1),sensor.heatpump_hptr1,10,0,1/10,6,1 +"HP Module",heatpump,252,hptr3,refrigerant temperature liquid side (condenser output) (TR3),int16,C,false,sensor.heatpump_refrigerant_temperature_liquid_side_(condenser_output)_(TR3),sensor.heatpump_hptr3,10,0,1/10,7,1 +"HP Module",heatpump,252,hptr4,evaporator inlet temperature (TR4),int16,C,false,sensor.heatpump_evaporator_inlet_temperature_(TR4),sensor.heatpump_hptr4,10,0,1/10,8,1 +"HP Module",heatpump,252,hptr5,compressor inlet temperature (TR5),int16,C,false,sensor.heatpump_compressor_inlet_temperature_(TR5),sensor.heatpump_hptr5,10,0,1/10,9,1 +"HP Module",heatpump,252,hptr6,compressor outlet temperature (TR6),int16,C,false,sensor.heatpump_compressor_outlet_temperature_(TR6),sensor.heatpump_hptr6,10,0,1/10,10,1 +"HP Module",heatpump,252,hptl2,air inlet temperature (TL2),int16,C,false,sensor.heatpump_air_inlet_temperature_(TL2),sensor.heatpump_hptl2,10,0,1/10,11,1 +"HP Module",heatpump,252,hppl1,low pressure side temperature (PL1),int16,C,false,sensor.heatpump_low_pressure_side_temperature_(PL1),sensor.heatpump_hppl1,10,0,1/10,12,1 +"HP Module",heatpump,252,hpph1,high pressure side temperature (PH1),int16,C,false,sensor.heatpump_high_pressure_side_temperature_(PH1),sensor.heatpump_hpph1,10,0,1/10,13,1 +"HP Module",heatpump,252,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.heatpump_heating_pump_modulation,sensor.heatpump_heatingpumpmod,10,0,1,14,1 +"HP Module",heatpump,252,hpcompspd,compressor speed,uint8,%,false,sensor.heatpump_compressor_speed,sensor.heatpump_hpcompspd,10,0,1,15,1 +"HP Module",heatpump,252,hpactivity,compressor activity,enum [off\|heating\|hot water\|defrost\|compressor alarm], ,false,sensor.heatpump_compressor_activity,sensor.heatpump_hpactivity,10,0,1,16,1 +"HP Module",heatpump,252,hppower,compressor power output,uint16,W,false,sensor.heatpump_compressor_power_output,sensor.heatpump_hppower,10,0,1,17,1 +"HP Module",heatpump,252,hpcurrpower,compressor current power,uint16,W,false,sensor.heatpump_compressor_current_power,sensor.heatpump_hpcurrpower,10,0,1,18,1 +"HP Module",heatpump,252,hppumpflow,volume flow,uint16,l/h,false,sensor.heatpump_volume_flow,sensor.heatpump_hppumpflow,10,0,10,19,1 +"HP Module",heatpump,252,hpcompspder1,compressor speed ER1,uint8,%,false,sensor.heatpump_compressor_speed_ER1,sensor.heatpump_hpcompspder1,10,0,1,20,1 +"HP Module",heatpump,252,hpSpeedSetpoint,speed setpoint,uint8,%,false,sensor.heatpump_speed_setpoint,sensor.heatpump_hpSpeedSetpoint,10,0,1,21,1 +"HP Module",heatpump,252,smartgridmode,smart grid mode,uint8, ,false,sensor.heatpump_smart_grid_mode,sensor.heatpump_smartgridmode,10,0,1,22,1 +"HP Module",heatpump,252,hybridstrategy,hybrid control strategy,enum [cost optimized\|co2 optimized\|outside temperature alt.\|outside temperature parallel\|heatpump preferred\|boiler only] (>=0<=0), ,true,select.heatpump_hybrid_control_strategy,select.heatpump_hybridstrategy,10,0,1,23,1 +"HP Module",heatpump,252,lownoisemode,low noise mode,enum [off\|reduced output\|switch off hp\|perm. reduced] (>=0<=0), ,true,select.heatpump_low_noise_mode,select.heatpump_lownoisemode,10,0,1,24,1 +"HP Module",heatpump,252,lownoisestart,low noise starttime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_starttime,number.heatpump_lownoisestart,10,0,1,25,1 +"HP Module",heatpump,252,lownoisestop,low noise stoptime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_stoptime,number.heatpump_lownoisestop,10,0,1,26,1 +"HP Module",heatpump,252,dhw.hybriddhw,hybrid DHW,enum [eco\|high comfort] (>=0<=0), ,true,select.heatpump_dhw_hybrid_DHW,select.heatpump_dhw_hybriddhw,10,9,1,0,1 +"HP Module",heatpump,252,energypricegas,energy price gas,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_gas,number.heatpump_energypricegas,10,0,1,27,1 +"HP Module",heatpump,252,energypriceel,energy price electric,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_electric,number.heatpump_energypriceel,10,0,1,28,1 +"HP Module",heatpump,252,energyfeedpv,feed in PV,uint8 (>=0<=0),ct/kWh,true,number.heatpump_feed_in_PV,number.heatpump_energyfeedpv,10,0,1,29,1 +"HP Module",heatpump,252,switchovertemp,outside switchover temperature,int8 (>=0<=0),C,true,number.heatpump_outside_switchover_temperature,number.heatpump_switchovertemp,10,0,1,30,1 +"HP Module",heatpump,252,airpurgemode,air purge mode,boolean (>=0<=0), ,true,switch.heatpump_air_purge_mode,switch.heatpump_airpurgemode,10,0,1,31,1 +"HP Module",heatpump,252,heatpumpoutput,heatpump output,uint8 (>=0<=0),%,true,number.heatpump_heatpump_output,number.heatpump_heatpumpoutput,10,0,1,32,1 +"HP Module",heatpump,252,coolingcircuit,cooling circuit,boolean (>=0<=0), ,true,switch.heatpump_cooling_circuit,switch.heatpump_coolingcircuit,10,0,1,33,1 +"HP Module",heatpump,252,compstartmod,compressor start modulation,uint8 (>=0<=0),%,true,number.heatpump_compressor_start_modulation,number.heatpump_compstartmod,10,0,1,34,1 +"HP Module",heatpump,252,heatdrainpan,heat drain pan,boolean (>=0<=0), ,true,switch.heatpump_heat_drain_pan,switch.heatpump_heatdrainpan,10,0,1,35,1 +"HP Module",heatpump,252,heatcable,heating cable,boolean (>=0<=0), ,true,switch.heatpump_heating_cable,switch.heatpump_heatcable,10,0,1,36,1 +"HP Module",heatpump,252,nrgtotal,total energy,uint24,kWh,false,sensor.heatpump_total_energy,sensor.heatpump_nrgtotal,10,0,1/100,37,2 +"HP Module",heatpump,252,dhw.nrg,energy,uint24,kWh,false,sensor.heatpump_dhw_energy,sensor.heatpump_dhw_nrg,10,9,1/100,1,2 +"HP Module",heatpump,252,nrgheat,energy heating,uint24,kWh,false,sensor.heatpump_energy_heating,sensor.heatpump_nrgheat,10,0,1/100,39,2 +"HP Module",heatpump,252,metertotal,meter total,uint24,kWh,false,sensor.heatpump_meter_total,sensor.heatpump_metertotal,10,0,1/100,41,2 +"HP Module",heatpump,252,metercomp,meter compressor,uint24,kWh,false,sensor.heatpump_meter_compressor,sensor.heatpump_metercomp,10,0,1/100,43,2 +"HP Module",heatpump,252,metereheat,meter e-heater,uint24,kWh,false,sensor.heatpump_meter_e-heater,sensor.heatpump_metereheat,10,0,1/100,45,2 +"HP Module",heatpump,252,meterheat,meter heating,uint24,kWh,false,sensor.heatpump_meter_heating,sensor.heatpump_meterheat,10,0,1/100,47,2 +"HP Module",heatpump,252,dhw.meter,meter,uint24,kWh,false,sensor.heatpump_dhw_meter,sensor.heatpump_dhw_meter,10,9,1/100,3,2 +"HP Module",heatpump,252,heatingstarts,heating control starts,uint24, ,false,sensor.heatpump_heating_control_starts,sensor.heatpump_heatingstarts,10,0,1,49,2 +"HP Module",heatpump,252,dhw.startshp,starts hp,uint24, ,false,sensor.heatpump_dhw_starts_hp,sensor.heatpump_dhw_startshp,10,9,1,5,2 +"HP Module",heatpump,252,fuelheat,fuel consumption heating,uint32,kWh,false,sensor.heatpump_fuel_consumption_heating,sensor.heatpump_fuelheat,10,0,1/10,51,2 +"HP Module",heatpump,252,dhw.fueldhw,fuel consumption,uint32,kWh,false,sensor.heatpump_dhw_fuel_consumption,sensor.heatpump_dhw_fueldhw,10,9,1/10,7,2 +"HP Module",heatpump,252,elheat,el. consumption heating,uint32,kWh,false,sensor.heatpump_el._consumption_heating,sensor.heatpump_elheat,10,0,1/10,53,2 +"HP Module",heatpump,252,dhw.eldhw,el. consumption,uint32,kWh,false,sensor.heatpump_dhw_el._consumption,sensor.heatpump_dhw_eldhw,10,9,1/10,9,2 +"HP Module",heatpump,252,elgenheat,el. generation heating,uint32,kWh,false,sensor.heatpump_el._generation_heating,sensor.heatpump_elgenheat,10,0,1/10,55,2 +"HP Module",heatpump,252,dhw.elgendhw,el generation,uint32,kWh,false,sensor.heatpump_dhw_el_generation,sensor.heatpump_dhw_elgendhw,10,9,1/10,11,2 +"Hybrid Manager HM200",heatpump,248,airhumidity,relative air humidity,uint8,%,false,sensor.heatpump_relative_air_humidity,sensor.heatpump_airhumidity,10,0,1,0,1 +"Hybrid Manager HM200",heatpump,248,dewtemperature,dew point temperature,uint8,C,false,sensor.heatpump_dew_point_temperature,sensor.heatpump_dewtemperature,10,0,1,1,1 +"Hybrid Manager HM200",heatpump,248,curflowtemp,current flow temperature,int16,C,false,sensor.heatpump_current_flow_temperature,sensor.heatpump_curflowtemp,10,0,1/10,2,1 +"Hybrid Manager HM200",heatpump,248,rettemp,return temperature,int16,C,false,sensor.heatpump_return_temperature,sensor.heatpump_rettemp,10,0,1/10,3,1 +"Hybrid Manager HM200",heatpump,248,sysrettemp,system return temperature,int16,C,false,sensor.heatpump_system_return_temperature,sensor.heatpump_sysrettemp,10,0,1/10,4,1 +"Hybrid Manager HM200",heatpump,248,hpta4,drain pan temp (TA4),int16,C,false,sensor.heatpump_drain_pan_temp_(TA4),sensor.heatpump_hpta4,10,0,1/10,5,1 +"Hybrid Manager HM200",heatpump,248,hptr1,compressor temperature (TR1),int16,C,false,sensor.heatpump_compressor_temperature_(TR1),sensor.heatpump_hptr1,10,0,1/10,6,1 +"Hybrid Manager HM200",heatpump,248,hptr3,refrigerant temperature liquid side (condenser output) (TR3),int16,C,false,sensor.heatpump_refrigerant_temperature_liquid_side_(condenser_output)_(TR3),sensor.heatpump_hptr3,10,0,1/10,7,1 +"Hybrid Manager HM200",heatpump,248,hptr4,evaporator inlet temperature (TR4),int16,C,false,sensor.heatpump_evaporator_inlet_temperature_(TR4),sensor.heatpump_hptr4,10,0,1/10,8,1 +"Hybrid Manager HM200",heatpump,248,hptr5,compressor inlet temperature (TR5),int16,C,false,sensor.heatpump_compressor_inlet_temperature_(TR5),sensor.heatpump_hptr5,10,0,1/10,9,1 +"Hybrid Manager HM200",heatpump,248,hptr6,compressor outlet temperature (TR6),int16,C,false,sensor.heatpump_compressor_outlet_temperature_(TR6),sensor.heatpump_hptr6,10,0,1/10,10,1 +"Hybrid Manager HM200",heatpump,248,hptl2,air inlet temperature (TL2),int16,C,false,sensor.heatpump_air_inlet_temperature_(TL2),sensor.heatpump_hptl2,10,0,1/10,11,1 +"Hybrid Manager HM200",heatpump,248,hppl1,low pressure side temperature (PL1),int16,C,false,sensor.heatpump_low_pressure_side_temperature_(PL1),sensor.heatpump_hppl1,10,0,1/10,12,1 +"Hybrid Manager HM200",heatpump,248,hpph1,high pressure side temperature (PH1),int16,C,false,sensor.heatpump_high_pressure_side_temperature_(PH1),sensor.heatpump_hpph1,10,0,1/10,13,1 +"Hybrid Manager HM200",heatpump,248,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.heatpump_heating_pump_modulation,sensor.heatpump_heatingpumpmod,10,0,1,14,1 +"Hybrid Manager HM200",heatpump,248,hpcompspd,compressor speed,uint8,%,false,sensor.heatpump_compressor_speed,sensor.heatpump_hpcompspd,10,0,1,15,1 +"Hybrid Manager HM200",heatpump,248,hpactivity,compressor activity,enum [off\|heating\|hot water\|defrost\|compressor alarm], ,false,sensor.heatpump_compressor_activity,sensor.heatpump_hpactivity,10,0,1,16,1 +"Hybrid Manager HM200",heatpump,248,hppower,compressor power output,uint16,W,false,sensor.heatpump_compressor_power_output,sensor.heatpump_hppower,10,0,1,17,1 +"Hybrid Manager HM200",heatpump,248,hpcurrpower,compressor current power,uint16,W,false,sensor.heatpump_compressor_current_power,sensor.heatpump_hpcurrpower,10,0,1,18,1 +"Hybrid Manager HM200",heatpump,248,hppumpflow,volume flow,uint16,l/h,false,sensor.heatpump_volume_flow,sensor.heatpump_hppumpflow,10,0,10,19,1 +"Hybrid Manager HM200",heatpump,248,hpcompspder1,compressor speed ER1,uint8,%,false,sensor.heatpump_compressor_speed_ER1,sensor.heatpump_hpcompspder1,10,0,1,20,1 +"Hybrid Manager HM200",heatpump,248,hpSpeedSetpoint,speed setpoint,uint8,%,false,sensor.heatpump_speed_setpoint,sensor.heatpump_hpSpeedSetpoint,10,0,1,21,1 +"Hybrid Manager HM200",heatpump,248,smartgridmode,smart grid mode,uint8, ,false,sensor.heatpump_smart_grid_mode,sensor.heatpump_smartgridmode,10,0,1,22,1 +"Hybrid Manager HM200",heatpump,248,hybridstrategy,hybrid control strategy,enum [cost optimized\|co2 optimized\|outside temperature alt.\|outside temperature parallel\|heatpump preferred\|boiler only] (>=0<=0), ,true,select.heatpump_hybrid_control_strategy,select.heatpump_hybridstrategy,10,0,1,23,1 +"Hybrid Manager HM200",heatpump,248,lownoisemode,low noise mode,enum [off\|reduced output\|switch off hp\|perm. reduced] (>=0<=0), ,true,select.heatpump_low_noise_mode,select.heatpump_lownoisemode,10,0,1,24,1 +"Hybrid Manager HM200",heatpump,248,lownoisestart,low noise starttime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_starttime,number.heatpump_lownoisestart,10,0,1,25,1 +"Hybrid Manager HM200",heatpump,248,lownoisestop,low noise stoptime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_stoptime,number.heatpump_lownoisestop,10,0,1,26,1 +"Hybrid Manager HM200",heatpump,248,dhw.hybriddhw,hybrid DHW,enum [eco\|high comfort] (>=0<=0), ,true,select.heatpump_dhw_hybrid_DHW,select.heatpump_dhw_hybriddhw,10,9,1,0,1 +"Hybrid Manager HM200",heatpump,248,energypricegas,energy price gas,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_gas,number.heatpump_energypricegas,10,0,1,27,1 +"Hybrid Manager HM200",heatpump,248,energypriceel,energy price electric,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_electric,number.heatpump_energypriceel,10,0,1,28,1 +"Hybrid Manager HM200",heatpump,248,energyfeedpv,feed in PV,uint8 (>=0<=0),ct/kWh,true,number.heatpump_feed_in_PV,number.heatpump_energyfeedpv,10,0,1,29,1 +"Hybrid Manager HM200",heatpump,248,switchovertemp,outside switchover temperature,int8 (>=0<=0),C,true,number.heatpump_outside_switchover_temperature,number.heatpump_switchovertemp,10,0,1,30,1 +"Hybrid Manager HM200",heatpump,248,airpurgemode,air purge mode,boolean (>=0<=0), ,true,switch.heatpump_air_purge_mode,switch.heatpump_airpurgemode,10,0,1,31,1 +"Hybrid Manager HM200",heatpump,248,heatpumpoutput,heatpump output,uint8 (>=0<=0),%,true,number.heatpump_heatpump_output,number.heatpump_heatpumpoutput,10,0,1,32,1 +"Hybrid Manager HM200",heatpump,248,coolingcircuit,cooling circuit,boolean (>=0<=0), ,true,switch.heatpump_cooling_circuit,switch.heatpump_coolingcircuit,10,0,1,33,1 +"Hybrid Manager HM200",heatpump,248,compstartmod,compressor start modulation,uint8 (>=0<=0),%,true,number.heatpump_compressor_start_modulation,number.heatpump_compstartmod,10,0,1,34,1 +"Hybrid Manager HM200",heatpump,248,heatdrainpan,heat drain pan,boolean (>=0<=0), ,true,switch.heatpump_heat_drain_pan,switch.heatpump_heatdrainpan,10,0,1,35,1 +"Hybrid Manager HM200",heatpump,248,heatcable,heating cable,boolean (>=0<=0), ,true,switch.heatpump_heating_cable,switch.heatpump_heatcable,10,0,1,36,1 +"Hybrid Manager HM200",heatpump,248,nrgtotal,total energy,uint24,kWh,false,sensor.heatpump_total_energy,sensor.heatpump_nrgtotal,10,0,1/100,37,2 +"Hybrid Manager HM200",heatpump,248,dhw.nrg,energy,uint24,kWh,false,sensor.heatpump_dhw_energy,sensor.heatpump_dhw_nrg,10,9,1/100,1,2 +"Hybrid Manager HM200",heatpump,248,nrgheat,energy heating,uint24,kWh,false,sensor.heatpump_energy_heating,sensor.heatpump_nrgheat,10,0,1/100,39,2 +"Hybrid Manager HM200",heatpump,248,metertotal,meter total,uint24,kWh,false,sensor.heatpump_meter_total,sensor.heatpump_metertotal,10,0,1/100,41,2 +"Hybrid Manager HM200",heatpump,248,metercomp,meter compressor,uint24,kWh,false,sensor.heatpump_meter_compressor,sensor.heatpump_metercomp,10,0,1/100,43,2 +"Hybrid Manager HM200",heatpump,248,metereheat,meter e-heater,uint24,kWh,false,sensor.heatpump_meter_e-heater,sensor.heatpump_metereheat,10,0,1/100,45,2 +"Hybrid Manager HM200",heatpump,248,meterheat,meter heating,uint24,kWh,false,sensor.heatpump_meter_heating,sensor.heatpump_meterheat,10,0,1/100,47,2 +"Hybrid Manager HM200",heatpump,248,dhw.meter,meter,uint24,kWh,false,sensor.heatpump_dhw_meter,sensor.heatpump_dhw_meter,10,9,1/100,3,2 +"Hybrid Manager HM200",heatpump,248,heatingstarts,heating control starts,uint24, ,false,sensor.heatpump_heating_control_starts,sensor.heatpump_heatingstarts,10,0,1,49,2 +"Hybrid Manager HM200",heatpump,248,dhw.startshp,starts hp,uint24, ,false,sensor.heatpump_dhw_starts_hp,sensor.heatpump_dhw_startshp,10,9,1,5,2 +"Hybrid Manager HM200",heatpump,248,fuelheat,fuel consumption heating,uint32,kWh,false,sensor.heatpump_fuel_consumption_heating,sensor.heatpump_fuelheat,10,0,1/10,51,2 +"Hybrid Manager HM200",heatpump,248,dhw.fueldhw,fuel consumption,uint32,kWh,false,sensor.heatpump_dhw_fuel_consumption,sensor.heatpump_dhw_fueldhw,10,9,1/10,7,2 +"Hybrid Manager HM200",heatpump,248,elheat,el. consumption heating,uint32,kWh,false,sensor.heatpump_el._consumption_heating,sensor.heatpump_elheat,10,0,1/10,53,2 +"Hybrid Manager HM200",heatpump,248,dhw.eldhw,el. consumption,uint32,kWh,false,sensor.heatpump_dhw_el._consumption,sensor.heatpump_dhw_eldhw,10,9,1/10,9,2 +"Hybrid Manager HM200",heatpump,248,elgenheat,el. generation heating,uint32,kWh,false,sensor.heatpump_el._generation_heating,sensor.heatpump_elgenheat,10,0,1/10,55,2 +"Hybrid Manager HM200",heatpump,248,dhw.elgendhw,el generation,uint32,kWh,false,sensor.heatpump_dhw_el_generation,sensor.heatpump_dhw_elgendhw,10,9,1/10,11,2 +"CSH5800iG",heatpump,16,airhumidity,relative air humidity,uint8,%,false,sensor.heatpump_relative_air_humidity,sensor.heatpump_airhumidity,10,0,1,0,1 +"CSH5800iG",heatpump,16,dewtemperature,dew point temperature,uint8,C,false,sensor.heatpump_dew_point_temperature,sensor.heatpump_dewtemperature,10,0,1,1,1 +"CSH5800iG",heatpump,16,curflowtemp,current flow temperature,int16,C,false,sensor.heatpump_current_flow_temperature,sensor.heatpump_curflowtemp,10,0,1/10,2,1 +"CSH5800iG",heatpump,16,rettemp,return temperature,int16,C,false,sensor.heatpump_return_temperature,sensor.heatpump_rettemp,10,0,1/10,3,1 +"CSH5800iG",heatpump,16,sysrettemp,system return temperature,int16,C,false,sensor.heatpump_system_return_temperature,sensor.heatpump_sysrettemp,10,0,1/10,4,1 +"CSH5800iG",heatpump,16,hpta4,drain pan temp (TA4),int16,C,false,sensor.heatpump_drain_pan_temp_(TA4),sensor.heatpump_hpta4,10,0,1/10,5,1 +"CSH5800iG",heatpump,16,hptr1,compressor temperature (TR1),int16,C,false,sensor.heatpump_compressor_temperature_(TR1),sensor.heatpump_hptr1,10,0,1/10,6,1 +"CSH5800iG",heatpump,16,hptr3,refrigerant temperature liquid side (condenser output) (TR3),int16,C,false,sensor.heatpump_refrigerant_temperature_liquid_side_(condenser_output)_(TR3),sensor.heatpump_hptr3,10,0,1/10,7,1 +"CSH5800iG",heatpump,16,hptr4,evaporator inlet temperature (TR4),int16,C,false,sensor.heatpump_evaporator_inlet_temperature_(TR4),sensor.heatpump_hptr4,10,0,1/10,8,1 +"CSH5800iG",heatpump,16,hptr5,compressor inlet temperature (TR5),int16,C,false,sensor.heatpump_compressor_inlet_temperature_(TR5),sensor.heatpump_hptr5,10,0,1/10,9,1 +"CSH5800iG",heatpump,16,hptr6,compressor outlet temperature (TR6),int16,C,false,sensor.heatpump_compressor_outlet_temperature_(TR6),sensor.heatpump_hptr6,10,0,1/10,10,1 +"CSH5800iG",heatpump,16,hptl2,air inlet temperature (TL2),int16,C,false,sensor.heatpump_air_inlet_temperature_(TL2),sensor.heatpump_hptl2,10,0,1/10,11,1 +"CSH5800iG",heatpump,16,hppl1,low pressure side temperature (PL1),int16,C,false,sensor.heatpump_low_pressure_side_temperature_(PL1),sensor.heatpump_hppl1,10,0,1/10,12,1 +"CSH5800iG",heatpump,16,hpph1,high pressure side temperature (PH1),int16,C,false,sensor.heatpump_high_pressure_side_temperature_(PH1),sensor.heatpump_hpph1,10,0,1/10,13,1 +"CSH5800iG",heatpump,16,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.heatpump_heating_pump_modulation,sensor.heatpump_heatingpumpmod,10,0,1,14,1 +"CSH5800iG",heatpump,16,hpcompspd,compressor speed,uint8,%,false,sensor.heatpump_compressor_speed,sensor.heatpump_hpcompspd,10,0,1,15,1 +"CSH5800iG",heatpump,16,hpactivity,compressor activity,enum [off\|heating\|hot water\|defrost\|compressor alarm], ,false,sensor.heatpump_compressor_activity,sensor.heatpump_hpactivity,10,0,1,16,1 +"CSH5800iG",heatpump,16,hppower,compressor power output,uint16,W,false,sensor.heatpump_compressor_power_output,sensor.heatpump_hppower,10,0,1,17,1 +"CSH5800iG",heatpump,16,hpcurrpower,compressor current power,uint16,W,false,sensor.heatpump_compressor_current_power,sensor.heatpump_hpcurrpower,10,0,1,18,1 +"CSH5800iG",heatpump,16,hppumpflow,volume flow,uint16,l/h,false,sensor.heatpump_volume_flow,sensor.heatpump_hppumpflow,10,0,10,19,1 +"CSH5800iG",heatpump,16,hpcompspder1,compressor speed ER1,uint8,%,false,sensor.heatpump_compressor_speed_ER1,sensor.heatpump_hpcompspder1,10,0,1,20,1 +"CSH5800iG",heatpump,16,hpSpeedSetpoint,speed setpoint,uint8,%,false,sensor.heatpump_speed_setpoint,sensor.heatpump_hpSpeedSetpoint,10,0,1,21,1 +"CSH5800iG",heatpump,16,smartgridmode,smart grid mode,uint8, ,false,sensor.heatpump_smart_grid_mode,sensor.heatpump_smartgridmode,10,0,1,22,1 +"CSH5800iG",heatpump,16,hybridstrategy,hybrid control strategy,enum [cost optimized\|co2 optimized\|outside temperature alt.\|outside temperature parallel\|heatpump preferred\|boiler only] (>=0<=0), ,true,select.heatpump_hybrid_control_strategy,select.heatpump_hybridstrategy,10,0,1,23,1 +"CSH5800iG",heatpump,16,lownoisemode,low noise mode,enum [off\|reduced output\|switch off hp\|perm. reduced] (>=0<=0), ,true,select.heatpump_low_noise_mode,select.heatpump_lownoisemode,10,0,1,24,1 +"CSH5800iG",heatpump,16,lownoisestart,low noise starttime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_starttime,number.heatpump_lownoisestart,10,0,1,25,1 +"CSH5800iG",heatpump,16,lownoisestop,low noise stoptime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_stoptime,number.heatpump_lownoisestop,10,0,1,26,1 +"CSH5800iG",heatpump,16,dhw.hybriddhw,hybrid DHW,enum [eco\|high comfort] (>=0<=0), ,true,select.heatpump_dhw_hybrid_DHW,select.heatpump_dhw_hybriddhw,10,9,1,0,1 +"CSH5800iG",heatpump,16,energypricegas,energy price gas,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_gas,number.heatpump_energypricegas,10,0,1,27,1 +"CSH5800iG",heatpump,16,energypriceel,energy price electric,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_electric,number.heatpump_energypriceel,10,0,1,28,1 +"CSH5800iG",heatpump,16,energyfeedpv,feed in PV,uint8 (>=0<=0),ct/kWh,true,number.heatpump_feed_in_PV,number.heatpump_energyfeedpv,10,0,1,29,1 +"CSH5800iG",heatpump,16,switchovertemp,outside switchover temperature,int8 (>=0<=0),C,true,number.heatpump_outside_switchover_temperature,number.heatpump_switchovertemp,10,0,1,30,1 +"CSH5800iG",heatpump,16,airpurgemode,air purge mode,boolean (>=0<=0), ,true,switch.heatpump_air_purge_mode,switch.heatpump_airpurgemode,10,0,1,31,1 +"CSH5800iG",heatpump,16,heatpumpoutput,heatpump output,uint8 (>=0<=0),%,true,number.heatpump_heatpump_output,number.heatpump_heatpumpoutput,10,0,1,32,1 +"CSH5800iG",heatpump,16,coolingcircuit,cooling circuit,boolean (>=0<=0), ,true,switch.heatpump_cooling_circuit,switch.heatpump_coolingcircuit,10,0,1,33,1 +"CSH5800iG",heatpump,16,compstartmod,compressor start modulation,uint8 (>=0<=0),%,true,number.heatpump_compressor_start_modulation,number.heatpump_compstartmod,10,0,1,34,1 +"CSH5800iG",heatpump,16,heatdrainpan,heat drain pan,boolean (>=0<=0), ,true,switch.heatpump_heat_drain_pan,switch.heatpump_heatdrainpan,10,0,1,35,1 +"CSH5800iG",heatpump,16,heatcable,heating cable,boolean (>=0<=0), ,true,switch.heatpump_heating_cable,switch.heatpump_heatcable,10,0,1,36,1 +"CSH5800iG",heatpump,16,nrgtotal,total energy,uint24,kWh,false,sensor.heatpump_total_energy,sensor.heatpump_nrgtotal,10,0,1/100,37,2 +"CSH5800iG",heatpump,16,dhw.nrg,energy,uint24,kWh,false,sensor.heatpump_dhw_energy,sensor.heatpump_dhw_nrg,10,9,1/100,1,2 +"CSH5800iG",heatpump,16,nrgheat,energy heating,uint24,kWh,false,sensor.heatpump_energy_heating,sensor.heatpump_nrgheat,10,0,1/100,39,2 +"CSH5800iG",heatpump,16,metertotal,meter total,uint24,kWh,false,sensor.heatpump_meter_total,sensor.heatpump_metertotal,10,0,1/100,41,2 +"CSH5800iG",heatpump,16,metercomp,meter compressor,uint24,kWh,false,sensor.heatpump_meter_compressor,sensor.heatpump_metercomp,10,0,1/100,43,2 +"CSH5800iG",heatpump,16,metereheat,meter e-heater,uint24,kWh,false,sensor.heatpump_meter_e-heater,sensor.heatpump_metereheat,10,0,1/100,45,2 +"CSH5800iG",heatpump,16,meterheat,meter heating,uint24,kWh,false,sensor.heatpump_meter_heating,sensor.heatpump_meterheat,10,0,1/100,47,2 +"CSH5800iG",heatpump,16,dhw.meter,meter,uint24,kWh,false,sensor.heatpump_dhw_meter,sensor.heatpump_dhw_meter,10,9,1/100,3,2 +"CSH5800iG",heatpump,16,heatingstarts,heating control starts,uint24, ,false,sensor.heatpump_heating_control_starts,sensor.heatpump_heatingstarts,10,0,1,49,2 +"CSH5800iG",heatpump,16,dhw.startshp,starts hp,uint24, ,false,sensor.heatpump_dhw_starts_hp,sensor.heatpump_dhw_startshp,10,9,1,5,2 +"CSH5800iG",heatpump,16,fuelheat,fuel consumption heating,uint32,kWh,false,sensor.heatpump_fuel_consumption_heating,sensor.heatpump_fuelheat,10,0,1/10,51,2 +"CSH5800iG",heatpump,16,dhw.fueldhw,fuel consumption,uint32,kWh,false,sensor.heatpump_dhw_fuel_consumption,sensor.heatpump_dhw_fueldhw,10,9,1/10,7,2 +"CSH5800iG",heatpump,16,elheat,el. consumption heating,uint32,kWh,false,sensor.heatpump_el._consumption_heating,sensor.heatpump_elheat,10,0,1/10,53,2 +"CSH5800iG",heatpump,16,dhw.eldhw,el. consumption,uint32,kWh,false,sensor.heatpump_dhw_el._consumption,sensor.heatpump_dhw_eldhw,10,9,1/10,9,2 +"CSH5800iG",heatpump,16,elgenheat,el. generation heating,uint32,kWh,false,sensor.heatpump_el._generation_heating,sensor.heatpump_elgenheat,10,0,1/10,55,2 +"CSH5800iG",heatpump,16,dhw.elgendhw,el generation,uint32,kWh,false,sensor.heatpump_dhw_el_generation,sensor.heatpump_dhw_elgendhw,10,9,1/10,11,2 +"WM10",switch,71,activated,activated,boolean, ,false,binary_sensor.switch_activated,binary_sensor.switch_activated,12,0,1,0,1 +"WM10",switch,71,flowtemphc,flow temperature (TC1),uint16,C,false,sensor.switch_flow_temperature_(TC1),sensor.switch_flowtemphc,12,0,1/10,1,1 +"WM10",switch,71,status,status,int8, ,false,sensor.switch_status,sensor.switch_status,12,0,1,2,1 +"Rego 3000",controller,240,datetime,date/time,string, ,false,sensor.controller_date/time,sensor.controller_datetime,13,0,1,0,13 +"MX400",connect,17,datetime,date/time,string, ,false,sensor.connect_date/time,sensor.connect_datetime,14,0,1,0,13 +"MX400",connect,17,outdoortemp,outside temperature,int16,C,false,sensor.connect_outside_temperature,sensor.connect_outdoortemp,14,0,1/10,13,1 +"MX400",connect,17,src1.currtemp,current room temperature,int16,C,false,sensor.connect_src1_current_room_temperature,sensor.connect_src1_currtemp,14,36,1/10,0,1 +"MX400",connect,17,src1.airhumidity,relative air humidity,uint8,%,false,sensor.connect_src1_relative_air_humidity,sensor.connect_src1_airhumidity,14,36,1,1,1 +"MX400",connect,17,src1.dewtemperature,dew point temperature,int16,C,false,sensor.connect_src1_dew_point_temperature,sensor.connect_src1_dewtemperature,14,36,1/10,2,1 +"MX400",connect,17,src1.seltemp,selected room temperature,uint8 (>=5<=30),C,true,number.connect_src1_selected_room_temperature,number.connect_src1_seltemp,14,36,1/2,3,1 +"MX400",connect,17,src1.mode,operating mode,enum [off\|manual\|auto] (>=0<=0), ,true,select.connect_src1_operating_mode,select.connect_src1_mode,14,36,1,4,1 +"MX400",connect,17,src1.name,name,string (>=0<=0), ,true,sensor.connect_src1_name,sensor.connect_src1_name,14,36,1,5,26 +"MX400",connect,17,src1.childlock,child lock,boolean (>=0<=0), ,true,switch.connect_src1_child_lock,switch.connect_src1_childlock,14,36,1,31,1 +"MX400",connect,17,src1.icon,icon,enum [none\|mdi:chef-hat\|mdi:sofa-single-outline\|mdi:bowl-mix-outline\|mdi:bed-single-outline\|mdi:bed-double-outline\|mdi:teddy-bear\|mdi:shower\|mdi:laptop\|mdi:door\|mdi:palette-outline\|mdi:washing-machine\|mdi:bookshelf] (>=0<=0), ,true,select.connect_src1_icon,select.connect_src1_icon,14,36,1,32,1 +"EM10",alert,74,setflowtemp,set flow temperature,uint8,C,false,sensor.alert_set_flow_temperature,sensor.alert_setflowtemp,15,0,1,0,1 +"EM10",alert,74,setburnpow,burner set power,uint8,%,false,sensor.alert_burner_set_power,sensor.alert_setburnpow,15,0,1,1,1 +"EM10, EM100",extension,243,flowtempvf,flow temperature in header (T0/Vf),int16,C,false,sensor.extension_flow_temperature_in_header_(T0/Vf),sensor.extension_flowtempvf,16,0,1/10,0,1 +"EM10, EM100",extension,243,input,input,uint8,V,false,sensor.extension_input,sensor.extension_input,16,0,1/10,1,1 +"EM10, EM100",extension,243,outpow,output IO1,uint8,%,false,sensor.extension_output_IO1,sensor.extension_outpow,16,0,1,2,1 +"EM10, EM100",extension,243,setpower,request power,uint8,%,false,sensor.extension_request_power,sensor.extension_setpower,16,0,1,3,1 +"EM10, EM100",extension,243,setpoint,set temp.,uint8,C,false,sensor.extension_set_temp.,sensor.extension_setpoint,16,0,1,4,1 +"EM10, EM100",extension,243,minv,min volt.,uint8 (>=0<=0),V,true,number.extension_min_volt.,number.extension_minv,16,0,1/10,5,1 +"EM10, EM100",extension,243,maxv,max volt.,uint8 (>=0<=0),V,true,number.extension_max_volt.,number.extension_maxv,16,0,1/10,6,1 +"EM10, EM100",extension,243,mint,min temp.,uint8 (>=0<=0),C,true,number.extension_min_temp.,number.extension_mint,16,0,1,7,1 +"EM10, EM100",extension,243,maxt,max temp.,uint8 (>=0<=0),C,true,number.extension_max_temp.,number.extension_maxt,16,0,1,8,1 +"EM10, EM100",extension,243,mode,operating mode,uint8, ,false,sensor.extension_operating_mode,sensor.extension_mode,16,0,1,9,1 +"T1RF",extension,220,flowtempvf,flow temperature in header (T0/Vf),int16,C,false,sensor.extension_flow_temperature_in_header_(T0/Vf),sensor.extension_flowtempvf,16,0,1/10,0,1 +"T1RF",extension,220,input,input,uint8,V,false,sensor.extension_input,sensor.extension_input,16,0,1/10,1,1 +"T1RF",extension,220,outpow,output IO1,uint8,%,false,sensor.extension_output_IO1,sensor.extension_outpow,16,0,1,2,1 +"T1RF",extension,220,setpower,request power,uint8,%,false,sensor.extension_request_power,sensor.extension_setpower,16,0,1,3,1 +"T1RF",extension,220,setpoint,set temp.,uint8,C,false,sensor.extension_set_temp.,sensor.extension_setpoint,16,0,1,4,1 +"T1RF",extension,220,minv,min volt.,uint8 (>=0<=0),V,true,number.extension_min_volt.,number.extension_minv,16,0,1/10,5,1 +"T1RF",extension,220,maxv,max volt.,uint8 (>=0<=0),V,true,number.extension_max_volt.,number.extension_maxv,16,0,1/10,6,1 +"T1RF",extension,220,mint,min temp.,uint8 (>=0<=0),C,true,number.extension_min_temp.,number.extension_mint,16,0,1,7,1 +"T1RF",extension,220,maxt,max temp.,uint8 (>=0<=0),C,true,number.extension_max_temp.,number.extension_maxt,16,0,1,8,1 +"T1RF",extension,220,mode,operating mode,uint8, ,false,sensor.extension_operating_mode,sensor.extension_mode,16,0,1,9,1 +"AM200",heatsource,228,ahs1.sysflowtemp,system flow temperature,int16,C,false,sensor.heatsource_ahs1_system_flow_temperature,sensor.heatsource_ahs1_sysflowtemp,18,19,1/10,0,1 +"AM200",heatsource,228,ahs1.sysrettemp,system return temperature,int16,C,false,sensor.heatsource_ahs1_system_return_temperature,sensor.heatsource_ahs1_sysrettemp,18,19,1/10,1,1 +"AM200",heatsource,228,ahs1.altflowtemp,alternative hs flow temperature,int16,C,false,sensor.heatsource_ahs1_alternative_hs_flow_temperature,sensor.heatsource_ahs1_altflowtemp,18,19,1/10,2,1 +"AM200",heatsource,228,ahs1.altrettemp,alternative hs return temperature,int16,C,false,sensor.heatsource_ahs1_alternative_hs_return_temperature,sensor.heatsource_ahs1_altrettemp,18,19,1/10,3,1 +"AM200",heatsource,228,ahs1.cyltoptemp,cylinder top temperature,int16,C,false,sensor.heatsource_ahs1_cylinder_top_temperature,sensor.heatsource_ahs1_cyltoptemp,18,19,1/10,4,1 +"AM200",heatsource,228,ahs1.cylcentertemp,cylinder center temperature,int16,C,false,sensor.heatsource_ahs1_cylinder_center_temperature,sensor.heatsource_ahs1_cylcentertemp,18,19,1/10,5,1 +"AM200",heatsource,228,ahs1.cylbottomtemp,cylinder bottom temperature,int16,C,false,sensor.heatsource_ahs1_cylinder_bottom_temperature,sensor.heatsource_ahs1_cylbottomtemp,18,19,1/10,6,1 +"AM200",heatsource,228,ahs1.fluegastemp,flue gas temperature,int16,C,false,sensor.heatsource_ahs1_flue_gas_temperature,sensor.heatsource_ahs1_fluegastemp,18,19,1/10,7,1 +"AM200",heatsource,228,ahs1.valvebuffer,buffer valve,uint8,%,false,sensor.heatsource_ahs1_buffer_valve,sensor.heatsource_ahs1_valvebuffer,18,19,1,8,1 +"AM200",heatsource,228,ahs1.valvereturn,return valve,uint8,%,false,sensor.heatsource_ahs1_return_valve,sensor.heatsource_ahs1_valvereturn,18,19,1,9,1 +"AM200",heatsource,228,ahs1.apumpmod,alternative hs pump modulation,uint8,%,false,sensor.heatsource_ahs1_alternative_hs_pump_modulation,sensor.heatsource_ahs1_apumpmod,18,19,1,10,1 +"AM200",heatsource,228,ahs1.vr2config,vr2 configuration,enum [off\|bypass] (>=0<=0), ,true,select.heatsource_ahs1_vr2_configuration,select.heatsource_ahs1_vr2config,18,19,1,11,1 +"AM200",heatsource,228,ahs1.ahsactivated,alternate heat source activation,boolean (>=0<=0), ,true,switch.heatsource_ahs1_alternate_heat_source_activation,switch.heatsource_ahs1_ahsactivated,18,19,1,12,1 +"AM200",heatsource,228,ahs1.apumpconfig,primary pump config,boolean (>=0<=0), ,true,switch.heatsource_ahs1_primary_pump_config,switch.heatsource_ahs1_apumpconfig,18,19,1,13,1 +"AM200",heatsource,228,ahs1.apumpsignal,output for pr1 pump,enum [off\|pwm\|pwm inverse] (>=0<=0), ,true,select.heatsource_ahs1_output_for_pr1_pump,select.heatsource_ahs1_apumpsignal,18,19,1,14,1 +"AM200",heatsource,228,ahs1.apumpmin,min output pump pr1,uint8 (>=12<=50),%,true,number.heatsource_ahs1_min_output_pump_pr1,number.heatsource_ahs1_apumpmin,18,19,1,15,1 +"AM200",heatsource,228,ahs1.temprise,ahs return temp rise,boolean (>=0<=0), ,true,switch.heatsource_ahs1_ahs_return_temp_rise,switch.heatsource_ahs1_temprise,18,19,1,16,1 +"AM200",heatsource,228,ahs1.setreturntemp,set temp return,uint8 (>=40<=75),C,true,number.heatsource_ahs1_set_temp_return,number.heatsource_ahs1_setreturntemp,18,19,1,17,1 +"AM200",heatsource,228,ahs1.mixruntime,mixer run time,uint16 (>=0<=600),seconds,true,number.heatsource_ahs1_mixer_run_time,number.heatsource_ahs1_mixruntime,18,19,1,18,1 +"AM200",heatsource,228,ahs1.setflowtemp,set flow temperature,uint8 (>=40<=75),C,true,number.heatsource_ahs1_set_flow_temperature,number.heatsource_ahs1_setflowtemp,18,19,1,19,1 +"AM200",heatsource,228,ahs1.bufbypass,buffer bypass config,enum [no\|mixer\|valve] (>=0<=0), ,true,select.heatsource_ahs1_buffer_bypass_config,select.heatsource_ahs1_bufbypass,18,19,1,20,1 +"AM200",heatsource,228,ahs1.bufmixruntime,bypass mixer run time,uint16 (>=0<=600),seconds,true,number.heatsource_ahs1_bypass_mixer_run_time,number.heatsource_ahs1_bufmixruntime,18,19,1,21,1 +"AM200",heatsource,228,ahs1.bufconfig,dhw buffer config,enum [off\|monovalent\|bivalent] (>=0<=0), ,true,select.heatsource_ahs1_dhw_buffer_config,select.heatsource_ahs1_bufconfig,18,19,1,22,1 +"AM200",heatsource,228,ahs1.blockmode,config htg. blocking mode,enum [off\|auto\|blocking] (>=0<=0), ,true,select.heatsource_ahs1_config_htg._blocking_mode,select.heatsource_ahs1_blockmode,18,19,1,23,1 +"AM200",heatsource,228,ahs1.blockterm,config of block terminal,enum [n_o\|n_c] (>=0<=0), ,true,select.heatsource_ahs1_config_of_block_terminal,select.heatsource_ahs1_blockterm,18,19,1,24,1 +"AM200",heatsource,228,ahs1.blockhyst,hyst. for boiler block,int8 (>=0<=50),C,true,number.heatsource_ahs1_hyst._for_boiler_block,number.heatsource_ahs1_blockhyst,18,19,1,25,1 +"AM200",heatsource,228,ahs1.releasewait,boiler release wait time,uint8 (>=0<=240),minutes,true,number.heatsource_ahs1_boiler_release_wait_time,number.heatsource_ahs1_releasewait,18,19,1,26,1 +"AM200",heatsource,228,ahs1.burner,burner,boolean, ,false,binary_sensor.heatsource_ahs1_burner,binary_sensor.heatsource_ahs1_burner,18,19,1,27,1 +"AM200",heatsource,228,ahs1.apump,alternative hs pump,boolean, ,false,binary_sensor.heatsource_ahs1_alternative_hs_pump,binary_sensor.heatsource_ahs1_apump,18,19,1,28,1 +"AM200",heatsource,228,ahs1.heatrequest,heat request,uint8,%,false,sensor.heatsource_ahs1_heat_request,sensor.heatsource_ahs1_heatrequest,18,19,1,29,1 +"AM200",heatsource,228,ahs1.blockremain,remaining blocktime,uint8,minutes,false,sensor.heatsource_ahs1_remaining_blocktime,sensor.heatsource_ahs1_blockremain,18,19,1,30,1 +"AM200",heatsource,228,ahs1.blockremaindhw,remaining blocktime dhw,uint8,minutes,false,sensor.heatsource_ahs1_remaining_blocktime_dhw,sensor.heatsource_ahs1_blockremaindhw,18,19,1,31,1 +"HRV176, HRV156, 5000c, MV200",ventilation,231,outfresh,outdoor fresh air,int16,C,false,sensor.ventilation_outdoor_fresh_air,sensor.ventilation_outfresh,19,0,1/10,0,1 +"HRV176, HRV156, 5000c, MV200",ventilation,231,infresh,indoor fresh air,int16,C,false,sensor.ventilation_indoor_fresh_air,sensor.ventilation_infresh,19,0,1/10,1,1 +"HRV176, HRV156, 5000c, MV200",ventilation,231,outexhaust,outdoor exhaust air,int16,C,false,sensor.ventilation_outdoor_exhaust_air,sensor.ventilation_outexhaust,19,0,1/10,2,1 +"HRV176, HRV156, 5000c, MV200",ventilation,231,inexhaust,indoor exhaust air,int16,C,false,sensor.ventilation_indoor_exhaust_air,sensor.ventilation_inexhaust,19,0,1/10,3,1 +"HRV176, HRV156, 5000c, MV200",ventilation,231,ventinspeed,in blower speed,uint8,%,false,sensor.ventilation_in_blower_speed,sensor.ventilation_ventinspeed,19,0,1,4,1 +"HRV176, HRV156, 5000c, MV200",ventilation,231,ventoutspeed,out blower speed,uint8,%,false,sensor.ventilation_out_blower_speed,sensor.ventilation_ventoutspeed,19,0,1,5,1 +"HRV176, HRV156, 5000c, MV200",ventilation,231,ventmode,ventilation mode,enum [auto\|off\|L1\|L2\|L3\|L4\|demand\|sleep\|intense\|bypass\|party\|fireplace] (>=0<=0), ,true,select.ventilation_ventilation_mode,select.ventilation_ventmode,19,0,1,6,1 +"HRV176, HRV156, 5000c, MV200",ventilation,231,airquality,air quality (voc),uint16, ,false,sensor.ventilation_air_quality_(voc),sensor.ventilation_airquality,19,0,1,7,1 +"HRV176, HRV156, 5000c, MV200",ventilation,231,airhumidity,relative air humidity,uint8,%,false,sensor.ventilation_relative_air_humidity,sensor.ventilation_airhumidity,19,0,1,8,1 +"HRV176, HRV156, 5000c, MV200",ventilation,231,bypass,bypass,boolean (>=0<=0), ,true,switch.ventilation_bypass,switch.ventilation_bypass,19,0,1,9,1 +"IPM",water,100,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.water_dhw_selected_temperature,number.water_dhw_seltemp,20,9,1,0,1 +"IPM",water,100,dhw.temp,current temperature,uint16,C,false,sensor.water_dhw_current_temperature,sensor.water_dhw_temp,20,9,1/10,1,1 +"IPM",water,100,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.water_dhw_current_extern_temperature,sensor.water_dhw_curtemp2,20,9,1/10,2,1 +"IPM",water,100,dhw.hydrTemp,hydraulic header temperature,uint16,C,false,sensor.water_dhw_hydraulic_header_temperature,sensor.water_dhw_hydrTemp,20,9,1/10,3,1 +"IPM",water,100,dhw.pump,pump,boolean, ,false,binary_sensor.water_dhw_pump,binary_sensor.water_dhw_pump,20,9,1,4,1 +"IPM",water,100,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=0),C,true,number.water_dhw_flow_temperature_offset,number.water_dhw_flowtempoffset,20,9,1,5,1 +"IPM",water,100,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.water_dhw_hysteresis_on_temperature,number.water_dhw_hyston,20,9,1,6,1 +"IPM",water,100,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.water_dhw_hysteresis_off_temperature,number.water_dhw_hystoff,20,9,1,7,1 +"IPM",water,100,dhw.disinfectiontemp,disinfection temperature,uint8 (>=0<=0),C,true,number.water_dhw_disinfection_temperature,number.water_dhw_disinfectiontemp,20,9,1,8,1 +"IPM",water,100,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.water_dhw_circulation_active,switch.water_dhw_circ,20,9,1,9,1 +"IPM",water,100,dhw.circmode,circulation pump mode,enum [off\|on\|auto\|own prog] (>=0<=0), ,true,select.water_dhw_circulation_pump_mode,select.water_dhw_circmode,20,9,1,10,1 +"IPM2",water,102,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.water_dhw_selected_temperature,number.water_dhw_seltemp,20,9,1,0,1 +"IPM2",water,102,dhw.temp,current temperature,uint16,C,false,sensor.water_dhw_current_temperature,sensor.water_dhw_temp,20,9,1/10,1,1 +"IPM2",water,102,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.water_dhw_current_extern_temperature,sensor.water_dhw_curtemp2,20,9,1/10,2,1 +"IPM2",water,102,dhw.hydrTemp,hydraulic header temperature,uint16,C,false,sensor.water_dhw_hydraulic_header_temperature,sensor.water_dhw_hydrTemp,20,9,1/10,3,1 +"IPM2",water,102,dhw.pump,pump,boolean, ,false,binary_sensor.water_dhw_pump,binary_sensor.water_dhw_pump,20,9,1,4,1 +"IPM2",water,102,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=0),C,true,number.water_dhw_flow_temperature_offset,number.water_dhw_flowtempoffset,20,9,1,5,1 +"IPM2",water,102,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.water_dhw_hysteresis_on_temperature,number.water_dhw_hyston,20,9,1,6,1 +"IPM2",water,102,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.water_dhw_hysteresis_off_temperature,number.water_dhw_hystoff,20,9,1,7,1 +"IPM2",water,102,dhw.disinfectiontemp,disinfection temperature,uint8 (>=0<=0),C,true,number.water_dhw_disinfection_temperature,number.water_dhw_disinfectiontemp,20,9,1,8,1 +"IPM2",water,102,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.water_dhw_circulation_active,switch.water_dhw_circ,20,9,1,9,1 +"IPM2",water,102,dhw.circmode,circulation pump mode,enum [off\|on\|auto\|own prog] (>=0<=0), ,true,select.water_dhw_circulation_pump_mode,select.water_dhw_circmode,20,9,1,10,1 +"MM100",water,160,dhw.temp,current temperature,uint16,C,false,sensor.water_dhw_current_temperature,sensor.water_dhw_temp,20,9,1/10,1,1 +"MM100",water,160,dhw.tempstatus,temperature switch in assigned dhw (MC1),int8, ,false,sensor.water_dhw_temperature_switch_in_assigned_dhw_(MC1),sensor.water_dhw_tempstatus,20,9,1,11,1 +"MM100",water,160,dhw.pump,pump,boolean, ,false,binary_sensor.water_dhw_pump,binary_sensor.water_dhw_pump,20,9,1,4,1 +"MM100",water,160,dhw.maxtemp,maximum temperature,uint8 (>=0<=0),C,true,number.water_dhw_maximum_temperature,number.water_dhw_maxtemp,20,9,1,12,1 +"MM100",water,160,dhw.difftemp,start differential temperature,int8 (>=0<=0),C,true,number.water_dhw_start_differential_temperature,number.water_dhw_difftemp,20,9,1,13,1 +"MM100",water,160,dhw.disinfectiontemp,disinfection temperature,uint8 (>=0<=0),C,true,number.water_dhw_disinfection_temperature,number.water_dhw_disinfectiontemp,20,9,1,8,1 +"MM100",water,160,dhw.redtemp,reduced temperature,uint8 (>=0<=0),C,true,number.water_dhw_reduced_temperature,number.water_dhw_redtemp,20,9,1,14,1 +"MM100",water,160,dhw.requiredtemp,required temperature,uint8 (>=0<=0),C,true,number.water_dhw_required_temperature,number.water_dhw_requiredtemp,20,9,1,15,1 +"MM100",water,160,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.water_dhw_circulation_active,switch.water_dhw_circ,20,9,1,9,1 +"MM100",water,160,dhw.circmode,circulation pump mode,enum [off\|on\|auto\|own prog] (>=0<=0), ,true,select.water_dhw_circulation_pump_mode,select.water_dhw_circmode,20,9,1,10,1 +"MM200",water,161,dhw.temp,current temperature,uint16,C,false,sensor.water_dhw_current_temperature,sensor.water_dhw_temp,20,9,1/10,1,1 +"MM200",water,161,dhw.tempstatus,temperature switch in assigned dhw (MC1),int8, ,false,sensor.water_dhw_temperature_switch_in_assigned_dhw_(MC1),sensor.water_dhw_tempstatus,20,9,1,11,1 +"MM200",water,161,dhw.pump,pump,boolean, ,false,binary_sensor.water_dhw_pump,binary_sensor.water_dhw_pump,20,9,1,4,1 +"MM200",water,161,dhw.maxtemp,maximum temperature,uint8 (>=0<=0),C,true,number.water_dhw_maximum_temperature,number.water_dhw_maxtemp,20,9,1,12,1 +"MM200",water,161,dhw.difftemp,start differential temperature,int8 (>=0<=0),C,true,number.water_dhw_start_differential_temperature,number.water_dhw_difftemp,20,9,1,13,1 +"MM200",water,161,dhw.disinfectiontemp,disinfection temperature,uint8 (>=0<=0),C,true,number.water_dhw_disinfection_temperature,number.water_dhw_disinfectiontemp,20,9,1,8,1 +"MM200",water,161,dhw.redtemp,reduced temperature,uint8 (>=0<=0),C,true,number.water_dhw_reduced_temperature,number.water_dhw_redtemp,20,9,1,14,1 +"MM200",water,161,dhw.requiredtemp,required temperature,uint8 (>=0<=0),C,true,number.water_dhw_required_temperature,number.water_dhw_requiredtemp,20,9,1,15,1 +"MM200",water,161,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.water_dhw_circulation_active,switch.water_dhw_circ,20,9,1,9,1 +"MM200",water,161,dhw.circmode,circulation pump mode,enum [off\|on\|auto\|own prog] (>=0<=0), ,true,select.water_dhw_circulation_pump_mode,select.water_dhw_circmode,20,9,1,10,1 +"SM100, MS100",water,163,dhw.temp,current temperature,uint16,C,false,sensor.water_dhw_current_temperature,sensor.water_dhw_temp,20,9,1/10,1,1 +"SM100, MS100",water,163,dhw.tempstatus,temperature switch in assigned dhw (MC1),int8, ,false,sensor.water_dhw_temperature_switch_in_assigned_dhw_(MC1),sensor.water_dhw_tempstatus,20,9,1,11,1 +"SM100, MS100",water,163,dhw.pump,pump,boolean, ,false,binary_sensor.water_dhw_pump,binary_sensor.water_dhw_pump,20,9,1,4,1 +"SM100, MS100",water,163,dhw.maxtemp,maximum temperature,uint8 (>=0<=0),C,true,number.water_dhw_maximum_temperature,number.water_dhw_maxtemp,20,9,1,12,1 +"SM100, MS100",water,163,dhw.difftemp,start differential temperature,int8 (>=0<=0),C,true,number.water_dhw_start_differential_temperature,number.water_dhw_difftemp,20,9,1,13,1 +"SM100, MS100",water,163,dhw.disinfectiontemp,disinfection temperature,uint8 (>=0<=0),C,true,number.water_dhw_disinfection_temperature,number.water_dhw_disinfectiontemp,20,9,1,8,1 +"SM100, MS100",water,163,dhw.redtemp,reduced temperature,uint8 (>=0<=0),C,true,number.water_dhw_reduced_temperature,number.water_dhw_redtemp,20,9,1,14,1 +"SM100, MS100",water,163,dhw.requiredtemp,required temperature,uint8 (>=0<=0),C,true,number.water_dhw_required_temperature,number.water_dhw_requiredtemp,20,9,1,15,1 +"SM100, MS100",water,163,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.water_dhw_circulation_active,switch.water_dhw_circ,20,9,1,9,1 +"SM100, MS100",water,163,dhw.circmode,circulation pump mode,enum [off\|on\|auto\|own prog] (>=0<=0), ,true,select.water_dhw_circulation_pump_mode,select.water_dhw_circmode,20,9,1,10,1 +"SM200, MS200",water,164,dhw.temp,current temperature,uint16,C,false,sensor.water_dhw_current_temperature,sensor.water_dhw_temp,20,9,1/10,1,1 +"SM200, MS200",water,164,dhw.tempstatus,temperature switch in assigned dhw (MC1),int8, ,false,sensor.water_dhw_temperature_switch_in_assigned_dhw_(MC1),sensor.water_dhw_tempstatus,20,9,1,11,1 +"SM200, MS200",water,164,dhw.pump,pump,boolean, ,false,binary_sensor.water_dhw_pump,binary_sensor.water_dhw_pump,20,9,1,4,1 +"SM200, MS200",water,164,dhw.maxtemp,maximum temperature,uint8 (>=0<=0),C,true,number.water_dhw_maximum_temperature,number.water_dhw_maxtemp,20,9,1,12,1 +"SM200, MS200",water,164,dhw.difftemp,start differential temperature,int8 (>=0<=0),C,true,number.water_dhw_start_differential_temperature,number.water_dhw_difftemp,20,9,1,13,1 +"SM200, MS200",water,164,dhw.disinfectiontemp,disinfection temperature,uint8 (>=0<=0),C,true,number.water_dhw_disinfection_temperature,number.water_dhw_disinfectiontemp,20,9,1,8,1 +"SM200, MS200",water,164,dhw.redtemp,reduced temperature,uint8 (>=0<=0),C,true,number.water_dhw_reduced_temperature,number.water_dhw_redtemp,20,9,1,14,1 +"SM200, MS200",water,164,dhw.requiredtemp,required temperature,uint8 (>=0<=0),C,true,number.water_dhw_required_temperature,number.water_dhw_requiredtemp,20,9,1,15,1 +"SM200, MS200",water,164,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.water_dhw_circulation_active,switch.water_dhw_circ,20,9,1,9,1 +"SM200, MS200",water,164,dhw.circmode,circulation pump mode,enum [off\|on\|auto\|own prog] (>=0<=0), ,true,select.water_dhw_circulation_pump_mode,select.water_dhw_circmode,20,9,1,10,1 +"MP100",pool,204,pooltemp,pool temperature,int16,C,false,sensor.pool_pool_temperature,sensor.pool_pooltemp,21,0,1/10,-1,1 +"MP100",pool,204,poolshuntstatus,valve status,enum [stopped\|opening\|closing\|open\|close], ,false,sensor.pool_valve_status,sensor.pool_poolshuntstatus,21,0,1,-1,1 +"MP100",pool,204,poolshunt,valve actual,uint8,%,false,sensor.pool_valve_actual,sensor.pool_poolshunt,21,0,1,-1,1 +"MP100",pool,204,poolshuntset,valve setpoint,uint8,%,false,sensor.pool_valve_setpoint,sensor.pool_poolshuntset,21,0,1,-1,1 +"MP100",pool,204,poolrequest,pool request,boolean, ,false,binary_sensor.pool_pool_request,binary_sensor.pool_poolrequest,21,0,1,-1,1 diff --git a/dump_telegrams.csv b/dump_telegrams.csv new file mode 100644 index 000000000..dc630de2a --- /dev/null +++ b/dump_telegrams.csv @@ -0,0 +1,238 @@ +telegram_type_id,name,is_fetched +0x04,UBAFactory,fetched +0x06,RCTime, +0x0A,EasyMonitor,fetched +0x10,UBAErrorMessage1, +0x11,UBAErrorMessage2, +0x12,RCErrorMessage, +0x13,RCErrorMessage2, +0x14,UBATotalUptime,fetched +0x15,UBAMaintenanceData, +0x16,UBAParameters,fetched +0x18,UBAMonitorFast, +0x19,UBAMonitorSlow, +0x1A,UBASetPoints, +0x1C,UBAMaintenanceStatus, +0x1E,HydrTemp, +0x23,JunkersSetMixer,fetched +0x27,UBASettingsWW,fetched +0x28,WeatherComp,fetched +0x2A,MC110Status, +0x2E,Meters, +0x33,UBAParameterWW,fetched +0x34,UBAMonitorWW, +0x35,UBAFlags, +0x37,WWSettings,fetched +0x38,WWTimer,fetched +0x39,WWCircTimer,fetched +0x3A,RC30WWSettings,fetched +0x3B,Energy, +0x3D,RC35Set, +0x3E,RC35Monitor, +0x3F,RC30Timer, +0x40,RC30Temp, +0x41,RC30Monitor, +0x42,RC35Timer2, +0x47,RC35Set, +0x48,RC35Monitor, +0x49,RC35Timer, +0x4C,RC35Timer2, +0x51,RC35Set, +0x52,RC35Monitor, +0x53,RC35Timer, +0x56,RC35Timer2, +0x5B,RC35Set, +0x5C,RC35Monitor, +0x5D,RC35Timer, +0x60,RC35Timer2, +0x96,SM10Config,fetched +0x97,SM10Monitor, +0x9C,WM10MonitorMessage, +0x9D,WM10SetMessage, +0xA2,RCError, +0xA3,RCOutdoorTemp, +0xA5,IBASettings,fetched +0xA7,RC30Set, +0xA9,RC30Vacation,fetched +0xAA,MMConfigMessage,fetched +0xAB,MMStatusMessage, +0xAC,MMSetMessage, +0xAF,RC20Remote, +0xB0,RC10Set, +0xB1,RC10Monitor, +0xBB,HybridSettings,fetched +0xBF,ErrorMessage, +0xC0,RCErrorMessage, +0xC2,UBAErrorMessage3, +0xC6,UBAErrorMessage3, +0xD1,UBAOutdoorTemp, +0xE3,UBAMonitorSlowPlus2, +0xE4,UBAMonitorFastPlus, +0xE5,UBAMonitorSlowPlus, +0xE6,UBAParametersPlus,fetched +0xE9,UBAMonitorWWPlus, +0xEA,UBAParameterWWPlus,fetched +0xEB,PumpKick,fetched +0x0101,ISM1Set,fetched +0x0103,ISM1StatusMessage,fetched +0x0104,ISM2StatusMessage, +0x010C,IPMStatusMessage, +0x011E,JunkersDisp,fetched +0x012E,HPEnergy1, +0x013B,HPEnergy2, +0x0165,JunkersSet, +0x0166,JunkersSet, +0x0167,JunkersSet, +0x0168,JunkersSet, +0x016E,Absent,fetched +0x016F,JunkersMonitor, +0x0170,JunkersMonitor, +0x0171,JunkersMonitor, +0x0172,JunkersMonitor, +0x0179,JunkersSet, +0x017A,JunkersSet, +0x017B,JunkersSet, +0x017C,JunkersSet, +0x01D3,JunkersDhw,fetched +0x023A,RC300OutdoorTemp,fetched +0x023E,PVSettings,fetched +0x0240,RC300Settings,fetched +0x0241,RC300Settings,fetched +0x0267,RC300Floordry, +0x0269,RC300Holiday,fetched +0x0291,HPMode,fetched +0x0292,HPMode,fetched +0x0293,HPMode,fetched +0x0294,HPMode,fetched +0x029B,RC300Curves, +0x029C,RC300Curves, +0x029D,RC300Curves, +0x029E,RC300Curves, +0x029F,RC300Curves, +0x02A0,RC300Curves, +0x02A1,RC300Curves, +0x02A2,RC300Curves, +0x02A5,CRFMonitor, +0x02A6,RC300Monitor, +0x02A7,RC300Monitor, +0x02A8,RC300Monitor, +0x02A9,RC300Monitor, +0x02AA,RC300Monitor, +0x02AB,RC300Monitor, +0x02AC,RC300Monitor, +0x02AF,RC300Summer, +0x02B0,RC300Summer, +0x02B1,RC300Summer, +0x02B2,RC300Summer, +0x02B3,RC300Summer, +0x02B4,RC300Summer, +0x02B5,RC300Summer, +0x02B6,RC300Summer, +0x02B9,RC300Set, +0x02BA,RC300Set, +0x02BB,RC300Set, +0x02BC,RC300Set, +0x02BD,RC300Set, +0x02BE,RC300Set, +0x02BF,RC300Set, +0x02C0,RC300Set, +0x02CC,HPPressure,fetched +0x02CD,MMPLUSConfigMessage, +0x02D6,HPPump2,fetched +0x02D7,MMPLUSStatusMessage, +0x02E0,UBASetPoints, +0x02F5,RC300WWmode,fetched +0x02F6,RC300WW2mode,fetched +0x0313,MMPLUSConfigMessage_WWC,fetched +0x031B,RC300WWtemp,fetched +0x031D,RC300WWmode2, +0x031E,RC300WWmode2, +0x0331,MMPLUSStatusMessage_WWC, +0x0358,SM100SystemConfig,fetched +0x035A,SM100CircuitConfig,fetched +0x035C,SM100HeatAssist,fetched +0x035D,SM100Circuit2Config,fetched +0x035F,SM100Config1,fetched +0x0361,SM100Differential,fetched +0x0362,SM100Monitor, +0x0363,SM100Monitor2, +0x0364,SM100Status, +0x0366,SM100Config, +0x036A,SM100Status2, +0x0380,SM100CollectorConfig,fetched +0x038E,SM100Energy,fetched +0x0391,SM100Time,fetched +0x0421,RC300Set2, +0x0422,RC300Set2, +0x0423,RC300Set2, +0x0424,RC300Set2, +0x043F,CRHolidays,fetched +0x0467,HPSet, +0x0468,HPSet, +0x0469,HPSet, +0x046A,HPSet, +0x0470,RC300Summer3,fetched +0x0471,RC300Summer2, +0x0472,RC300Summer2, +0x0473,RC300Summer2, +0x0474,RC300Summer2, +0x0475,RC300Summer2, +0x0476,RC300Summer2, +0x0477,RC300Summer2, +0x0478,RC300Summer2, +0x047B,HP2, +0x0484,HPSilentMode,fetched +0x0485,HpCooling,fetched +0x0486,HpInConfig,fetched +0x0488,HPValve,fetched +0x0489,HPpassive, +0x048A,HpPool,fetched +0x048B,HPPumps,fetched +0x048D,HpPower,fetched +0x048F,HpTemperatures, +0x0491,HPAdditionalHeater,fetched +0x0492,HpHeaterConfig,fetched +0x0494,UBAEnergySupplied, +0x0495,UBAInformation, +0x0499,HPDhwSettings,fetched +0x049C,HPSettings2,fetched +0x049D,HPSettings3,fetched +0x04A2,HpInput,fetched +0x04A5,HPFan,fetched +0x04A7,HPPowerLimit,fetched +0x04AA,HPPower2,fetched +0x04AE,HPEnergy,fetched +0x04AF,HPMeters,fetched +0x055C,VentilationSet,fetched +0x056B,VentilationMode,fetched +0x0583,VentilationMonitor, +0x0585,Blowerspeed, +0x0587,Bypass, +0x05BA,HpPoolStatus,fetched +0x05C4,HpPoolShunt, +0x05D9,Airquality, +0x0772,HIUSettings, +0x0779,HIUMonitor, +0x07A5,SM100wwCirc,fetched +0x07A6,SM100wwParam,fetched +0x07AA,SM100wwStatus, +0x07AB,SM100wwCommand, +0x07AC,SM100wwParam1, +0x07AD,SM100ValveStatus, +0x07AE,SM100wwKeepWarm,fetched +0x07D6,SM100wwTemperature, +0x07E0,SM100wwStatus2,fetched +0x0935,EM100SetMessage,fetched +0x0936,EM100OutMessage, +0x0937,EM100TempMessage, +0x0938,EM100InputMessage, +0x0939,EM100MonitorMessage, +0x093A,EM100ConfigMessage, +0x0998,HPSettings,fetched +0x0999,HPFunctionTest,fetched +0x099A,HPStarts, +0x099B,HPFlowTemp, +0x099C,HPComp, +0x099D,HPComp2, +0x09A0,HPTemperature, +0x09A8,HPVolume, -- 2.54.0 From 0094df41d9e702f8c99ad7a322430838be83dc90 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 11 Oct 2026 10:34:39 +0200 Subject: [PATCH 077/148] package update --- interface/package.json | 4 +- interface/pnpm-lock.yaml | 172 +++++++++++++++++++-------------------- mock-api/package.json | 2 +- mock-api/pnpm-lock.yaml | 122 +++++++++++++-------------- 4 files changed, 150 insertions(+), 150 deletions(-) diff --git a/interface/package.json b/interface/package.json index 31905b4ab..56e2d985d 100644 --- a/interface/package.json +++ b/interface/package.json @@ -44,7 +44,7 @@ "@eslint/js": "^10.0.1", "@preact/preset-vite": "^2.10.6", "@trivago/prettier-plugin-sort-imports": "^6.0.2", - "@types/node": "^26.6.4", + "@types/node": "^26.6.5", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", "concurrently": "^10.0.6", @@ -60,5 +60,5 @@ "vite": "^8.3.4", "vite-plugin-imagemin": "^0.6.1" }, - "packageManager": "pnpm@12.10.1" + "packageManager": "pnpm@12.11.2" } diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index d4020ce46..1c23a059e 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -7,153 +7,153 @@ importers: configDependencies: {} packageManagerDependencies: pnpm: - specifier: 12.10.1 - version: 12.10.1 + specifier: 12.11.2 + version: 12.11.2 packages: - '@pnpm/exe.android-arm64@12.10.1': - resolution: {integrity: sha512-CVTlHPwNvadQCJD9bGSMzWIhFX8QpjtqC2c27dhdnn/9iKzEjZ3qL62o3gHpKbIuo6qn4WxTKRoaokgNdReBig==} + '@pnpm/exe.android-arm64@12.11.2': + resolution: {integrity: sha512-owLw13OfPkEoY+hLBNeeG+dCFhywr7q2d/EHPz4mNL2RhKnv8gNwMARkjkiDQu234aItVwFNDeGnmQXm+ikkAg==} cpu: [arm64] os: [android] - '@pnpm/exe.android-x64@12.10.1': - resolution: {integrity: sha512-NFiYLIaodY7da0XIebwcU3JoP7IK/lzF7zgKSSP+9H+QcFnQ1GDfBkuBKCYJzZ+Xu0WH54neIPLBBCaOjaaauA==} + '@pnpm/exe.android-x64@12.11.2': + resolution: {integrity: sha512-GYPkVebl4iokOA/4MPSpGoUVfFlsth7uqOCe1XiaiM23LAdvUOMJBObqHJijr89ZqjwHm9pO6vO45GRwJ2U2qA==} cpu: [x64] os: [android] - '@pnpm/exe.darwin-arm64@12.10.1': - resolution: {integrity: sha512-0O8tdQ8ijlPJudXspLMTcitMkdBEz6uUflazL5uQE0WMs85oQIp0U+5hfEktMFB64QqEhjqlvvujTwbzdr9oMg==} + '@pnpm/exe.darwin-arm64@12.11.2': + resolution: {integrity: sha512-n9M4On66y8FDxUAKgMO1FXt0qihyG4e+56p3/F0uo8Bx9KplW8BwKVnXigzCJ8aNM6sVVPkOE6M9XXbeVIxnZA==} cpu: [arm64] os: [darwin] - '@pnpm/exe.darwin-x64@12.10.1': - resolution: {integrity: sha512-ud+1/uZOKEo8P/AsPynOJc/LNwfI0j6WwCElibj71rU9l4nIBnsSn+wWTIPZPkZ4BBSH5+82azSnAARMyJ1lNA==} + '@pnpm/exe.darwin-x64@12.11.2': + resolution: {integrity: sha512-oSW7n3sBT0c0cyk4kj10T2Y6Mpm+OFEiCAWozgX039tdoI6yqJF1uaFD3sw7ugLdu6VV3+uY0pa1TUZIPdxDWA==} cpu: [x64] os: [darwin] - '@pnpm/exe.freebsd-x64@12.10.1': - resolution: {integrity: sha512-mj9PE5rf8uAfQQ2K66HSATMSut+lNiB4eSqFd5+azFVCMnxNSy/32xpZQJT21PhnN3Y4qbK+iKHe5nWAxSuRhw==} + '@pnpm/exe.freebsd-x64@12.11.2': + resolution: {integrity: sha512-qbzc3KoDpa/Lkf8vs3jnDe6dUUbso+6eLIyssYFMiliLpYNxn8dirk11YoNnOQcdHVB50v5RFls1Yid6ttT5pg==} cpu: [x64] os: [freebsd] - '@pnpm/exe.linux-arm64-musl@12.10.1': - resolution: {integrity: sha512-xba+00wZJ8Um6rBJJjWl88uJj0tydB8dtomvjlCLvi0uL32vpa9CRP8Vv26FIXvbiZ1bo2RCzYt/eChxJVV52w==} + '@pnpm/exe.linux-arm64-musl@12.11.2': + resolution: {integrity: sha512-uMEYDwKRktGwANubQ+kYCwmhNwg3Ik6qK89ahsbQ5cP30R/5FVJb/T99vr9XRUBC/A7mZI6eeT92oyVas9ACyg==} cpu: [arm64] os: [linux] libc: [musl] - '@pnpm/exe.linux-arm64@12.10.1': - resolution: {integrity: sha512-oBdMp69ScC9UnniG4qZAQVr2fBDSXjm4yk/72vkEVyrlwS23yMxcRQl7Qdo3sgXPAygY6TWnPRKm4rXzjoyW7w==} + '@pnpm/exe.linux-arm64@12.11.2': + resolution: {integrity: sha512-6e8ZAQUwFXAWHHHv5FesWqf/kEK04wuitBv5f/gxzkC0DiBfaixr+f+6JQede8SF4Ji5LcMwVFJbzAtffpWxEg==} cpu: [arm64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-ppc64@12.10.1': - resolution: {integrity: sha512-Yyb3wu09h3c7mLme270uHFiVaAIUHC411Ru9LIU2BKUIstrGlXa9OqqVWoXaRgYRdFdOFknkwG7GNn6ygwLbnw==} + '@pnpm/exe.linux-ppc64@12.11.2': + resolution: {integrity: sha512-Ui8A4nepkVupx2VpuFfysEluMvWK6gTB5rgVts7Ss/+8dj0RD28x3F/seNeH/zSypgC6yKdV6qsKVQh/uffTuQ==} cpu: [ppc64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-riscv64@12.10.1': - resolution: {integrity: sha512-PdkeUFFkybknnGkWP0H22eMpIiS4OZXL5BcQzF4lh+vmrW3IaC2HOkbANKgot/PKO0Kl77pzA/6PKFxgbgfXIQ==} + '@pnpm/exe.linux-riscv64@12.11.2': + resolution: {integrity: sha512-i1yLdQ5bu+wjQ+srtFoJAaY2gN/+oXHFdjul4llCeoDxHE0rTIG3R41NhHfCjyFPW4+CpbBT58933CL9sMOCnA==} cpu: [riscv64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-s390x@12.10.1': - resolution: {integrity: sha512-1okKuHKJwJPAbofDxfhZWAUxEWtee4ZSf7Pah8kcvocaJkf2WxFJ5KVTiNIvDml5GLidDQsgf7Pcf/WHbCak7Q==} + '@pnpm/exe.linux-s390x@12.11.2': + resolution: {integrity: sha512-YS1/lhPjjTsN4QL50VaFZKRa3Uc/bDnhE8eKbJMFvuX06UuFS5YaiDg04APoZdfVSGqTfX27QAg7rfLMSWaqxA==} cpu: [s390x] os: [linux] libc: [glibc] - '@pnpm/exe.linux-x64-musl@12.10.1': - resolution: {integrity: sha512-e6IqzVNkPa7srFKJKnY23uWJ+qz0LaRWiTUo/sHfFXRRMRzB5uNOr6qWWip/jqhdGwU91n9J7LrEYZ6e0tRczw==} + '@pnpm/exe.linux-x64-musl@12.11.2': + resolution: {integrity: sha512-7eIxQR05fvJxCujUSKp5KTtehJ7QqrgqP/HD1+BcB/SaV2Be4XI1PEHiOgA1zxsiMIeMvTF6E4G4dYHrFjeXRg==} cpu: [x64] os: [linux] libc: [musl] - '@pnpm/exe.linux-x64@12.10.1': - resolution: {integrity: sha512-ZByV0DRgWzGaDSjT5ddRBASdwz+r/qPMYh7o6RGmPQjtRGNFbSl94xY2DcAM8mqCOZJUUDtAXQ+wpBXcdpKlkg==} + '@pnpm/exe.linux-x64@12.11.2': + resolution: {integrity: sha512-FK7QKe24AYgppJwO3mpooYptduuvIGqKJPi5ac7MdnWkjUy46JBfYhCW0grnkWKC8YOf0x+vGviuQqJEj3SpQQ==} cpu: [x64] os: [linux] libc: [glibc] - '@pnpm/exe.win32-arm64@12.10.1': - resolution: {integrity: sha512-I7QZHcjioG7orFeCRUFUHByJ1G0zFPnAlaGGyrUvb6MGkv5oeNwNPl7t+Gp+7zHfnMcgLGJ1a+Wfim0IDw3lOw==} + '@pnpm/exe.win32-arm64@12.11.2': + resolution: {integrity: sha512-PCTjVDdJb6VvraZxrEeFv6EqEA0hhIsAySx28e95J2Tqpi88hLpgOXgNqV0vpxq9A+b8GLQfyk/D+1UlJPv/YQ==} cpu: [arm64] os: [win32] - '@pnpm/exe.win32-x64@12.10.1': - resolution: {integrity: sha512-4WJFdp58EKlCj0zLobrXU0vpszSZIr4X/3y/uNbAQqGW0zE+VdruZB0gFc3L2kzsUzVwTYbaCn+XEhnCYSAlTg==} + '@pnpm/exe.win32-x64@12.11.2': + resolution: {integrity: sha512-8sgX86OvRjJ3yZs/TvGR2L31wH9ScPZ+f+geKI3ikuB0RRiK3i4LlTRO8OXN6pdRqj8epMde4312MCjj7JsJdA==} cpu: [x64] os: [win32] - pnpm@12.10.1: - resolution: {integrity: sha512-ukCjfrGjcNYP6oxM8dNkwTvMzvUY6YrSvO6VT1OdONo3RY5YJho/pV4GUjRQ6g//+fSXsTW+QfLBXBZCusrObA==} + pnpm@12.11.2: + resolution: {integrity: sha512-JaUWUqGWeFr18ovabf6NxYLr76SsHRgCIc4TkCMcX7dmN4IupLbkYzznSs3LCnf3Ja8RutOBd/3t2u6BipVcuQ==} engines: {node: '>=18.*'} hasBin: true snapshots: - '@pnpm/exe.android-arm64@12.10.1': + '@pnpm/exe.android-arm64@12.11.2': optional: true - '@pnpm/exe.android-x64@12.10.1': + '@pnpm/exe.android-x64@12.11.2': optional: true - '@pnpm/exe.darwin-arm64@12.10.1': + '@pnpm/exe.darwin-arm64@12.11.2': optional: true - '@pnpm/exe.darwin-x64@12.10.1': + '@pnpm/exe.darwin-x64@12.11.2': optional: true - '@pnpm/exe.freebsd-x64@12.10.1': + '@pnpm/exe.freebsd-x64@12.11.2': optional: true - '@pnpm/exe.linux-arm64-musl@12.10.1': + '@pnpm/exe.linux-arm64-musl@12.11.2': optional: true - '@pnpm/exe.linux-arm64@12.10.1': + '@pnpm/exe.linux-arm64@12.11.2': optional: true - '@pnpm/exe.linux-ppc64@12.10.1': + '@pnpm/exe.linux-ppc64@12.11.2': optional: true - '@pnpm/exe.linux-riscv64@12.10.1': + '@pnpm/exe.linux-riscv64@12.11.2': optional: true - '@pnpm/exe.linux-s390x@12.10.1': + '@pnpm/exe.linux-s390x@12.11.2': optional: true - '@pnpm/exe.linux-x64-musl@12.10.1': + '@pnpm/exe.linux-x64-musl@12.11.2': optional: true - '@pnpm/exe.linux-x64@12.10.1': + '@pnpm/exe.linux-x64@12.11.2': optional: true - '@pnpm/exe.win32-arm64@12.10.1': + '@pnpm/exe.win32-arm64@12.11.2': optional: true - '@pnpm/exe.win32-x64@12.10.1': + '@pnpm/exe.win32-x64@12.11.2': optional: true - pnpm@12.10.1: + pnpm@12.11.2: optionalDependencies: - '@pnpm/exe.android-arm64': 12.10.1 - '@pnpm/exe.android-x64': 12.10.1 - '@pnpm/exe.darwin-arm64': 12.10.1 - '@pnpm/exe.darwin-x64': 12.10.1 - '@pnpm/exe.freebsd-x64': 12.10.1 - '@pnpm/exe.linux-arm64': 12.10.1 - '@pnpm/exe.linux-arm64-musl': 12.10.1 - '@pnpm/exe.linux-ppc64': 12.10.1 - '@pnpm/exe.linux-riscv64': 12.10.1 - '@pnpm/exe.linux-s390x': 12.10.1 - '@pnpm/exe.linux-x64': 12.10.1 - '@pnpm/exe.linux-x64-musl': 12.10.1 - '@pnpm/exe.win32-arm64': 12.10.1 - '@pnpm/exe.win32-x64': 12.10.1 + '@pnpm/exe.android-arm64': 12.11.2 + '@pnpm/exe.android-x64': 12.11.2 + '@pnpm/exe.darwin-arm64': 12.11.2 + '@pnpm/exe.darwin-x64': 12.11.2 + '@pnpm/exe.freebsd-x64': 12.11.2 + '@pnpm/exe.linux-arm64': 12.11.2 + '@pnpm/exe.linux-arm64-musl': 12.11.2 + '@pnpm/exe.linux-ppc64': 12.11.2 + '@pnpm/exe.linux-riscv64': 12.11.2 + '@pnpm/exe.linux-s390x': 12.11.2 + '@pnpm/exe.linux-x64': 12.11.2 + '@pnpm/exe.linux-x64-musl': 12.11.2 + '@pnpm/exe.win32-arm64': 12.11.2 + '@pnpm/exe.win32-x64': 12.11.2 --- lockfileVersion: '9.0' @@ -214,13 +214,13 @@ importers: version: 10.0.1(eslint@10.12.0(supports-color@10.2.2)) '@preact/preset-vite': specifier: ^2.10.6 - version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.1)(supports-color@10.2.2)(vite@8.3.4(@types/node@26.6.4)(terser@5.51.2)) + version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.1)(supports-color@10.2.2)(vite@8.3.4(@types/node@26.6.5)(terser@5.51.2)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 version: 6.0.2(prettier@3.9.9)(supports-color@10.2.2) '@types/node': - specifier: ^26.6.4 - version: 26.6.4 + specifier: ^26.6.5 + version: 26.6.5 '@types/react': specifier: ^19.3.0 version: 19.3.0 @@ -259,10 +259,10 @@ importers: version: 8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) vite: specifier: ^8.3.4 - version: 8.3.4(@types/node@26.6.4)(terser@5.51.2) + version: 8.3.4(@types/node@26.6.5)(terser@5.51.2) vite-plugin-imagemin: specifier: ^0.6.1 - version: 0.6.1(supports-color@10.2.2)(vite@8.3.4(@types/node@26.6.4)(terser@5.51.2)) + version: 0.6.1(supports-color@10.2.2)(vite@8.3.4(@types/node@26.6.5)(terser@5.51.2)) packages: @@ -845,8 +845,8 @@ packages: '@types/minimatch@5.1.2': resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - '@types/node@26.6.4': - resolution: {integrity: sha512-ldVPDCzj7fsaGZrLB0NuHuTvJcsNasysBAqMolr/cgxrLd1xbqxIr3XJiPnHHJUCxj5sNF1vnRj9aWnrVh5Jcg==} + '@types/node@26.6.5': + resolution: {integrity: sha512-uMzsv9stDdofIZBx4UGh4Z9ZgXnGC9seRDscilBcTHAeOFk67MZg/k9bWVfO+bk4qZmG+l52hRnLwUiH2LnJTg==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -3596,19 +3596,19 @@ snapshots: '@popperjs/core@2.11.8': {} - '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.1)(supports-color@10.2.2)(vite@8.3.4(@types/node@26.6.4)(terser@5.51.2))': + '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.1)(supports-color@10.2.2)(vite@8.3.4(@types/node@26.6.5)(terser@5.51.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@prefresh/vite': 2.4.12(preact@11.0.1)(supports-color@10.2.2)(vite@8.3.4(@types/node@26.6.4)(terser@5.51.2)) + '@prefresh/vite': 2.4.12(preact@11.0.1)(supports-color@10.2.2)(vite@8.3.4(@types/node@26.6.5)(terser@5.51.2)) '@rollup/pluginutils': 5.4.0 babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.7(supports-color@10.2.2)) debug: 4.4.3(supports-color@10.2.2) magic-string: 0.30.21 picocolors: 1.1.1 - vite: 8.3.4(@types/node@26.6.4)(terser@5.51.2) - vite-prerender-plugin: 0.5.14(vite@8.3.4(@types/node@26.6.4)(terser@5.51.2)) + vite: 8.3.4(@types/node@26.6.5)(terser@5.51.2) + vite-prerender-plugin: 0.5.14(vite@8.3.4(@types/node@26.6.5)(terser@5.51.2)) zimmerframe: 1.1.5 transitivePeerDependencies: - preact @@ -3625,7 +3625,7 @@ snapshots: '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.12(preact@11.0.1)(supports-color@10.2.2)(vite@8.3.4(@types/node@26.6.4)(terser@5.51.2))': + '@prefresh/vite@2.4.12(preact@11.0.1)(supports-color@10.2.2)(vite@8.3.4(@types/node@26.6.5)(terser@5.51.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@prefresh/babel-plugin': 0.5.4(@babel/core@7.29.7(supports-color@10.2.2)) @@ -3633,7 +3633,7 @@ snapshots: '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 preact: 11.0.1 - vite: 8.3.4(@types/node@26.6.4)(terser@5.51.2) + vite: 8.3.4(@types/node@26.6.5)(terser@5.51.2) transitivePeerDependencies: - supports-color @@ -3729,7 +3729,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 26.6.4 + '@types/node': 26.6.5 '@types/imagemin-gifsicle@7.0.4': dependencies: @@ -3758,17 +3758,17 @@ snapshots: '@types/imagemin@7.0.1': dependencies: - '@types/node': 26.6.4 + '@types/node': 26.6.5 '@types/json-schema@7.0.15': {} '@types/keyv@3.1.4': dependencies: - '@types/node': 26.6.4 + '@types/node': 26.6.5 '@types/minimatch@5.1.2': {} - '@types/node@26.6.4': + '@types/node@26.6.5': dependencies: undici-types: 8.9.0 @@ -3790,11 +3790,11 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 26.6.4 + '@types/node': 26.6.5 '@types/svgo@2.6.4': dependencies: - '@types/node': 26.6.4 + '@types/node': 26.6.5 '@typescript-eslint/eslint-plugin@8.71.1(@typescript-eslint/parser@8.71.1(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.12.0(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: @@ -5987,7 +5987,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-imagemin@0.6.1(supports-color@10.2.2)(vite@8.3.4(@types/node@26.6.4)(terser@5.51.2)): + vite-plugin-imagemin@0.6.1(supports-color@10.2.2)(vite@8.3.4(@types/node@26.6.5)(terser@5.51.2)): dependencies: '@types/imagemin': 7.0.1 '@types/imagemin-gifsicle': 7.0.4 @@ -6012,11 +6012,11 @@ snapshots: imagemin-webp: 6.1.0 jpegtran-bin: 6.0.1 pathe: 0.2.0 - vite: 8.3.4(@types/node@26.6.4)(terser@5.51.2) + vite: 8.3.4(@types/node@26.6.5)(terser@5.51.2) transitivePeerDependencies: - supports-color - vite-prerender-plugin@0.5.14(vite@8.3.4(@types/node@26.6.4)(terser@5.51.2)): + vite-prerender-plugin@0.5.14(vite@8.3.4(@types/node@26.6.5)(terser@5.51.2)): dependencies: kolorist: 1.8.0 magic-string: 0.30.21 @@ -6024,9 +6024,9 @@ snapshots: simple-code-frame: 1.3.0 source-map: 0.7.6 stack-trace: 1.0.0 - vite: 8.3.4(@types/node@26.6.4)(terser@5.51.2) + vite: 8.3.4(@types/node@26.6.5)(terser@5.51.2) - vite@8.3.4(@types/node@26.6.4)(terser@5.51.2): + vite@8.3.4(@types/node@26.6.5)(terser@5.51.2): dependencies: lightningcss: 1.33.0 picomatch: 4.0.7 @@ -6034,7 +6034,7 @@ snapshots: rolldown: 1.2.13 tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 26.6.4 + '@types/node': 26.6.5 fsevents: 2.3.3 terser: 5.51.2 diff --git a/mock-api/package.json b/mock-api/package.json index 883a6c0ca..236bcf618 100644 --- a/mock-api/package.json +++ b/mock-api/package.json @@ -17,5 +17,5 @@ "@trivago/prettier-plugin-sort-imports": "^6.0.2", "prettier": "^3.9.9" }, - "packageManager": "pnpm@12.10.1" + "packageManager": "pnpm@12.11.2" } diff --git a/mock-api/pnpm-lock.yaml b/mock-api/pnpm-lock.yaml index acb1928ed..c36db7f17 100644 --- a/mock-api/pnpm-lock.yaml +++ b/mock-api/pnpm-lock.yaml @@ -7,153 +7,153 @@ importers: configDependencies: {} packageManagerDependencies: pnpm: - specifier: 12.10.1 - version: 12.10.1 + specifier: 12.11.2 + version: 12.11.2 packages: - '@pnpm/exe.android-arm64@12.10.1': - resolution: {integrity: sha512-CVTlHPwNvadQCJD9bGSMzWIhFX8QpjtqC2c27dhdnn/9iKzEjZ3qL62o3gHpKbIuo6qn4WxTKRoaokgNdReBig==} + '@pnpm/exe.android-arm64@12.11.2': + resolution: {integrity: sha512-owLw13OfPkEoY+hLBNeeG+dCFhywr7q2d/EHPz4mNL2RhKnv8gNwMARkjkiDQu234aItVwFNDeGnmQXm+ikkAg==} cpu: [arm64] os: [android] - '@pnpm/exe.android-x64@12.10.1': - resolution: {integrity: sha512-NFiYLIaodY7da0XIebwcU3JoP7IK/lzF7zgKSSP+9H+QcFnQ1GDfBkuBKCYJzZ+Xu0WH54neIPLBBCaOjaaauA==} + '@pnpm/exe.android-x64@12.11.2': + resolution: {integrity: sha512-GYPkVebl4iokOA/4MPSpGoUVfFlsth7uqOCe1XiaiM23LAdvUOMJBObqHJijr89ZqjwHm9pO6vO45GRwJ2U2qA==} cpu: [x64] os: [android] - '@pnpm/exe.darwin-arm64@12.10.1': - resolution: {integrity: sha512-0O8tdQ8ijlPJudXspLMTcitMkdBEz6uUflazL5uQE0WMs85oQIp0U+5hfEktMFB64QqEhjqlvvujTwbzdr9oMg==} + '@pnpm/exe.darwin-arm64@12.11.2': + resolution: {integrity: sha512-n9M4On66y8FDxUAKgMO1FXt0qihyG4e+56p3/F0uo8Bx9KplW8BwKVnXigzCJ8aNM6sVVPkOE6M9XXbeVIxnZA==} cpu: [arm64] os: [darwin] - '@pnpm/exe.darwin-x64@12.10.1': - resolution: {integrity: sha512-ud+1/uZOKEo8P/AsPynOJc/LNwfI0j6WwCElibj71rU9l4nIBnsSn+wWTIPZPkZ4BBSH5+82azSnAARMyJ1lNA==} + '@pnpm/exe.darwin-x64@12.11.2': + resolution: {integrity: sha512-oSW7n3sBT0c0cyk4kj10T2Y6Mpm+OFEiCAWozgX039tdoI6yqJF1uaFD3sw7ugLdu6VV3+uY0pa1TUZIPdxDWA==} cpu: [x64] os: [darwin] - '@pnpm/exe.freebsd-x64@12.10.1': - resolution: {integrity: sha512-mj9PE5rf8uAfQQ2K66HSATMSut+lNiB4eSqFd5+azFVCMnxNSy/32xpZQJT21PhnN3Y4qbK+iKHe5nWAxSuRhw==} + '@pnpm/exe.freebsd-x64@12.11.2': + resolution: {integrity: sha512-qbzc3KoDpa/Lkf8vs3jnDe6dUUbso+6eLIyssYFMiliLpYNxn8dirk11YoNnOQcdHVB50v5RFls1Yid6ttT5pg==} cpu: [x64] os: [freebsd] - '@pnpm/exe.linux-arm64-musl@12.10.1': - resolution: {integrity: sha512-xba+00wZJ8Um6rBJJjWl88uJj0tydB8dtomvjlCLvi0uL32vpa9CRP8Vv26FIXvbiZ1bo2RCzYt/eChxJVV52w==} + '@pnpm/exe.linux-arm64-musl@12.11.2': + resolution: {integrity: sha512-uMEYDwKRktGwANubQ+kYCwmhNwg3Ik6qK89ahsbQ5cP30R/5FVJb/T99vr9XRUBC/A7mZI6eeT92oyVas9ACyg==} cpu: [arm64] os: [linux] libc: [musl] - '@pnpm/exe.linux-arm64@12.10.1': - resolution: {integrity: sha512-oBdMp69ScC9UnniG4qZAQVr2fBDSXjm4yk/72vkEVyrlwS23yMxcRQl7Qdo3sgXPAygY6TWnPRKm4rXzjoyW7w==} + '@pnpm/exe.linux-arm64@12.11.2': + resolution: {integrity: sha512-6e8ZAQUwFXAWHHHv5FesWqf/kEK04wuitBv5f/gxzkC0DiBfaixr+f+6JQede8SF4Ji5LcMwVFJbzAtffpWxEg==} cpu: [arm64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-ppc64@12.10.1': - resolution: {integrity: sha512-Yyb3wu09h3c7mLme270uHFiVaAIUHC411Ru9LIU2BKUIstrGlXa9OqqVWoXaRgYRdFdOFknkwG7GNn6ygwLbnw==} + '@pnpm/exe.linux-ppc64@12.11.2': + resolution: {integrity: sha512-Ui8A4nepkVupx2VpuFfysEluMvWK6gTB5rgVts7Ss/+8dj0RD28x3F/seNeH/zSypgC6yKdV6qsKVQh/uffTuQ==} cpu: [ppc64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-riscv64@12.10.1': - resolution: {integrity: sha512-PdkeUFFkybknnGkWP0H22eMpIiS4OZXL5BcQzF4lh+vmrW3IaC2HOkbANKgot/PKO0Kl77pzA/6PKFxgbgfXIQ==} + '@pnpm/exe.linux-riscv64@12.11.2': + resolution: {integrity: sha512-i1yLdQ5bu+wjQ+srtFoJAaY2gN/+oXHFdjul4llCeoDxHE0rTIG3R41NhHfCjyFPW4+CpbBT58933CL9sMOCnA==} cpu: [riscv64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-s390x@12.10.1': - resolution: {integrity: sha512-1okKuHKJwJPAbofDxfhZWAUxEWtee4ZSf7Pah8kcvocaJkf2WxFJ5KVTiNIvDml5GLidDQsgf7Pcf/WHbCak7Q==} + '@pnpm/exe.linux-s390x@12.11.2': + resolution: {integrity: sha512-YS1/lhPjjTsN4QL50VaFZKRa3Uc/bDnhE8eKbJMFvuX06UuFS5YaiDg04APoZdfVSGqTfX27QAg7rfLMSWaqxA==} cpu: [s390x] os: [linux] libc: [glibc] - '@pnpm/exe.linux-x64-musl@12.10.1': - resolution: {integrity: sha512-e6IqzVNkPa7srFKJKnY23uWJ+qz0LaRWiTUo/sHfFXRRMRzB5uNOr6qWWip/jqhdGwU91n9J7LrEYZ6e0tRczw==} + '@pnpm/exe.linux-x64-musl@12.11.2': + resolution: {integrity: sha512-7eIxQR05fvJxCujUSKp5KTtehJ7QqrgqP/HD1+BcB/SaV2Be4XI1PEHiOgA1zxsiMIeMvTF6E4G4dYHrFjeXRg==} cpu: [x64] os: [linux] libc: [musl] - '@pnpm/exe.linux-x64@12.10.1': - resolution: {integrity: sha512-ZByV0DRgWzGaDSjT5ddRBASdwz+r/qPMYh7o6RGmPQjtRGNFbSl94xY2DcAM8mqCOZJUUDtAXQ+wpBXcdpKlkg==} + '@pnpm/exe.linux-x64@12.11.2': + resolution: {integrity: sha512-FK7QKe24AYgppJwO3mpooYptduuvIGqKJPi5ac7MdnWkjUy46JBfYhCW0grnkWKC8YOf0x+vGviuQqJEj3SpQQ==} cpu: [x64] os: [linux] libc: [glibc] - '@pnpm/exe.win32-arm64@12.10.1': - resolution: {integrity: sha512-I7QZHcjioG7orFeCRUFUHByJ1G0zFPnAlaGGyrUvb6MGkv5oeNwNPl7t+Gp+7zHfnMcgLGJ1a+Wfim0IDw3lOw==} + '@pnpm/exe.win32-arm64@12.11.2': + resolution: {integrity: sha512-PCTjVDdJb6VvraZxrEeFv6EqEA0hhIsAySx28e95J2Tqpi88hLpgOXgNqV0vpxq9A+b8GLQfyk/D+1UlJPv/YQ==} cpu: [arm64] os: [win32] - '@pnpm/exe.win32-x64@12.10.1': - resolution: {integrity: sha512-4WJFdp58EKlCj0zLobrXU0vpszSZIr4X/3y/uNbAQqGW0zE+VdruZB0gFc3L2kzsUzVwTYbaCn+XEhnCYSAlTg==} + '@pnpm/exe.win32-x64@12.11.2': + resolution: {integrity: sha512-8sgX86OvRjJ3yZs/TvGR2L31wH9ScPZ+f+geKI3ikuB0RRiK3i4LlTRO8OXN6pdRqj8epMde4312MCjj7JsJdA==} cpu: [x64] os: [win32] - pnpm@12.10.1: - resolution: {integrity: sha512-ukCjfrGjcNYP6oxM8dNkwTvMzvUY6YrSvO6VT1OdONo3RY5YJho/pV4GUjRQ6g//+fSXsTW+QfLBXBZCusrObA==} + pnpm@12.11.2: + resolution: {integrity: sha512-JaUWUqGWeFr18ovabf6NxYLr76SsHRgCIc4TkCMcX7dmN4IupLbkYzznSs3LCnf3Ja8RutOBd/3t2u6BipVcuQ==} engines: {node: '>=18.*'} hasBin: true snapshots: - '@pnpm/exe.android-arm64@12.10.1': + '@pnpm/exe.android-arm64@12.11.2': optional: true - '@pnpm/exe.android-x64@12.10.1': + '@pnpm/exe.android-x64@12.11.2': optional: true - '@pnpm/exe.darwin-arm64@12.10.1': + '@pnpm/exe.darwin-arm64@12.11.2': optional: true - '@pnpm/exe.darwin-x64@12.10.1': + '@pnpm/exe.darwin-x64@12.11.2': optional: true - '@pnpm/exe.freebsd-x64@12.10.1': + '@pnpm/exe.freebsd-x64@12.11.2': optional: true - '@pnpm/exe.linux-arm64-musl@12.10.1': + '@pnpm/exe.linux-arm64-musl@12.11.2': optional: true - '@pnpm/exe.linux-arm64@12.10.1': + '@pnpm/exe.linux-arm64@12.11.2': optional: true - '@pnpm/exe.linux-ppc64@12.10.1': + '@pnpm/exe.linux-ppc64@12.11.2': optional: true - '@pnpm/exe.linux-riscv64@12.10.1': + '@pnpm/exe.linux-riscv64@12.11.2': optional: true - '@pnpm/exe.linux-s390x@12.10.1': + '@pnpm/exe.linux-s390x@12.11.2': optional: true - '@pnpm/exe.linux-x64-musl@12.10.1': + '@pnpm/exe.linux-x64-musl@12.11.2': optional: true - '@pnpm/exe.linux-x64@12.10.1': + '@pnpm/exe.linux-x64@12.11.2': optional: true - '@pnpm/exe.win32-arm64@12.10.1': + '@pnpm/exe.win32-arm64@12.11.2': optional: true - '@pnpm/exe.win32-x64@12.10.1': + '@pnpm/exe.win32-x64@12.11.2': optional: true - pnpm@12.10.1: + pnpm@12.11.2: optionalDependencies: - '@pnpm/exe.android-arm64': 12.10.1 - '@pnpm/exe.android-x64': 12.10.1 - '@pnpm/exe.darwin-arm64': 12.10.1 - '@pnpm/exe.darwin-x64': 12.10.1 - '@pnpm/exe.freebsd-x64': 12.10.1 - '@pnpm/exe.linux-arm64': 12.10.1 - '@pnpm/exe.linux-arm64-musl': 12.10.1 - '@pnpm/exe.linux-ppc64': 12.10.1 - '@pnpm/exe.linux-riscv64': 12.10.1 - '@pnpm/exe.linux-s390x': 12.10.1 - '@pnpm/exe.linux-x64': 12.10.1 - '@pnpm/exe.linux-x64-musl': 12.10.1 - '@pnpm/exe.win32-arm64': 12.10.1 - '@pnpm/exe.win32-x64': 12.10.1 + '@pnpm/exe.android-arm64': 12.11.2 + '@pnpm/exe.android-x64': 12.11.2 + '@pnpm/exe.darwin-arm64': 12.11.2 + '@pnpm/exe.darwin-x64': 12.11.2 + '@pnpm/exe.freebsd-x64': 12.11.2 + '@pnpm/exe.linux-arm64': 12.11.2 + '@pnpm/exe.linux-arm64-musl': 12.11.2 + '@pnpm/exe.linux-ppc64': 12.11.2 + '@pnpm/exe.linux-riscv64': 12.11.2 + '@pnpm/exe.linux-s390x': 12.11.2 + '@pnpm/exe.linux-x64': 12.11.2 + '@pnpm/exe.linux-x64-musl': 12.11.2 + '@pnpm/exe.win32-arm64': 12.11.2 + '@pnpm/exe.win32-x64': 12.11.2 --- lockfileVersion: '9.0' -- 2.54.0 From fe4fe7ef28955b8470b7d72e3a71ae1b915871dc Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 11 Oct 2026 10:35:14 +0200 Subject: [PATCH 078/148] add comments --- pio_local.ini_bak | 109 ---------------------------------------------- platformio.ini | 9 +++- 2 files changed, 8 insertions(+), 110 deletions(-) delete mode 100644 pio_local.ini_bak diff --git a/pio_local.ini_bak b/pio_local.ini_bak deleted file mode 100644 index 54dbfc56f..000000000 --- a/pio_local.ini_bak +++ /dev/null @@ -1,109 +0,0 @@ -; example custom platformio ini file for EMS-ESP - -[common] -; custom build flags to use in my_build_flags -; -DEMSESP_UART_DEBUG ; debugging UART -; -DEMSESP_DEBUG ; enables DEBUG to the log. Will generate a lot of extra traffic on Console and Syslog -; -DEMSESP_DEFAULT_BOARD_PROFILE=\"NODEMCU\" ; hard code the default board name -; -DEMSESP_DEBUG_SENSOR ; additional debug for the sensors -; -DCORE_DEBUG_LEVEL=5 ; verbose core level debugging 5=verbose, 4=debug, 3=info -; -DEMSESP_TEST ; enable the tests. EN language only -; -DEMSESP_DE_ONLY ; only DE translated entity names -; -DEMSESP_EN_ONLY ; only EN translated entity names -; -DEMSESP_PINGTEST ; send log message every 1/2 second - -; my_build_flags = -DEMSESP_TEST -DEMSESP_DEBUG -; my_build_flags = -DEMSESP_DEBUG -DEMSESP_TEST -DEMSESP_PINGTEST -; my_build_flags = -DEMSESP_DEBUG -DCORE_DEBUG_LEVEL=5 -; my_build_flags = -DEMSESP_EN_ONLY -DEMSESP_TEST -DCORE_DEBUG_LEVEL=5 -DARDUINO_USB_CDC_ON_BOOT=1 -; my_build_flags = -DEMSESP_EN_ONLY -; my_build_flags = -DEMSESP_DEBUG -; my_build_flags = -; -D EMSESP_GATEWAY_TX_HOLD ; hold Tx while a K30RF/KM200 gateway is syncing, see issue #3094 -; -D EMSESP_TX_PRE_DELAY=1000 ; wait this many us before each Tx so we don't overlap the master's break, see issue #3094 - -my_build_flags = - -[platformio] -default_envs = s_16M_P ; BBQKees E32V2 -; default_envs = s_16M_P_custom ; BBQKees E32V2 with custom Arduino/IDF libs -; default_envs = recovery_s_16M_P ; recovery -; default_envs = crashtest_s_16M_P ; crash test -; 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 -; default_envs = c6 ; XIAO ESP32C -; default_envs = debug - -; default_envs = core3 -; default_envs = core2 - -[env] - -; uncomment if you want to upload the firmware via OTA (must have upload_protocol = custom) -extra_scripts = - post:scripts/rename_fw.py ; renames the firmware .bin file - scripts/upload.py ; optionally upload the firmware via OTA (must have upload_protocol = custom) - -; set the username and password for the admin account (default password is admin) -custom_username = admin -custom_password = admin - -; ** upload settings ** -; for direct USB, which is the default you can set an optional port for example: -; upload_port = /dev/ttyUSB0 -; upload_port = /dev/ttyACM0 - -; CH340G bridge tops out here reliably; drop back to 460800 if uploads fail -; upload_speed = 921600 -upload_speed = 2000000 - -; for direct via HTTP (OTA) set: -; upload_protocol = custom -; custom_emsesp_ip = or ems-esp.local - -upload_protocol = custom - -; custom_emsesp_ip = ems-esp.local ; E32V2.2 (test) -; custom_emsesp_ip = 192.168.1.39 ; E32V2.2 (test) -; custom_emsesp_ip = 192.168.1.75 ; E32V2.2 (test) v3.8.4 - -custom_emsesp_ip = ems-espP.local ; E32V2.2 (prod) -; custom_emsesp_ip = 10.10.10.202 ; E32V2.2 (prod) - -; custom_emsesp_ip = ems-esps32.local ; S32, 4MB no psramS32 -; custom_emsesp_ip = ems-espS3.local ; ems-espS3 -; custom_emsesp_ip = 10.10.10.175 ; Wemos Lolin S3 - -; lib_deps = -; bblanchon/ArduinoJson @ 7.4.3 -; ESP32Async/AsyncTCP @ 3.4.10 -; ESP32Async/ESPAsyncWebServer @ 3.11.0 -; https://github.com/mobizt/ReadyMail.git @ 0.4.0 -; https://github.com/mobizt/ESP_SSLClient.git @ 3.1.3 - ; https://github.com/emsesp/EMS-ESP-Modules.git @ 1.0.8 -; ; file://${PROJECT_DIR}/../modules/EMS-ESP-Modules - -; ** debug settings ** -; to be used with an ESP32-S3 which has an onboard JTAG, connect the OTG USB port to the PC -; if using an external JTAG board like the ESP-PROG set debug_tool = esp-prog, and use zadig to set the correct driver for the USB port -; see https://docs.platformio.org/en/stable/projectconf/sections/env/options/debug/debug_init_break.html for settings -; use with my_build_flags = -DEMSESP_EN_ONLY -DEMSESP_TEST -DCORE_DEBUG_LEVEL=5 -DARDUINO_USB_CDC_ON_BOOT=1 -[env:debug] -board = esp32-s3-devkitc-1 -framework = arduino -platform = espressif32@6.12.0 ; Arduino Core v2.0.17 / IDF v4.4.7 -board_build.partitions = partitions/esp32_partition_16M.csv -board_upload.flash_size = 16MB -board_build.app_partition_name = app0 -board_build.filesystem = littlefs -upload_protocol = esptool -build_type = debug -monitor_raw = no -monitor_filters = colorize, esp32_exception_decoder -debug_tool = esp-builtin -debug_init_break = -upload_speed = 2000000 -monitor_speed = 115200 -extra_scripts = diff --git a/platformio.ini b/platformio.ini index f02f21474..876022e74 100644 --- a/platformio.ini +++ b/platformio.ini @@ -81,7 +81,11 @@ framework = arduino board_build.partitions = partitions/esp32_partition_32M.csv [env] -platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip ; Arduino Core 3.3.12 based on IDF 5.5.5 +; use own Ardunio libs packages from https://github.com/emsesp/esp32-arduino-lib-builder which is based on Arduino Core 3.3.12 and IDF 5.5.5. Same as s_16M_P_custom +; with Tasmota's tool chain (platform) +; if we want to go back to Tasmota libs, use the following: +; platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.05.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.8 based on IDF 5.5.4.260407 +platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip platform_packages = framework-arduinoespressif32 @ https://github.com/emsesp/esp32-arduino-lib-builder/releases/download/0910-1604-5.5.5/framework-arduinoespressif32-v5.5.5-a63b839f.tar.xz build_flags = ${common.build_flags} @@ -133,6 +137,7 @@ board = s_16M_P [env:s_16M_P_custom] ; same as s_16M_P, but the Arduino/IDF libs are rebuilt with HybridCompile using the custom_sdkconfig below +; this is same procedure as in the esp32-arduino-lib-builder repository extends = env:s_16M_P custom_sdkconfig = '# CONFIG_BT_ENABLED is not set' @@ -155,6 +160,8 @@ custom_sdkconfig = '# CONFIG_I2S_ISR_IRAM_SAFE is not set' '# CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH is not set' 'CONFIG_UART_ISR_IN_IRAM=y' + 'CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=256' + 'CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=1024' [env:s3_16M_P] ; 16MB ESP32-S3 - with PSRAM - like a BBQKees S3 -- 2.54.0 From 229187d91217363064e56c0a83fc5079b93aa1fc Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 11 Oct 2026 10:35:27 +0200 Subject: [PATCH 079/148] check GH action updates --- .github/dependabot.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000..f6faee693 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,10 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + groups: + github-actions: + patterns: + - "*" -- 2.54.0 From e7fd8bcdf037c4709501fdde5d03000b88f0e22c Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 11 Oct 2026 10:35:41 +0200 Subject: [PATCH 080/148] don't run on forlks --- .github/workflows/stale_issues.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/stale_issues.yml b/.github/workflows/stale_issues.yml index 76cddcc3f..466568eb1 100644 --- a/.github/workflows/stale_issues.yml +++ b/.github/workflows/stale_issues.yml @@ -10,6 +10,8 @@ on: jobs: stale: + name: Mark or close stale issues and PRs + if: github.repository == 'emsesp/EMS-ESP32' runs-on: ubuntu-latest steps: - uses: actions/stale@v11 -- 2.54.0 From 43778328e11e262749135db12c525eed858e70ad Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 11 Oct 2026 10:37:43 +0200 Subject: [PATCH 081/148] remove --- .github/workflows/test_release.yml | 78 ------------------------------ 1 file changed, 78 deletions(-) delete mode 100644 .github/workflows/test_release.yml diff --git a/.github/workflows/test_release.yml b/.github/workflows/test_release.yml deleted file mode 100644 index f531fbc2a..000000000 --- a/.github/workflows/test_release.yml +++ /dev/null @@ -1,78 +0,0 @@ -name: 'Build test release' - -on: - workflow_dispatch: - push: - branches: - - 'test' - -permissions: - contents: read - -jobs: - pre-release: - name: 'Build Test Release' - runs-on: ubuntu-latest - permissions: - contents: write - steps: - - - name: Install python 3.13 - uses: actions/setup-python@v7 - with: - python-version: '3.13' - - - name: Install Node.js 26 - uses: actions/setup-node@v7 - with: - node-version: 26 - - - name: Checkout repository - uses: actions/checkout@v7 - - - name: Install pnpm - run: npm install -g pnpm - - - name: Get the EMS-ESP version - id: build_info - run: | - version=`grep -E '^#define EMSESP_APP_VERSION' ./src/emsesp_version.h | awk -F'"' '{print $2}'` - echo "VERSION=$version" >> $GITHUB_OUTPUT - - - name: Install pioarduino - run: | - python -m pip install --upgrade pip - pip install -U "pioarduino==6.2.0" - - - name: Build webUI - run: | - platformio run -e build-webUI - - - name: Build modbus - run: | - platformio run -e build_modbus - - - name: Build standalone - run: | - platformio run -e build_standalone - - - name: Build all PIO target environments, from default_envs - run: | - platformio run - - - name: Build the recovery firmware for the 16MB boards - run: | - platformio run -e recovery_s_16M -e recovery_s_16M_P -e recovery_s3_16M_P - - - name: Create GitHub Release - id: 'automatic_releases' - uses: emsesp/action-automatic-releases@v1.0.1 - with: - repo_token: '${{ secrets.GITHUB_TOKEN }}' - title: Test Build v${{steps.build_info.outputs.VERSION}} - automatic_release_tag: 'test' - prerelease: true - files: | - CHANGELOG_LATEST.md - ./build/firmware/*.* - -- 2.54.0 From 33a38c30feae1bed96ff40738933dceb08fdc902 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 11 Oct 2026 10:43:47 +0200 Subject: [PATCH 082/148] optimize build --- .github/workflows/dev_release.yml | 2 +- .github/workflows/stable_release.yml | 256 ++++++++++++++++++++++++--- 2 files changed, 234 insertions(+), 24 deletions(-) diff --git a/.github/workflows/dev_release.yml b/.github/workflows/dev_release.yml index 262830617..17ebf450e 100644 --- a/.github/workflows/dev_release.yml +++ b/.github/workflows/dev_release.yml @@ -187,7 +187,7 @@ jobs: path: src/core - name: Setup ccache - uses: hendrikmuhs/ccache-action@v1.2 + uses: hendrikmuhs/ccache-action@v1.2.24 with: key: firmware-${{ matrix.env }} restore-keys: firmware-${{ matrix.env }}- diff --git a/.github/workflows/stable_release.yml b/.github/workflows/stable_release.yml index eef57a122..230dc0ddf 100644 --- a/.github/workflows/stable_release.yml +++ b/.github/workflows/stable_release.yml @@ -9,28 +9,197 @@ on: tags: - 'v*' +# Parallel graph (wall-clock is ~max of the firmware jobs, not the sum): +# webui ──────┐ +# ├─► firmware (s_4M / s_16M / s_16M_P / s3_16M_P) ─┐ +# modbus ─────┤ ├─► release +# └─► standalone ───────────────────────────────────┘ +# +# Extra -j on a single runner does not help: PlatformIO already compiles each +# environment with all CPUs. The win is separate GitHub runners. + jobs: - tagged-release: - name: 'Build Stable Release' + webui: + name: Build webUI + if: github.event_name == 'workflow_dispatch' || github.repository == 'emsesp/EMS-ESP32' runs-on: ubuntu-latest steps: + - name: Checkout repository + uses: actions/checkout@v7 - - name: Install python 3.13 - uses: actions/setup-python@v7 + - name: Install pnpm + uses: pnpm/action-setup@v6 with: - python-version: '3.13' + package_json_file: interface/package.json - name: Install Node.js 26 uses: actions/setup-node@v7 with: node-version: 26 + - name: Cache pnpm store + uses: actions/cache@v6 + with: + path: ~/.local/share/pnpm/store + key: ${{ runner.os }}-pnpm-${{ hashFiles('interface/package.json') }} + restore-keys: | + ${{ runner.os }}-pnpm- + + - name: Build webUI + env: + CI: true + working-directory: interface + run: | + pnpm install + pnpm build-webUI + + - name: Upload WWWData.h + uses: actions/upload-artifact@v7 + with: + name: wwwdata + path: src/ESP32React/WWWData.h + if-no-files-found: error + + modbus: + name: Build modbus + if: github.event_name == 'workflow_dispatch' || github.repository == 'emsesp/EMS-ESP32' + runs-on: ubuntu-latest + steps: - name: Checkout repository uses: actions/checkout@v7 - - name: Install pnpm - run: npm install -g pnpm + - name: Install python 3.13 + uses: actions/setup-python@v7 + with: + python-version: '3.13' + - name: Install uv + uses: astral-sh/setup-uv@v7 + with: + version: "latest" + enable-cache: false + + - name: Install pioarduino + run: uv pip install --system pioarduino==6.2.0 + + - name: Build modbus + run: platformio run -e build_modbus + + - name: Upload modbus header + uses: actions/upload-artifact@v7 + with: + name: modbus-header + path: src/core/modbus_entity_parameters.hpp + if-no-files-found: error + + standalone: + name: Build standalone + needs: modbus + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v7 + + - name: Install python 3.13 + uses: actions/setup-python@v7 + with: + python-version: '3.13' + + - name: Install uv + uses: astral-sh/setup-uv@v7 + with: + version: "latest" + enable-cache: false + + - name: Install pioarduino + run: uv pip install --system pioarduino==6.2.0 + + - name: Restore generated modbus header + uses: actions/download-artifact@v8 + with: + name: modbus-header + path: src/core + + - name: Build standalone + run: platformio run -e build_standalone + + firmware: + name: Firmware ${{ matrix.env }} + needs: [webui, modbus] + runs-on: ubuntu-latest + strategy: + fail-fast: true + matrix: + # Keep in sync with platformio.ini default_envs + env: [s_4M, s_16M, s_16M_P, s3_16M_P] + steps: + - name: Checkout repository + uses: actions/checkout@v7 + + - name: Install python 3.13 + uses: actions/setup-python@v7 + with: + python-version: '3.13' + + - name: Install uv + uses: astral-sh/setup-uv@v7 + with: + version: "latest" + enable-cache: false + + - name: Cache PlatformIO packages + uses: actions/cache@v6 + with: + path: | + ~/.platformio/.cache + ~/.platformio/packages + ~/.platformio/platforms + key: ${{ runner.os }}-pio-${{ matrix.env }}-${{ hashFiles('platformio.ini') }} + restore-keys: | + ${{ runner.os }}-pio-${{ matrix.env }}- + ${{ runner.os }}-pio- + + - name: Install pioarduino + run: uv pip install --system pioarduino==6.2.0 + + - name: Restore WWWData.h + uses: actions/download-artifact@v8 + with: + name: wwwdata + path: src/ESP32React + + - name: Restore generated modbus header + uses: actions/download-artifact@v8 + with: + name: modbus-header + path: src/core + + - name: Setup ccache + uses: hendrikmuhs/ccache-action@v1.2.24 + with: + key: firmware-${{ matrix.env }} + restore-keys: firmware-${{ matrix.env }}- + max-size: 1G + + - name: Build ${{ matrix.env }} + env: + CCACHE_COMPILERCHECK: content + run: platformio run -e ${{ matrix.env }} + + - name: Upload firmware + uses: actions/upload-artifact@v7 + with: + name: firmware-${{ matrix.env }} + path: build/firmware + if-no-files-found: error + + release: + name: Create GitHub Release + needs: [firmware, standalone] + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v7 - name: Get the EMS-ESP version id: build_info @@ -38,31 +207,72 @@ jobs: version=`grep -E '^#define EMSESP_APP_VERSION' ./src/emsesp_version.h | awk -F'"' '{print $2}'` echo "VERSION=$version" >> $GITHUB_OUTPUT + - name: Restore generated modbus header + uses: actions/download-artifact@v8 + with: + name: modbus-header + path: src/core + + - name: Restore firmware binaries + uses: actions/download-artifact@v8 + with: + pattern: firmware-* + merge-multiple: true + path: build/firmware + + # the recovery build needs PlatformIO, and pnpm + Node.js to build its own WebUI (recovery/WWWData.h) + - name: Install python 3.13 + uses: actions/setup-python@v7 + with: + python-version: '3.13' + + - name: Install uv + uses: astral-sh/setup-uv@v7 + with: + version: "latest" + enable-cache: false + + # falls back to the firmware jobs' caches, which hold the same toolchains + - name: Cache PlatformIO packages + uses: actions/cache@v6 + with: + path: | + ~/.platformio/.cache + ~/.platformio/packages + ~/.platformio/platforms + key: ${{ runner.os }}-pio-recovery-${{ hashFiles('platformio.ini') }} + restore-keys: | + ${{ runner.os }}-pio-recovery- + ${{ runner.os }}-pio- + - name: Install pioarduino - run: | - python -m pip install --upgrade pip - pip install -U "pioarduino==6.2.0" + run: uv pip install --system pioarduino==6.2.0 - - name: Build webUI - run: | - platformio run -e build-webUI + - name: Install pnpm + uses: pnpm/action-setup@v6 + with: + package_json_file: interface/package.json - - name: Build modbus - run: | - platformio run -e build_modbus + - name: Install Node.js 26 + uses: actions/setup-node@v7 + with: + node-version: 26 - - name: Build standalone - run: | - platformio run -e build_standalone - - - name: Build all PIO target environments, from default_envs - run: | - platformio run + - name: Cache pnpm store + uses: actions/cache@v6 + with: + path: ~/.local/share/pnpm/store + key: ${{ runner.os }}-pnpm-${{ hashFiles('interface/package.json') }} + restore-keys: | + ${{ runner.os }}-pnpm- - name: Build the recovery firmware for the 16MB boards run: | platformio run -e recovery_s_16M -e recovery_s_16M_P -e recovery_s3_16M_P + - name: List firmware files + run: ls -la build/firmware + - name: Create GitHub Release uses: emsesp/action-automatic-releases@v1.0.1 with: -- 2.54.0 From 9934d05c5a875b79ad9d16d48d67960d9cd2c5c5 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 11 Oct 2026 11:55:33 +0200 Subject: [PATCH 083/148] use latest esp32-arduino-lib-builder --- platformio.ini | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/platformio.ini b/platformio.ini index 876022e74..7a59c57cd 100644 --- a/platformio.ini +++ b/platformio.ini @@ -86,7 +86,8 @@ board_build.partitions = partitions/esp32_partition_32M.csv ; if we want to go back to Tasmota libs, use the following: ; platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.05.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.8 based on IDF 5.5.4.260407 platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip -platform_packages = framework-arduinoespressif32 @ https://github.com/emsesp/esp32-arduino-lib-builder/releases/download/0910-1604-5.5.5/framework-arduinoespressif32-v5.5.5-a63b839f.tar.xz +platform_packages = framework-arduinoespressif32 @ https://github.com/emsesp/esp32-arduino-lib-builder/releases/download/1110-0945-5.5.5/framework-arduinoespressif32-v5.5.5-a63b839f.tar.xz + build_flags = ${common.build_flags} build_unflags = -- 2.54.0 From 956f7ab098de69edd1a2a7aaf82a5ac23abd36ab Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 11 Oct 2026 16:23:08 +0200 Subject: [PATCH 084/148] show recovery app in Version page --- CHANGELOG_LATEST.md | 4 +- interface/package.json | 2 +- interface/pnpm-lock.yaml | 16 +- interface/src/app/settings/Version.tsx | 375 +++++++++++++++------ interface/src/app/status/SystemMonitor.tsx | 19 +- interface/src/i18n/cs/index.ts | 7 +- interface/src/i18n/de/index.ts | 7 +- interface/src/i18n/en/index.ts | 7 +- interface/src/i18n/fr/index.ts | 7 +- interface/src/i18n/it/index.ts | 7 +- interface/src/i18n/nl/index.ts | 7 +- interface/src/i18n/no/index.ts | 7 +- interface/src/i18n/pl/index.ts | 7 +- interface/src/i18n/sk/index.ts | 7 +- interface/src/i18n/sv/index.ts | 7 +- interface/src/i18n/tr/index.ts | 7 +- interface/src/recovery/Dashboard.tsx | 178 +++++++--- mock-api/package.json | 2 +- mock-api/pnpm-lock.yaml | 16 +- mock-api/restServer.ts | 8 +- pio_local.ini_example | 73 ++-- platformio.ini | 8 + recovery/main.cpp | 113 +++++-- scripts/build_interface.py | 6 + scripts/build_recovery_interface.py | 27 +- src/core/system.cpp | 102 +++++- src/core/system.h | 4 + src/web/WebStatusService.cpp | 3 +- 28 files changed, 761 insertions(+), 272 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index e2caf3112..440123db4 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -26,8 +26,8 @@ This release is based on the latest Espressif/Arduino core version 3. It brings - the Version page shows the installed Recovery version on 16MB boards - crash test builds to try out the rollback and recovery, see `[env:crashtest_s3_16M_P]` in `platformio.ini` - `s_16M_P_custom` PlatformIO env that HybridCompiles Arduino/IDF with a trimmed sdkconfig (no Bluetooth, PPP/modem, IP forward/NAPT, ULP, SPI Ethernet, GDBSTUB, FreeRTOS trace, mDNS browse/CLI) and places the UART ISR in IRAM -- 16MB builds use EMS-ESP's own Arduino/IDF libs from [esp32-arduino-lib-builder](https://github.com/emsesp/esp32-arduino-lib-builder) (`0910-1604-5.5.5`) instead of Tasmota's prebuilt cores -- optional `ccache` wrapping when it is installed (`scripts/enable_ccache.py`) +- 16MB builds use EMS-ESP's own Arduino/IDF libs from [esp32-arduino-lib-builder](https://github.com/emsesp/esp32-arduino-lib-builder) instead of Tasmota's prebuilt cores +- optional `ccache` wrapping when it is installed (`scripts/enable_ccache.py`) to speed up CI ## Fixed diff --git a/interface/package.json b/interface/package.json index 56e2d985d..3ef0a90b0 100644 --- a/interface/package.json +++ b/interface/package.json @@ -52,7 +52,7 @@ "eslint-config-prettier": "^10.1.8", "etag": "^1.8.1", "mime-types": "^3.0.2", - "prettier": "^3.9.9", + "prettier": "^3.9.10", "rollup-plugin-visualizer": "^7.1.1", "terser": "^5.51.2", "typescript": "^6.0.3", diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml index 1c23a059e..f4bbfb0cb 100644 --- a/interface/pnpm-lock.yaml +++ b/interface/pnpm-lock.yaml @@ -217,7 +217,7 @@ importers: version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@11.0.1)(supports-color@10.2.2)(vite@8.3.4(@types/node@26.6.5)(terser@5.51.2)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 - version: 6.0.2(prettier@3.9.9)(supports-color@10.2.2) + version: 6.0.2(prettier@3.9.10)(supports-color@10.2.2) '@types/node': specifier: ^26.6.5 version: 26.6.5 @@ -243,8 +243,8 @@ importers: specifier: ^3.0.2 version: 3.0.2 prettier: - specifier: ^3.9.9 - version: 3.9.9 + specifier: ^3.9.10 + version: 3.9.10 rollup-plugin-visualizer: specifier: ^7.1.1 version: 7.1.1(rolldown@1.2.13) @@ -2554,8 +2554,8 @@ packages: resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} engines: {node: '>=4'} - prettier@3.9.9: - resolution: {integrity: sha512-Z/CJHIkdujO/OtN7nXUii0Rf3VT5SRuhjBA82Xvu2XhBUgX3nhP67T0LHceBdQLex7OOFGTox+Q5Yg8Jk2Qivg==} + prettier@3.9.10: + resolution: {integrity: sha512-skGHTH1Yb9QvaTC4hWnRTzEYtCpApF0UMBPz+t/0ZPzP8ihefo/btKd+QA7pUE0fEwA1SbS/NmhyEcstdXOIdA==} engines: {node: '>=14'} hasBin: true @@ -3708,7 +3708,7 @@ snapshots: react-virtualized-auto-sizer: 1.0.26(react-dom@19.3.0(react@19.3.0))(react@19.3.0) react-window: 1.8.11(react-dom@19.3.0(react@19.3.0))(react@19.3.0) - '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.9.9)(supports-color@10.2.2)': + '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.9.10)(supports-color@10.2.2)': dependencies: '@babel/generator': 7.29.8 '@babel/parser': 7.29.9 @@ -3718,7 +3718,7 @@ snapshots: lodash-es: 4.18.1 minimatch: 9.0.9 parse-imports-exports: 0.2.4 - prettier: 3.9.9 + prettier: 3.9.10 transitivePeerDependencies: - supports-color @@ -5514,7 +5514,7 @@ snapshots: prepend-http@2.0.0: {} - prettier@3.9.9: {} + prettier@3.9.10: {} process-nextick-args@2.0.1: {} diff --git a/interface/src/app/settings/Version.tsx b/interface/src/app/settings/Version.tsx index 1b27d791a..582d24e7e 100644 --- a/interface/src/app/settings/Version.tsx +++ b/interface/src/app/settings/Version.tsx @@ -3,11 +3,14 @@ import { Link } from 'react-router'; import CancelIcon from '@mui/icons-material/Cancel'; import CloseIcon from '@mui/icons-material/Close'; +import DescriptionIcon from '@mui/icons-material/Description'; import CheckIcon from '@mui/icons-material/Done'; import DownloadIcon from '@mui/icons-material/GetApp'; import InfoOutlinedIcon from '@mui/icons-material/InfoOutlined'; -import PowerSettingsNewIcon from '@mui/icons-material/PowerSettingsNew'; +import RefreshIcon from '@mui/icons-material/Refresh'; +import RestartAltIcon from '@mui/icons-material/RestartAlt'; import SettingsBackupRestoreIcon from '@mui/icons-material/SettingsBackupRestore'; +import SwapHorizIcon from '@mui/icons-material/SwapHoriz'; import WarningIcon from '@mui/icons-material/Warning'; import { Box, @@ -51,6 +54,8 @@ const STABLE_RELNOTES_URL = const DEV_URL = 'https://github.com/emsesp/EMS-ESP32/releases/download/latest/'; const DEV_RELNOTES_URL = 'https://github.com/emsesp/EMS-ESP32/blob/dev/CHANGELOG_LATEST.md'; +const RELEASES_API_URL = + 'https://api.github.com/repos/emsesp/EMS-ESP32/releases/tags/'; const MAX_VERSION_POLLS = 5; // approx 15 seconds of waiting // Types for better type safety @@ -75,6 +80,96 @@ interface VersionData { disable_reset: boolean; } +interface RecoveryRelease { + url: string; + version: string; +} + +// finds the recovery firmware for this board in the GitHub releases, trying each release tag in turn. +// The version is in the filename, e.g. EMS-ESP-Recovery-1_0_0-ESP32S3-16MB+.bin is 1.0.0 +const findRecovery = async ( + tags: string[], + platform: string +): Promise => { + const prefix = 'ems-esp-recovery-'; + const suffix = `-${platform}.bin`.toLowerCase(); + for (const tag of tags) { + try { + const response = await fetch(`${RELEASES_API_URL}${tag}`); + if (!response.ok) { + continue; + } + const release = (await response.json()) as { + assets?: { name: string; browser_download_url: string }[]; + }; + const asset = release.assets?.find((a) => { + const name = a.name.toLowerCase(); + return name.startsWith(prefix) && name.endsWith(suffix); + }); + if (asset) { + return { + url: asset.browser_download_url, + version: asset.name + .slice(prefix.length, asset.name.length - suffix.length) + .replaceAll('_', '.') + }; + } + } catch { + // try the next one + } + } + return undefined; +}; + +// the GitHub API only allows 60 requests an hour, so only look once per page load for each board and channel +const recoveryLookups = new Map>(); +const findRecoveryCached = (tags: string[], platform: string) => { + const key = `${tags.join(',')}|${platform}`; + let lookup = recoveryLookups.get(key); + if (!lookup) { + lookup = findRecovery(tags, platform); + recoveryLookups.set(key, lookup); + void lookup.then((release) => { + if (!release) { + recoveryLookups.delete(key); // try again next time + } + }); + } + return lookup; +}; + +// true if version a is newer than b, like 1.0.1 and 1.0.0. A prerelease, like 1.1.0-dev.1, is older than the release +const isNewerVersion = (a: string, b: string) => { + const parse = (v: string) => { + const dash = v.indexOf('-'); + const numbers = (text: string) => + text.split('.').map((n) => Number.parseInt(n, 10) || 0); + return { + main: numbers(dash < 0 ? v : v.slice(0, dash)), + pre: dash < 0 ? [] : numbers(v.slice(dash + 1)), + isPre: dash >= 0 + }; + }; + const x = parse(a); + const y = parse(b); + for (let i = 0; i < Math.max(x.main.length, y.main.length); i++) { + const diff = (x.main[i] ?? 0) - (y.main[i] ?? 0); + if (diff !== 0) { + return diff > 0; + } + } + if (x.isPre !== y.isPre) { + return !x.isPre; + } + for (let i = 0; i < Math.max(x.pre.length, y.pre.length); i++) { + const diff = (x.pre[i] ?? 0) - (y.pre[i] ?? 0); + if (diff !== 0) { + return diff > 0; + } + } + return false; +}; + // Memoized components for better performance const VersionInfoDialog = memo( ({ @@ -235,6 +330,7 @@ const VersionInfoDialog = memo( {!isPartition && ( )} - @@ -372,9 +473,7 @@ const InstallPartitionDialog = memo( return ( - - {isRecovery ? LL.RECOVERY() : `${LL.INSTALL()} ${LL.STORED_VERSIONS()}`} - + {isRecovery ? LL.RECOVERY_APP() : LL.INSTALL()} {isRecovery @@ -394,7 +493,7 @@ const InstallPartitionDialog = memo( + )} + {data.recovery_version && me.admin && ( + + )} + + + )} {internetLive ? ( @@ -749,96 +958,6 @@ const Version = () => { alignItems: 'center' }} > - {data.developer_mode && ( - <> - {otherPartitions.length > 0 && ( - <> - - {LL.STORED_VERSIONS()} - - - {otherPartitions.map((partition) => ( - - - {partition.version} - - - setPartitionVersionInfo(partition.partition) - } - aria-label={LL.FIRMWARE_VERSION_INFO()} - sx={{ p: 0.5 }} - > - - - - - ))} - - - )} - {data.recovery_version !== undefined && ( - <> - {LL.RECOVERY()} - - - {data.recovery_version || LL.RECOVERY_NOT_INSTALLED()} - - {data.recovery_version && me.admin && ( - - )} - - - - )} - - )} {LL.STABLE()} { {showButtons(true)} + + {data.recovery_version && latestRecovery && ( + <> + {LL.RECOVERY_APP()} + + + {latestRecovery.version} + + {isNewerVersion( + latestRecovery.version, + data.recovery_version + ) ? ( + me.admin && ( + + ) + ) : ( + <> + + + {LL.LATEST_VERSION(LL.RECOVERY_APP())} + + + )} + + + )} ) : ( @@ -978,7 +1143,7 @@ const Version = () => { {LL.CANCEL()} )} + + setInfoPartition(undefined)} + > + Firmware Version Info + + {infoPartition && ( + + + + + + + + +
+ )} +
+ + + +
); }; diff --git a/mock-api/package.json b/mock-api/package.json index 236bcf618..d60acebc1 100644 --- a/mock-api/package.json +++ b/mock-api/package.json @@ -15,7 +15,7 @@ }, "devDependencies": { "@trivago/prettier-plugin-sort-imports": "^6.0.2", - "prettier": "^3.9.9" + "prettier": "^3.9.10" }, "packageManager": "pnpm@12.11.2" } diff --git a/mock-api/pnpm-lock.yaml b/mock-api/pnpm-lock.yaml index c36db7f17..ce51c63cb 100644 --- a/mock-api/pnpm-lock.yaml +++ b/mock-api/pnpm-lock.yaml @@ -175,10 +175,10 @@ importers: devDependencies: '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 - version: 6.0.2(prettier@3.9.9) + version: 6.0.2(prettier@3.9.10) prettier: - specifier: ^3.9.9 - version: 3.9.9 + specifier: ^3.9.10 + version: 3.9.10 packages: @@ -303,8 +303,8 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - prettier@3.9.9: - resolution: {integrity: sha512-Z/CJHIkdujO/OtN7nXUii0Rf3VT5SRuhjBA82Xvu2XhBUgX3nhP67T0LHceBdQLex7OOFGTox+Q5Yg8Jk2Qivg==} + prettier@3.9.10: + resolution: {integrity: sha512-skGHTH1Yb9QvaTC4hWnRTzEYtCpApF0UMBPz+t/0ZPzP8ihefo/btKd+QA7pUE0fEwA1SbS/NmhyEcstdXOIdA==} engines: {node: '>=14'} hasBin: true @@ -373,7 +373,7 @@ snapshots: '@msgpack/msgpack@3.1.3': {} - '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.9.9)': + '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.9.10)': dependencies: '@babel/generator': 7.29.8 '@babel/parser': 7.29.9 @@ -383,7 +383,7 @@ snapshots: lodash-es: 4.18.1 minimatch: 9.0.9 parse-imports-exports: 0.2.4 - prettier: 3.9.9 + prettier: 3.9.10 transitivePeerDependencies: - supports-color @@ -421,4 +421,4 @@ snapshots: picocolors@1.1.1: {} - prettier@3.9.9: {} + prettier@3.9.10: {} diff --git a/mock-api/restServer.ts b/mock-api/restServer.ts index 29ab5d875..aa2470b60 100644 --- a/mock-api/restServer.ts +++ b/mock-api/restServer.ts @@ -116,8 +116,8 @@ let system_status = { psram: true, psram_size: 8189, free_psram: 8166, - // recovery_version: '', // upload an EMS-ESP-Recovery-*.bin to set it - recovery_version: '1.0.0', + recovery_version: '', // upload an EMS-ESP-Recovery-*.bin to set it + // recovery_version: '1.0.0', has_partition: true, partitions: [ { @@ -5447,6 +5447,10 @@ router } else if (action === 'uploadURL') { // upload URL console.log('upload File from URL', content.param); + if (String(content.param).toLowerCase().includes('recovery')) { + // the recovery app is installed without a restart + system_status.recovery_version = '1.0.0'; + } return status(200); } else if (action === 'resetMQTT') { // reset MQTT diff --git a/pio_local.ini_example b/pio_local.ini_example index c1bd4f59d..6a227502d 100644 --- a/pio_local.ini_example +++ b/pio_local.ini_example @@ -2,36 +2,46 @@ [common] ; custom build flags to use in my_build_flags -; -DEMSESP_UART_DEBUG ; debugging UART -; -DEMSESP_DEBUG ; enables DEBUG to the log. Will generate a lot of extra traffic on Console and Syslog -; -DEMSESP_DEFAULT_BOARD_PROFILE=\"NODEMCU\" ; hard code the default board name -; -DEMSESP_DEBUG_SENSOR ; additional debug for the sensors -; -DCORE_DEBUG_LEVEL=5 ; verbose core level debugging 5=verbose, 4=debug, 3=info -; -DEMSESP_TEST ; enable the tests. EN language only -; -DEMSESP_DE_ONLY ; only DE translated entity names -; -DEMSESP_EN_ONLY ; only EN translated entity names -; -DEMSESP_PINGTEST ; send log message every 1/2 second +; -D EMSESP_UART_DEBUG ; debugging UART +; -D EMSESP_DEBUG ; enables DEBUG to the log. Will generate a lot of extra traffic on Console and Syslog +; -D EMSESP_DEFAULT_BOARD_PROFILE=\"NODEMCU\" ; hard code the default board name +; -D EMSESP_DEBUG_SENSOR ; additional debug for the sensors +; -D CORE_DEBUG_LEVEL=5 ; verbose core level debugging 5=verbose, 4=debug, 3=info +; -D EMSESP_TEST ; enable the tests. EN language only +; -D EMSESP_DE_ONLY ; only DE translated entity names +; -D EMSESP_EN_ONLY ; only EN translated entity names +; -D EMSESP_PINGTEST ; send log message every 1/2 second +; -D EMSESP_GATEWAY_TX_HOLD ; hold Tx while a K30RF/KM200 gateway is syncing, see issue #3094 +; -D EMSESP_TX_PRE_DELAY=1000 ; wait this many us before each Tx so we don't overlap the master's break, see issue #3094 ; my_build_flags = -DEMSESP_TEST -DEMSESP_DEBUG ; my_build_flags = -DEMSESP_DEBUG -DEMSESP_TEST -DEMSESP_PINGTEST ; my_build_flags = -DEMSESP_DEBUG -DCORE_DEBUG_LEVEL=5 ; my_build_flags = -DEMSESP_EN_ONLY -DEMSESP_TEST -DCORE_DEBUG_LEVEL=5 -DARDUINO_USB_CDC_ON_BOOT=1 -my_build_flags = +; my_build_flags = -DEMSESP_EN_ONLY +; my_build_flags = -D EMSESP_GATEWAY_TX_HOLD -D EMSESP_TX_PRE_DELAY=1000 +my_build_flags = -DEMSESP_DEBUG +; my_build_flags = [platformio] -default_envs = s_16M_P ; BBQKees E32V2 -; 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 -; default_envs = c6 ; XIAO ESP32C -; default_envs = debug +default_envs = s_16M_P, recovery_s_16M_P, build-recovery, build-webUI +; default_envs = s_16M_P ; BBQKees E32V2 +; default_envs = s_16M_P_custom ; BBQKees E32V2 with custom Arduino/IDF libs +; default_envs = recovery_s_16M_P ; recovery firmware +; default_envs = crashtest_s_16M_P ; crash test +; default_envs = build-webUI ; build the main ems-esp webUI only +; default_envs = build-recovery ; build the recovery WebUI only +; default_envs = s3_16M_P ; BBQKees S3 firmware +; default_envs = s_4M ; firmware forBBQKees older S32, 4MB no psram +; default_envs = s_16M ; firmware for BBQKees newer S32 V2, 16MB no psram +; default_envs = c6 ; firmware for XIAO ESP32C +; default_envs = debug ; see below [env] +; uncomment if you want to upload the firmware via OTA (must have upload_protocol = custom) extra_scripts = - pre:scripts/build_interface.py ; builds the WebUI - scripts/rename_fw.py ; renames the firmware .bin file - comment out if not needed + post:scripts/rename_fw.py ; renames the firmware .bin file scripts/upload.py ; optionally upload the firmware via OTA (must have upload_protocol = custom) ; set the username and password for the admin account (default password is admin) @@ -40,13 +50,33 @@ custom_password = admin ; ** upload settings ** ; for direct USB, which is the default you can set an optional port for example: -; upload_port = /dev/ttyUSB0 or COM3 -; upload_speed = 921600 +; upload_port = /dev/ttyUSB0 +; upload_port = /dev/ttyACM0 + +; CH340G bridge tops out here reliably; drop back to 460800 if uploads fail +; 2000000 is the max speed for the CH340G bridge +upload_speed = 921600 ; for direct via HTTP (OTA) set: ; upload_protocol = custom ; custom_emsesp_ip = or ems-esp.local +upload_protocol = custom + +custom_emsesp_ip = ems-esp.local ; E32V2.2 (test) +; custom_emsesp_ip = ems-espP.local ; E32V2.2 (prod) +; custom_emsesp_ip = ems-esps32.local ; S32, 4MB no psramS32 +; custom_emsesp_ip = ems-espS3.local ; ems-espS3 + +; lib_deps = +; bblanchon/ArduinoJson @ 7.4.3 +; ESP32Async/AsyncTCP @ 3.4.10 +; ESP32Async/ESPAsyncWebServer @ 3.11.0 +; https://github.com/mobizt/ReadyMail.git @ 0.4.0 +; https://github.com/mobizt/ESP_SSLClient.git @ 3.1.3 + ; https://github.com/emsesp/EMS-ESP-Modules.git @ 1.0.8 +; ; file://${PROJECT_DIR}/../modules/EMS-ESP-Modules + ; ** debug settings ** ; to be used with an ESP32-S3 which has an onboard JTAG, connect the OTG USB port to the PC ; if using an external JTAG board like the ESP-PROG set debug_tool = esp-prog, and use zadig to set the correct driver for the USB port @@ -69,4 +99,3 @@ debug_init_break = upload_speed = 2000000 monitor_speed = 115200 extra_scripts = -; debug_build_flags = -Og -g2 -ggdb2 \ No newline at end of file diff --git a/platformio.ini b/platformio.ini index 7a59c57cd..e18746977 100644 --- a/platformio.ini +++ b/platformio.ini @@ -116,6 +116,14 @@ extra_scripts = pre:scripts/build_interface.py ; Exclude all source files so the C code doesn't build build_src_filter = -<*> +; builds the recovery web interface only (recovery/WWWData.h), not the recovery firmware +[env:build-recovery] +platform = native +targets = build +extra_scripts = pre:scripts/build_recovery_interface.py +; Exclude all source files so the C code doesn't build +build_src_filter = -<*> + ; ; Builds for different board types ; If you're building for a single target environment, we recommend creating a pio_local.ini (see example file) diff --git a/recovery/main.cpp b/recovery/main.cpp index 23089223f..c115c4b0d 100644 --- a/recovery/main.cpp +++ b/recovery/main.cpp @@ -28,6 +28,7 @@ #include #include +#include #include #include "WWWData.h" // generated by `pnpm build-recovery` in ./interface @@ -37,18 +38,18 @@ #define FACTORY_AP_CHANNEL 1 #endif -static constexpr size_t MIN_FIRMWARE_SIZE = 512 * 1024; -static constexpr uint32_t RESTART_DELAY_MS = 500; -static constexpr uint32_t ETH_WAIT_MS = 15000; // how long Ethernet gets to obtain an address before WiFi is tried +static constexpr size_t MIN_FIRMWARE_SIZE = 512 * 1024; // smallest .bin accepted by the upload, anything smaller is rejected +static constexpr uint32_t RESTART_DELAY_MS = 500; // delay before restarting, so the HTTP response is sent first +static constexpr uint32_t ETH_WAIT_MS = 15000; // how long Ethernet gets to obtain an address before WiFi is tried static constexpr char NVS_NAMESPACE[] = "ems-esp"; static constexpr char NVS_FRESH_FW[] = "fresh_firmware"; // EMSESP_NVS_BOOT_NEW_FIRMWARE in emsesp.h static constexpr char NVS_REASON[] = "rec_reason"; // EMSESP_NVS_RECOVERY_REASON in emsesp.h -#define LOG(...) \ - do { \ - Serial.print("[recovery] "); \ - Serial.printf(__VA_ARGS__); \ - Serial.println(); \ +#define LOG(...) \ + do { \ + Serial.print("[recovery] "); \ + Serial.printf(__VA_ARGS__); \ + Serial.println(); \ } while (0) struct AdminUser { @@ -102,7 +103,7 @@ static std::vector partitions; static uint32_t restart_at = 0; static String session_token; static String ap_ssid; -static String recovery_reason; // set by EMS-ESP when it switched to the recovery +static String recovery_reason; // set by EMS-ESP when it switched to the recovery static const char * eth_state = ""; // "", "disabled", "failed" or "started" static uint32_t wifi_join_at = 0; // when to try WiFi if Ethernet has no address, 0 if not waiting static bool wifi_started = false; @@ -113,6 +114,8 @@ static bool ethConnected(); static int upload_error = 0; static bool upload_done = false; static String upload_target; +static size_t upload_size = 0; // content length, for the progress +static size_t upload_step = 0; // last progress step logged, in tens of percent // ---------------------------------------------------------------------------- // settings (read-only) @@ -256,6 +259,7 @@ static void loadRecoveryReason() { if (nvs.isKey(NVS_REASON)) { recovery_reason = nvs.getString(NVS_REASON); nvs.remove(NVS_REASON); + LOG("EMS-ESP switched to the recovery: %s", recovery_reason.c_str()); } nvs.end(); } @@ -272,8 +276,8 @@ static void loadPartitions() { const esp_partition_t * part = esp_partition_get(it); PartitionInfo info; - info.label = part->label; - info.factory = part->subtype == ESP_PARTITION_SUBTYPE_APP_FACTORY; + info.label = part->label; + info.factory = part->subtype == ESP_PARTITION_SUBTYPE_APP_FACTORY; info.address = part->address; info.size = part->size; info.image_size = 0; @@ -293,6 +297,10 @@ static void loadPartitions() { if (part == running) { info.version = RECOVERY_VERSION; + // EMS-ESP stores the install date when it installs the recovery. Not set if it was flashed over serial + if (has_nvs) { + info.install_date = nvs.getULong(("d_" + info.label).c_str(), 0); + } } else if (info.valid) { // EMS-ESP stores the version and install date of each partition in NVS, keyed by the label if (has_nvs && nvs.isKey(part->label)) { @@ -305,6 +313,17 @@ static void loadPartitions() { } } + LOG("Partition %s: %s%s, %uKB at 0x%x%s%s%s%s", + info.label.c_str(), + info.factory ? "factory, " : "", + info.valid ? "valid" : "empty", + static_cast(info.size / 1024), + static_cast(info.address), + info.version.isEmpty() ? "" : ", v", + info.version.c_str(), + info.ota_state.isEmpty() ? "" : ", ota state ", + info.ota_state.c_str()); + partitions.push_back(info); } esp_partition_iterator_release(it); @@ -353,6 +372,7 @@ static const esp_partition_t * uploadTarget(AsyncWebServerRequest * request) { static void markFreshFirmware(const String & label) { Preferences nvs; if (!openNvs(nvs, false)) { + LOG("Cannot open NVS, EMS-ESP won't know it's a new firmware"); return; } nvs.putBool(NVS_FRESH_FW, true); @@ -381,10 +401,11 @@ static String generateToken() { } static bool isAuthorized(AsyncWebServerRequest * request) { - if (session_token.isEmpty() || !request->hasHeader("Authorization")) { - return false; + const bool ok = !session_token.isEmpty() && request->hasHeader("Authorization") && request->header("Authorization") == "Bearer " + session_token; + if (!ok) { + LOG("Unauthorized request to %s", request->url().c_str()); } - return request->header("Authorization") == "Bearer " + session_token; + return ok; } // ---------------------------------------------------------------------------- @@ -529,6 +550,7 @@ static void handleSetBoot(AsyncWebServerRequest * request, JsonVariant & json) { const String label = json["partition"] | ""; const esp_partition_t * part = findAppPartition(label.c_str()); if (part == nullptr) { + LOG("Cannot boot from %s: no such partition", label.c_str()); request->send(404); return; } @@ -569,6 +591,7 @@ static void handleFactoryReset(AsyncWebServerRequest * request) { return; } + LOG("Factory reset requested"); const bool ok = LittleFS.format(); // the only place the recovery writes to the filesystem LOG("Factory reset %s", ok ? "done" : "failed"); if (!ok) { @@ -580,12 +603,12 @@ static void handleFactoryReset(AsyncWebServerRequest * request) { restart_at = millis() + RESTART_DELAY_MS; } -static void uploadFail(AsyncWebServerRequest * request, int code) { +static void uploadFail(AsyncWebServerRequest * request, int code, const char * reason) { if (upload_error) { return; } upload_error = code; - LOG("Upload error %d", code); + LOG("Upload error %d: %s", code, reason); request->send(code); if (code == 406) { request->client()->close(); @@ -596,10 +619,12 @@ static void handleUpload(AsyncWebServerRequest * request, const String & filenam if (!index) { upload_error = 0; upload_done = false; + upload_size = 0; + upload_step = 0; upload_target.clear(); if (!isAuthorized(request)) { - uploadFail(request, 403); + uploadFail(request, 403, "not signed in"); return; } @@ -611,41 +636,51 @@ static void handleUpload(AsyncWebServerRequest * request, const String & filenam if (ota.setMd5(data, len)) { LOG("MD5 digest received (%s)", ota.md5()); } else { - uploadFail(request, 406); + uploadFail(request, 406, "invalid MD5 digest"); } return; default: // the recovery app only flashes firmware, it never touches the settings ota.clearMd5(); LOG("Unsupported file %s (%u bytes)", filename.c_str(), static_cast(filesize)); - uploadFail(request, 406); + uploadFail(request, 406, "unsupported file"); return; } if (!OtaUpdater::isCompatibleFirmware(data, len)) { - uploadFail(request, 503); + uploadFail(request, 503, "not a firmware image for this chip"); return; } if (OtaUpdater::isRecoveryFirmware(data, len)) { - uploadFail(request, 409); + uploadFail(request, 409, "the recovery firmware can't be installed from the recovery"); return; } const esp_partition_t * target = uploadTarget(request); if (target == nullptr) { - uploadFail(request, 400); + if (request->hasParam("partition")) { + LOG("Invalid upload target %s", request->getParam("partition")->value().c_str()); + } + uploadFail(request, 400, "no valid target partition"); return; } if (!ota.beginFirmware(filesize, target)) { LOG("Cannot write to %s: %s", target->label, ota.errorString()); - uploadFail(request, 507); + uploadFail(request, 507, "cannot start the update"); return; } upload_target = target->label; - LOG("Uploading %s (%uKB) to %s%s", filename.c_str(), static_cast(filesize / 1024), target->label, ota.md5Applied() ? ", MD5 check enabled" : ""); + upload_size = filesize; + LOG("Uploading %s (%uKB) to %s (%s)%s", + filename.c_str(), + static_cast(filesize / 1024), + target->label, + request->hasParam("partition") ? "selected" : "default target", + ota.md5Applied() ? ", MD5 check enabled" : ""); request->onDisconnect([] { if (!upload_done && !upload_target.isEmpty()) { + LOG("Upload aborted at %uKB, the client disconnected", static_cast(ota.progress() / 1024)); ota.abort(); } }); @@ -658,17 +693,27 @@ static void handleUpload(AsyncWebServerRequest * request, const String & filenam if (!ota.write(data, len)) { LOG("Write failed at %u: %s", static_cast(ota.progress()), ota.errorString()); ota.abort(); - uploadFail(request, 500); + uploadFail(request, 500, "write failed"); return; } + // log the progress every 10%, the content length is a little more than the image so it may stop just short of 100% + if (upload_size > 0) { + const size_t step = std::min(ota.progress() * 10 / upload_size, 10); + if (step > upload_step) { + upload_step = step; + LOG("Uploading to %s, %u%%", upload_target.c_str(), static_cast(step * 10)); + } + } + if (final) { // on success this also makes the new partition the boot partition if (!ota.end()) { LOG("Upload failed: %s", ota.errorString()); - uploadFail(request, 500); + uploadFail(request, 500, "image check failed"); return; } + LOG("Upload finished, the image is verified"); upload_done = true; } } @@ -785,6 +830,17 @@ static bool ethConnected() { } static void startNetwork() { + // the reason is logged once per change, since a missing network disconnects again every few seconds + WiFi.onEvent( + [](arduino_event_id_t, arduino_event_info_t info) { + static uint8_t last_reason = 0; + if (info.wifi_sta_disconnected.reason != last_reason) { + last_reason = info.wifi_sta_disconnected.reason; + LOG("WiFi disconnected, reason %d", last_reason); + } + }, + ARDUINO_EVENT_WIFI_STA_DISCONNECTED); + WiFi.persistent(false); WiFi.setHostname(settings.hostname.c_str()); // also the default for the Ethernet interface WiFi.mode(WIFI_AP); @@ -826,6 +882,9 @@ void setup() { Serial.begin(115200); LOG("EMS-ESP Recovery v%s", RECOVERY_VERSION); + const esp_partition_t * boot = esp_ota_get_boot_partition(); + LOG("Reset reason: %s, running %s, next boot %s", resetReasonName(esp_reset_reason()), esp_ota_get_running_partition()->label, boot ? boot->label : "unknown"); + loadSettings(); loadRecoveryReason(); loadPartitions(); @@ -841,6 +900,8 @@ void loop() { was_connected = WiFi.isConnected(); if (was_connected) { LOG("WiFi connected, IP %s", WiFi.localIP().toString().c_str()); + } else { + LOG("WiFi connection lost"); } } diff --git a/scripts/build_interface.py b/scripts/build_interface.py index 0be356f58..7202e1dad 100755 --- a/scripts/build_interface.py +++ b/scripts/build_interface.py @@ -110,6 +110,12 @@ def build_webUI(*args, **kwargs): env.Exit(0) +# The web interface is only built by the "build" target. Skip any other, e.g. `pio run -t upload` also runs this +# environment when it's one of the default_envs, and it has nothing to upload +if "build" not in [t.strip() for t in COMMAND_LINE_TARGETS]: + print("Skipping the web interface build, the target is not 'build'") + env.Exit(0) + # Create custom target that only runs the script and then exits, without continuing with the pio workflow env.AddCustomTarget( name="build", diff --git a/scripts/build_recovery_interface.py b/scripts/build_recovery_interface.py index 23a82bdde..94bd3168b 100644 --- a/scripts/build_recovery_interface.py +++ b/scripts/build_recovery_interface.py @@ -1,4 +1,5 @@ -# Builds the Recovery WebUI into recovery/WWWData.h when it's missing or older than its sources +# Builds the Recovery WebUI into recovery/WWWData.h when it's missing or older than its sources. +# In the build-recovery environment it only builds the WebUI, always. from pathlib import Path import os import shutil @@ -52,7 +53,29 @@ def build(): env.Exit(1) -if is_stale(): +if env.get("PIOENV") == "build-recovery": + # the WebUI is only built by the "build" target. Skip any other, e.g. `pio run -t upload` also runs this environment + # when it's one of the default_envs, and it has nothing to upload + if "build" not in [t.strip() for t in COMMAND_LINE_TARGETS]: + print("Skipping the Recovery WebUI build, the target is not 'build'") + env.Exit(0) + + # `pio run -e build-recovery` only builds the WebUI, always, and exits without building any firmware + def build_recovery_webUI(*args, **kwargs): + print("Building Recovery WebUI...") + build() + print("Recovery WebUI build completed successfully!") + env.Exit(0) + + env.AddCustomTarget( + name="build", + dependencies=None, + actions=[build_recovery_webUI], + title="build recovery web interface", + description="installs pnpm packages and builds the recovery web UI into recovery/WWWData.h", + always_build=True, + ) +elif is_stale(): print("Building Recovery WebUI...") build() else: diff --git a/src/core/system.cpp b/src/core/system.cpp index e1cffb6bb..d880cc9ef 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -568,7 +568,8 @@ void System::get_partition_info() { void System::recovery_installed() { #ifdef EMSESP_HAS_RECOVERY - // drop the version info of an EMS-ESP firmware that was in the factory partition before + // drop the version info of an EMS-ESP firmware that was in the factory partition before. The recovery reports its + // own version, but the install date is only known here, as it's not set when flashed over serial const esp_partition_t * factory = esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_APP_FACTORY, nullptr); if (factory != nullptr) { char c[20]; @@ -576,8 +577,11 @@ void System::recovery_installed() { if (EMSESP::nvs_.isKey(factory->label)) { EMSESP::nvs_.remove(factory->label); } - if (EMSESP::nvs_.isKey(c)) { - EMSESP::nvs_.remove(c); + const time_t now = time(nullptr); + if (now > 1500000000L) { + EMSESP::nvs_.putULong(c, now); // UTC epoch, read by the recovery app. Only if the clock is set (NTP) + } else if (EMSESP::nvs_.isKey(c)) { + EMSESP::nvs_.remove(c); // clock not set, the date of the previous firmware is wrong } partition_info_.erase(factory->label); // on the AsyncTCP task, same as the web handlers reading it } @@ -585,6 +589,19 @@ void System::recovery_installed() { #endif } +// the partition info is read by the web handlers on the AsyncTCP task, so the update after a recovery firmware +// download (which runs on the main loop) is deferred to be done there, on the next systemStatus request +void System::recovery_installed_deferred() { + recovery_installed_pending_ = true; +} + +void System::recovery_installed_apply() { + if (recovery_installed_pending_) { + recovery_installed_pending_ = false; + recovery_installed(); + } +} + std::string System::recovery_version() const { #ifdef EMSESP_HAS_RECOVERY esp_app_desc_t desc; @@ -3511,21 +3528,44 @@ bool System::uploadFirmwareURL(const char * url) { break; } + // the recovery firmware is recognized by its filename. It's written to the factory partition and + // EMS-ESP keeps running, there is no restart +#ifdef EMSESP_HAS_RECOVERY + String file_name = saved_url.substring(saved_url.lastIndexOf('/') + 1); + file_name.toLowerCase(); + const bool is_recovery = file_name.indexOf("recovery") >= 0; +#else + const bool is_recovery = false; +#endif + OtaUpdater ota; // only used for the recovery firmware + // check we have a valid size - if (firmware_size < (int)MIN_FIRMWARE_SIZE) { + if (firmware_size < (int)(is_recovery ? OtaUpdater::MIN_RECOVERY_FIRMWARE_SIZE : MIN_FIRMWARE_SIZE)) { LOG_ERROR("Firmware upload failed - invalid size"); return false; // error } OtaUpdater::confirmRunningApp(); - // check we have enough space for the upload in the ota partition - if (!Update.begin(firmware_size)) { + if (is_recovery) { +#ifdef EMSESP_HAS_RECOVERY + const esp_partition_t * factory = esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_APP_FACTORY, nullptr); + if (factory == nullptr || factory == esp_ota_get_running_partition()) { + LOG_ERROR("The recovery firmware can't be installed on this board"); + return false; // error + } + if (!ota.beginFirmware(firmware_size, factory, false)) { + LOG_ERROR("Recovery firmware upload failed - %s", ota.errorString()); + return false; // error + } +#endif + } else if (!Update.begin(firmware_size)) { + // check we have enough space for the upload in the ota partition LOG_ERROR("Firmware upload failed - no space"); return false; // error } - LOG_INFO("Firmware uploading (size: %dKB) over %s. Please wait...", firmware_size / 1024, is_https ? "HTTPS" : "HTTP"); + LOG_INFO("%s uploading (size: %dKB) over %s. Please wait...", is_recovery ? "Recovery firmware" : "Firmware", firmware_size / 1024, is_https ? "HTTPS" : "HTTP"); Shell::loop_all(); // flush log buffers so latest messages are shown in console @@ -3543,7 +3583,11 @@ bool System::uploadFirmwareURL(const char * url) { // via the systemStatus action, which runs on the AsyncTCP task while we're blocked here if (EMSESP::system_.systemStatus() < SYSTEM_STATUS::SYSTEM_STATUS_UPLOADING) { LOG_WARNING("Firmware upload cancelled at %u of %d bytes", (unsigned)total_read, firmware_size); - Update.abort(); // release the OTA partition handle so a later attempt can start cleanly + if (is_recovery) { + ota.abort(); + } else { + Update.abort(); // release the OTA partition handle so a later attempt can start cleanly + } ssl_client.stop(); // drop the connection saved_url.clear(); // prevent it from downloading again EMSESP::system_.systemStatus(SYSTEM_STATUS::SYSTEM_STATUS_NORMAL); @@ -3573,6 +3617,9 @@ bool System::uploadFirmwareURL(const char * url) { continue; } LOG_ERROR("Firmware upload failed - read stalled at %u of %d bytes", (unsigned)total_read, firmware_size); + if (is_recovery) { + ota.abort(); + } EMSESP::system_.systemStatus(SYSTEM_STATUS::SYSTEM_STATUS_ERROR_UPLOAD); return false; } @@ -3585,6 +3632,9 @@ bool System::uploadFirmwareURL(const char * url) { size_t n = stream->readBytes(buf, want); if (n == 0) { LOG_ERROR("Firmware upload failed - read returned 0 at %u of %d bytes", (unsigned)total_read, firmware_size); + if (is_recovery) { + ota.abort(); + } EMSESP::system_.systemStatus(SYSTEM_STATUS::SYSTEM_STATUS_ERROR_UPLOAD); return false; } @@ -3594,14 +3644,33 @@ bool System::uploadFirmwareURL(const char * url) { if (!magic_ok) { if (buf[0] != 0xE9) { LOG_ERROR("Firmware upload failed - bad magic byte 0x%02X (expected 0xE9, not an ESP32 firmware image?)", buf[0]); + if (is_recovery) { + ota.abort(); + } + EMSESP::system_.systemStatus(SYSTEM_STATUS::SYSTEM_STATUS_ERROR_UPLOAD); + return false; + } + // the recovery firmware must be for this chip, and really be the recovery + if (is_recovery && !(OtaUpdater::isCompatibleFirmware(buf, n) && OtaUpdater::isRecoveryFirmware(buf, n))) { + LOG_ERROR("Recovery firmware upload failed - not a recovery firmware image for this chip"); + if (is_recovery) { + ota.abort(); + } EMSESP::system_.systemStatus(SYSTEM_STATUS::SYSTEM_STATUS_ERROR_UPLOAD); return false; } magic_ok = true; } - if (Update.write(buf, n) != n) { - LOG_ERROR("Firmware upload failed - flash write error at %u of %d bytes: %s", (unsigned)total_read, firmware_size, Update.errorString()); + const bool written = is_recovery ? ota.write(buf, n) : (Update.write(buf, n) == n); + if (!written) { + LOG_ERROR("Firmware upload failed - flash write error at %u of %d bytes: %s", + (unsigned)total_read, + firmware_size, + is_recovery ? ota.errorString() : Update.errorString()); + if (is_recovery) { + ota.abort(); + } EMSESP::system_.systemStatus(SYSTEM_STATUS::SYSTEM_STATUS_ERROR_UPLOAD); return false; } @@ -3618,13 +3687,22 @@ bool System::uploadFirmwareURL(const char * url) { yield(); } - if (!Update.end(true)) { - LOG_ERROR("Firmware upload failed - %s", Update.errorString()); + if (!(is_recovery ? ota.end() : Update.end(true))) { + LOG_ERROR("Firmware upload failed - %s", is_recovery ? ota.errorString() : Update.errorString()); EMSESP::system_.systemStatus(SYSTEM_STATUS::SYSTEM_STATUS_ERROR_UPLOAD); return false; // error } saved_url.clear(); // prevent from downloading again + + if (is_recovery) { + // no restart. The partition info is updated later on the AsyncTCP task, see recovery_installed_apply() + EMSESP::system_.recovery_installed_deferred(); + LOG_INFO("Recovery firmware uploaded successfully"); + EMSESP::system_.systemStatus(SYSTEM_STATUS::SYSTEM_STATUS_NORMAL); + return true; + } + LOG_INFO("Firmware uploaded successfully. Restarting..."); EMSESP::system_.systemStatus(SYSTEM_STATUS::SYSTEM_STATUS_PENDING_RESTART); #endif diff --git a/src/core/system.h b/src/core/system.h index 04da48ec2..af83e3324 100644 --- a/src/core/system.h +++ b/src/core/system.h @@ -84,6 +84,8 @@ class System { static void check_crash_loop(); // call at boot once NVS is open, may restart into the factory partition void recovery_installed(); // called on the AsyncTCP task after the recovery firmware was written + void recovery_installed_deferred(); // called from the main loop after the recovery firmware was downloaded from a URL + void recovery_installed_apply(); // called on the AsyncTCP task, handles the deferred call std::string recovery_version() const; // empty if there's no recovery firmware // commands @@ -391,6 +393,8 @@ class System { void set_partition_install_date(); + volatile bool recovery_installed_pending_ = false; // set by the main loop, handled on the AsyncTCP task + // firmware is confirmed to the bootloader and the crash counter cleared once it has been up this long static constexpr uint32_t FIRMWARE_HEALTHY_UPTIME = 120; // seconds // consecutive crashes before falling back to the recovery firmware in the factory partition diff --git a/src/web/WebStatusService.cpp b/src/web/WebStatusService.cpp index d012d6308..681a965ee 100644 --- a/src/web/WebStatusService.cpp +++ b/src/web/WebStatusService.cpp @@ -45,7 +45,8 @@ WebStatusService::WebStatusService(AsyncWebServer * server, SecurityManager * se // This contains both system & hardware Status to avoid having multiple costly endpoints // This is also used for polling during the SystemMonitor to see if EMS-ESP is alive void WebStatusService::systemStatus(AsyncWebServerRequest * request) { - EMSESP::system_.refreshHeapMem(); // refresh free heap and max alloc heap + EMSESP::system_.refreshHeapMem(); // refresh free heap and max alloc heap + EMSESP::system_.recovery_installed_apply(); // update the partition info if the recovery firmware was just downloaded auto * response = new PsramAsyncJsonResponse(false); JsonObject root = response->getRoot(); -- 2.54.0 From 84060449cdcd1d49d6dfd1cf079416ed531e2152 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Oct 2026 14:27:10 +0000 Subject: [PATCH 085/148] Bump SonarSource/sonarqube-scan-action Bumps the github-actions group with 1 update: [SonarSource/sonarqube-scan-action](https://github.com/sonarsource/sonarqube-scan-action). Updates `SonarSource/sonarqube-scan-action` from 8.2.2 to 8.3.0 - [Release notes](https://github.com/sonarsource/sonarqube-scan-action/releases) - [Commits](https://github.com/sonarsource/sonarqube-scan-action/compare/v8.2.2...v8.3.0) --- updated-dependencies: - dependency-name: SonarSource/sonarqube-scan-action dependency-version: 8.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions ... Signed-off-by: dependabot[bot] --- .github/workflows/sonar_check.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/sonar_check.yml b/.github/workflows/sonar_check.yml index 69939638d..a24b5d97b 100644 --- a/.github/workflows/sonar_check.yml +++ b/.github/workflows/sonar_check.yml @@ -23,11 +23,11 @@ jobs: with: fetch-depth: 0 - name: Install Build Wrapper - uses: SonarSource/sonarqube-scan-action/install-build-wrapper@v8.2.2 + uses: SonarSource/sonarqube-scan-action/install-build-wrapper@v8.3.0 - name: Run Build Wrapper run: build-wrapper-linux-x86-64 --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} make all - name: SonarQube Scan - uses: SonarSource/sonarqube-scan-action@v8.2.2 + uses: SonarSource/sonarqube-scan-action@v8.3.0 env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} -- 2.54.0 From 5ae89714c28ef4ead100858546920564f9af8cc3 Mon Sep 17 00:00:00 2001 From: proddy <1230712+proddy@users.noreply.github.com> Date: Sun, 11 Oct 2026 14:33:31 +0000 Subject: [PATCH 086/148] chore: update generated files for v3.9.0-dev.18 --- Modbus-Entity-Registers.md | 1422 +++++++++++++------------ dump_entities.csv | 1419 ++++++++++++------------ src/core/modbus_entity_parameters.hpp | 49 +- 3 files changed, 1450 insertions(+), 1440 deletions(-) diff --git a/Modbus-Entity-Registers.md b/Modbus-Entity-Registers.md index 61f4c2cad..dbae8073d 100644 --- a/Modbus-Entity-Registers.md +++ b/Modbus-Entity-Registers.md @@ -265,27 +265,29 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +uint8 +| dhw.disinfectduration | disinfection duration | uint8 (>=120<=240) | minutes | true | DHW | 48 | 1 | 10 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | ### Greenstar 2000 @@ -386,9 +388,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -419,27 +421,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -547,9 +549,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -580,27 +582,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -708,9 +710,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -741,27 +743,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -869,9 +871,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -902,27 +904,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -1030,9 +1032,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -1063,27 +1065,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -1191,9 +1193,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -1224,27 +1226,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -1352,9 +1354,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -1385,27 +1387,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -1513,9 +1515,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -1546,27 +1548,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -1674,9 +1676,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -1707,27 +1709,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -1835,9 +1837,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -1868,27 +1870,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -1996,9 +1998,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -2029,27 +2031,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -2157,9 +2159,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -2190,27 +2192,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -2318,9 +2320,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -2351,27 +2353,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -2479,9 +2481,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -2512,27 +2514,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -2640,9 +2642,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -2673,27 +2675,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -2801,9 +2803,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -2834,27 +2836,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -2962,9 +2964,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -2995,27 +2997,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -3123,9 +3125,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -3156,27 +3158,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -3284,9 +3286,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -3317,27 +3319,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -3445,9 +3447,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -3478,27 +3480,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -3763,27 +3765,29 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +uint8 +| dhw.disinfectduration | disinfection duration | uint8 (>=120<=240) | minutes | true | DHW | 48 | 1 | 10 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | ### Geo 5xx @@ -4041,27 +4045,29 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +uint8 +| dhw.disinfectduration | disinfection duration | uint8 (>=120<=240) | minutes | true | DHW | 48 | 1 | 10 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | ### Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2 @@ -4162,9 +4168,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -4195,27 +4201,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -4323,9 +4329,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -4356,27 +4362,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -4484,9 +4490,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -4517,27 +4523,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -4645,9 +4651,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -4678,27 +4684,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -4806,9 +4812,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -4839,27 +4845,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -4967,9 +4973,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -5000,27 +5006,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -5035,7 +5041,7 @@ uint24 |-|-|-|-|-|-|-|-|-| | netflowtemp | heat network flow temp | uint16 | C | false | DEVICE_DATA | 283 | 1 | 1/10 | | heatvalve | heating valve | uint8 | % | false | DEVICE_DATA | 284 | 1 | 1 | -| dhw.dhwvalve | valve | uint8 | % | false | DHW | 75 | 1 | 1 | +| dhw.dhwvalve | valve | uint8 | % | false | DHW | 76 | 1 | 1 | uint8 | keepwarmtemp | keep warm temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 285 | 1 | 1 | uint8 @@ -5103,9 +5109,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -5136,27 +5142,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | ### Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W @@ -5257,9 +5263,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -5290,27 +5296,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | diff --git a/dump_entities.csv b/dump_entities.csv index a6e59358d..b8b44ae25 100644 --- a/dump_entities.csv +++ b/dump_entities.csv @@ -199,27 +199,28 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.disinfectduration,disinfection duration,uint8 (>=120<=240),minutes,true,number.boiler_dhw_disinfection_duration,number.boiler_dhw_disinfectduration,6,9,10,48,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "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,6,0,1,0,1 "Greenstar 2000",boiler,11,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,6,0,1,1,1 "Greenstar 2000",boiler,11,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,6,0,1,2,1 @@ -293,9 +294,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 2000",boiler,11,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Greenstar 2000",boiler,11,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Greenstar 2000",boiler,11,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Greenstar 2000",boiler,11,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Greenstar 2000",boiler,11,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Greenstar 2000",boiler,11,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Greenstar 2000",boiler,11,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Greenstar 2000",boiler,11,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Greenstar 2000",boiler,11,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Greenstar 2000",boiler,11,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Greenstar 2000",boiler,11,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -316,27 +317,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 2000",boiler,11,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Greenstar 2000",boiler,11,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Greenstar 2000",boiler,11,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Greenstar 2000",boiler,11,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Greenstar 2000",boiler,11,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Greenstar 2000",boiler,11,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Greenstar 2000",boiler,11,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Greenstar 2000",boiler,11,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Greenstar 2000",boiler,11,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Greenstar 2000",boiler,11,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Greenstar 2000",boiler,11,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Greenstar 2000",boiler,11,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Greenstar 2000",boiler,11,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Greenstar 2000",boiler,11,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Greenstar 2000",boiler,11,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Greenstar 2000",boiler,11,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Greenstar 2000",boiler,11,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Greenstar 2000",boiler,11,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Greenstar 2000",boiler,11,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Greenstar 2000",boiler,11,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Greenstar 2000",boiler,11,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Greenstar 2000",boiler,11,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Greenstar 2000",boiler,11,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Greenstar 2000",boiler,11,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Greenstar 2000",boiler,11,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Greenstar 2000",boiler,11,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Greenstar 2000",boiler,11,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Greenstar 2000",boiler,11,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Greenstar 2000",boiler,11,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Greenstar 2000",boiler,11,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Greenstar 2000",boiler,11,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Greenstar 2000",boiler,11,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Greenstar 2000",boiler,11,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Greenstar 2000",boiler,11,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Greenstar 2000",boiler,11,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Greenstar 2000",boiler,11,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Greenstar 2000",boiler,11,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Greenstar 2000",boiler,11,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Greenstar 2000",boiler,11,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Greenstar 2000",boiler,11,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Greenstar 2000",boiler,11,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Greenstar 2000",boiler,11,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Greenstar 2000",boiler,11,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Greenstar 2000",boiler,11,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Greenstar 2000",boiler,11,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Greenstar 2000",boiler,11,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Greenstar 2000",boiler,11,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Greenstar 2000",boiler,11,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -414,9 +415,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "C1200W",boiler,12,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "C1200W",boiler,12,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "C1200W",boiler,12,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"C1200W",boiler,12,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"C1200W",boiler,12,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "C1200W",boiler,12,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"C1200W",boiler,12,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"C1200W",boiler,12,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "C1200W",boiler,12,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "C1200W",boiler,12,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "C1200W",boiler,12,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -437,27 +438,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "C1200W",boiler,12,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "C1200W",boiler,12,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "C1200W",boiler,12,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"C1200W",boiler,12,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"C1200W",boiler,12,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"C1200W",boiler,12,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"C1200W",boiler,12,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"C1200W",boiler,12,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"C1200W",boiler,12,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"C1200W",boiler,12,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"C1200W",boiler,12,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"C1200W",boiler,12,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"C1200W",boiler,12,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"C1200W",boiler,12,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"C1200W",boiler,12,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"C1200W",boiler,12,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"C1200W",boiler,12,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"C1200W",boiler,12,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"C1200W",boiler,12,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"C1200W",boiler,12,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"C1200W",boiler,12,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"C1200W",boiler,12,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"C1200W",boiler,12,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"C1200W",boiler,12,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"C1200W",boiler,12,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"C1200W",boiler,12,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"C1200W",boiler,12,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"C1200W",boiler,12,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"C1200W",boiler,12,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"C1200W",boiler,12,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"C1200W",boiler,12,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"C1200W",boiler,12,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"C1200W",boiler,12,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"C1200W",boiler,12,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"C1200W",boiler,12,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"C1200W",boiler,12,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"C1200W",boiler,12,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"C1200W",boiler,12,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"C1200W",boiler,12,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"C1200W",boiler,12,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"C1200W",boiler,12,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"C1200W",boiler,12,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"C1200W",boiler,12,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"C1200W",boiler,12,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"C1200W",boiler,12,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "C1200W",boiler,12,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "C1200W",boiler,12,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "C1200W",boiler,12,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -535,9 +536,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CS5800iG",boiler,16,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "CS5800iG",boiler,16,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "CS5800iG",boiler,16,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"CS5800iG",boiler,16,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"CS5800iG",boiler,16,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "CS5800iG",boiler,16,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"CS5800iG",boiler,16,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"CS5800iG",boiler,16,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "CS5800iG",boiler,16,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "CS5800iG",boiler,16,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "CS5800iG",boiler,16,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -558,27 +559,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CS5800iG",boiler,16,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "CS5800iG",boiler,16,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "CS5800iG",boiler,16,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"CS5800iG",boiler,16,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"CS5800iG",boiler,16,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"CS5800iG",boiler,16,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"CS5800iG",boiler,16,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"CS5800iG",boiler,16,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"CS5800iG",boiler,16,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"CS5800iG",boiler,16,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"CS5800iG",boiler,16,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"CS5800iG",boiler,16,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"CS5800iG",boiler,16,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"CS5800iG",boiler,16,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"CS5800iG",boiler,16,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"CS5800iG",boiler,16,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"CS5800iG",boiler,16,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"CS5800iG",boiler,16,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"CS5800iG",boiler,16,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"CS5800iG",boiler,16,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"CS5800iG",boiler,16,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"CS5800iG",boiler,16,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"CS5800iG",boiler,16,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"CS5800iG",boiler,16,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"CS5800iG",boiler,16,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"CS5800iG",boiler,16,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"CS5800iG",boiler,16,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"CS5800iG",boiler,16,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"CS5800iG",boiler,16,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"CS5800iG",boiler,16,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"CS5800iG",boiler,16,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"CS5800iG",boiler,16,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"CS5800iG",boiler,16,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"CS5800iG",boiler,16,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"CS5800iG",boiler,16,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"CS5800iG",boiler,16,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"CS5800iG",boiler,16,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"CS5800iG",boiler,16,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"CS5800iG",boiler,16,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"CS5800iG",boiler,16,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"CS5800iG",boiler,16,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"CS5800iG",boiler,16,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"CS5800iG",boiler,16,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"CS5800iG",boiler,16,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"CS5800iG",boiler,16,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "CS5800iG",boiler,16,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "CS5800iG",boiler,16,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "CS5800iG",boiler,16,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -656,9 +657,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "BK13/BK15, Smartline, GB1*2",boiler,64,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "BK13/BK15, Smartline, GB1*2",boiler,64,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,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,6,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,6,9,1,29,1 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -679,27 +680,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "BK13/BK15, Smartline, GB1*2",boiler,64,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "BK13/BK15, Smartline, GB1*2",boiler,64,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "BK13/BK15, Smartline, GB1*2",boiler,64,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -777,9 +778,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB1*5, Logamatic MC10",boiler,72,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Logano GB1*5, Logamatic MC10",boiler,72,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,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,6,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,6,9,1,29,1 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -800,27 +801,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB1*5, Logamatic MC10",boiler,72,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Logano GB1*5, Logamatic MC10",boiler,72,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Logano GB1*5, Logamatic MC10",boiler,72,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Logano GB1*5, Logamatic MC10",boiler,72,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -898,9 +899,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade CM10",boiler,81,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Cascade CM10",boiler,81,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Cascade CM10",boiler,81,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Cascade CM10",boiler,81,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Cascade CM10",boiler,81,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Cascade CM10",boiler,81,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Cascade CM10",boiler,81,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Cascade CM10",boiler,81,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Cascade CM10",boiler,81,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Cascade CM10",boiler,81,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Cascade CM10",boiler,81,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -921,27 +922,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade CM10",boiler,81,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Cascade CM10",boiler,81,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Cascade CM10",boiler,81,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Cascade CM10",boiler,81,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Cascade CM10",boiler,81,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Cascade CM10",boiler,81,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Cascade CM10",boiler,81,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Cascade CM10",boiler,81,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Cascade CM10",boiler,81,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Cascade CM10",boiler,81,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Cascade CM10",boiler,81,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Cascade CM10",boiler,81,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Cascade CM10",boiler,81,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Cascade CM10",boiler,81,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Cascade CM10",boiler,81,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Cascade CM10",boiler,81,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Cascade CM10",boiler,81,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Cascade CM10",boiler,81,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Cascade CM10",boiler,81,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Cascade CM10",boiler,81,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Cascade CM10",boiler,81,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Cascade CM10",boiler,81,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Cascade CM10",boiler,81,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Cascade CM10",boiler,81,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Cascade CM10",boiler,81,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Cascade CM10",boiler,81,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Cascade CM10",boiler,81,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Cascade CM10",boiler,81,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Cascade CM10",boiler,81,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Cascade CM10",boiler,81,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Cascade CM10",boiler,81,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Cascade CM10",boiler,81,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Cascade CM10",boiler,81,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Cascade CM10",boiler,81,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Cascade CM10",boiler,81,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Cascade CM10",boiler,81,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Cascade CM10",boiler,81,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Cascade CM10",boiler,81,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Cascade CM10",boiler,81,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Cascade CM10",boiler,81,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Cascade CM10",boiler,81,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Cascade CM10",boiler,81,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Cascade CM10",boiler,81,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Cascade CM10",boiler,81,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Cascade CM10",boiler,81,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Cascade CM10",boiler,81,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Cascade CM10",boiler,81,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Cascade CM10",boiler,81,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -1019,9 +1020,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB022",boiler,84,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Logamax Plus GB022",boiler,84,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 -"Logamax Plus GB022",boiler,84,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Logamax Plus GB022",boiler,84,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Logamax Plus GB022",boiler,84,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Logamax Plus GB022",boiler,84,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Logamax Plus GB022",boiler,84,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,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,6,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,6,9,1,29,1 "Logamax Plus GB022",boiler,84,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -1042,27 +1043,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB022",boiler,84,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Logamax Plus GB022",boiler,84,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Logamax Plus GB022",boiler,84,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Logamax Plus GB022",boiler,84,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Logamax Plus GB022",boiler,84,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Logamax Plus GB022",boiler,84,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Logamax Plus GB022",boiler,84,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Logamax Plus GB022",boiler,84,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Logamax Plus GB022",boiler,84,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Logamax Plus GB022",boiler,84,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Logamax Plus GB022",boiler,84,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Logamax Plus GB022",boiler,84,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Logamax Plus GB022",boiler,84,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Logamax Plus GB022",boiler,84,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Logamax Plus GB022",boiler,84,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Logamax Plus GB022",boiler,84,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Logamax Plus GB022",boiler,84,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Logamax Plus GB022",boiler,84,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Logamax Plus GB022",boiler,84,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Logamax Plus GB022",boiler,84,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Logamax Plus GB022",boiler,84,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Logamax Plus GB022",boiler,84,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Logamax Plus GB022",boiler,84,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"Logamax Plus GB022",boiler,84,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Logamax Plus GB022",boiler,84,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Logamax Plus GB022",boiler,84,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Logamax Plus GB022",boiler,84,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Logamax Plus GB022",boiler,84,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Logamax Plus GB022",boiler,84,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Logamax Plus GB022",boiler,84,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Logamax Plus GB022",boiler,84,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Logamax Plus GB022",boiler,84,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Logamax Plus GB022",boiler,84,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Logamax Plus GB022",boiler,84,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Logamax Plus GB022",boiler,84,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Logamax Plus GB022",boiler,84,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Logamax Plus GB022",boiler,84,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Logamax Plus GB022",boiler,84,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Logamax Plus GB022",boiler,84,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Logamax Plus GB022",boiler,84,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Logamax Plus GB022",boiler,84,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Logamax Plus GB022",boiler,84,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Logamax Plus GB022",boiler,84,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Logamax Plus GB022",boiler,84,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Logamax Plus GB022",boiler,84,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Logamax Plus GB022",boiler,84,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Logamax Plus GB022",boiler,84,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -1140,9 +1141,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,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,6,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,6,0,1/10,278,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,6,9,1/10,71,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,6,9,1/10,72,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,6,0,1/10,280,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,6,9,1/10,73,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,6,9,1/10,74,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,6,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,6,9,1,29,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -1163,27 +1164,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"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,6,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,6,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,6,9,1,69,2 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"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,6,9,1,67,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,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,6,9,1,70,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,6,0,1,282,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,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,6,0,1/100,91,2 @@ -1261,9 +1262,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Topline, GB162",boiler,115,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Topline, GB162",boiler,115,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Topline, GB162",boiler,115,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Topline, GB162",boiler,115,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Topline, GB162",boiler,115,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Topline, GB162",boiler,115,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Topline, GB162",boiler,115,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Topline, GB162",boiler,115,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Topline, GB162",boiler,115,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Topline, GB162",boiler,115,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Topline, GB162",boiler,115,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -1284,27 +1285,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Topline, GB162",boiler,115,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Topline, GB162",boiler,115,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Topline, GB162",boiler,115,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Topline, GB162",boiler,115,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Topline, GB162",boiler,115,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Topline, GB162",boiler,115,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Topline, GB162",boiler,115,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Topline, GB162",boiler,115,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Topline, GB162",boiler,115,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Topline, GB162",boiler,115,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Topline, GB162",boiler,115,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Topline, GB162",boiler,115,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Topline, GB162",boiler,115,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Topline, GB162",boiler,115,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Topline, GB162",boiler,115,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Topline, GB162",boiler,115,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Topline, GB162",boiler,115,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Topline, GB162",boiler,115,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Topline, GB162",boiler,115,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Topline, GB162",boiler,115,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Topline, GB162",boiler,115,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Topline, GB162",boiler,115,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Topline, GB162",boiler,115,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Topline, GB162",boiler,115,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Topline, GB162",boiler,115,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Topline, GB162",boiler,115,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Topline, GB162",boiler,115,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Topline, GB162",boiler,115,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Topline, GB162",boiler,115,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Topline, GB162",boiler,115,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Topline, GB162",boiler,115,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Topline, GB162",boiler,115,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Topline, GB162",boiler,115,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Topline, GB162",boiler,115,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Topline, GB162",boiler,115,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Topline, GB162",boiler,115,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Topline, GB162",boiler,115,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Topline, GB162",boiler,115,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Topline, GB162",boiler,115,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Topline, GB162",boiler,115,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Topline, GB162",boiler,115,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Topline, GB162",boiler,115,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Topline, GB162",boiler,115,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Topline, GB162",boiler,115,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Topline, GB162",boiler,115,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Topline, GB162",boiler,115,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Topline, GB162",boiler,115,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Topline, GB162",boiler,115,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -1382,9 +1383,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MCM10",boiler,121,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Cascade MCM10",boiler,121,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Cascade MCM10",boiler,121,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Cascade MCM10",boiler,121,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Cascade MCM10",boiler,121,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Cascade MCM10",boiler,121,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Cascade MCM10",boiler,121,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Cascade MCM10",boiler,121,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Cascade MCM10",boiler,121,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Cascade MCM10",boiler,121,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Cascade MCM10",boiler,121,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -1405,27 +1406,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MCM10",boiler,121,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Cascade MCM10",boiler,121,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Cascade MCM10",boiler,121,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Cascade MCM10",boiler,121,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Cascade MCM10",boiler,121,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Cascade MCM10",boiler,121,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Cascade MCM10",boiler,121,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Cascade MCM10",boiler,121,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Cascade MCM10",boiler,121,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Cascade MCM10",boiler,121,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Cascade MCM10",boiler,121,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Cascade MCM10",boiler,121,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Cascade MCM10",boiler,121,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Cascade MCM10",boiler,121,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Cascade MCM10",boiler,121,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Cascade MCM10",boiler,121,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Cascade MCM10",boiler,121,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Cascade MCM10",boiler,121,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Cascade MCM10",boiler,121,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Cascade MCM10",boiler,121,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Cascade MCM10",boiler,121,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Cascade MCM10",boiler,121,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Cascade MCM10",boiler,121,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Cascade MCM10",boiler,121,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Cascade MCM10",boiler,121,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Cascade MCM10",boiler,121,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Cascade MCM10",boiler,121,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Cascade MCM10",boiler,121,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Cascade MCM10",boiler,121,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Cascade MCM10",boiler,121,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Cascade MCM10",boiler,121,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Cascade MCM10",boiler,121,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Cascade MCM10",boiler,121,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Cascade MCM10",boiler,121,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Cascade MCM10",boiler,121,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Cascade MCM10",boiler,121,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Cascade MCM10",boiler,121,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Cascade MCM10",boiler,121,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Cascade MCM10",boiler,121,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Cascade MCM10",boiler,121,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Cascade MCM10",boiler,121,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Cascade MCM10",boiler,121,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Cascade MCM10",boiler,121,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Cascade MCM10",boiler,121,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Cascade MCM10",boiler,121,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Cascade MCM10",boiler,121,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Cascade MCM10",boiler,121,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Cascade MCM10",boiler,121,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -1503,9 +1504,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Proline",boiler,122,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Proline",boiler,122,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Proline",boiler,122,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Proline",boiler,122,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Proline",boiler,122,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Proline",boiler,122,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Proline",boiler,122,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Proline",boiler,122,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Proline",boiler,122,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Proline",boiler,122,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Proline",boiler,122,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -1526,27 +1527,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Proline",boiler,122,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Proline",boiler,122,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Proline",boiler,122,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Proline",boiler,122,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Proline",boiler,122,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Proline",boiler,122,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Proline",boiler,122,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Proline",boiler,122,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Proline",boiler,122,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Proline",boiler,122,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Proline",boiler,122,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Proline",boiler,122,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Proline",boiler,122,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Proline",boiler,122,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Proline",boiler,122,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Proline",boiler,122,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Proline",boiler,122,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Proline",boiler,122,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Proline",boiler,122,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Proline",boiler,122,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Proline",boiler,122,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Proline",boiler,122,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Proline",boiler,122,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Proline",boiler,122,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Proline",boiler,122,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Proline",boiler,122,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Proline",boiler,122,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Proline",boiler,122,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Proline",boiler,122,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Proline",boiler,122,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Proline",boiler,122,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Proline",boiler,122,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Proline",boiler,122,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Proline",boiler,122,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Proline",boiler,122,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Proline",boiler,122,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Proline",boiler,122,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Proline",boiler,122,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Proline",boiler,122,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Proline",boiler,122,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Proline",boiler,122,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Proline",boiler,122,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Proline",boiler,122,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Proline",boiler,122,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Proline",boiler,122,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Proline",boiler,122,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Proline",boiler,122,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Proline",boiler,122,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -1624,9 +1625,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,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,6,9,1/10,71,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,6,9,1/10,72,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,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,6,9,1/10,73,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,6,9,1/10,74,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,6,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,6,9,1,29,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -1647,27 +1648,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"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,6,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,6,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,6,9,1,69,2 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"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,6,9,1,67,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,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,6,9,1,70,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -1745,9 +1746,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB212",boiler,131,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "GB212",boiler,131,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "GB212",boiler,131,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"GB212",boiler,131,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"GB212",boiler,131,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "GB212",boiler,131,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"GB212",boiler,131,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"GB212",boiler,131,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "GB212",boiler,131,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "GB212",boiler,131,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "GB212",boiler,131,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -1768,27 +1769,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB212",boiler,131,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "GB212",boiler,131,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "GB212",boiler,131,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"GB212",boiler,131,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"GB212",boiler,131,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"GB212",boiler,131,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"GB212",boiler,131,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"GB212",boiler,131,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"GB212",boiler,131,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"GB212",boiler,131,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"GB212",boiler,131,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"GB212",boiler,131,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"GB212",boiler,131,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"GB212",boiler,131,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"GB212",boiler,131,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"GB212",boiler,131,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"GB212",boiler,131,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"GB212",boiler,131,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"GB212",boiler,131,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"GB212",boiler,131,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"GB212",boiler,131,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"GB212",boiler,131,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"GB212",boiler,131,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"GB212",boiler,131,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"GB212",boiler,131,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"GB212",boiler,131,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"GB212",boiler,131,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"GB212",boiler,131,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"GB212",boiler,131,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"GB212",boiler,131,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"GB212",boiler,131,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"GB212",boiler,131,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"GB212",boiler,131,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"GB212",boiler,131,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"GB212",boiler,131,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"GB212",boiler,131,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"GB212",boiler,131,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"GB212",boiler,131,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"GB212",boiler,131,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"GB212",boiler,131,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"GB212",boiler,131,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"GB212",boiler,131,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"GB212",boiler,131,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"GB212",boiler,131,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"GB212",boiler,131,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "GB212",boiler,131,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "GB212",boiler,131,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "GB212",boiler,131,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -1866,9 +1867,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GC7000F",boiler,132,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "GC7000F",boiler,132,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "GC7000F",boiler,132,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"GC7000F",boiler,132,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"GC7000F",boiler,132,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "GC7000F",boiler,132,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"GC7000F",boiler,132,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"GC7000F",boiler,132,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "GC7000F",boiler,132,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "GC7000F",boiler,132,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "GC7000F",boiler,132,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -1889,27 +1890,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GC7000F",boiler,132,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "GC7000F",boiler,132,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "GC7000F",boiler,132,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"GC7000F",boiler,132,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"GC7000F",boiler,132,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"GC7000F",boiler,132,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"GC7000F",boiler,132,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"GC7000F",boiler,132,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"GC7000F",boiler,132,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"GC7000F",boiler,132,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"GC7000F",boiler,132,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"GC7000F",boiler,132,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"GC7000F",boiler,132,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"GC7000F",boiler,132,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"GC7000F",boiler,132,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"GC7000F",boiler,132,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"GC7000F",boiler,132,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"GC7000F",boiler,132,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"GC7000F",boiler,132,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"GC7000F",boiler,132,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"GC7000F",boiler,132,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"GC7000F",boiler,132,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"GC7000F",boiler,132,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"GC7000F",boiler,132,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"GC7000F",boiler,132,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"GC7000F",boiler,132,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"GC7000F",boiler,132,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"GC7000F",boiler,132,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"GC7000F",boiler,132,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"GC7000F",boiler,132,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"GC7000F",boiler,132,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"GC7000F",boiler,132,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"GC7000F",boiler,132,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"GC7000F",boiler,132,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"GC7000F",boiler,132,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"GC7000F",boiler,132,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"GC7000F",boiler,132,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"GC7000F",boiler,132,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"GC7000F",boiler,132,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"GC7000F",boiler,132,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"GC7000F",boiler,132,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"GC7000F",boiler,132,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"GC7000F",boiler,132,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"GC7000F",boiler,132,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"GC7000F",boiler,132,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "GC7000F",boiler,132,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "GC7000F",boiler,132,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "GC7000F",boiler,132,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -1987,9 +1988,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB125/KB195i, Logamatic MC110",boiler,133,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,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,6,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,6,9,1,29,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -2010,27 +2011,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -2108,9 +2109,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 30Ri Compact",boiler,154,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Greenstar 30Ri Compact",boiler,154,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 -"Greenstar 30Ri Compact",boiler,154,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Greenstar 30Ri Compact",boiler,154,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Greenstar 30Ri Compact",boiler,154,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Greenstar 30Ri Compact",boiler,154,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Greenstar 30Ri Compact",boiler,154,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,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,6,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,6,9,1,29,1 "Greenstar 30Ri Compact",boiler,154,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -2131,27 +2132,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 30Ri Compact",boiler,154,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Greenstar 30Ri Compact",boiler,154,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Greenstar 30Ri Compact",boiler,154,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Greenstar 30Ri Compact",boiler,154,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Greenstar 30Ri Compact",boiler,154,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Greenstar 30Ri Compact",boiler,154,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Greenstar 30Ri Compact",boiler,154,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Greenstar 30Ri Compact",boiler,154,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Greenstar 30Ri Compact",boiler,154,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Greenstar 30Ri Compact",boiler,154,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Greenstar 30Ri Compact",boiler,154,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Greenstar 30Ri Compact",boiler,154,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Greenstar 30Ri Compact",boiler,154,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Greenstar 30Ri Compact",boiler,154,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Greenstar 30Ri Compact",boiler,154,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Greenstar 30Ri Compact",boiler,154,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Greenstar 30Ri Compact",boiler,154,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Greenstar 30Ri Compact",boiler,154,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Greenstar 30Ri Compact",boiler,154,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Greenstar 30Ri Compact",boiler,154,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Greenstar 30Ri Compact",boiler,154,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Greenstar 30Ri Compact",boiler,154,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Greenstar 30Ri Compact",boiler,154,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"Greenstar 30Ri Compact",boiler,154,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Greenstar 30Ri Compact",boiler,154,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Greenstar 30Ri Compact",boiler,154,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Greenstar 30Ri Compact",boiler,154,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Greenstar 30Ri Compact",boiler,154,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Greenstar 30Ri Compact",boiler,154,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Greenstar 30Ri Compact",boiler,154,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Greenstar 30Ri Compact",boiler,154,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Greenstar 30Ri Compact",boiler,154,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Greenstar 30Ri Compact",boiler,154,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Greenstar 30Ri Compact",boiler,154,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Greenstar 30Ri Compact",boiler,154,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Greenstar 30Ri Compact",boiler,154,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Greenstar 30Ri Compact",boiler,154,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Greenstar 30Ri Compact",boiler,154,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Greenstar 30Ri Compact",boiler,154,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Greenstar 30Ri Compact",boiler,154,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Greenstar 30Ri Compact",boiler,154,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Greenstar 30Ri Compact",boiler,154,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Greenstar 30Ri Compact",boiler,154,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Greenstar 30Ri Compact",boiler,154,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Greenstar 30Ri Compact",boiler,154,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Greenstar 30Ri Compact",boiler,154,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Greenstar 30Ri Compact",boiler,154,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -2229,9 +2230,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Suprapur-o",boiler,155,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Suprapur-o",boiler,155,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Suprapur-o",boiler,155,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Suprapur-o",boiler,155,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Suprapur-o",boiler,155,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Suprapur-o",boiler,155,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Suprapur-o",boiler,155,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Suprapur-o",boiler,155,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Suprapur-o",boiler,155,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Suprapur-o",boiler,155,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Suprapur-o",boiler,155,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -2252,27 +2253,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Suprapur-o",boiler,155,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Suprapur-o",boiler,155,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Suprapur-o",boiler,155,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Suprapur-o",boiler,155,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Suprapur-o",boiler,155,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Suprapur-o",boiler,155,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Suprapur-o",boiler,155,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Suprapur-o",boiler,155,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Suprapur-o",boiler,155,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Suprapur-o",boiler,155,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Suprapur-o",boiler,155,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Suprapur-o",boiler,155,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Suprapur-o",boiler,155,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Suprapur-o",boiler,155,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Suprapur-o",boiler,155,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Suprapur-o",boiler,155,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Suprapur-o",boiler,155,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Suprapur-o",boiler,155,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Suprapur-o",boiler,155,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Suprapur-o",boiler,155,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Suprapur-o",boiler,155,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Suprapur-o",boiler,155,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Suprapur-o",boiler,155,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Suprapur-o",boiler,155,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Suprapur-o",boiler,155,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Suprapur-o",boiler,155,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Suprapur-o",boiler,155,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Suprapur-o",boiler,155,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Suprapur-o",boiler,155,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Suprapur-o",boiler,155,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Suprapur-o",boiler,155,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Suprapur-o",boiler,155,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Suprapur-o",boiler,155,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Suprapur-o",boiler,155,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Suprapur-o",boiler,155,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Suprapur-o",boiler,155,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Suprapur-o",boiler,155,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Suprapur-o",boiler,155,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Suprapur-o",boiler,155,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Suprapur-o",boiler,155,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Suprapur-o",boiler,155,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Suprapur-o",boiler,155,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Suprapur-o",boiler,155,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Suprapur-o",boiler,155,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Suprapur-o",boiler,155,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Suprapur-o",boiler,155,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Suprapur-o",boiler,155,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Suprapur-o",boiler,155,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -2350,9 +2351,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cerapur Aero",boiler,167,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Cerapur Aero",boiler,167,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Cerapur Aero",boiler,167,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Cerapur Aero",boiler,167,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Cerapur Aero",boiler,167,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Cerapur Aero",boiler,167,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Cerapur Aero",boiler,167,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Cerapur Aero",boiler,167,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Cerapur Aero",boiler,167,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Cerapur Aero",boiler,167,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Cerapur Aero",boiler,167,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -2373,27 +2374,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cerapur Aero",boiler,167,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Cerapur Aero",boiler,167,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Cerapur Aero",boiler,167,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Cerapur Aero",boiler,167,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Cerapur Aero",boiler,167,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Cerapur Aero",boiler,167,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Cerapur Aero",boiler,167,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Cerapur Aero",boiler,167,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Cerapur Aero",boiler,167,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Cerapur Aero",boiler,167,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Cerapur Aero",boiler,167,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Cerapur Aero",boiler,167,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Cerapur Aero",boiler,167,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Cerapur Aero",boiler,167,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Cerapur Aero",boiler,167,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Cerapur Aero",boiler,167,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Cerapur Aero",boiler,167,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Cerapur Aero",boiler,167,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Cerapur Aero",boiler,167,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Cerapur Aero",boiler,167,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Cerapur Aero",boiler,167,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Cerapur Aero",boiler,167,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Cerapur Aero",boiler,167,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Cerapur Aero",boiler,167,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Cerapur Aero",boiler,167,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Cerapur Aero",boiler,167,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Cerapur Aero",boiler,167,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Cerapur Aero",boiler,167,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Cerapur Aero",boiler,167,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Cerapur Aero",boiler,167,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Cerapur Aero",boiler,167,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Cerapur Aero",boiler,167,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Cerapur Aero",boiler,167,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Cerapur Aero",boiler,167,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Cerapur Aero",boiler,167,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Cerapur Aero",boiler,167,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Cerapur Aero",boiler,167,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Cerapur Aero",boiler,167,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Cerapur Aero",boiler,167,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Cerapur Aero",boiler,167,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Cerapur Aero",boiler,167,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Cerapur Aero",boiler,167,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Cerapur Aero",boiler,167,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Cerapur Aero",boiler,167,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Cerapur Aero",boiler,167,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Cerapur Aero",boiler,167,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Cerapur Aero",boiler,167,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Cerapur Aero",boiler,167,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -2471,9 +2472,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Hybrid Heatpump",boiler,168,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Hybrid Heatpump",boiler,168,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Hybrid Heatpump",boiler,168,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Hybrid Heatpump",boiler,168,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Hybrid Heatpump",boiler,168,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Hybrid Heatpump",boiler,168,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Hybrid Heatpump",boiler,168,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Hybrid Heatpump",boiler,168,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Hybrid Heatpump",boiler,168,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Hybrid Heatpump",boiler,168,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Hybrid Heatpump",boiler,168,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -2494,27 +2495,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Hybrid Heatpump",boiler,168,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Hybrid Heatpump",boiler,168,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Hybrid Heatpump",boiler,168,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Hybrid Heatpump",boiler,168,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Hybrid Heatpump",boiler,168,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Hybrid Heatpump",boiler,168,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Hybrid Heatpump",boiler,168,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Hybrid Heatpump",boiler,168,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Hybrid Heatpump",boiler,168,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Hybrid Heatpump",boiler,168,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Hybrid Heatpump",boiler,168,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Hybrid Heatpump",boiler,168,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Hybrid Heatpump",boiler,168,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Hybrid Heatpump",boiler,168,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Hybrid Heatpump",boiler,168,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Hybrid Heatpump",boiler,168,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Hybrid Heatpump",boiler,168,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Hybrid Heatpump",boiler,168,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Hybrid Heatpump",boiler,168,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Hybrid Heatpump",boiler,168,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Hybrid Heatpump",boiler,168,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Hybrid Heatpump",boiler,168,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Hybrid Heatpump",boiler,168,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Hybrid Heatpump",boiler,168,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Hybrid Heatpump",boiler,168,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Hybrid Heatpump",boiler,168,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Hybrid Heatpump",boiler,168,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Hybrid Heatpump",boiler,168,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Hybrid Heatpump",boiler,168,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Hybrid Heatpump",boiler,168,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Hybrid Heatpump",boiler,168,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Hybrid Heatpump",boiler,168,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Hybrid Heatpump",boiler,168,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Hybrid Heatpump",boiler,168,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Hybrid Heatpump",boiler,168,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Hybrid Heatpump",boiler,168,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Hybrid Heatpump",boiler,168,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Hybrid Heatpump",boiler,168,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Hybrid Heatpump",boiler,168,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Hybrid Heatpump",boiler,168,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Hybrid Heatpump",boiler,168,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Hybrid Heatpump",boiler,168,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Hybrid Heatpump",boiler,168,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Hybrid Heatpump",boiler,168,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Hybrid Heatpump",boiler,168,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Hybrid Heatpump",boiler,168,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Hybrid Heatpump",boiler,168,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Hybrid Heatpump",boiler,168,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -2592,9 +2593,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB212",boiler,170,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Logano GB212",boiler,170,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Logano GB212",boiler,170,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Logano GB212",boiler,170,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Logano GB212",boiler,170,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Logano GB212",boiler,170,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Logano GB212",boiler,170,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Logano GB212",boiler,170,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Logano GB212",boiler,170,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Logano GB212",boiler,170,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Logano GB212",boiler,170,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -2615,27 +2616,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB212",boiler,170,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Logano GB212",boiler,170,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Logano GB212",boiler,170,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Logano GB212",boiler,170,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Logano GB212",boiler,170,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Logano GB212",boiler,170,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Logano GB212",boiler,170,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Logano GB212",boiler,170,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Logano GB212",boiler,170,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Logano GB212",boiler,170,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Logano GB212",boiler,170,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Logano GB212",boiler,170,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Logano GB212",boiler,170,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Logano GB212",boiler,170,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Logano GB212",boiler,170,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Logano GB212",boiler,170,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Logano GB212",boiler,170,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Logano GB212",boiler,170,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Logano GB212",boiler,170,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Logano GB212",boiler,170,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Logano GB212",boiler,170,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Logano GB212",boiler,170,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Logano GB212",boiler,170,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Logano GB212",boiler,170,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Logano GB212",boiler,170,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Logano GB212",boiler,170,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Logano GB212",boiler,170,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Logano GB212",boiler,170,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Logano GB212",boiler,170,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Logano GB212",boiler,170,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Logano GB212",boiler,170,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Logano GB212",boiler,170,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Logano GB212",boiler,170,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Logano GB212",boiler,170,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Logano GB212",boiler,170,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Logano GB212",boiler,170,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Logano GB212",boiler,170,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Logano GB212",boiler,170,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Logano GB212",boiler,170,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Logano GB212",boiler,170,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Logano GB212",boiler,170,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Logano GB212",boiler,170,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Logano GB212",boiler,170,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Logano GB212",boiler,170,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Logano GB212",boiler,170,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Logano GB212",boiler,170,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Logano GB212",boiler,170,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Logano GB212",boiler,170,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -2840,27 +2841,28 @@ 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.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"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,6,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,6,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,6,9,1,69,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.disinfectduration,disinfection duration,uint8 (>=120<=240),minutes,true,number.boiler_dhw_disinfection_duration,number.boiler_dhw_disinfectduration,6,9,10,48,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"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,6,9,1,67,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,6,9,1,68,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,6,9,1,70,2 "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,6,0,1,0,1 "Geo 5xx",boiler,173,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,6,0,1,1,1 "Geo 5xx",boiler,173,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,6,0,1,2,1 @@ -3061,27 +3063,28 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Geo 5xx",boiler,173,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Geo 5xx",boiler,173,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Geo 5xx",boiler,173,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Geo 5xx",boiler,173,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Geo 5xx",boiler,173,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Geo 5xx",boiler,173,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Geo 5xx",boiler,173,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Geo 5xx",boiler,173,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Geo 5xx",boiler,173,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Geo 5xx",boiler,173,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Geo 5xx",boiler,173,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Geo 5xx",boiler,173,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Geo 5xx",boiler,173,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Geo 5xx",boiler,173,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Geo 5xx",boiler,173,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Geo 5xx",boiler,173,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Geo 5xx",boiler,173,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Geo 5xx",boiler,173,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Geo 5xx",boiler,173,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Geo 5xx",boiler,173,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Geo 5xx",boiler,173,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Geo 5xx",boiler,173,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Geo 5xx",boiler,173,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Geo 5xx",boiler,173,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Geo 5xx",boiler,173,dhw.disinfectduration,disinfection duration,uint8 (>=120<=240),minutes,true,number.boiler_dhw_disinfection_duration,number.boiler_dhw_disinfectduration,6,9,10,48,1 +"Geo 5xx",boiler,173,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Geo 5xx",boiler,173,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Geo 5xx",boiler,173,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Geo 5xx",boiler,173,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Geo 5xx",boiler,173,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Geo 5xx",boiler,173,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Geo 5xx",boiler,173,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Geo 5xx",boiler,173,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Geo 5xx",boiler,173,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Geo 5xx",boiler,173,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Geo 5xx",boiler,173,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Geo 5xx",boiler,173,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Geo 5xx",boiler,173,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Geo 5xx",boiler,173,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Geo 5xx",boiler,173,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Geo 5xx",boiler,173,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Geo 5xx",boiler,173,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Geo 5xx",boiler,173,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Geo 5xx",boiler,173,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Geo 5xx",boiler,173,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Geo 5xx",boiler,173,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "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,6,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,6,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,6,0,1,2,1 @@ -3155,9 +3158,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,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,6,9,1/10,71,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,6,9,1/10,72,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,6,0,1/10,280,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,6,9,1/10,73,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,6,9,1/10,74,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,6,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,6,9,1,29,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -3178,27 +3181,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"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,6,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,6,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,6,9,1,69,2 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"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,6,9,1,67,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,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,6,9,1,70,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,6,0,1,282,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,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,6,0,1/100,91,2 @@ -3276,9 +3279,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax U122, Cerapur",boiler,203,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Logamax U122, Cerapur",boiler,203,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 -"Logamax U122, Cerapur",boiler,203,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Logamax U122, Cerapur",boiler,203,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Logamax U122, Cerapur",boiler,203,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Logamax U122, Cerapur",boiler,203,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Logamax U122, Cerapur",boiler,203,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,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,6,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,6,9,1,29,1 "Logamax U122, Cerapur",boiler,203,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -3299,27 +3302,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax U122, Cerapur",boiler,203,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Logamax U122, Cerapur",boiler,203,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Logamax U122, Cerapur",boiler,203,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Logamax U122, Cerapur",boiler,203,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Logamax U122, Cerapur",boiler,203,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Logamax U122, Cerapur",boiler,203,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Logamax U122, Cerapur",boiler,203,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Logamax U122, Cerapur",boiler,203,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Logamax U122, Cerapur",boiler,203,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Logamax U122, Cerapur",boiler,203,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Logamax U122, Cerapur",boiler,203,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Logamax U122, Cerapur",boiler,203,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Logamax U122, Cerapur",boiler,203,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Logamax U122, Cerapur",boiler,203,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Logamax U122, Cerapur",boiler,203,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Logamax U122, Cerapur",boiler,203,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Logamax U122, Cerapur",boiler,203,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Logamax U122, Cerapur",boiler,203,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Logamax U122, Cerapur",boiler,203,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Logamax U122, Cerapur",boiler,203,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Logamax U122, Cerapur",boiler,203,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Logamax U122, Cerapur",boiler,203,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Logamax U122, Cerapur",boiler,203,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"Logamax U122, Cerapur",boiler,203,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Logamax U122, Cerapur",boiler,203,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Logamax U122, Cerapur",boiler,203,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Logamax U122, Cerapur",boiler,203,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Logamax U122, Cerapur",boiler,203,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Logamax U122, Cerapur",boiler,203,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Logamax U122, Cerapur",boiler,203,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Logamax U122, Cerapur",boiler,203,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Logamax U122, Cerapur",boiler,203,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Logamax U122, Cerapur",boiler,203,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Logamax U122, Cerapur",boiler,203,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Logamax U122, Cerapur",boiler,203,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Logamax U122, Cerapur",boiler,203,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Logamax U122, Cerapur",boiler,203,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Logamax U122, Cerapur",boiler,203,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Logamax U122, Cerapur",boiler,203,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Logamax U122, Cerapur",boiler,203,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Logamax U122, Cerapur",boiler,203,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Logamax U122, Cerapur",boiler,203,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Logamax U122, Cerapur",boiler,203,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Logamax U122, Cerapur",boiler,203,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Logamax U122, Cerapur",boiler,203,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Logamax U122, Cerapur",boiler,203,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Logamax U122, Cerapur",boiler,203,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -3397,9 +3400,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Ecomline Excellent",boiler,206,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Ecomline Excellent",boiler,206,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Ecomline Excellent",boiler,206,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Ecomline Excellent",boiler,206,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Ecomline Excellent",boiler,206,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Ecomline Excellent",boiler,206,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Ecomline Excellent",boiler,206,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Ecomline Excellent",boiler,206,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Ecomline Excellent",boiler,206,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Ecomline Excellent",boiler,206,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Ecomline Excellent",boiler,206,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -3420,27 +3423,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Ecomline Excellent",boiler,206,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Ecomline Excellent",boiler,206,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Ecomline Excellent",boiler,206,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Ecomline Excellent",boiler,206,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Ecomline Excellent",boiler,206,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Ecomline Excellent",boiler,206,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Ecomline Excellent",boiler,206,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Ecomline Excellent",boiler,206,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Ecomline Excellent",boiler,206,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Ecomline Excellent",boiler,206,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Ecomline Excellent",boiler,206,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Ecomline Excellent",boiler,206,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Ecomline Excellent",boiler,206,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Ecomline Excellent",boiler,206,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Ecomline Excellent",boiler,206,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Ecomline Excellent",boiler,206,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Ecomline Excellent",boiler,206,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Ecomline Excellent",boiler,206,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Ecomline Excellent",boiler,206,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Ecomline Excellent",boiler,206,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Ecomline Excellent",boiler,206,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Ecomline Excellent",boiler,206,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Ecomline Excellent",boiler,206,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Ecomline Excellent",boiler,206,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Ecomline Excellent",boiler,206,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Ecomline Excellent",boiler,206,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Ecomline Excellent",boiler,206,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Ecomline Excellent",boiler,206,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Ecomline Excellent",boiler,206,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Ecomline Excellent",boiler,206,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Ecomline Excellent",boiler,206,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Ecomline Excellent",boiler,206,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Ecomline Excellent",boiler,206,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Ecomline Excellent",boiler,206,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Ecomline Excellent",boiler,206,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Ecomline Excellent",boiler,206,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Ecomline Excellent",boiler,206,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Ecomline Excellent",boiler,206,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Ecomline Excellent",boiler,206,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Ecomline Excellent",boiler,206,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Ecomline Excellent",boiler,206,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Ecomline Excellent",boiler,206,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Ecomline Excellent",boiler,206,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Ecomline Excellent",boiler,206,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Ecomline Excellent",boiler,206,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Ecomline Excellent",boiler,206,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Ecomline Excellent",boiler,206,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Ecomline Excellent",boiler,206,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -3518,9 +3521,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,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,6,9,1/10,71,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,6,9,1/10,72,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,6,0,1/10,280,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,6,9,1/10,73,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,6,9,1/10,74,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,6,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,6,9,1,29,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -3541,27 +3544,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"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,6,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,6,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,6,9,1,69,2 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"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,6,9,1,67,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,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,6,9,1,70,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,6,0,1,282,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,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,6,0,1/100,91,2 @@ -3639,9 +3642,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MC400",boiler,210,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Cascade MC400",boiler,210,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Cascade MC400",boiler,210,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Cascade MC400",boiler,210,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Cascade MC400",boiler,210,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Cascade MC400",boiler,210,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Cascade MC400",boiler,210,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Cascade MC400",boiler,210,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Cascade MC400",boiler,210,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Cascade MC400",boiler,210,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Cascade MC400",boiler,210,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -3662,27 +3665,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MC400",boiler,210,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Cascade MC400",boiler,210,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Cascade MC400",boiler,210,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Cascade MC400",boiler,210,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Cascade MC400",boiler,210,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Cascade MC400",boiler,210,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Cascade MC400",boiler,210,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Cascade MC400",boiler,210,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Cascade MC400",boiler,210,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Cascade MC400",boiler,210,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Cascade MC400",boiler,210,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Cascade MC400",boiler,210,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Cascade MC400",boiler,210,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Cascade MC400",boiler,210,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Cascade MC400",boiler,210,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Cascade MC400",boiler,210,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Cascade MC400",boiler,210,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Cascade MC400",boiler,210,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Cascade MC400",boiler,210,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Cascade MC400",boiler,210,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Cascade MC400",boiler,210,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Cascade MC400",boiler,210,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Cascade MC400",boiler,210,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Cascade MC400",boiler,210,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Cascade MC400",boiler,210,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Cascade MC400",boiler,210,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Cascade MC400",boiler,210,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Cascade MC400",boiler,210,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Cascade MC400",boiler,210,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Cascade MC400",boiler,210,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Cascade MC400",boiler,210,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Cascade MC400",boiler,210,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Cascade MC400",boiler,210,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Cascade MC400",boiler,210,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Cascade MC400",boiler,210,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Cascade MC400",boiler,210,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Cascade MC400",boiler,210,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Cascade MC400",boiler,210,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Cascade MC400",boiler,210,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Cascade MC400",boiler,210,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Cascade MC400",boiler,210,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Cascade MC400",boiler,210,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Cascade MC400",boiler,210,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Cascade MC400",boiler,210,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Cascade MC400",boiler,210,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Cascade MC400",boiler,210,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Cascade MC400",boiler,210,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Cascade MC400",boiler,210,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -3760,9 +3763,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "EasyControl Adapter",boiler,211,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "EasyControl Adapter",boiler,211,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "EasyControl Adapter",boiler,211,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"EasyControl Adapter",boiler,211,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"EasyControl Adapter",boiler,211,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "EasyControl Adapter",boiler,211,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"EasyControl Adapter",boiler,211,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"EasyControl Adapter",boiler,211,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "EasyControl Adapter",boiler,211,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "EasyControl Adapter",boiler,211,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "EasyControl Adapter",boiler,211,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -3783,34 +3786,34 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "EasyControl Adapter",boiler,211,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "EasyControl Adapter",boiler,211,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "EasyControl Adapter",boiler,211,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"EasyControl Adapter",boiler,211,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"EasyControl Adapter",boiler,211,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"EasyControl Adapter",boiler,211,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"EasyControl Adapter",boiler,211,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"EasyControl Adapter",boiler,211,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"EasyControl Adapter",boiler,211,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"EasyControl Adapter",boiler,211,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"EasyControl Adapter",boiler,211,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"EasyControl Adapter",boiler,211,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"EasyControl Adapter",boiler,211,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"EasyControl Adapter",boiler,211,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"EasyControl Adapter",boiler,211,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"EasyControl Adapter",boiler,211,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"EasyControl Adapter",boiler,211,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"EasyControl Adapter",boiler,211,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"EasyControl Adapter",boiler,211,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"EasyControl Adapter",boiler,211,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"EasyControl Adapter",boiler,211,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"EasyControl Adapter",boiler,211,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"EasyControl Adapter",boiler,211,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"EasyControl Adapter",boiler,211,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"EasyControl Adapter",boiler,211,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"EasyControl Adapter",boiler,211,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"EasyControl Adapter",boiler,211,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"EasyControl Adapter",boiler,211,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"EasyControl Adapter",boiler,211,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"EasyControl Adapter",boiler,211,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"EasyControl Adapter",boiler,211,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"EasyControl Adapter",boiler,211,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"EasyControl Adapter",boiler,211,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"EasyControl Adapter",boiler,211,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"EasyControl Adapter",boiler,211,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"EasyControl Adapter",boiler,211,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"EasyControl Adapter",boiler,211,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"EasyControl Adapter",boiler,211,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"EasyControl Adapter",boiler,211,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"EasyControl Adapter",boiler,211,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"EasyControl Adapter",boiler,211,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"EasyControl Adapter",boiler,211,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"EasyControl Adapter",boiler,211,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"EasyControl Adapter",boiler,211,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"EasyControl Adapter",boiler,211,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "EasyControl Adapter",boiler,211,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "EasyControl Adapter",boiler,211,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "EasyControl Adapter",boiler,211,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 "EasyControl Adapter",boiler,211,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,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,6,0,1/10,283,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,heatvalve,heating valve,uint8,%,false,sensor.boiler_heating_valve,sensor.boiler_heatvalve,6,0,1,284,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.dhwvalve,valve,uint8,%,false,sensor.boiler_dhw_valve,sensor.boiler_dhw_dhwvalve,6,9,1,75,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.dhwvalve,valve,uint8,%,false,sensor.boiler_dhw_valve,sensor.boiler_dhw_dhwvalve,6,9,1,76,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,6,0,1,285,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,6,0,1,286,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,heating,heating,boolean, ,false,binary_sensor.boiler_heating,binary_sensor.boiler_heating,6,0,1,287,1 @@ -3865,9 +3868,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar HIU, Logamax kompakt WS170",boiler,219,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Greenstar HIU, Logamax kompakt WS170",boiler,219,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,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,6,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,6,9,1,29,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -3888,27 +3891,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "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,6,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,6,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,6,0,1,2,1 @@ -3982,9 +3985,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,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,6,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,6,0,1/10,278,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,6,9,1/10,71,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,6,9,1/10,72,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,6,0,1/10,280,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,6,9,1/10,73,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,6,9,1/10,74,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,6,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,6,9,1,29,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -4005,27 +4008,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"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,6,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,6,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,6,9,1,69,2 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"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,6,9,1,67,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,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,6,9,1,70,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,6,0,1,282,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,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,6,0,1/100,91,2 diff --git a/src/core/modbus_entity_parameters.hpp b/src/core/modbus_entity_parameters.hpp index ab793e189..79ae35779 100644 --- a/src/core/modbus_entity_parameters.hpp +++ b/src/core/modbus_entity_parameters.hpp @@ -246,30 +246,31 @@ const std::initializer_list Modbus::modbus_register_ma REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwHystOn), 45, 1), // hyston REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwHystOff), 46, 1), // hystoff REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwDisinfectionTemp), 47, 1), // disinfectiontemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwCircMode), 48, 1), // circmode - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwCirc), 49, 1), // circ - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwCurTemp), 50, 1), // curtemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwCurTemp2), 51, 1), // curtemp2 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwCurFlow), 52, 1), // curflow - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwStorageTemp1), 53, 1), // storagetemp1 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwStorageTemp2), 54, 1), // storagetemp2 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(activated), 55, 1), // activated - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwOneTime), 56, 1), // onetime - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwDisinfecting), 57, 1), // disinfecting - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwCharging), 58, 1), // charging - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwRecharging), 59, 1), // recharging - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwTempOK), 60, 1), // tempok - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwActive), 61, 1), // active - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(ww3wayValve), 62, 1), // 3wayvalve - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwChargePump), 63, 1), // chargepump - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwMixerTemp), 64, 1), // mixertemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(cylMiddleTemp), 65, 1), // cylmiddletemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwprio), 66, 1), // dhwprio - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwStarts), 67, 2), // starts - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwWorkM), 69, 2), // workm - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(gasMeterWw), 71, 2), // gasmeter - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(nrgWw2), 73, 2), // nrg2 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwValve), 75, 1), // dhwvalve + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwDisinfectDuration), 48, 1), // disinfectduration + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwCircMode), 49, 1), // circmode + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwCirc), 50, 1), // circ + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwCurTemp), 51, 1), // curtemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwCurTemp2), 52, 1), // curtemp2 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwCurFlow), 53, 1), // curflow + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwStorageTemp1), 54, 1), // storagetemp1 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwStorageTemp2), 55, 1), // storagetemp2 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(activated), 56, 1), // activated + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwOneTime), 57, 1), // onetime + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwDisinfecting), 58, 1), // disinfecting + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwCharging), 59, 1), // charging + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwRecharging), 60, 1), // recharging + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwTempOK), 61, 1), // tempok + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwActive), 62, 1), // active + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(ww3wayValve), 63, 1), // 3wayvalve + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwChargePump), 64, 1), // chargepump + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwMixerTemp), 65, 1), // mixertemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(cylMiddleTemp), 66, 1), // cylmiddletemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwprio), 67, 1), // dhwprio + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwStarts), 68, 2), // starts + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwWorkM), 70, 2), // workm + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(gasMeterWw), 72, 2), // gasmeter + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(nrgWw2), 74, 2), // nrg2 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwValve), 76, 1), // dhwvalve REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_DEVICE_DATA, FL_(errorCode), 0, 8), // errorcode REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_DEVICE_DATA, FL_(lastCode), 8, 25), // lastcode REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_DEVICE_DATA, FL_(dateTime), 33, 13), // datetime -- 2.54.0 From ff2fc3d514239c5f78f3680a5807a8322ea4f76a Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 12 Oct 2026 19:37:01 +0200 Subject: [PATCH 087/148] update docs --- docs/Modbus-Entity-Registers.md | 1422 +++++++++++++------------ docs/dump_entities.csv | 1419 ++++++++++++------------ src/core/modbus_entity_parameters.hpp | 49 +- 3 files changed, 1450 insertions(+), 1440 deletions(-) diff --git a/docs/Modbus-Entity-Registers.md b/docs/Modbus-Entity-Registers.md index 61f4c2cad..dbae8073d 100644 --- a/docs/Modbus-Entity-Registers.md +++ b/docs/Modbus-Entity-Registers.md @@ -265,27 +265,29 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +uint8 +| dhw.disinfectduration | disinfection duration | uint8 (>=120<=240) | minutes | true | DHW | 48 | 1 | 10 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | ### Greenstar 2000 @@ -386,9 +388,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -419,27 +421,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -547,9 +549,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -580,27 +582,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -708,9 +710,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -741,27 +743,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -869,9 +871,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -902,27 +904,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -1030,9 +1032,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -1063,27 +1065,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -1191,9 +1193,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -1224,27 +1226,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -1352,9 +1354,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -1385,27 +1387,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -1513,9 +1515,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -1546,27 +1548,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -1674,9 +1676,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -1707,27 +1709,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -1835,9 +1837,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -1868,27 +1870,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -1996,9 +1998,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -2029,27 +2031,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -2157,9 +2159,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -2190,27 +2192,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -2318,9 +2320,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -2351,27 +2353,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -2479,9 +2481,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -2512,27 +2514,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -2640,9 +2642,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -2673,27 +2675,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -2801,9 +2803,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -2834,27 +2836,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -2962,9 +2964,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -2995,27 +2997,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -3123,9 +3125,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -3156,27 +3158,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -3284,9 +3286,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -3317,27 +3319,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -3445,9 +3447,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -3478,27 +3480,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -3763,27 +3765,29 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +uint8 +| dhw.disinfectduration | disinfection duration | uint8 (>=120<=240) | minutes | true | DHW | 48 | 1 | 10 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | ### Geo 5xx @@ -4041,27 +4045,29 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +uint8 +| dhw.disinfectduration | disinfection duration | uint8 (>=120<=240) | minutes | true | DHW | 48 | 1 | 10 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | ### Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2 @@ -4162,9 +4168,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -4195,27 +4201,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -4323,9 +4329,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -4356,27 +4362,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -4484,9 +4490,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -4517,27 +4523,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -4645,9 +4651,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -4678,27 +4684,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -4806,9 +4812,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -4839,27 +4845,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -4967,9 +4973,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -5000,27 +5006,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -5035,7 +5041,7 @@ uint24 |-|-|-|-|-|-|-|-|-| | netflowtemp | heat network flow temp | uint16 | C | false | DEVICE_DATA | 283 | 1 | 1/10 | | heatvalve | heating valve | uint8 | % | false | DEVICE_DATA | 284 | 1 | 1 | -| dhw.dhwvalve | valve | uint8 | % | false | DHW | 75 | 1 | 1 | +| dhw.dhwvalve | valve | uint8 | % | false | DHW | 76 | 1 | 1 | uint8 | keepwarmtemp | keep warm temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 285 | 1 | 1 | uint8 @@ -5103,9 +5109,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -5136,27 +5142,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | ### Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W @@ -5257,9 +5263,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -5290,27 +5296,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | diff --git a/docs/dump_entities.csv b/docs/dump_entities.csv index a6e59358d..b8b44ae25 100644 --- a/docs/dump_entities.csv +++ b/docs/dump_entities.csv @@ -199,27 +199,28 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.disinfectduration,disinfection duration,uint8 (>=120<=240),minutes,true,number.boiler_dhw_disinfection_duration,number.boiler_dhw_disinfectduration,6,9,10,48,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "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,6,0,1,0,1 "Greenstar 2000",boiler,11,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,6,0,1,1,1 "Greenstar 2000",boiler,11,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,6,0,1,2,1 @@ -293,9 +294,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 2000",boiler,11,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Greenstar 2000",boiler,11,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Greenstar 2000",boiler,11,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Greenstar 2000",boiler,11,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Greenstar 2000",boiler,11,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Greenstar 2000",boiler,11,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Greenstar 2000",boiler,11,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Greenstar 2000",boiler,11,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Greenstar 2000",boiler,11,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Greenstar 2000",boiler,11,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Greenstar 2000",boiler,11,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -316,27 +317,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 2000",boiler,11,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Greenstar 2000",boiler,11,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Greenstar 2000",boiler,11,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Greenstar 2000",boiler,11,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Greenstar 2000",boiler,11,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Greenstar 2000",boiler,11,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Greenstar 2000",boiler,11,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Greenstar 2000",boiler,11,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Greenstar 2000",boiler,11,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Greenstar 2000",boiler,11,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Greenstar 2000",boiler,11,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Greenstar 2000",boiler,11,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Greenstar 2000",boiler,11,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Greenstar 2000",boiler,11,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Greenstar 2000",boiler,11,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Greenstar 2000",boiler,11,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Greenstar 2000",boiler,11,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Greenstar 2000",boiler,11,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Greenstar 2000",boiler,11,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Greenstar 2000",boiler,11,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Greenstar 2000",boiler,11,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Greenstar 2000",boiler,11,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Greenstar 2000",boiler,11,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Greenstar 2000",boiler,11,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Greenstar 2000",boiler,11,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Greenstar 2000",boiler,11,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Greenstar 2000",boiler,11,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Greenstar 2000",boiler,11,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Greenstar 2000",boiler,11,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Greenstar 2000",boiler,11,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Greenstar 2000",boiler,11,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Greenstar 2000",boiler,11,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Greenstar 2000",boiler,11,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Greenstar 2000",boiler,11,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Greenstar 2000",boiler,11,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Greenstar 2000",boiler,11,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Greenstar 2000",boiler,11,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Greenstar 2000",boiler,11,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Greenstar 2000",boiler,11,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Greenstar 2000",boiler,11,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Greenstar 2000",boiler,11,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Greenstar 2000",boiler,11,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Greenstar 2000",boiler,11,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Greenstar 2000",boiler,11,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Greenstar 2000",boiler,11,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Greenstar 2000",boiler,11,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Greenstar 2000",boiler,11,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Greenstar 2000",boiler,11,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -414,9 +415,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "C1200W",boiler,12,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "C1200W",boiler,12,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "C1200W",boiler,12,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"C1200W",boiler,12,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"C1200W",boiler,12,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "C1200W",boiler,12,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"C1200W",boiler,12,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"C1200W",boiler,12,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "C1200W",boiler,12,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "C1200W",boiler,12,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "C1200W",boiler,12,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -437,27 +438,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "C1200W",boiler,12,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "C1200W",boiler,12,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "C1200W",boiler,12,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"C1200W",boiler,12,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"C1200W",boiler,12,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"C1200W",boiler,12,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"C1200W",boiler,12,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"C1200W",boiler,12,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"C1200W",boiler,12,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"C1200W",boiler,12,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"C1200W",boiler,12,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"C1200W",boiler,12,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"C1200W",boiler,12,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"C1200W",boiler,12,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"C1200W",boiler,12,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"C1200W",boiler,12,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"C1200W",boiler,12,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"C1200W",boiler,12,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"C1200W",boiler,12,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"C1200W",boiler,12,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"C1200W",boiler,12,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"C1200W",boiler,12,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"C1200W",boiler,12,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"C1200W",boiler,12,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"C1200W",boiler,12,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"C1200W",boiler,12,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"C1200W",boiler,12,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"C1200W",boiler,12,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"C1200W",boiler,12,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"C1200W",boiler,12,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"C1200W",boiler,12,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"C1200W",boiler,12,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"C1200W",boiler,12,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"C1200W",boiler,12,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"C1200W",boiler,12,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"C1200W",boiler,12,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"C1200W",boiler,12,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"C1200W",boiler,12,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"C1200W",boiler,12,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"C1200W",boiler,12,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"C1200W",boiler,12,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"C1200W",boiler,12,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"C1200W",boiler,12,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"C1200W",boiler,12,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"C1200W",boiler,12,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "C1200W",boiler,12,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "C1200W",boiler,12,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "C1200W",boiler,12,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -535,9 +536,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CS5800iG",boiler,16,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "CS5800iG",boiler,16,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "CS5800iG",boiler,16,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"CS5800iG",boiler,16,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"CS5800iG",boiler,16,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "CS5800iG",boiler,16,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"CS5800iG",boiler,16,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"CS5800iG",boiler,16,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "CS5800iG",boiler,16,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "CS5800iG",boiler,16,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "CS5800iG",boiler,16,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -558,27 +559,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CS5800iG",boiler,16,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "CS5800iG",boiler,16,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "CS5800iG",boiler,16,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"CS5800iG",boiler,16,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"CS5800iG",boiler,16,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"CS5800iG",boiler,16,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"CS5800iG",boiler,16,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"CS5800iG",boiler,16,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"CS5800iG",boiler,16,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"CS5800iG",boiler,16,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"CS5800iG",boiler,16,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"CS5800iG",boiler,16,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"CS5800iG",boiler,16,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"CS5800iG",boiler,16,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"CS5800iG",boiler,16,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"CS5800iG",boiler,16,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"CS5800iG",boiler,16,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"CS5800iG",boiler,16,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"CS5800iG",boiler,16,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"CS5800iG",boiler,16,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"CS5800iG",boiler,16,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"CS5800iG",boiler,16,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"CS5800iG",boiler,16,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"CS5800iG",boiler,16,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"CS5800iG",boiler,16,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"CS5800iG",boiler,16,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"CS5800iG",boiler,16,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"CS5800iG",boiler,16,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"CS5800iG",boiler,16,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"CS5800iG",boiler,16,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"CS5800iG",boiler,16,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"CS5800iG",boiler,16,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"CS5800iG",boiler,16,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"CS5800iG",boiler,16,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"CS5800iG",boiler,16,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"CS5800iG",boiler,16,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"CS5800iG",boiler,16,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"CS5800iG",boiler,16,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"CS5800iG",boiler,16,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"CS5800iG",boiler,16,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"CS5800iG",boiler,16,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"CS5800iG",boiler,16,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"CS5800iG",boiler,16,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"CS5800iG",boiler,16,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"CS5800iG",boiler,16,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "CS5800iG",boiler,16,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "CS5800iG",boiler,16,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "CS5800iG",boiler,16,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -656,9 +657,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "BK13/BK15, Smartline, GB1*2",boiler,64,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "BK13/BK15, Smartline, GB1*2",boiler,64,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,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,6,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,6,9,1,29,1 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -679,27 +680,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "BK13/BK15, Smartline, GB1*2",boiler,64,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "BK13/BK15, Smartline, GB1*2",boiler,64,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "BK13/BK15, Smartline, GB1*2",boiler,64,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -777,9 +778,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB1*5, Logamatic MC10",boiler,72,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Logano GB1*5, Logamatic MC10",boiler,72,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,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,6,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,6,9,1,29,1 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -800,27 +801,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB1*5, Logamatic MC10",boiler,72,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Logano GB1*5, Logamatic MC10",boiler,72,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Logano GB1*5, Logamatic MC10",boiler,72,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Logano GB1*5, Logamatic MC10",boiler,72,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -898,9 +899,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade CM10",boiler,81,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Cascade CM10",boiler,81,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Cascade CM10",boiler,81,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Cascade CM10",boiler,81,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Cascade CM10",boiler,81,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Cascade CM10",boiler,81,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Cascade CM10",boiler,81,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Cascade CM10",boiler,81,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Cascade CM10",boiler,81,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Cascade CM10",boiler,81,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Cascade CM10",boiler,81,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -921,27 +922,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade CM10",boiler,81,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Cascade CM10",boiler,81,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Cascade CM10",boiler,81,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Cascade CM10",boiler,81,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Cascade CM10",boiler,81,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Cascade CM10",boiler,81,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Cascade CM10",boiler,81,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Cascade CM10",boiler,81,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Cascade CM10",boiler,81,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Cascade CM10",boiler,81,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Cascade CM10",boiler,81,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Cascade CM10",boiler,81,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Cascade CM10",boiler,81,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Cascade CM10",boiler,81,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Cascade CM10",boiler,81,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Cascade CM10",boiler,81,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Cascade CM10",boiler,81,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Cascade CM10",boiler,81,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Cascade CM10",boiler,81,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Cascade CM10",boiler,81,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Cascade CM10",boiler,81,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Cascade CM10",boiler,81,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Cascade CM10",boiler,81,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Cascade CM10",boiler,81,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Cascade CM10",boiler,81,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Cascade CM10",boiler,81,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Cascade CM10",boiler,81,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Cascade CM10",boiler,81,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Cascade CM10",boiler,81,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Cascade CM10",boiler,81,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Cascade CM10",boiler,81,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Cascade CM10",boiler,81,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Cascade CM10",boiler,81,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Cascade CM10",boiler,81,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Cascade CM10",boiler,81,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Cascade CM10",boiler,81,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Cascade CM10",boiler,81,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Cascade CM10",boiler,81,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Cascade CM10",boiler,81,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Cascade CM10",boiler,81,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Cascade CM10",boiler,81,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Cascade CM10",boiler,81,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Cascade CM10",boiler,81,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Cascade CM10",boiler,81,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Cascade CM10",boiler,81,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Cascade CM10",boiler,81,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Cascade CM10",boiler,81,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Cascade CM10",boiler,81,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -1019,9 +1020,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB022",boiler,84,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Logamax Plus GB022",boiler,84,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 -"Logamax Plus GB022",boiler,84,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Logamax Plus GB022",boiler,84,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Logamax Plus GB022",boiler,84,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Logamax Plus GB022",boiler,84,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Logamax Plus GB022",boiler,84,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,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,6,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,6,9,1,29,1 "Logamax Plus GB022",boiler,84,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -1042,27 +1043,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB022",boiler,84,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Logamax Plus GB022",boiler,84,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Logamax Plus GB022",boiler,84,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Logamax Plus GB022",boiler,84,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Logamax Plus GB022",boiler,84,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Logamax Plus GB022",boiler,84,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Logamax Plus GB022",boiler,84,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Logamax Plus GB022",boiler,84,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Logamax Plus GB022",boiler,84,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Logamax Plus GB022",boiler,84,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Logamax Plus GB022",boiler,84,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Logamax Plus GB022",boiler,84,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Logamax Plus GB022",boiler,84,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Logamax Plus GB022",boiler,84,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Logamax Plus GB022",boiler,84,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Logamax Plus GB022",boiler,84,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Logamax Plus GB022",boiler,84,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Logamax Plus GB022",boiler,84,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Logamax Plus GB022",boiler,84,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Logamax Plus GB022",boiler,84,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Logamax Plus GB022",boiler,84,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Logamax Plus GB022",boiler,84,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Logamax Plus GB022",boiler,84,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"Logamax Plus GB022",boiler,84,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Logamax Plus GB022",boiler,84,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Logamax Plus GB022",boiler,84,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Logamax Plus GB022",boiler,84,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Logamax Plus GB022",boiler,84,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Logamax Plus GB022",boiler,84,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Logamax Plus GB022",boiler,84,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Logamax Plus GB022",boiler,84,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Logamax Plus GB022",boiler,84,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Logamax Plus GB022",boiler,84,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Logamax Plus GB022",boiler,84,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Logamax Plus GB022",boiler,84,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Logamax Plus GB022",boiler,84,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Logamax Plus GB022",boiler,84,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Logamax Plus GB022",boiler,84,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Logamax Plus GB022",boiler,84,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Logamax Plus GB022",boiler,84,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Logamax Plus GB022",boiler,84,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Logamax Plus GB022",boiler,84,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Logamax Plus GB022",boiler,84,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Logamax Plus GB022",boiler,84,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Logamax Plus GB022",boiler,84,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Logamax Plus GB022",boiler,84,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Logamax Plus GB022",boiler,84,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -1140,9 +1141,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,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,6,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,6,0,1/10,278,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,6,9,1/10,71,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,6,9,1/10,72,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,6,0,1/10,280,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,6,9,1/10,73,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,6,9,1/10,74,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,6,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,6,9,1,29,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -1163,27 +1164,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"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,6,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,6,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,6,9,1,69,2 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"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,6,9,1,67,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,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,6,9,1,70,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,6,0,1,282,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,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,6,0,1/100,91,2 @@ -1261,9 +1262,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Topline, GB162",boiler,115,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Topline, GB162",boiler,115,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Topline, GB162",boiler,115,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Topline, GB162",boiler,115,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Topline, GB162",boiler,115,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Topline, GB162",boiler,115,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Topline, GB162",boiler,115,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Topline, GB162",boiler,115,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Topline, GB162",boiler,115,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Topline, GB162",boiler,115,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Topline, GB162",boiler,115,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -1284,27 +1285,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Topline, GB162",boiler,115,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Topline, GB162",boiler,115,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Topline, GB162",boiler,115,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Topline, GB162",boiler,115,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Topline, GB162",boiler,115,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Topline, GB162",boiler,115,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Topline, GB162",boiler,115,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Topline, GB162",boiler,115,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Topline, GB162",boiler,115,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Topline, GB162",boiler,115,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Topline, GB162",boiler,115,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Topline, GB162",boiler,115,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Topline, GB162",boiler,115,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Topline, GB162",boiler,115,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Topline, GB162",boiler,115,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Topline, GB162",boiler,115,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Topline, GB162",boiler,115,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Topline, GB162",boiler,115,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Topline, GB162",boiler,115,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Topline, GB162",boiler,115,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Topline, GB162",boiler,115,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Topline, GB162",boiler,115,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Topline, GB162",boiler,115,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Topline, GB162",boiler,115,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Topline, GB162",boiler,115,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Topline, GB162",boiler,115,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Topline, GB162",boiler,115,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Topline, GB162",boiler,115,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Topline, GB162",boiler,115,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Topline, GB162",boiler,115,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Topline, GB162",boiler,115,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Topline, GB162",boiler,115,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Topline, GB162",boiler,115,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Topline, GB162",boiler,115,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Topline, GB162",boiler,115,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Topline, GB162",boiler,115,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Topline, GB162",boiler,115,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Topline, GB162",boiler,115,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Topline, GB162",boiler,115,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Topline, GB162",boiler,115,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Topline, GB162",boiler,115,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Topline, GB162",boiler,115,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Topline, GB162",boiler,115,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Topline, GB162",boiler,115,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Topline, GB162",boiler,115,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Topline, GB162",boiler,115,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Topline, GB162",boiler,115,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Topline, GB162",boiler,115,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -1382,9 +1383,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MCM10",boiler,121,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Cascade MCM10",boiler,121,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Cascade MCM10",boiler,121,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Cascade MCM10",boiler,121,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Cascade MCM10",boiler,121,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Cascade MCM10",boiler,121,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Cascade MCM10",boiler,121,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Cascade MCM10",boiler,121,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Cascade MCM10",boiler,121,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Cascade MCM10",boiler,121,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Cascade MCM10",boiler,121,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -1405,27 +1406,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MCM10",boiler,121,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Cascade MCM10",boiler,121,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Cascade MCM10",boiler,121,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Cascade MCM10",boiler,121,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Cascade MCM10",boiler,121,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Cascade MCM10",boiler,121,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Cascade MCM10",boiler,121,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Cascade MCM10",boiler,121,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Cascade MCM10",boiler,121,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Cascade MCM10",boiler,121,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Cascade MCM10",boiler,121,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Cascade MCM10",boiler,121,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Cascade MCM10",boiler,121,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Cascade MCM10",boiler,121,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Cascade MCM10",boiler,121,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Cascade MCM10",boiler,121,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Cascade MCM10",boiler,121,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Cascade MCM10",boiler,121,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Cascade MCM10",boiler,121,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Cascade MCM10",boiler,121,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Cascade MCM10",boiler,121,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Cascade MCM10",boiler,121,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Cascade MCM10",boiler,121,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Cascade MCM10",boiler,121,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Cascade MCM10",boiler,121,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Cascade MCM10",boiler,121,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Cascade MCM10",boiler,121,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Cascade MCM10",boiler,121,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Cascade MCM10",boiler,121,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Cascade MCM10",boiler,121,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Cascade MCM10",boiler,121,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Cascade MCM10",boiler,121,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Cascade MCM10",boiler,121,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Cascade MCM10",boiler,121,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Cascade MCM10",boiler,121,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Cascade MCM10",boiler,121,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Cascade MCM10",boiler,121,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Cascade MCM10",boiler,121,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Cascade MCM10",boiler,121,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Cascade MCM10",boiler,121,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Cascade MCM10",boiler,121,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Cascade MCM10",boiler,121,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Cascade MCM10",boiler,121,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Cascade MCM10",boiler,121,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Cascade MCM10",boiler,121,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Cascade MCM10",boiler,121,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Cascade MCM10",boiler,121,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Cascade MCM10",boiler,121,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -1503,9 +1504,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Proline",boiler,122,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Proline",boiler,122,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Proline",boiler,122,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Proline",boiler,122,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Proline",boiler,122,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Proline",boiler,122,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Proline",boiler,122,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Proline",boiler,122,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Proline",boiler,122,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Proline",boiler,122,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Proline",boiler,122,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -1526,27 +1527,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Proline",boiler,122,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Proline",boiler,122,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Proline",boiler,122,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Proline",boiler,122,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Proline",boiler,122,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Proline",boiler,122,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Proline",boiler,122,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Proline",boiler,122,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Proline",boiler,122,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Proline",boiler,122,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Proline",boiler,122,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Proline",boiler,122,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Proline",boiler,122,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Proline",boiler,122,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Proline",boiler,122,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Proline",boiler,122,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Proline",boiler,122,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Proline",boiler,122,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Proline",boiler,122,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Proline",boiler,122,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Proline",boiler,122,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Proline",boiler,122,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Proline",boiler,122,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Proline",boiler,122,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Proline",boiler,122,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Proline",boiler,122,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Proline",boiler,122,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Proline",boiler,122,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Proline",boiler,122,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Proline",boiler,122,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Proline",boiler,122,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Proline",boiler,122,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Proline",boiler,122,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Proline",boiler,122,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Proline",boiler,122,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Proline",boiler,122,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Proline",boiler,122,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Proline",boiler,122,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Proline",boiler,122,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Proline",boiler,122,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Proline",boiler,122,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Proline",boiler,122,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Proline",boiler,122,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Proline",boiler,122,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Proline",boiler,122,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Proline",boiler,122,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Proline",boiler,122,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Proline",boiler,122,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -1624,9 +1625,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,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,6,9,1/10,71,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,6,9,1/10,72,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,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,6,9,1/10,73,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,6,9,1/10,74,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,6,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,6,9,1,29,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -1647,27 +1648,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"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,6,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,6,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,6,9,1,69,2 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"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,6,9,1,67,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,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,6,9,1,70,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -1745,9 +1746,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB212",boiler,131,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "GB212",boiler,131,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "GB212",boiler,131,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"GB212",boiler,131,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"GB212",boiler,131,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "GB212",boiler,131,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"GB212",boiler,131,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"GB212",boiler,131,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "GB212",boiler,131,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "GB212",boiler,131,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "GB212",boiler,131,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -1768,27 +1769,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB212",boiler,131,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "GB212",boiler,131,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "GB212",boiler,131,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"GB212",boiler,131,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"GB212",boiler,131,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"GB212",boiler,131,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"GB212",boiler,131,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"GB212",boiler,131,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"GB212",boiler,131,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"GB212",boiler,131,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"GB212",boiler,131,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"GB212",boiler,131,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"GB212",boiler,131,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"GB212",boiler,131,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"GB212",boiler,131,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"GB212",boiler,131,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"GB212",boiler,131,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"GB212",boiler,131,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"GB212",boiler,131,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"GB212",boiler,131,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"GB212",boiler,131,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"GB212",boiler,131,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"GB212",boiler,131,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"GB212",boiler,131,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"GB212",boiler,131,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"GB212",boiler,131,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"GB212",boiler,131,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"GB212",boiler,131,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"GB212",boiler,131,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"GB212",boiler,131,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"GB212",boiler,131,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"GB212",boiler,131,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"GB212",boiler,131,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"GB212",boiler,131,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"GB212",boiler,131,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"GB212",boiler,131,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"GB212",boiler,131,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"GB212",boiler,131,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"GB212",boiler,131,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"GB212",boiler,131,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"GB212",boiler,131,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"GB212",boiler,131,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"GB212",boiler,131,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"GB212",boiler,131,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"GB212",boiler,131,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "GB212",boiler,131,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "GB212",boiler,131,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "GB212",boiler,131,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -1866,9 +1867,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GC7000F",boiler,132,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "GC7000F",boiler,132,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "GC7000F",boiler,132,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"GC7000F",boiler,132,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"GC7000F",boiler,132,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "GC7000F",boiler,132,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"GC7000F",boiler,132,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"GC7000F",boiler,132,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "GC7000F",boiler,132,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "GC7000F",boiler,132,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "GC7000F",boiler,132,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -1889,27 +1890,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GC7000F",boiler,132,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "GC7000F",boiler,132,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "GC7000F",boiler,132,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"GC7000F",boiler,132,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"GC7000F",boiler,132,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"GC7000F",boiler,132,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"GC7000F",boiler,132,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"GC7000F",boiler,132,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"GC7000F",boiler,132,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"GC7000F",boiler,132,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"GC7000F",boiler,132,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"GC7000F",boiler,132,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"GC7000F",boiler,132,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"GC7000F",boiler,132,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"GC7000F",boiler,132,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"GC7000F",boiler,132,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"GC7000F",boiler,132,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"GC7000F",boiler,132,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"GC7000F",boiler,132,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"GC7000F",boiler,132,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"GC7000F",boiler,132,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"GC7000F",boiler,132,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"GC7000F",boiler,132,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"GC7000F",boiler,132,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"GC7000F",boiler,132,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"GC7000F",boiler,132,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"GC7000F",boiler,132,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"GC7000F",boiler,132,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"GC7000F",boiler,132,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"GC7000F",boiler,132,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"GC7000F",boiler,132,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"GC7000F",boiler,132,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"GC7000F",boiler,132,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"GC7000F",boiler,132,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"GC7000F",boiler,132,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"GC7000F",boiler,132,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"GC7000F",boiler,132,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"GC7000F",boiler,132,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"GC7000F",boiler,132,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"GC7000F",boiler,132,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"GC7000F",boiler,132,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"GC7000F",boiler,132,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"GC7000F",boiler,132,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"GC7000F",boiler,132,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"GC7000F",boiler,132,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "GC7000F",boiler,132,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "GC7000F",boiler,132,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "GC7000F",boiler,132,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -1987,9 +1988,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB125/KB195i, Logamatic MC110",boiler,133,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,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,6,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,6,9,1,29,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -2010,27 +2011,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -2108,9 +2109,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 30Ri Compact",boiler,154,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Greenstar 30Ri Compact",boiler,154,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 -"Greenstar 30Ri Compact",boiler,154,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Greenstar 30Ri Compact",boiler,154,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Greenstar 30Ri Compact",boiler,154,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Greenstar 30Ri Compact",boiler,154,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Greenstar 30Ri Compact",boiler,154,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,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,6,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,6,9,1,29,1 "Greenstar 30Ri Compact",boiler,154,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -2131,27 +2132,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 30Ri Compact",boiler,154,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Greenstar 30Ri Compact",boiler,154,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Greenstar 30Ri Compact",boiler,154,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Greenstar 30Ri Compact",boiler,154,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Greenstar 30Ri Compact",boiler,154,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Greenstar 30Ri Compact",boiler,154,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Greenstar 30Ri Compact",boiler,154,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Greenstar 30Ri Compact",boiler,154,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Greenstar 30Ri Compact",boiler,154,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Greenstar 30Ri Compact",boiler,154,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Greenstar 30Ri Compact",boiler,154,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Greenstar 30Ri Compact",boiler,154,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Greenstar 30Ri Compact",boiler,154,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Greenstar 30Ri Compact",boiler,154,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Greenstar 30Ri Compact",boiler,154,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Greenstar 30Ri Compact",boiler,154,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Greenstar 30Ri Compact",boiler,154,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Greenstar 30Ri Compact",boiler,154,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Greenstar 30Ri Compact",boiler,154,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Greenstar 30Ri Compact",boiler,154,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Greenstar 30Ri Compact",boiler,154,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Greenstar 30Ri Compact",boiler,154,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Greenstar 30Ri Compact",boiler,154,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"Greenstar 30Ri Compact",boiler,154,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Greenstar 30Ri Compact",boiler,154,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Greenstar 30Ri Compact",boiler,154,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Greenstar 30Ri Compact",boiler,154,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Greenstar 30Ri Compact",boiler,154,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Greenstar 30Ri Compact",boiler,154,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Greenstar 30Ri Compact",boiler,154,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Greenstar 30Ri Compact",boiler,154,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Greenstar 30Ri Compact",boiler,154,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Greenstar 30Ri Compact",boiler,154,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Greenstar 30Ri Compact",boiler,154,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Greenstar 30Ri Compact",boiler,154,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Greenstar 30Ri Compact",boiler,154,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Greenstar 30Ri Compact",boiler,154,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Greenstar 30Ri Compact",boiler,154,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Greenstar 30Ri Compact",boiler,154,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Greenstar 30Ri Compact",boiler,154,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Greenstar 30Ri Compact",boiler,154,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Greenstar 30Ri Compact",boiler,154,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Greenstar 30Ri Compact",boiler,154,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Greenstar 30Ri Compact",boiler,154,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Greenstar 30Ri Compact",boiler,154,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Greenstar 30Ri Compact",boiler,154,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Greenstar 30Ri Compact",boiler,154,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -2229,9 +2230,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Suprapur-o",boiler,155,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Suprapur-o",boiler,155,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Suprapur-o",boiler,155,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Suprapur-o",boiler,155,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Suprapur-o",boiler,155,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Suprapur-o",boiler,155,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Suprapur-o",boiler,155,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Suprapur-o",boiler,155,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Suprapur-o",boiler,155,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Suprapur-o",boiler,155,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Suprapur-o",boiler,155,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -2252,27 +2253,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Suprapur-o",boiler,155,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Suprapur-o",boiler,155,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Suprapur-o",boiler,155,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Suprapur-o",boiler,155,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Suprapur-o",boiler,155,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Suprapur-o",boiler,155,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Suprapur-o",boiler,155,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Suprapur-o",boiler,155,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Suprapur-o",boiler,155,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Suprapur-o",boiler,155,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Suprapur-o",boiler,155,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Suprapur-o",boiler,155,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Suprapur-o",boiler,155,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Suprapur-o",boiler,155,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Suprapur-o",boiler,155,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Suprapur-o",boiler,155,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Suprapur-o",boiler,155,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Suprapur-o",boiler,155,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Suprapur-o",boiler,155,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Suprapur-o",boiler,155,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Suprapur-o",boiler,155,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Suprapur-o",boiler,155,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Suprapur-o",boiler,155,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Suprapur-o",boiler,155,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Suprapur-o",boiler,155,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Suprapur-o",boiler,155,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Suprapur-o",boiler,155,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Suprapur-o",boiler,155,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Suprapur-o",boiler,155,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Suprapur-o",boiler,155,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Suprapur-o",boiler,155,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Suprapur-o",boiler,155,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Suprapur-o",boiler,155,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Suprapur-o",boiler,155,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Suprapur-o",boiler,155,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Suprapur-o",boiler,155,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Suprapur-o",boiler,155,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Suprapur-o",boiler,155,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Suprapur-o",boiler,155,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Suprapur-o",boiler,155,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Suprapur-o",boiler,155,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Suprapur-o",boiler,155,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Suprapur-o",boiler,155,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Suprapur-o",boiler,155,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Suprapur-o",boiler,155,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Suprapur-o",boiler,155,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Suprapur-o",boiler,155,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Suprapur-o",boiler,155,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -2350,9 +2351,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cerapur Aero",boiler,167,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Cerapur Aero",boiler,167,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Cerapur Aero",boiler,167,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Cerapur Aero",boiler,167,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Cerapur Aero",boiler,167,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Cerapur Aero",boiler,167,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Cerapur Aero",boiler,167,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Cerapur Aero",boiler,167,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Cerapur Aero",boiler,167,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Cerapur Aero",boiler,167,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Cerapur Aero",boiler,167,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -2373,27 +2374,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cerapur Aero",boiler,167,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Cerapur Aero",boiler,167,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Cerapur Aero",boiler,167,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Cerapur Aero",boiler,167,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Cerapur Aero",boiler,167,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Cerapur Aero",boiler,167,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Cerapur Aero",boiler,167,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Cerapur Aero",boiler,167,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Cerapur Aero",boiler,167,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Cerapur Aero",boiler,167,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Cerapur Aero",boiler,167,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Cerapur Aero",boiler,167,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Cerapur Aero",boiler,167,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Cerapur Aero",boiler,167,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Cerapur Aero",boiler,167,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Cerapur Aero",boiler,167,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Cerapur Aero",boiler,167,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Cerapur Aero",boiler,167,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Cerapur Aero",boiler,167,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Cerapur Aero",boiler,167,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Cerapur Aero",boiler,167,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Cerapur Aero",boiler,167,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Cerapur Aero",boiler,167,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Cerapur Aero",boiler,167,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Cerapur Aero",boiler,167,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Cerapur Aero",boiler,167,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Cerapur Aero",boiler,167,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Cerapur Aero",boiler,167,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Cerapur Aero",boiler,167,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Cerapur Aero",boiler,167,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Cerapur Aero",boiler,167,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Cerapur Aero",boiler,167,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Cerapur Aero",boiler,167,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Cerapur Aero",boiler,167,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Cerapur Aero",boiler,167,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Cerapur Aero",boiler,167,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Cerapur Aero",boiler,167,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Cerapur Aero",boiler,167,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Cerapur Aero",boiler,167,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Cerapur Aero",boiler,167,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Cerapur Aero",boiler,167,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Cerapur Aero",boiler,167,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Cerapur Aero",boiler,167,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Cerapur Aero",boiler,167,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Cerapur Aero",boiler,167,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Cerapur Aero",boiler,167,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Cerapur Aero",boiler,167,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Cerapur Aero",boiler,167,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -2471,9 +2472,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Hybrid Heatpump",boiler,168,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Hybrid Heatpump",boiler,168,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Hybrid Heatpump",boiler,168,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Hybrid Heatpump",boiler,168,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Hybrid Heatpump",boiler,168,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Hybrid Heatpump",boiler,168,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Hybrid Heatpump",boiler,168,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Hybrid Heatpump",boiler,168,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Hybrid Heatpump",boiler,168,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Hybrid Heatpump",boiler,168,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Hybrid Heatpump",boiler,168,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -2494,27 +2495,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Hybrid Heatpump",boiler,168,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Hybrid Heatpump",boiler,168,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Hybrid Heatpump",boiler,168,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Hybrid Heatpump",boiler,168,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Hybrid Heatpump",boiler,168,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Hybrid Heatpump",boiler,168,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Hybrid Heatpump",boiler,168,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Hybrid Heatpump",boiler,168,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Hybrid Heatpump",boiler,168,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Hybrid Heatpump",boiler,168,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Hybrid Heatpump",boiler,168,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Hybrid Heatpump",boiler,168,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Hybrid Heatpump",boiler,168,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Hybrid Heatpump",boiler,168,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Hybrid Heatpump",boiler,168,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Hybrid Heatpump",boiler,168,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Hybrid Heatpump",boiler,168,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Hybrid Heatpump",boiler,168,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Hybrid Heatpump",boiler,168,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Hybrid Heatpump",boiler,168,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Hybrid Heatpump",boiler,168,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Hybrid Heatpump",boiler,168,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Hybrid Heatpump",boiler,168,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Hybrid Heatpump",boiler,168,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Hybrid Heatpump",boiler,168,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Hybrid Heatpump",boiler,168,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Hybrid Heatpump",boiler,168,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Hybrid Heatpump",boiler,168,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Hybrid Heatpump",boiler,168,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Hybrid Heatpump",boiler,168,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Hybrid Heatpump",boiler,168,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Hybrid Heatpump",boiler,168,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Hybrid Heatpump",boiler,168,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Hybrid Heatpump",boiler,168,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Hybrid Heatpump",boiler,168,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Hybrid Heatpump",boiler,168,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Hybrid Heatpump",boiler,168,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Hybrid Heatpump",boiler,168,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Hybrid Heatpump",boiler,168,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Hybrid Heatpump",boiler,168,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Hybrid Heatpump",boiler,168,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Hybrid Heatpump",boiler,168,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Hybrid Heatpump",boiler,168,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Hybrid Heatpump",boiler,168,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Hybrid Heatpump",boiler,168,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Hybrid Heatpump",boiler,168,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Hybrid Heatpump",boiler,168,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Hybrid Heatpump",boiler,168,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -2592,9 +2593,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB212",boiler,170,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Logano GB212",boiler,170,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Logano GB212",boiler,170,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Logano GB212",boiler,170,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Logano GB212",boiler,170,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Logano GB212",boiler,170,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Logano GB212",boiler,170,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Logano GB212",boiler,170,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Logano GB212",boiler,170,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Logano GB212",boiler,170,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Logano GB212",boiler,170,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -2615,27 +2616,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB212",boiler,170,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Logano GB212",boiler,170,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Logano GB212",boiler,170,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Logano GB212",boiler,170,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Logano GB212",boiler,170,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Logano GB212",boiler,170,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Logano GB212",boiler,170,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Logano GB212",boiler,170,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Logano GB212",boiler,170,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Logano GB212",boiler,170,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Logano GB212",boiler,170,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Logano GB212",boiler,170,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Logano GB212",boiler,170,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Logano GB212",boiler,170,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Logano GB212",boiler,170,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Logano GB212",boiler,170,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Logano GB212",boiler,170,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Logano GB212",boiler,170,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Logano GB212",boiler,170,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Logano GB212",boiler,170,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Logano GB212",boiler,170,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Logano GB212",boiler,170,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Logano GB212",boiler,170,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Logano GB212",boiler,170,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Logano GB212",boiler,170,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Logano GB212",boiler,170,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Logano GB212",boiler,170,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Logano GB212",boiler,170,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Logano GB212",boiler,170,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Logano GB212",boiler,170,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Logano GB212",boiler,170,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Logano GB212",boiler,170,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Logano GB212",boiler,170,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Logano GB212",boiler,170,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Logano GB212",boiler,170,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Logano GB212",boiler,170,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Logano GB212",boiler,170,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Logano GB212",boiler,170,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Logano GB212",boiler,170,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Logano GB212",boiler,170,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Logano GB212",boiler,170,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Logano GB212",boiler,170,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Logano GB212",boiler,170,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Logano GB212",boiler,170,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Logano GB212",boiler,170,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Logano GB212",boiler,170,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Logano GB212",boiler,170,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Logano GB212",boiler,170,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -2840,27 +2841,28 @@ 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.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"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,6,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,6,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,6,9,1,69,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.disinfectduration,disinfection duration,uint8 (>=120<=240),minutes,true,number.boiler_dhw_disinfection_duration,number.boiler_dhw_disinfectduration,6,9,10,48,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"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,6,9,1,67,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,6,9,1,68,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,6,9,1,70,2 "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,6,0,1,0,1 "Geo 5xx",boiler,173,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,6,0,1,1,1 "Geo 5xx",boiler,173,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,6,0,1,2,1 @@ -3061,27 +3063,28 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Geo 5xx",boiler,173,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Geo 5xx",boiler,173,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Geo 5xx",boiler,173,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Geo 5xx",boiler,173,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Geo 5xx",boiler,173,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Geo 5xx",boiler,173,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Geo 5xx",boiler,173,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Geo 5xx",boiler,173,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Geo 5xx",boiler,173,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Geo 5xx",boiler,173,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Geo 5xx",boiler,173,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Geo 5xx",boiler,173,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Geo 5xx",boiler,173,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Geo 5xx",boiler,173,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Geo 5xx",boiler,173,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Geo 5xx",boiler,173,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Geo 5xx",boiler,173,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Geo 5xx",boiler,173,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Geo 5xx",boiler,173,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Geo 5xx",boiler,173,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Geo 5xx",boiler,173,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Geo 5xx",boiler,173,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Geo 5xx",boiler,173,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Geo 5xx",boiler,173,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Geo 5xx",boiler,173,dhw.disinfectduration,disinfection duration,uint8 (>=120<=240),minutes,true,number.boiler_dhw_disinfection_duration,number.boiler_dhw_disinfectduration,6,9,10,48,1 +"Geo 5xx",boiler,173,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Geo 5xx",boiler,173,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Geo 5xx",boiler,173,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Geo 5xx",boiler,173,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Geo 5xx",boiler,173,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Geo 5xx",boiler,173,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Geo 5xx",boiler,173,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Geo 5xx",boiler,173,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Geo 5xx",boiler,173,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Geo 5xx",boiler,173,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Geo 5xx",boiler,173,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Geo 5xx",boiler,173,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Geo 5xx",boiler,173,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Geo 5xx",boiler,173,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Geo 5xx",boiler,173,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Geo 5xx",boiler,173,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Geo 5xx",boiler,173,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Geo 5xx",boiler,173,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Geo 5xx",boiler,173,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Geo 5xx",boiler,173,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Geo 5xx",boiler,173,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "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,6,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,6,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,6,0,1,2,1 @@ -3155,9 +3158,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,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,6,9,1/10,71,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,6,9,1/10,72,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,6,0,1/10,280,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,6,9,1/10,73,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,6,9,1/10,74,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,6,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,6,9,1,29,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -3178,27 +3181,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"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,6,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,6,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,6,9,1,69,2 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"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,6,9,1,67,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,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,6,9,1,70,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,6,0,1,282,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,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,6,0,1/100,91,2 @@ -3276,9 +3279,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax U122, Cerapur",boiler,203,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Logamax U122, Cerapur",boiler,203,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 -"Logamax U122, Cerapur",boiler,203,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Logamax U122, Cerapur",boiler,203,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Logamax U122, Cerapur",boiler,203,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Logamax U122, Cerapur",boiler,203,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Logamax U122, Cerapur",boiler,203,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,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,6,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,6,9,1,29,1 "Logamax U122, Cerapur",boiler,203,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -3299,27 +3302,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax U122, Cerapur",boiler,203,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Logamax U122, Cerapur",boiler,203,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Logamax U122, Cerapur",boiler,203,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Logamax U122, Cerapur",boiler,203,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Logamax U122, Cerapur",boiler,203,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Logamax U122, Cerapur",boiler,203,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Logamax U122, Cerapur",boiler,203,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Logamax U122, Cerapur",boiler,203,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Logamax U122, Cerapur",boiler,203,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Logamax U122, Cerapur",boiler,203,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Logamax U122, Cerapur",boiler,203,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Logamax U122, Cerapur",boiler,203,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Logamax U122, Cerapur",boiler,203,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Logamax U122, Cerapur",boiler,203,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Logamax U122, Cerapur",boiler,203,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Logamax U122, Cerapur",boiler,203,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Logamax U122, Cerapur",boiler,203,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Logamax U122, Cerapur",boiler,203,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Logamax U122, Cerapur",boiler,203,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Logamax U122, Cerapur",boiler,203,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Logamax U122, Cerapur",boiler,203,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Logamax U122, Cerapur",boiler,203,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Logamax U122, Cerapur",boiler,203,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"Logamax U122, Cerapur",boiler,203,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Logamax U122, Cerapur",boiler,203,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Logamax U122, Cerapur",boiler,203,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Logamax U122, Cerapur",boiler,203,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Logamax U122, Cerapur",boiler,203,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Logamax U122, Cerapur",boiler,203,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Logamax U122, Cerapur",boiler,203,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Logamax U122, Cerapur",boiler,203,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Logamax U122, Cerapur",boiler,203,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Logamax U122, Cerapur",boiler,203,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Logamax U122, Cerapur",boiler,203,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Logamax U122, Cerapur",boiler,203,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Logamax U122, Cerapur",boiler,203,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Logamax U122, Cerapur",boiler,203,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Logamax U122, Cerapur",boiler,203,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Logamax U122, Cerapur",boiler,203,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Logamax U122, Cerapur",boiler,203,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Logamax U122, Cerapur",boiler,203,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Logamax U122, Cerapur",boiler,203,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Logamax U122, Cerapur",boiler,203,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Logamax U122, Cerapur",boiler,203,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Logamax U122, Cerapur",boiler,203,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Logamax U122, Cerapur",boiler,203,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Logamax U122, Cerapur",boiler,203,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -3397,9 +3400,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Ecomline Excellent",boiler,206,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Ecomline Excellent",boiler,206,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Ecomline Excellent",boiler,206,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Ecomline Excellent",boiler,206,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Ecomline Excellent",boiler,206,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Ecomline Excellent",boiler,206,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Ecomline Excellent",boiler,206,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Ecomline Excellent",boiler,206,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Ecomline Excellent",boiler,206,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Ecomline Excellent",boiler,206,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Ecomline Excellent",boiler,206,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -3420,27 +3423,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Ecomline Excellent",boiler,206,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Ecomline Excellent",boiler,206,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Ecomline Excellent",boiler,206,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Ecomline Excellent",boiler,206,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Ecomline Excellent",boiler,206,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Ecomline Excellent",boiler,206,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Ecomline Excellent",boiler,206,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Ecomline Excellent",boiler,206,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Ecomline Excellent",boiler,206,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Ecomline Excellent",boiler,206,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Ecomline Excellent",boiler,206,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Ecomline Excellent",boiler,206,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Ecomline Excellent",boiler,206,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Ecomline Excellent",boiler,206,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Ecomline Excellent",boiler,206,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Ecomline Excellent",boiler,206,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Ecomline Excellent",boiler,206,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Ecomline Excellent",boiler,206,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Ecomline Excellent",boiler,206,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Ecomline Excellent",boiler,206,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Ecomline Excellent",boiler,206,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Ecomline Excellent",boiler,206,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Ecomline Excellent",boiler,206,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Ecomline Excellent",boiler,206,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Ecomline Excellent",boiler,206,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Ecomline Excellent",boiler,206,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Ecomline Excellent",boiler,206,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Ecomline Excellent",boiler,206,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Ecomline Excellent",boiler,206,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Ecomline Excellent",boiler,206,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Ecomline Excellent",boiler,206,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Ecomline Excellent",boiler,206,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Ecomline Excellent",boiler,206,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Ecomline Excellent",boiler,206,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Ecomline Excellent",boiler,206,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Ecomline Excellent",boiler,206,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Ecomline Excellent",boiler,206,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Ecomline Excellent",boiler,206,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Ecomline Excellent",boiler,206,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Ecomline Excellent",boiler,206,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Ecomline Excellent",boiler,206,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Ecomline Excellent",boiler,206,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Ecomline Excellent",boiler,206,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Ecomline Excellent",boiler,206,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Ecomline Excellent",boiler,206,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Ecomline Excellent",boiler,206,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Ecomline Excellent",boiler,206,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Ecomline Excellent",boiler,206,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -3518,9 +3521,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,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,6,9,1/10,71,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,6,9,1/10,72,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,6,0,1/10,280,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,6,9,1/10,73,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,6,9,1/10,74,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,6,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,6,9,1,29,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -3541,27 +3544,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"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,6,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,6,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,6,9,1,69,2 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"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,6,9,1,67,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,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,6,9,1,70,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,6,0,1,282,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,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,6,0,1/100,91,2 @@ -3639,9 +3642,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MC400",boiler,210,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Cascade MC400",boiler,210,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Cascade MC400",boiler,210,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Cascade MC400",boiler,210,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Cascade MC400",boiler,210,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Cascade MC400",boiler,210,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Cascade MC400",boiler,210,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Cascade MC400",boiler,210,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Cascade MC400",boiler,210,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Cascade MC400",boiler,210,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Cascade MC400",boiler,210,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -3662,27 +3665,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MC400",boiler,210,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Cascade MC400",boiler,210,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Cascade MC400",boiler,210,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Cascade MC400",boiler,210,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Cascade MC400",boiler,210,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Cascade MC400",boiler,210,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Cascade MC400",boiler,210,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Cascade MC400",boiler,210,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Cascade MC400",boiler,210,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Cascade MC400",boiler,210,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Cascade MC400",boiler,210,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Cascade MC400",boiler,210,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Cascade MC400",boiler,210,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Cascade MC400",boiler,210,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Cascade MC400",boiler,210,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Cascade MC400",boiler,210,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Cascade MC400",boiler,210,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Cascade MC400",boiler,210,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Cascade MC400",boiler,210,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Cascade MC400",boiler,210,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Cascade MC400",boiler,210,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Cascade MC400",boiler,210,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Cascade MC400",boiler,210,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Cascade MC400",boiler,210,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Cascade MC400",boiler,210,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Cascade MC400",boiler,210,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Cascade MC400",boiler,210,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Cascade MC400",boiler,210,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Cascade MC400",boiler,210,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Cascade MC400",boiler,210,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Cascade MC400",boiler,210,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Cascade MC400",boiler,210,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Cascade MC400",boiler,210,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Cascade MC400",boiler,210,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Cascade MC400",boiler,210,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Cascade MC400",boiler,210,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Cascade MC400",boiler,210,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Cascade MC400",boiler,210,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Cascade MC400",boiler,210,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Cascade MC400",boiler,210,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Cascade MC400",boiler,210,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Cascade MC400",boiler,210,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Cascade MC400",boiler,210,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Cascade MC400",boiler,210,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Cascade MC400",boiler,210,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Cascade MC400",boiler,210,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Cascade MC400",boiler,210,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Cascade MC400",boiler,210,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -3760,9 +3763,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "EasyControl Adapter",boiler,211,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "EasyControl Adapter",boiler,211,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "EasyControl Adapter",boiler,211,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"EasyControl Adapter",boiler,211,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"EasyControl Adapter",boiler,211,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "EasyControl Adapter",boiler,211,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"EasyControl Adapter",boiler,211,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"EasyControl Adapter",boiler,211,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "EasyControl Adapter",boiler,211,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "EasyControl Adapter",boiler,211,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "EasyControl Adapter",boiler,211,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -3783,34 +3786,34 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "EasyControl Adapter",boiler,211,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "EasyControl Adapter",boiler,211,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "EasyControl Adapter",boiler,211,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"EasyControl Adapter",boiler,211,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"EasyControl Adapter",boiler,211,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"EasyControl Adapter",boiler,211,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"EasyControl Adapter",boiler,211,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"EasyControl Adapter",boiler,211,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"EasyControl Adapter",boiler,211,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"EasyControl Adapter",boiler,211,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"EasyControl Adapter",boiler,211,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"EasyControl Adapter",boiler,211,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"EasyControl Adapter",boiler,211,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"EasyControl Adapter",boiler,211,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"EasyControl Adapter",boiler,211,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"EasyControl Adapter",boiler,211,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"EasyControl Adapter",boiler,211,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"EasyControl Adapter",boiler,211,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"EasyControl Adapter",boiler,211,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"EasyControl Adapter",boiler,211,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"EasyControl Adapter",boiler,211,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"EasyControl Adapter",boiler,211,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"EasyControl Adapter",boiler,211,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"EasyControl Adapter",boiler,211,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"EasyControl Adapter",boiler,211,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"EasyControl Adapter",boiler,211,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"EasyControl Adapter",boiler,211,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"EasyControl Adapter",boiler,211,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"EasyControl Adapter",boiler,211,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"EasyControl Adapter",boiler,211,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"EasyControl Adapter",boiler,211,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"EasyControl Adapter",boiler,211,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"EasyControl Adapter",boiler,211,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"EasyControl Adapter",boiler,211,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"EasyControl Adapter",boiler,211,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"EasyControl Adapter",boiler,211,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"EasyControl Adapter",boiler,211,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"EasyControl Adapter",boiler,211,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"EasyControl Adapter",boiler,211,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"EasyControl Adapter",boiler,211,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"EasyControl Adapter",boiler,211,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"EasyControl Adapter",boiler,211,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"EasyControl Adapter",boiler,211,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"EasyControl Adapter",boiler,211,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"EasyControl Adapter",boiler,211,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "EasyControl Adapter",boiler,211,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "EasyControl Adapter",boiler,211,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "EasyControl Adapter",boiler,211,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 "EasyControl Adapter",boiler,211,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,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,6,0,1/10,283,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,heatvalve,heating valve,uint8,%,false,sensor.boiler_heating_valve,sensor.boiler_heatvalve,6,0,1,284,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.dhwvalve,valve,uint8,%,false,sensor.boiler_dhw_valve,sensor.boiler_dhw_dhwvalve,6,9,1,75,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.dhwvalve,valve,uint8,%,false,sensor.boiler_dhw_valve,sensor.boiler_dhw_dhwvalve,6,9,1,76,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,6,0,1,285,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,6,0,1,286,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,heating,heating,boolean, ,false,binary_sensor.boiler_heating,binary_sensor.boiler_heating,6,0,1,287,1 @@ -3865,9 +3868,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar HIU, Logamax kompakt WS170",boiler,219,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Greenstar HIU, Logamax kompakt WS170",boiler,219,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,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,6,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,6,9,1,29,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -3888,27 +3891,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "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,6,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,6,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,6,0,1,2,1 @@ -3982,9 +3985,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,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,6,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,6,0,1/10,278,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,6,9,1/10,71,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,6,9,1/10,72,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,6,0,1/10,280,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,6,9,1/10,73,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,6,9,1/10,74,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,6,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,6,9,1,29,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -4005,27 +4008,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"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,6,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,6,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,6,9,1,69,2 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"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,6,9,1,67,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,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,6,9,1,70,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,6,0,1,282,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,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,6,0,1/100,91,2 diff --git a/src/core/modbus_entity_parameters.hpp b/src/core/modbus_entity_parameters.hpp index ab793e189..79ae35779 100644 --- a/src/core/modbus_entity_parameters.hpp +++ b/src/core/modbus_entity_parameters.hpp @@ -246,30 +246,31 @@ const std::initializer_list Modbus::modbus_register_ma REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwHystOn), 45, 1), // hyston REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwHystOff), 46, 1), // hystoff REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwDisinfectionTemp), 47, 1), // disinfectiontemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwCircMode), 48, 1), // circmode - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwCirc), 49, 1), // circ - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwCurTemp), 50, 1), // curtemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwCurTemp2), 51, 1), // curtemp2 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwCurFlow), 52, 1), // curflow - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwStorageTemp1), 53, 1), // storagetemp1 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwStorageTemp2), 54, 1), // storagetemp2 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(activated), 55, 1), // activated - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwOneTime), 56, 1), // onetime - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwDisinfecting), 57, 1), // disinfecting - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwCharging), 58, 1), // charging - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwRecharging), 59, 1), // recharging - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwTempOK), 60, 1), // tempok - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwActive), 61, 1), // active - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(ww3wayValve), 62, 1), // 3wayvalve - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwChargePump), 63, 1), // chargepump - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwMixerTemp), 64, 1), // mixertemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(cylMiddleTemp), 65, 1), // cylmiddletemp - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwprio), 66, 1), // dhwprio - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwStarts), 67, 2), // starts - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwWorkM), 69, 2), // workm - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(gasMeterWw), 71, 2), // gasmeter - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(nrgWw2), 73, 2), // nrg2 - REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwValve), 75, 1), // dhwvalve + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwDisinfectDuration), 48, 1), // disinfectduration + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwCircMode), 49, 1), // circmode + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwCirc), 50, 1), // circ + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwCurTemp), 51, 1), // curtemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwCurTemp2), 52, 1), // curtemp2 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwCurFlow), 53, 1), // curflow + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwStorageTemp1), 54, 1), // storagetemp1 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwStorageTemp2), 55, 1), // storagetemp2 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(activated), 56, 1), // activated + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwOneTime), 57, 1), // onetime + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwDisinfecting), 58, 1), // disinfecting + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwCharging), 59, 1), // charging + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwRecharging), 60, 1), // recharging + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwTempOK), 61, 1), // tempok + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwActive), 62, 1), // active + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(ww3wayValve), 63, 1), // 3wayvalve + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwChargePump), 64, 1), // chargepump + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwMixerTemp), 65, 1), // mixertemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(cylMiddleTemp), 66, 1), // cylmiddletemp + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwprio), 67, 1), // dhwprio + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwStarts), 68, 2), // starts + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwWorkM), 70, 2), // workm + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(gasMeterWw), 72, 2), // gasmeter + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(nrgWw2), 74, 2), // nrg2 + REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(wwValve), 76, 1), // dhwvalve REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_DEVICE_DATA, FL_(errorCode), 0, 8), // errorcode REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_DEVICE_DATA, FL_(lastCode), 8, 25), // lastcode REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_DEVICE_DATA, FL_(dateTime), 33, 13), // datetime -- 2.54.0 From 0e0b75dc6b0aca21dff8e4dab5f13f23c4f232f6 Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 12 Oct 2026 19:37:07 +0200 Subject: [PATCH 088/148] dev-19 --- 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 a9ad69f24..2d2169ffd 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.9.0-dev.18" +#define EMSESP_APP_VERSION "3.9.0-dev.19" -- 2.54.0 From e9b85559e61ad40db0a7735538edd8b90e7ecf88 Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 12 Oct 2026 19:37:13 +0200 Subject: [PATCH 089/148] update --- cspell.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cspell.json b/cspell.json index 4d4f9520b..91f3e1af4 100644 --- a/cspell.json +++ b/cspell.json @@ -39,6 +39,7 @@ "lib/esp32-psram/**", "test/test_api/test_api.h", "lib_standalone/**", - "**/*.js" + "**/*.js", + "pio_local.ini_example" ] } \ No newline at end of file -- 2.54.0 From 77ede5cea2b838ebf7aa8e8bfbf7cc86078be40c Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 12 Oct 2026 19:37:30 +0200 Subject: [PATCH 090/148] use latest arduino libs --- platformio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio.ini b/platformio.ini index e18746977..bca3af399 100644 --- a/platformio.ini +++ b/platformio.ini @@ -86,7 +86,7 @@ board_build.partitions = partitions/esp32_partition_32M.csv ; if we want to go back to Tasmota libs, use the following: ; platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.05.50/platform-espressif32.zip ; Tasmota Arduino Core 3.3.8 based on IDF 5.5.4.260407 platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.09.50/platform-espressif32.zip -platform_packages = framework-arduinoespressif32 @ https://github.com/emsesp/esp32-arduino-lib-builder/releases/download/1110-0945-5.5.5/framework-arduinoespressif32-v5.5.5-a63b839f.tar.xz +platform_packages = framework-arduinoespressif32 @ https://github.com/emsesp/esp32-arduino-lib-builder/releases/download/1210-1635-5.5.5/framework-arduinoespressif32-v5.5.5-a63b839f.tar.xz build_flags = ${common.build_flags} -- 2.54.0 From 721866c528a94ed5739c6d1b74f4492263f15fa3 Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 12 Oct 2026 19:37:45 +0200 Subject: [PATCH 091/148] fix for #3258 --- src/uart/emsuart_esp32.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/uart/emsuart_esp32.cpp b/src/uart/emsuart_esp32.cpp index 41de2166d..1d88d468b 100644 --- a/src/uart/emsuart_esp32.cpp +++ b/src/uart/emsuart_esp32.cpp @@ -91,6 +91,9 @@ void EMSuart::start(const uint8_t tx_mode, const uint8_t rx_gpio, const uint8_t inverse_mask |= UART_SIGNAL_TXD_INV; #endif uart_param_config(EMSUART_NUM, &uart_config); + // IDF 5 uart_set_pin() no longer selects the GPIO function on the Rx pad when routing via the GPIO matrix. + // Pins that boot with another IO_MUX function (e.g. GPIO43/44 = UART0 on S3, JTAG pins) would never see the signal. + gpio_reset_pin((gpio_num_t)rx_gpio); uart_set_pin(EMSUART_NUM, tx_gpio, rx_gpio, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE); gpio_pullup_en((gpio_num_t)rx_gpio); // IDF 5 no longer enables the Rx pull-up, some custom interfaces rely on it uart_set_line_inverse(EMSUART_NUM, inverse_mask); @@ -110,6 +113,7 @@ void EMSuart::start(const uint8_t tx_mode, const uint8_t rx_gpio, const uint8_t xTaskCreatePinnedToCore(uart_event_task, "uart_event_task", EMSESP_UART_STACKSIZE, NULL, EMSESP_UART_PRIORITY, &xHandle, EMSESP_UART_RUNNING_CORE); #endif } else { + gpio_reset_pin((gpio_num_t)rx_gpio); uart_set_pin(EMSUART_NUM, tx_gpio, rx_gpio, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE); gpio_pullup_en((gpio_num_t)rx_gpio); vTaskResume(xHandle); -- 2.54.0 From aad2854e4c378b87a53fbff652e7a234180caa5e Mon Sep 17 00:00:00 2001 From: proddy <1230712+proddy@users.noreply.github.com> Date: Mon, 12 Oct 2026 17:45:52 +0000 Subject: [PATCH 092/148] chore: update generated files for v3.9.0-dev.19 --- Modbus-Entity-Registers.md | 1422 ++++++++++++++++++------------------ dump_entities.csv | 1419 +++++++++++++++++------------------ 2 files changed, 1425 insertions(+), 1416 deletions(-) diff --git a/Modbus-Entity-Registers.md b/Modbus-Entity-Registers.md index 61f4c2cad..dbae8073d 100644 --- a/Modbus-Entity-Registers.md +++ b/Modbus-Entity-Registers.md @@ -265,27 +265,29 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +uint8 +| dhw.disinfectduration | disinfection duration | uint8 (>=120<=240) | minutes | true | DHW | 48 | 1 | 10 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | ### Greenstar 2000 @@ -386,9 +388,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -419,27 +421,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -547,9 +549,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -580,27 +582,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -708,9 +710,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -741,27 +743,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -869,9 +871,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -902,27 +904,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -1030,9 +1032,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -1063,27 +1065,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -1191,9 +1193,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -1224,27 +1226,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -1352,9 +1354,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -1385,27 +1387,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -1513,9 +1515,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -1546,27 +1548,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -1674,9 +1676,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -1707,27 +1709,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -1835,9 +1837,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -1868,27 +1870,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -1996,9 +1998,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -2029,27 +2031,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -2157,9 +2159,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -2190,27 +2192,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -2318,9 +2320,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -2351,27 +2353,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -2479,9 +2481,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -2512,27 +2514,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -2640,9 +2642,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -2673,27 +2675,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -2801,9 +2803,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -2834,27 +2836,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -2962,9 +2964,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -2995,27 +2997,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -3123,9 +3125,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -3156,27 +3158,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -3284,9 +3286,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -3317,27 +3319,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -3445,9 +3447,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -3478,27 +3480,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -3763,27 +3765,29 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +uint8 +| dhw.disinfectduration | disinfection duration | uint8 (>=120<=240) | minutes | true | DHW | 48 | 1 | 10 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | ### Geo 5xx @@ -4041,27 +4045,29 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +uint8 +| dhw.disinfectduration | disinfection duration | uint8 (>=120<=240) | minutes | true | DHW | 48 | 1 | 10 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | ### Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2 @@ -4162,9 +4168,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -4195,27 +4201,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -4323,9 +4329,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -4356,27 +4362,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -4484,9 +4490,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -4517,27 +4523,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -4645,9 +4651,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -4678,27 +4684,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -4806,9 +4812,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -4839,27 +4845,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -4967,9 +4973,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -5000,27 +5006,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | @@ -5035,7 +5041,7 @@ uint24 |-|-|-|-|-|-|-|-|-| | netflowtemp | heat network flow temp | uint16 | C | false | DEVICE_DATA | 283 | 1 | 1/10 | | heatvalve | heating valve | uint8 | % | false | DEVICE_DATA | 284 | 1 | 1 | -| dhw.dhwvalve | valve | uint8 | % | false | DHW | 75 | 1 | 1 | +| dhw.dhwvalve | valve | uint8 | % | false | DHW | 76 | 1 | 1 | uint8 | keepwarmtemp | keep warm temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 285 | 1 | 1 | uint8 @@ -5103,9 +5109,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -5136,27 +5142,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | ### Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W @@ -5257,9 +5263,9 @@ uint16 | meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 101 | 2 | 1/10 | | dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 | | gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 278 | 2 | 1/10 | -| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 | +| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 72 | 2 | 1/10 | | nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 280 | 2 | 1/10 | -| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 | +| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 74 | 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 | uint8 @@ -5290,27 +5296,27 @@ int8 | dhw.hystoff | hysteresis off temperature | int8 (>=0<=0) | C | true | DHW | 46 | 1 | 1 | uint8 | dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 | -| dhw.circmode | circulation pump mode | enum | | true | DHW | 48 | 1 | 1 | -| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 | -| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 50 | 1 | 1/10 | -| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | -| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 52 | 1 | 1/10 | -| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 53 | 1 | 1/10 | -| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | -| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 | -| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 | -| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 | -| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 | -| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 | -| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 | -| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 | -| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 | -| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 | -| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 64 | 1 | 1/10 | -| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 65 | 1 | 1/10 | -| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 | -| dhw.starts | starts | uint24 | | false | DHW | 67 | 2 | 1 | -| dhw.workm | active time | time | minutes | false | DHW | 69 | 2 | 1 | +| dhw.circmode | circulation pump mode | enum | | true | DHW | 49 | 1 | 1 | +| dhw.circ | circulation active | boolean | | true | DHW | 50 | 1 | 1 | +| dhw.curtemp | current intern temperature | uint16 | C | false | DHW | 51 | 1 | 1/10 | +| dhw.curtemp2 | current extern temperature | uint16 | C | false | DHW | 52 | 1 | 1/10 | +| dhw.curflow | current tap water flow | uint8 | l/min | false | DHW | 53 | 1 | 1/10 | +| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 54 | 1 | 1/10 | +| dhw.storagetemp2 | storage extern temperature | uint16 | C | false | DHW | 55 | 1 | 1/10 | +| dhw.activated | activated | boolean | | true | DHW | 56 | 1 | 1 | +| dhw.onetime | one time charging | boolean | | true | DHW | 57 | 1 | 1 | +| dhw.disinfecting | disinfecting | boolean | | true | DHW | 58 | 1 | 1 | +| dhw.charging | charging | boolean | | false | DHW | 59 | 1 | 1 | +| dhw.recharging | recharging | boolean | | false | DHW | 60 | 1 | 1 | +| dhw.tempok | temperature ok | boolean | | false | DHW | 61 | 1 | 1 | +| dhw.active | active | boolean | | false | DHW | 62 | 1 | 1 | +| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 63 | 1 | 1 | +| dhw.chargepump | charge pump | boolean | | false | DHW | 64 | 1 | 1 | +| dhw.mixertemp | mixer temperature | uint16 | C | false | DHW | 65 | 1 | 1/10 | +| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 | C | false | DHW | 66 | 1 | 1/10 | +| dhw.dhwprio | dhw priority | boolean | | true | DHW | 67 | 1 | 1 | +| dhw.starts | starts | uint24 | | false | DHW | 68 | 2 | 1 | +| dhw.workm | active time | time | minutes | false | DHW | 70 | 2 | 1 | uint8 | nompower | nominal Power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 282 | 1 | 1 | | nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 | diff --git a/dump_entities.csv b/dump_entities.csv index a6e59358d..b8b44ae25 100644 --- a/dump_entities.csv +++ b/dump_entities.csv @@ -199,27 +199,28 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.disinfectduration,disinfection duration,uint8 (>=120<=240),minutes,true,number.boiler_dhw_disinfection_duration,number.boiler_dhw_disinfectduration,6,9,10,48,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "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,6,0,1,0,1 "Greenstar 2000",boiler,11,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,6,0,1,1,1 "Greenstar 2000",boiler,11,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,6,0,1,2,1 @@ -293,9 +294,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 2000",boiler,11,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Greenstar 2000",boiler,11,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Greenstar 2000",boiler,11,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Greenstar 2000",boiler,11,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Greenstar 2000",boiler,11,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Greenstar 2000",boiler,11,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Greenstar 2000",boiler,11,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Greenstar 2000",boiler,11,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Greenstar 2000",boiler,11,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Greenstar 2000",boiler,11,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Greenstar 2000",boiler,11,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -316,27 +317,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 2000",boiler,11,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Greenstar 2000",boiler,11,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Greenstar 2000",boiler,11,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Greenstar 2000",boiler,11,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Greenstar 2000",boiler,11,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Greenstar 2000",boiler,11,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Greenstar 2000",boiler,11,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Greenstar 2000",boiler,11,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Greenstar 2000",boiler,11,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Greenstar 2000",boiler,11,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Greenstar 2000",boiler,11,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Greenstar 2000",boiler,11,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Greenstar 2000",boiler,11,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Greenstar 2000",boiler,11,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Greenstar 2000",boiler,11,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Greenstar 2000",boiler,11,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Greenstar 2000",boiler,11,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Greenstar 2000",boiler,11,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Greenstar 2000",boiler,11,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Greenstar 2000",boiler,11,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Greenstar 2000",boiler,11,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Greenstar 2000",boiler,11,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Greenstar 2000",boiler,11,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Greenstar 2000",boiler,11,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Greenstar 2000",boiler,11,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Greenstar 2000",boiler,11,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Greenstar 2000",boiler,11,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Greenstar 2000",boiler,11,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Greenstar 2000",boiler,11,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Greenstar 2000",boiler,11,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Greenstar 2000",boiler,11,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Greenstar 2000",boiler,11,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Greenstar 2000",boiler,11,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Greenstar 2000",boiler,11,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Greenstar 2000",boiler,11,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Greenstar 2000",boiler,11,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Greenstar 2000",boiler,11,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Greenstar 2000",boiler,11,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Greenstar 2000",boiler,11,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Greenstar 2000",boiler,11,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Greenstar 2000",boiler,11,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Greenstar 2000",boiler,11,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Greenstar 2000",boiler,11,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Greenstar 2000",boiler,11,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Greenstar 2000",boiler,11,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Greenstar 2000",boiler,11,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Greenstar 2000",boiler,11,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Greenstar 2000",boiler,11,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -414,9 +415,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "C1200W",boiler,12,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "C1200W",boiler,12,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "C1200W",boiler,12,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"C1200W",boiler,12,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"C1200W",boiler,12,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "C1200W",boiler,12,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"C1200W",boiler,12,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"C1200W",boiler,12,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "C1200W",boiler,12,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "C1200W",boiler,12,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "C1200W",boiler,12,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -437,27 +438,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "C1200W",boiler,12,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "C1200W",boiler,12,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "C1200W",boiler,12,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"C1200W",boiler,12,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"C1200W",boiler,12,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"C1200W",boiler,12,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"C1200W",boiler,12,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"C1200W",boiler,12,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"C1200W",boiler,12,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"C1200W",boiler,12,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"C1200W",boiler,12,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"C1200W",boiler,12,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"C1200W",boiler,12,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"C1200W",boiler,12,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"C1200W",boiler,12,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"C1200W",boiler,12,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"C1200W",boiler,12,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"C1200W",boiler,12,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"C1200W",boiler,12,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"C1200W",boiler,12,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"C1200W",boiler,12,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"C1200W",boiler,12,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"C1200W",boiler,12,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"C1200W",boiler,12,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"C1200W",boiler,12,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"C1200W",boiler,12,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"C1200W",boiler,12,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"C1200W",boiler,12,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"C1200W",boiler,12,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"C1200W",boiler,12,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"C1200W",boiler,12,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"C1200W",boiler,12,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"C1200W",boiler,12,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"C1200W",boiler,12,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"C1200W",boiler,12,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"C1200W",boiler,12,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"C1200W",boiler,12,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"C1200W",boiler,12,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"C1200W",boiler,12,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"C1200W",boiler,12,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"C1200W",boiler,12,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"C1200W",boiler,12,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"C1200W",boiler,12,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"C1200W",boiler,12,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"C1200W",boiler,12,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "C1200W",boiler,12,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "C1200W",boiler,12,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "C1200W",boiler,12,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -535,9 +536,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CS5800iG",boiler,16,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "CS5800iG",boiler,16,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "CS5800iG",boiler,16,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"CS5800iG",boiler,16,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"CS5800iG",boiler,16,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "CS5800iG",boiler,16,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"CS5800iG",boiler,16,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"CS5800iG",boiler,16,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "CS5800iG",boiler,16,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "CS5800iG",boiler,16,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "CS5800iG",boiler,16,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -558,27 +559,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CS5800iG",boiler,16,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "CS5800iG",boiler,16,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "CS5800iG",boiler,16,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"CS5800iG",boiler,16,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"CS5800iG",boiler,16,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"CS5800iG",boiler,16,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"CS5800iG",boiler,16,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"CS5800iG",boiler,16,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"CS5800iG",boiler,16,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"CS5800iG",boiler,16,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"CS5800iG",boiler,16,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"CS5800iG",boiler,16,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"CS5800iG",boiler,16,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"CS5800iG",boiler,16,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"CS5800iG",boiler,16,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"CS5800iG",boiler,16,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"CS5800iG",boiler,16,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"CS5800iG",boiler,16,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"CS5800iG",boiler,16,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"CS5800iG",boiler,16,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"CS5800iG",boiler,16,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"CS5800iG",boiler,16,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"CS5800iG",boiler,16,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"CS5800iG",boiler,16,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"CS5800iG",boiler,16,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"CS5800iG",boiler,16,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"CS5800iG",boiler,16,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"CS5800iG",boiler,16,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"CS5800iG",boiler,16,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"CS5800iG",boiler,16,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"CS5800iG",boiler,16,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"CS5800iG",boiler,16,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"CS5800iG",boiler,16,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"CS5800iG",boiler,16,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"CS5800iG",boiler,16,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"CS5800iG",boiler,16,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"CS5800iG",boiler,16,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"CS5800iG",boiler,16,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"CS5800iG",boiler,16,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"CS5800iG",boiler,16,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"CS5800iG",boiler,16,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"CS5800iG",boiler,16,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"CS5800iG",boiler,16,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"CS5800iG",boiler,16,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"CS5800iG",boiler,16,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "CS5800iG",boiler,16,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "CS5800iG",boiler,16,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "CS5800iG",boiler,16,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -656,9 +657,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "BK13/BK15, Smartline, GB1*2",boiler,64,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "BK13/BK15, Smartline, GB1*2",boiler,64,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,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,6,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,6,9,1,29,1 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -679,27 +680,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "BK13/BK15, Smartline, GB1*2",boiler,64,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "BK13/BK15, Smartline, GB1*2",boiler,64,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "BK13/BK15, Smartline, GB1*2",boiler,64,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "BK13/BK15, Smartline, GB1*2",boiler,64,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -777,9 +778,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB1*5, Logamatic MC10",boiler,72,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Logano GB1*5, Logamatic MC10",boiler,72,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,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,6,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,6,9,1,29,1 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -800,27 +801,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB1*5, Logamatic MC10",boiler,72,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Logano GB1*5, Logamatic MC10",boiler,72,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Logano GB1*5, Logamatic MC10",boiler,72,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Logano GB1*5, Logamatic MC10",boiler,72,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Logano GB1*5, Logamatic MC10",boiler,72,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Logano GB1*5, Logamatic MC10",boiler,72,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Logano GB1*5, Logamatic MC10",boiler,72,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -898,9 +899,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade CM10",boiler,81,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Cascade CM10",boiler,81,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Cascade CM10",boiler,81,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Cascade CM10",boiler,81,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Cascade CM10",boiler,81,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Cascade CM10",boiler,81,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Cascade CM10",boiler,81,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Cascade CM10",boiler,81,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Cascade CM10",boiler,81,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Cascade CM10",boiler,81,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Cascade CM10",boiler,81,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -921,27 +922,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade CM10",boiler,81,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Cascade CM10",boiler,81,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Cascade CM10",boiler,81,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Cascade CM10",boiler,81,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Cascade CM10",boiler,81,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Cascade CM10",boiler,81,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Cascade CM10",boiler,81,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Cascade CM10",boiler,81,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Cascade CM10",boiler,81,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Cascade CM10",boiler,81,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Cascade CM10",boiler,81,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Cascade CM10",boiler,81,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Cascade CM10",boiler,81,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Cascade CM10",boiler,81,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Cascade CM10",boiler,81,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Cascade CM10",boiler,81,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Cascade CM10",boiler,81,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Cascade CM10",boiler,81,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Cascade CM10",boiler,81,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Cascade CM10",boiler,81,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Cascade CM10",boiler,81,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Cascade CM10",boiler,81,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Cascade CM10",boiler,81,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Cascade CM10",boiler,81,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Cascade CM10",boiler,81,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Cascade CM10",boiler,81,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Cascade CM10",boiler,81,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Cascade CM10",boiler,81,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Cascade CM10",boiler,81,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Cascade CM10",boiler,81,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Cascade CM10",boiler,81,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Cascade CM10",boiler,81,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Cascade CM10",boiler,81,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Cascade CM10",boiler,81,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Cascade CM10",boiler,81,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Cascade CM10",boiler,81,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Cascade CM10",boiler,81,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Cascade CM10",boiler,81,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Cascade CM10",boiler,81,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Cascade CM10",boiler,81,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Cascade CM10",boiler,81,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Cascade CM10",boiler,81,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Cascade CM10",boiler,81,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Cascade CM10",boiler,81,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Cascade CM10",boiler,81,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Cascade CM10",boiler,81,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Cascade CM10",boiler,81,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Cascade CM10",boiler,81,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -1019,9 +1020,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB022",boiler,84,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Logamax Plus GB022",boiler,84,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 -"Logamax Plus GB022",boiler,84,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Logamax Plus GB022",boiler,84,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Logamax Plus GB022",boiler,84,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Logamax Plus GB022",boiler,84,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Logamax Plus GB022",boiler,84,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,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,6,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,6,9,1,29,1 "Logamax Plus GB022",boiler,84,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -1042,27 +1043,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB022",boiler,84,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Logamax Plus GB022",boiler,84,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Logamax Plus GB022",boiler,84,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Logamax Plus GB022",boiler,84,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Logamax Plus GB022",boiler,84,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Logamax Plus GB022",boiler,84,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Logamax Plus GB022",boiler,84,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Logamax Plus GB022",boiler,84,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Logamax Plus GB022",boiler,84,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Logamax Plus GB022",boiler,84,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Logamax Plus GB022",boiler,84,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Logamax Plus GB022",boiler,84,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Logamax Plus GB022",boiler,84,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Logamax Plus GB022",boiler,84,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Logamax Plus GB022",boiler,84,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Logamax Plus GB022",boiler,84,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Logamax Plus GB022",boiler,84,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Logamax Plus GB022",boiler,84,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Logamax Plus GB022",boiler,84,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Logamax Plus GB022",boiler,84,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Logamax Plus GB022",boiler,84,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Logamax Plus GB022",boiler,84,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Logamax Plus GB022",boiler,84,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"Logamax Plus GB022",boiler,84,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Logamax Plus GB022",boiler,84,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Logamax Plus GB022",boiler,84,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Logamax Plus GB022",boiler,84,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Logamax Plus GB022",boiler,84,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Logamax Plus GB022",boiler,84,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Logamax Plus GB022",boiler,84,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Logamax Plus GB022",boiler,84,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Logamax Plus GB022",boiler,84,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Logamax Plus GB022",boiler,84,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Logamax Plus GB022",boiler,84,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Logamax Plus GB022",boiler,84,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Logamax Plus GB022",boiler,84,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Logamax Plus GB022",boiler,84,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Logamax Plus GB022",boiler,84,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Logamax Plus GB022",boiler,84,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Logamax Plus GB022",boiler,84,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Logamax Plus GB022",boiler,84,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Logamax Plus GB022",boiler,84,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Logamax Plus GB022",boiler,84,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Logamax Plus GB022",boiler,84,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Logamax Plus GB022",boiler,84,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Logamax Plus GB022",boiler,84,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Logamax Plus GB022",boiler,84,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -1140,9 +1141,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,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,6,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,6,0,1/10,278,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,6,9,1/10,71,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,6,9,1/10,72,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,6,0,1/10,280,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,6,9,1/10,73,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,6,9,1/10,74,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,6,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,6,9,1,29,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -1163,27 +1164,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"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,6,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,6,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,6,9,1,69,2 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"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,6,9,1,67,1 +"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,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,6,9,1,70,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,6,0,1,282,1 "Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,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,6,0,1/100,91,2 @@ -1261,9 +1262,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Topline, GB162",boiler,115,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Topline, GB162",boiler,115,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Topline, GB162",boiler,115,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Topline, GB162",boiler,115,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Topline, GB162",boiler,115,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Topline, GB162",boiler,115,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Topline, GB162",boiler,115,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Topline, GB162",boiler,115,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Topline, GB162",boiler,115,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Topline, GB162",boiler,115,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Topline, GB162",boiler,115,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -1284,27 +1285,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Topline, GB162",boiler,115,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Topline, GB162",boiler,115,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Topline, GB162",boiler,115,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Topline, GB162",boiler,115,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Topline, GB162",boiler,115,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Topline, GB162",boiler,115,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Topline, GB162",boiler,115,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Topline, GB162",boiler,115,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Topline, GB162",boiler,115,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Topline, GB162",boiler,115,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Topline, GB162",boiler,115,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Topline, GB162",boiler,115,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Topline, GB162",boiler,115,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Topline, GB162",boiler,115,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Topline, GB162",boiler,115,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Topline, GB162",boiler,115,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Topline, GB162",boiler,115,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Topline, GB162",boiler,115,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Topline, GB162",boiler,115,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Topline, GB162",boiler,115,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Topline, GB162",boiler,115,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Topline, GB162",boiler,115,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Topline, GB162",boiler,115,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Topline, GB162",boiler,115,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Topline, GB162",boiler,115,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Topline, GB162",boiler,115,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Topline, GB162",boiler,115,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Topline, GB162",boiler,115,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Topline, GB162",boiler,115,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Topline, GB162",boiler,115,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Topline, GB162",boiler,115,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Topline, GB162",boiler,115,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Topline, GB162",boiler,115,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Topline, GB162",boiler,115,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Topline, GB162",boiler,115,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Topline, GB162",boiler,115,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Topline, GB162",boiler,115,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Topline, GB162",boiler,115,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Topline, GB162",boiler,115,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Topline, GB162",boiler,115,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Topline, GB162",boiler,115,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Topline, GB162",boiler,115,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Topline, GB162",boiler,115,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Topline, GB162",boiler,115,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Topline, GB162",boiler,115,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Topline, GB162",boiler,115,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Topline, GB162",boiler,115,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Topline, GB162",boiler,115,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -1382,9 +1383,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MCM10",boiler,121,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Cascade MCM10",boiler,121,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Cascade MCM10",boiler,121,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Cascade MCM10",boiler,121,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Cascade MCM10",boiler,121,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Cascade MCM10",boiler,121,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Cascade MCM10",boiler,121,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Cascade MCM10",boiler,121,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Cascade MCM10",boiler,121,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Cascade MCM10",boiler,121,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Cascade MCM10",boiler,121,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -1405,27 +1406,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MCM10",boiler,121,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Cascade MCM10",boiler,121,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Cascade MCM10",boiler,121,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Cascade MCM10",boiler,121,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Cascade MCM10",boiler,121,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Cascade MCM10",boiler,121,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Cascade MCM10",boiler,121,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Cascade MCM10",boiler,121,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Cascade MCM10",boiler,121,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Cascade MCM10",boiler,121,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Cascade MCM10",boiler,121,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Cascade MCM10",boiler,121,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Cascade MCM10",boiler,121,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Cascade MCM10",boiler,121,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Cascade MCM10",boiler,121,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Cascade MCM10",boiler,121,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Cascade MCM10",boiler,121,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Cascade MCM10",boiler,121,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Cascade MCM10",boiler,121,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Cascade MCM10",boiler,121,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Cascade MCM10",boiler,121,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Cascade MCM10",boiler,121,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Cascade MCM10",boiler,121,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Cascade MCM10",boiler,121,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Cascade MCM10",boiler,121,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Cascade MCM10",boiler,121,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Cascade MCM10",boiler,121,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Cascade MCM10",boiler,121,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Cascade MCM10",boiler,121,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Cascade MCM10",boiler,121,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Cascade MCM10",boiler,121,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Cascade MCM10",boiler,121,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Cascade MCM10",boiler,121,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Cascade MCM10",boiler,121,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Cascade MCM10",boiler,121,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Cascade MCM10",boiler,121,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Cascade MCM10",boiler,121,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Cascade MCM10",boiler,121,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Cascade MCM10",boiler,121,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Cascade MCM10",boiler,121,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Cascade MCM10",boiler,121,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Cascade MCM10",boiler,121,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Cascade MCM10",boiler,121,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Cascade MCM10",boiler,121,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Cascade MCM10",boiler,121,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Cascade MCM10",boiler,121,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Cascade MCM10",boiler,121,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Cascade MCM10",boiler,121,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -1503,9 +1504,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Proline",boiler,122,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Proline",boiler,122,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Proline",boiler,122,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Proline",boiler,122,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Proline",boiler,122,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Proline",boiler,122,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Proline",boiler,122,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Proline",boiler,122,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Proline",boiler,122,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Proline",boiler,122,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Proline",boiler,122,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -1526,27 +1527,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Proline",boiler,122,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Proline",boiler,122,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Proline",boiler,122,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Proline",boiler,122,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Proline",boiler,122,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Proline",boiler,122,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Proline",boiler,122,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Proline",boiler,122,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Proline",boiler,122,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Proline",boiler,122,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Proline",boiler,122,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Proline",boiler,122,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Proline",boiler,122,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Proline",boiler,122,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Proline",boiler,122,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Proline",boiler,122,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Proline",boiler,122,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Proline",boiler,122,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Proline",boiler,122,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Proline",boiler,122,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Proline",boiler,122,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Proline",boiler,122,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Proline",boiler,122,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Proline",boiler,122,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Proline",boiler,122,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Proline",boiler,122,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Proline",boiler,122,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Proline",boiler,122,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Proline",boiler,122,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Proline",boiler,122,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Proline",boiler,122,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Proline",boiler,122,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Proline",boiler,122,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Proline",boiler,122,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Proline",boiler,122,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Proline",boiler,122,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Proline",boiler,122,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Proline",boiler,122,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Proline",boiler,122,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Proline",boiler,122,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Proline",boiler,122,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Proline",boiler,122,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Proline",boiler,122,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Proline",boiler,122,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Proline",boiler,122,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Proline",boiler,122,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Proline",boiler,122,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Proline",boiler,122,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -1624,9 +1625,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,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,6,9,1/10,71,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,6,9,1/10,72,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,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,6,9,1/10,73,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,6,9,1/10,74,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,6,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,6,9,1,29,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -1647,27 +1648,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"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,6,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,6,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,6,9,1,69,2 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"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,6,9,1,67,1 +"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,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,6,9,1,70,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -1745,9 +1746,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB212",boiler,131,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "GB212",boiler,131,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "GB212",boiler,131,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"GB212",boiler,131,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"GB212",boiler,131,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "GB212",boiler,131,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"GB212",boiler,131,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"GB212",boiler,131,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "GB212",boiler,131,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "GB212",boiler,131,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "GB212",boiler,131,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -1768,27 +1769,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GB212",boiler,131,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "GB212",boiler,131,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "GB212",boiler,131,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"GB212",boiler,131,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"GB212",boiler,131,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"GB212",boiler,131,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"GB212",boiler,131,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"GB212",boiler,131,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"GB212",boiler,131,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"GB212",boiler,131,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"GB212",boiler,131,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"GB212",boiler,131,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"GB212",boiler,131,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"GB212",boiler,131,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"GB212",boiler,131,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"GB212",boiler,131,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"GB212",boiler,131,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"GB212",boiler,131,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"GB212",boiler,131,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"GB212",boiler,131,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"GB212",boiler,131,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"GB212",boiler,131,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"GB212",boiler,131,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"GB212",boiler,131,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"GB212",boiler,131,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"GB212",boiler,131,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"GB212",boiler,131,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"GB212",boiler,131,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"GB212",boiler,131,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"GB212",boiler,131,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"GB212",boiler,131,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"GB212",boiler,131,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"GB212",boiler,131,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"GB212",boiler,131,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"GB212",boiler,131,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"GB212",boiler,131,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"GB212",boiler,131,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"GB212",boiler,131,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"GB212",boiler,131,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"GB212",boiler,131,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"GB212",boiler,131,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"GB212",boiler,131,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"GB212",boiler,131,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"GB212",boiler,131,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"GB212",boiler,131,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "GB212",boiler,131,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "GB212",boiler,131,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "GB212",boiler,131,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -1866,9 +1867,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GC7000F",boiler,132,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "GC7000F",boiler,132,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "GC7000F",boiler,132,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"GC7000F",boiler,132,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"GC7000F",boiler,132,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "GC7000F",boiler,132,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"GC7000F",boiler,132,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"GC7000F",boiler,132,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "GC7000F",boiler,132,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "GC7000F",boiler,132,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "GC7000F",boiler,132,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -1889,27 +1890,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "GC7000F",boiler,132,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "GC7000F",boiler,132,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "GC7000F",boiler,132,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"GC7000F",boiler,132,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"GC7000F",boiler,132,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"GC7000F",boiler,132,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"GC7000F",boiler,132,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"GC7000F",boiler,132,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"GC7000F",boiler,132,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"GC7000F",boiler,132,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"GC7000F",boiler,132,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"GC7000F",boiler,132,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"GC7000F",boiler,132,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"GC7000F",boiler,132,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"GC7000F",boiler,132,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"GC7000F",boiler,132,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"GC7000F",boiler,132,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"GC7000F",boiler,132,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"GC7000F",boiler,132,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"GC7000F",boiler,132,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"GC7000F",boiler,132,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"GC7000F",boiler,132,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"GC7000F",boiler,132,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"GC7000F",boiler,132,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"GC7000F",boiler,132,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"GC7000F",boiler,132,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"GC7000F",boiler,132,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"GC7000F",boiler,132,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"GC7000F",boiler,132,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"GC7000F",boiler,132,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"GC7000F",boiler,132,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"GC7000F",boiler,132,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"GC7000F",boiler,132,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"GC7000F",boiler,132,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"GC7000F",boiler,132,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"GC7000F",boiler,132,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"GC7000F",boiler,132,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"GC7000F",boiler,132,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"GC7000F",boiler,132,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"GC7000F",boiler,132,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"GC7000F",boiler,132,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"GC7000F",boiler,132,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"GC7000F",boiler,132,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"GC7000F",boiler,132,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"GC7000F",boiler,132,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "GC7000F",boiler,132,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "GC7000F",boiler,132,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "GC7000F",boiler,132,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -1987,9 +1988,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB125/KB195i, Logamatic MC110",boiler,133,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,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,6,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,6,9,1,29,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -2010,27 +2011,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -2108,9 +2109,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 30Ri Compact",boiler,154,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Greenstar 30Ri Compact",boiler,154,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 -"Greenstar 30Ri Compact",boiler,154,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Greenstar 30Ri Compact",boiler,154,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Greenstar 30Ri Compact",boiler,154,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Greenstar 30Ri Compact",boiler,154,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Greenstar 30Ri Compact",boiler,154,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,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,6,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,6,9,1,29,1 "Greenstar 30Ri Compact",boiler,154,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -2131,27 +2132,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar 30Ri Compact",boiler,154,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Greenstar 30Ri Compact",boiler,154,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Greenstar 30Ri Compact",boiler,154,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Greenstar 30Ri Compact",boiler,154,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Greenstar 30Ri Compact",boiler,154,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Greenstar 30Ri Compact",boiler,154,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Greenstar 30Ri Compact",boiler,154,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Greenstar 30Ri Compact",boiler,154,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Greenstar 30Ri Compact",boiler,154,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Greenstar 30Ri Compact",boiler,154,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Greenstar 30Ri Compact",boiler,154,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Greenstar 30Ri Compact",boiler,154,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Greenstar 30Ri Compact",boiler,154,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Greenstar 30Ri Compact",boiler,154,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Greenstar 30Ri Compact",boiler,154,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Greenstar 30Ri Compact",boiler,154,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Greenstar 30Ri Compact",boiler,154,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Greenstar 30Ri Compact",boiler,154,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Greenstar 30Ri Compact",boiler,154,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Greenstar 30Ri Compact",boiler,154,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Greenstar 30Ri Compact",boiler,154,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Greenstar 30Ri Compact",boiler,154,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Greenstar 30Ri Compact",boiler,154,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"Greenstar 30Ri Compact",boiler,154,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Greenstar 30Ri Compact",boiler,154,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Greenstar 30Ri Compact",boiler,154,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Greenstar 30Ri Compact",boiler,154,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Greenstar 30Ri Compact",boiler,154,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Greenstar 30Ri Compact",boiler,154,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Greenstar 30Ri Compact",boiler,154,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Greenstar 30Ri Compact",boiler,154,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Greenstar 30Ri Compact",boiler,154,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Greenstar 30Ri Compact",boiler,154,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Greenstar 30Ri Compact",boiler,154,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Greenstar 30Ri Compact",boiler,154,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Greenstar 30Ri Compact",boiler,154,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Greenstar 30Ri Compact",boiler,154,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Greenstar 30Ri Compact",boiler,154,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Greenstar 30Ri Compact",boiler,154,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Greenstar 30Ri Compact",boiler,154,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Greenstar 30Ri Compact",boiler,154,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Greenstar 30Ri Compact",boiler,154,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Greenstar 30Ri Compact",boiler,154,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Greenstar 30Ri Compact",boiler,154,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Greenstar 30Ri Compact",boiler,154,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Greenstar 30Ri Compact",boiler,154,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Greenstar 30Ri Compact",boiler,154,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -2229,9 +2230,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Suprapur-o",boiler,155,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Suprapur-o",boiler,155,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Suprapur-o",boiler,155,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Suprapur-o",boiler,155,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Suprapur-o",boiler,155,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Suprapur-o",boiler,155,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Suprapur-o",boiler,155,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Suprapur-o",boiler,155,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Suprapur-o",boiler,155,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Suprapur-o",boiler,155,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Suprapur-o",boiler,155,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -2252,27 +2253,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Suprapur-o",boiler,155,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Suprapur-o",boiler,155,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Suprapur-o",boiler,155,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Suprapur-o",boiler,155,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Suprapur-o",boiler,155,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Suprapur-o",boiler,155,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Suprapur-o",boiler,155,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Suprapur-o",boiler,155,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Suprapur-o",boiler,155,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Suprapur-o",boiler,155,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Suprapur-o",boiler,155,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Suprapur-o",boiler,155,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Suprapur-o",boiler,155,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Suprapur-o",boiler,155,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Suprapur-o",boiler,155,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Suprapur-o",boiler,155,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Suprapur-o",boiler,155,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Suprapur-o",boiler,155,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Suprapur-o",boiler,155,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Suprapur-o",boiler,155,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Suprapur-o",boiler,155,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Suprapur-o",boiler,155,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Suprapur-o",boiler,155,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Suprapur-o",boiler,155,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Suprapur-o",boiler,155,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Suprapur-o",boiler,155,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Suprapur-o",boiler,155,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Suprapur-o",boiler,155,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Suprapur-o",boiler,155,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Suprapur-o",boiler,155,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Suprapur-o",boiler,155,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Suprapur-o",boiler,155,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Suprapur-o",boiler,155,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Suprapur-o",boiler,155,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Suprapur-o",boiler,155,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Suprapur-o",boiler,155,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Suprapur-o",boiler,155,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Suprapur-o",boiler,155,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Suprapur-o",boiler,155,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Suprapur-o",boiler,155,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Suprapur-o",boiler,155,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Suprapur-o",boiler,155,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Suprapur-o",boiler,155,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Suprapur-o",boiler,155,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Suprapur-o",boiler,155,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Suprapur-o",boiler,155,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Suprapur-o",boiler,155,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Suprapur-o",boiler,155,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -2350,9 +2351,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cerapur Aero",boiler,167,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Cerapur Aero",boiler,167,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Cerapur Aero",boiler,167,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Cerapur Aero",boiler,167,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Cerapur Aero",boiler,167,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Cerapur Aero",boiler,167,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Cerapur Aero",boiler,167,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Cerapur Aero",boiler,167,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Cerapur Aero",boiler,167,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Cerapur Aero",boiler,167,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Cerapur Aero",boiler,167,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -2373,27 +2374,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cerapur Aero",boiler,167,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Cerapur Aero",boiler,167,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Cerapur Aero",boiler,167,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Cerapur Aero",boiler,167,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Cerapur Aero",boiler,167,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Cerapur Aero",boiler,167,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Cerapur Aero",boiler,167,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Cerapur Aero",boiler,167,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Cerapur Aero",boiler,167,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Cerapur Aero",boiler,167,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Cerapur Aero",boiler,167,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Cerapur Aero",boiler,167,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Cerapur Aero",boiler,167,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Cerapur Aero",boiler,167,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Cerapur Aero",boiler,167,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Cerapur Aero",boiler,167,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Cerapur Aero",boiler,167,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Cerapur Aero",boiler,167,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Cerapur Aero",boiler,167,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Cerapur Aero",boiler,167,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Cerapur Aero",boiler,167,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Cerapur Aero",boiler,167,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Cerapur Aero",boiler,167,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Cerapur Aero",boiler,167,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Cerapur Aero",boiler,167,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Cerapur Aero",boiler,167,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Cerapur Aero",boiler,167,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Cerapur Aero",boiler,167,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Cerapur Aero",boiler,167,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Cerapur Aero",boiler,167,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Cerapur Aero",boiler,167,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Cerapur Aero",boiler,167,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Cerapur Aero",boiler,167,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Cerapur Aero",boiler,167,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Cerapur Aero",boiler,167,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Cerapur Aero",boiler,167,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Cerapur Aero",boiler,167,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Cerapur Aero",boiler,167,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Cerapur Aero",boiler,167,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Cerapur Aero",boiler,167,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Cerapur Aero",boiler,167,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Cerapur Aero",boiler,167,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Cerapur Aero",boiler,167,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Cerapur Aero",boiler,167,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Cerapur Aero",boiler,167,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Cerapur Aero",boiler,167,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Cerapur Aero",boiler,167,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Cerapur Aero",boiler,167,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -2471,9 +2472,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Hybrid Heatpump",boiler,168,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Hybrid Heatpump",boiler,168,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Hybrid Heatpump",boiler,168,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Hybrid Heatpump",boiler,168,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Hybrid Heatpump",boiler,168,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Hybrid Heatpump",boiler,168,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Hybrid Heatpump",boiler,168,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Hybrid Heatpump",boiler,168,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Hybrid Heatpump",boiler,168,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Hybrid Heatpump",boiler,168,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Hybrid Heatpump",boiler,168,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -2494,27 +2495,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Hybrid Heatpump",boiler,168,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Hybrid Heatpump",boiler,168,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Hybrid Heatpump",boiler,168,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Hybrid Heatpump",boiler,168,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Hybrid Heatpump",boiler,168,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Hybrid Heatpump",boiler,168,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Hybrid Heatpump",boiler,168,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Hybrid Heatpump",boiler,168,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Hybrid Heatpump",boiler,168,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Hybrid Heatpump",boiler,168,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Hybrid Heatpump",boiler,168,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Hybrid Heatpump",boiler,168,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Hybrid Heatpump",boiler,168,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Hybrid Heatpump",boiler,168,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Hybrid Heatpump",boiler,168,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Hybrid Heatpump",boiler,168,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Hybrid Heatpump",boiler,168,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Hybrid Heatpump",boiler,168,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Hybrid Heatpump",boiler,168,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Hybrid Heatpump",boiler,168,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Hybrid Heatpump",boiler,168,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Hybrid Heatpump",boiler,168,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Hybrid Heatpump",boiler,168,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Hybrid Heatpump",boiler,168,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Hybrid Heatpump",boiler,168,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Hybrid Heatpump",boiler,168,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Hybrid Heatpump",boiler,168,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Hybrid Heatpump",boiler,168,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Hybrid Heatpump",boiler,168,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Hybrid Heatpump",boiler,168,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Hybrid Heatpump",boiler,168,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Hybrid Heatpump",boiler,168,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Hybrid Heatpump",boiler,168,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Hybrid Heatpump",boiler,168,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Hybrid Heatpump",boiler,168,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Hybrid Heatpump",boiler,168,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Hybrid Heatpump",boiler,168,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Hybrid Heatpump",boiler,168,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Hybrid Heatpump",boiler,168,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Hybrid Heatpump",boiler,168,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Hybrid Heatpump",boiler,168,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Hybrid Heatpump",boiler,168,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Hybrid Heatpump",boiler,168,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Hybrid Heatpump",boiler,168,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Hybrid Heatpump",boiler,168,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Hybrid Heatpump",boiler,168,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Hybrid Heatpump",boiler,168,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Hybrid Heatpump",boiler,168,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -2592,9 +2593,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB212",boiler,170,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Logano GB212",boiler,170,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Logano GB212",boiler,170,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Logano GB212",boiler,170,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Logano GB212",boiler,170,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Logano GB212",boiler,170,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Logano GB212",boiler,170,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Logano GB212",boiler,170,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Logano GB212",boiler,170,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Logano GB212",boiler,170,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Logano GB212",boiler,170,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -2615,27 +2616,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logano GB212",boiler,170,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Logano GB212",boiler,170,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Logano GB212",boiler,170,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Logano GB212",boiler,170,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Logano GB212",boiler,170,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Logano GB212",boiler,170,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Logano GB212",boiler,170,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Logano GB212",boiler,170,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Logano GB212",boiler,170,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Logano GB212",boiler,170,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Logano GB212",boiler,170,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Logano GB212",boiler,170,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Logano GB212",boiler,170,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Logano GB212",boiler,170,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Logano GB212",boiler,170,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Logano GB212",boiler,170,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Logano GB212",boiler,170,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Logano GB212",boiler,170,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Logano GB212",boiler,170,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Logano GB212",boiler,170,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Logano GB212",boiler,170,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Logano GB212",boiler,170,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Logano GB212",boiler,170,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Logano GB212",boiler,170,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Logano GB212",boiler,170,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Logano GB212",boiler,170,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Logano GB212",boiler,170,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Logano GB212",boiler,170,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Logano GB212",boiler,170,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Logano GB212",boiler,170,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Logano GB212",boiler,170,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Logano GB212",boiler,170,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Logano GB212",boiler,170,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Logano GB212",boiler,170,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Logano GB212",boiler,170,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Logano GB212",boiler,170,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Logano GB212",boiler,170,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Logano GB212",boiler,170,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Logano GB212",boiler,170,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Logano GB212",boiler,170,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Logano GB212",boiler,170,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Logano GB212",boiler,170,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Logano GB212",boiler,170,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Logano GB212",boiler,170,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Logano GB212",boiler,170,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Logano GB212",boiler,170,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Logano GB212",boiler,170,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Logano GB212",boiler,170,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -2840,27 +2841,28 @@ 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.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"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,6,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,6,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,6,9,1,69,2 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.disinfectduration,disinfection duration,uint8 (>=120<=240),minutes,true,number.boiler_dhw_disinfection_duration,number.boiler_dhw_disinfectduration,6,9,10,48,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"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,6,9,1,67,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,6,9,1,68,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,6,9,1,70,2 "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,6,0,1,0,1 "Geo 5xx",boiler,173,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,6,0,1,1,1 "Geo 5xx",boiler,173,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,6,0,1,2,1 @@ -3061,27 +3063,28 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Geo 5xx",boiler,173,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Geo 5xx",boiler,173,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Geo 5xx",boiler,173,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Geo 5xx",boiler,173,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Geo 5xx",boiler,173,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Geo 5xx",boiler,173,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Geo 5xx",boiler,173,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Geo 5xx",boiler,173,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Geo 5xx",boiler,173,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Geo 5xx",boiler,173,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Geo 5xx",boiler,173,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Geo 5xx",boiler,173,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Geo 5xx",boiler,173,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Geo 5xx",boiler,173,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Geo 5xx",boiler,173,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Geo 5xx",boiler,173,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Geo 5xx",boiler,173,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Geo 5xx",boiler,173,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Geo 5xx",boiler,173,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Geo 5xx",boiler,173,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Geo 5xx",boiler,173,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Geo 5xx",boiler,173,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Geo 5xx",boiler,173,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Geo 5xx",boiler,173,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Geo 5xx",boiler,173,dhw.disinfectduration,disinfection duration,uint8 (>=120<=240),minutes,true,number.boiler_dhw_disinfection_duration,number.boiler_dhw_disinfectduration,6,9,10,48,1 +"Geo 5xx",boiler,173,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Geo 5xx",boiler,173,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Geo 5xx",boiler,173,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Geo 5xx",boiler,173,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Geo 5xx",boiler,173,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Geo 5xx",boiler,173,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Geo 5xx",boiler,173,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Geo 5xx",boiler,173,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Geo 5xx",boiler,173,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Geo 5xx",boiler,173,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Geo 5xx",boiler,173,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Geo 5xx",boiler,173,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Geo 5xx",boiler,173,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Geo 5xx",boiler,173,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Geo 5xx",boiler,173,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Geo 5xx",boiler,173,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Geo 5xx",boiler,173,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Geo 5xx",boiler,173,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Geo 5xx",boiler,173,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Geo 5xx",boiler,173,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Geo 5xx",boiler,173,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "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,6,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,6,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,6,0,1,2,1 @@ -3155,9 +3158,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,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,6,9,1/10,71,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,6,9,1/10,72,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,6,0,1/10,280,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,6,9,1/10,73,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,6,9,1/10,74,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,6,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,6,9,1,29,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -3178,27 +3181,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"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,6,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,6,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,6,9,1,69,2 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"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,6,9,1,67,1 +"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,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,6,9,1,70,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,6,0,1,282,1 "Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,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,6,0,1/100,91,2 @@ -3276,9 +3279,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax U122, Cerapur",boiler,203,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Logamax U122, Cerapur",boiler,203,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 -"Logamax U122, Cerapur",boiler,203,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Logamax U122, Cerapur",boiler,203,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Logamax U122, Cerapur",boiler,203,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Logamax U122, Cerapur",boiler,203,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Logamax U122, Cerapur",boiler,203,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,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,6,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,6,9,1,29,1 "Logamax U122, Cerapur",boiler,203,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -3299,27 +3302,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax U122, Cerapur",boiler,203,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Logamax U122, Cerapur",boiler,203,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Logamax U122, Cerapur",boiler,203,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Logamax U122, Cerapur",boiler,203,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Logamax U122, Cerapur",boiler,203,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Logamax U122, Cerapur",boiler,203,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Logamax U122, Cerapur",boiler,203,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Logamax U122, Cerapur",boiler,203,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Logamax U122, Cerapur",boiler,203,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Logamax U122, Cerapur",boiler,203,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Logamax U122, Cerapur",boiler,203,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Logamax U122, Cerapur",boiler,203,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Logamax U122, Cerapur",boiler,203,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Logamax U122, Cerapur",boiler,203,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Logamax U122, Cerapur",boiler,203,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Logamax U122, Cerapur",boiler,203,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Logamax U122, Cerapur",boiler,203,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Logamax U122, Cerapur",boiler,203,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Logamax U122, Cerapur",boiler,203,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Logamax U122, Cerapur",boiler,203,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Logamax U122, Cerapur",boiler,203,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Logamax U122, Cerapur",boiler,203,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Logamax U122, Cerapur",boiler,203,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"Logamax U122, Cerapur",boiler,203,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Logamax U122, Cerapur",boiler,203,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Logamax U122, Cerapur",boiler,203,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Logamax U122, Cerapur",boiler,203,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Logamax U122, Cerapur",boiler,203,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Logamax U122, Cerapur",boiler,203,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Logamax U122, Cerapur",boiler,203,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Logamax U122, Cerapur",boiler,203,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Logamax U122, Cerapur",boiler,203,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Logamax U122, Cerapur",boiler,203,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Logamax U122, Cerapur",boiler,203,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Logamax U122, Cerapur",boiler,203,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Logamax U122, Cerapur",boiler,203,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Logamax U122, Cerapur",boiler,203,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Logamax U122, Cerapur",boiler,203,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Logamax U122, Cerapur",boiler,203,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Logamax U122, Cerapur",boiler,203,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Logamax U122, Cerapur",boiler,203,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Logamax U122, Cerapur",boiler,203,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Logamax U122, Cerapur",boiler,203,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Logamax U122, Cerapur",boiler,203,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Logamax U122, Cerapur",boiler,203,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Logamax U122, Cerapur",boiler,203,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Logamax U122, Cerapur",boiler,203,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -3397,9 +3400,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Ecomline Excellent",boiler,206,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Ecomline Excellent",boiler,206,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Ecomline Excellent",boiler,206,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Ecomline Excellent",boiler,206,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Ecomline Excellent",boiler,206,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Ecomline Excellent",boiler,206,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Ecomline Excellent",boiler,206,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Ecomline Excellent",boiler,206,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Ecomline Excellent",boiler,206,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Ecomline Excellent",boiler,206,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Ecomline Excellent",boiler,206,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -3420,27 +3423,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Ecomline Excellent",boiler,206,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Ecomline Excellent",boiler,206,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Ecomline Excellent",boiler,206,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Ecomline Excellent",boiler,206,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Ecomline Excellent",boiler,206,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Ecomline Excellent",boiler,206,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Ecomline Excellent",boiler,206,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Ecomline Excellent",boiler,206,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Ecomline Excellent",boiler,206,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Ecomline Excellent",boiler,206,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Ecomline Excellent",boiler,206,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Ecomline Excellent",boiler,206,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Ecomline Excellent",boiler,206,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Ecomline Excellent",boiler,206,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Ecomline Excellent",boiler,206,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Ecomline Excellent",boiler,206,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Ecomline Excellent",boiler,206,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Ecomline Excellent",boiler,206,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Ecomline Excellent",boiler,206,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Ecomline Excellent",boiler,206,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Ecomline Excellent",boiler,206,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Ecomline Excellent",boiler,206,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Ecomline Excellent",boiler,206,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Ecomline Excellent",boiler,206,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Ecomline Excellent",boiler,206,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Ecomline Excellent",boiler,206,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Ecomline Excellent",boiler,206,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Ecomline Excellent",boiler,206,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Ecomline Excellent",boiler,206,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Ecomline Excellent",boiler,206,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Ecomline Excellent",boiler,206,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Ecomline Excellent",boiler,206,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Ecomline Excellent",boiler,206,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Ecomline Excellent",boiler,206,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Ecomline Excellent",boiler,206,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Ecomline Excellent",boiler,206,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Ecomline Excellent",boiler,206,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Ecomline Excellent",boiler,206,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Ecomline Excellent",boiler,206,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Ecomline Excellent",boiler,206,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Ecomline Excellent",boiler,206,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Ecomline Excellent",boiler,206,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Ecomline Excellent",boiler,206,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Ecomline Excellent",boiler,206,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Ecomline Excellent",boiler,206,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Ecomline Excellent",boiler,206,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Ecomline Excellent",boiler,206,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Ecomline Excellent",boiler,206,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -3518,9 +3521,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,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,6,9,1/10,71,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,6,9,1/10,72,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,6,0,1/10,280,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,6,9,1/10,73,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,6,9,1/10,74,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,6,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,6,9,1,29,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -3541,27 +3544,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"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,6,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,6,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,6,9,1,69,2 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"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,6,9,1,67,1 +"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,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,6,9,1,70,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,6,0,1,282,1 "Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,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,6,0,1/100,91,2 @@ -3639,9 +3642,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MC400",boiler,210,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Cascade MC400",boiler,210,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "Cascade MC400",boiler,210,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"Cascade MC400",boiler,210,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Cascade MC400",boiler,210,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Cascade MC400",boiler,210,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Cascade MC400",boiler,210,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Cascade MC400",boiler,210,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "Cascade MC400",boiler,210,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "Cascade MC400",boiler,210,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "Cascade MC400",boiler,210,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -3662,27 +3665,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Cascade MC400",boiler,210,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Cascade MC400",boiler,210,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Cascade MC400",boiler,210,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Cascade MC400",boiler,210,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Cascade MC400",boiler,210,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Cascade MC400",boiler,210,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Cascade MC400",boiler,210,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Cascade MC400",boiler,210,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Cascade MC400",boiler,210,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Cascade MC400",boiler,210,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Cascade MC400",boiler,210,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Cascade MC400",boiler,210,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Cascade MC400",boiler,210,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Cascade MC400",boiler,210,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Cascade MC400",boiler,210,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Cascade MC400",boiler,210,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Cascade MC400",boiler,210,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Cascade MC400",boiler,210,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Cascade MC400",boiler,210,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Cascade MC400",boiler,210,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Cascade MC400",boiler,210,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Cascade MC400",boiler,210,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Cascade MC400",boiler,210,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"Cascade MC400",boiler,210,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"Cascade MC400",boiler,210,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Cascade MC400",boiler,210,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Cascade MC400",boiler,210,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Cascade MC400",boiler,210,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Cascade MC400",boiler,210,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Cascade MC400",boiler,210,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Cascade MC400",boiler,210,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Cascade MC400",boiler,210,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Cascade MC400",boiler,210,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Cascade MC400",boiler,210,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Cascade MC400",boiler,210,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Cascade MC400",boiler,210,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Cascade MC400",boiler,210,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Cascade MC400",boiler,210,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Cascade MC400",boiler,210,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Cascade MC400",boiler,210,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Cascade MC400",boiler,210,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Cascade MC400",boiler,210,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Cascade MC400",boiler,210,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Cascade MC400",boiler,210,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Cascade MC400",boiler,210,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "Cascade MC400",boiler,210,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "Cascade MC400",boiler,210,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "Cascade MC400",boiler,210,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 @@ -3760,9 +3763,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "EasyControl Adapter",boiler,211,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "EasyControl Adapter",boiler,211,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,9,1/10,2,2 "EasyControl Adapter",boiler,211,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,6,0,1/10,278,2 -"EasyControl Adapter",boiler,211,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"EasyControl Adapter",boiler,211,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "EasyControl Adapter",boiler,211,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"EasyControl Adapter",boiler,211,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"EasyControl Adapter",boiler,211,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,2 "EasyControl Adapter",boiler,211,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,6,9,1,28,1 "EasyControl Adapter",boiler,211,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,6,9,1,29,1 "EasyControl Adapter",boiler,211,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -3783,34 +3786,34 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "EasyControl Adapter",boiler,211,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "EasyControl Adapter",boiler,211,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "EasyControl Adapter",boiler,211,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"EasyControl Adapter",boiler,211,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"EasyControl Adapter",boiler,211,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"EasyControl Adapter",boiler,211,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"EasyControl Adapter",boiler,211,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"EasyControl Adapter",boiler,211,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"EasyControl Adapter",boiler,211,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"EasyControl Adapter",boiler,211,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"EasyControl Adapter",boiler,211,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"EasyControl Adapter",boiler,211,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"EasyControl Adapter",boiler,211,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"EasyControl Adapter",boiler,211,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"EasyControl Adapter",boiler,211,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"EasyControl Adapter",boiler,211,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"EasyControl Adapter",boiler,211,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"EasyControl Adapter",boiler,211,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"EasyControl Adapter",boiler,211,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"EasyControl Adapter",boiler,211,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"EasyControl Adapter",boiler,211,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"EasyControl Adapter",boiler,211,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"EasyControl Adapter",boiler,211,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,67,2 -"EasyControl Adapter",boiler,211,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,69,2 +"EasyControl Adapter",boiler,211,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"EasyControl Adapter",boiler,211,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"EasyControl Adapter",boiler,211,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"EasyControl Adapter",boiler,211,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"EasyControl Adapter",boiler,211,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"EasyControl Adapter",boiler,211,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"EasyControl Adapter",boiler,211,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"EasyControl Adapter",boiler,211,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"EasyControl Adapter",boiler,211,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"EasyControl Adapter",boiler,211,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"EasyControl Adapter",boiler,211,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"EasyControl Adapter",boiler,211,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"EasyControl Adapter",boiler,211,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"EasyControl Adapter",boiler,211,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"EasyControl Adapter",boiler,211,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"EasyControl Adapter",boiler,211,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"EasyControl Adapter",boiler,211,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"EasyControl Adapter",boiler,211,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"EasyControl Adapter",boiler,211,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"EasyControl Adapter",boiler,211,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"EasyControl Adapter",boiler,211,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "EasyControl Adapter",boiler,211,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,6,0,1,282,1 "EasyControl Adapter",boiler,211,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,2 "EasyControl Adapter",boiler,211,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,6,0,1/100,91,2 "EasyControl Adapter",boiler,211,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,6,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,6,0,1/10,283,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,heatvalve,heating valve,uint8,%,false,sensor.boiler_heating_valve,sensor.boiler_heatvalve,6,0,1,284,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.dhwvalve,valve,uint8,%,false,sensor.boiler_dhw_valve,sensor.boiler_dhw_dhwvalve,6,9,1,75,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.dhwvalve,valve,uint8,%,false,sensor.boiler_dhw_valve,sensor.boiler_dhw_dhwvalve,6,9,1,76,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,6,0,1,285,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,6,0,1,286,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,heating,heating,boolean, ,false,binary_sensor.boiler_heating,binary_sensor.boiler_heating,6,0,1,287,1 @@ -3865,9 +3868,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar HIU, Logamax kompakt WS170",boiler,219,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,2 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,6,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,6,0,1/10,278,2 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,71,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,6,9,1/10,72,2 "Greenstar HIU, Logamax kompakt WS170",boiler,219,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,6,0,1/10,280,2 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,73,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,6,9,1/10,74,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,6,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,6,9,1,29,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -3888,27 +3891,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,66,1 -"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,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,6,9,1,69,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,6,9,1,67,1 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,2 +"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,6,9,1,70,2 "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,6,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,6,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,6,0,1,2,1 @@ -3982,9 +3985,9 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,6,0,1/10,101,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,6,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,6,0,1/10,278,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,6,9,1/10,71,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,6,9,1/10,72,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,6,0,1/10,280,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,6,9,1/10,73,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,6,9,1/10,74,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,6,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,6,9,1,29,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,6,9,1,30,1 @@ -4005,27 +4008,27 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,6,9,1,45,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.hystoff,hysteresis off temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,6,9,1,46,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,6,9,1,47,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,48,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,49,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,50,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,51,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,52,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,53,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,54,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,55,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,56,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,57,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,58,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,59,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,60,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,61,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,62,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,63,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,64,1 -"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,65,1 -"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,6,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,6,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,6,9,1,69,2 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,6,9,1,49,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,6,9,1,50,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.curtemp,current intern temperature,uint16,C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,6,9,1/10,51,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.curtemp2,current extern temperature,uint16,C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,6,9,1/10,52,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.curflow,current tap water flow,uint8,l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,6,9,1/10,53,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,6,9,1/10,54,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.storagetemp2,storage extern temperature,uint16,C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,6,9,1/10,55,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,6,9,1,56,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.onetime,one time charging,boolean (>=0<=0), ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,6,9,1,57,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,6,9,1,58,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,6,9,1,59,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,6,9,1,60,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,6,9,1,61,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,6,9,1,62,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,6,9,1,63,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,6,9,1,64,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,6,9,1/10,65,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16,C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,6,9,1/10,66,1 +"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,6,9,1,67,1 +"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,6,9,1,68,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,6,9,1,70,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,6,0,1,282,1 "Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,6,0,1/100,89,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,6,0,1/100,91,2 -- 2.54.0 From f1e158d2a6b73106d604574964b43a91e109056c Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 12 Oct 2026 19:50:50 +0200 Subject: [PATCH 093/148] update --- CHANGELOG_LATEST.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index c27c7992c..2ea8c72fc 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -54,6 +54,7 @@ This release is based on the latest Espressif/Arduino core version 3. It brings - add 0kW to heat limits [#3262](https://github.com/emsesp/EMS-ESP32/issues/3262), [#3265](https://github.com/emsesp/EMS-ESP32/issues/3265) - show temperature value for sensor 0x40 [#3272](https://github.com/emsesp/EMS-ESP32/issues/3272) - no EMS bus on custom boards whose interface relies on a pull-up on the Rx line. The newer ESP-IDF no longer enables the internal pull-up on the UART Rx pin, so it is now set explicitly as it was in 3.8 [#3258](https://github.com/emsesp/EMS-ESP32/discussions/3258) +- no EMS bus after restart when Rx uses a pin that boots with another IO_MUX function (e.g. GPIO43/44 = UART0 on ESP32-S3). IDF 5 `uart_set_pin()` no longer selects the GPIO function on the Rx pad when routing via the matrix, so the pin is reset before UART setup [#3258](https://github.com/emsesp/EMS-ESP32/discussions/3258) - Guru Meditation (cache error) on HybridCompile builds when the EMS or console UART ISR ran from flash during a SPI flash read (WiFi power-down, mDNS, NVS). The UART ISR and ringbuf ISR helpers are now in IRAM - compile errors against Arduino 3.3.12 from Tasmota/Arduino headers named `console.h`, `network.h` and `httpClient.h`. Those EMS-ESP headers are now `emsesp_console.h`, `emsesp_network.h` and `emsesp_http_client.h` - HTTP OTA from WSL/mDNS stalled on IPv6 and used tiny write chunks. Uploads now resolve IPv4 and stream in 64 KB blocks (`scripts/upload.py`, `scripts/upload_cli.py`) -- 2.54.0 From 9328c946d55d2087ee439393ccc734e9c7281af1 Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 12 Oct 2026 19:54:16 +0200 Subject: [PATCH 094/148] fixes #3280 --- interface/src/i18n/sk/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/i18n/sk/index.ts b/interface/src/i18n/sk/index.ts index 100a1d00d..3963108e0 100644 --- a/interface/src/i18n/sk/index.ts +++ b/interface/src/i18n/sk/index.ts @@ -344,7 +344,7 @@ const sk: Translation = { TEST_EMAIL_SUCCESSFUL: 'Test email bol úspešne odoslaný', SYSTEM_NAME: 'Názov systému', COMMANDS: 'Príkazy', - COMMANDS_HELP_1: 'Definujte vlastné príkazy pre magistrali EMS', + COMMANDS_HELP_1: 'Nižšie definujte opakovane použiteľné pomenované príkazy. Tieto môžu byť spustené z konzoly, API/MQTT alebo odkazované plánovačom', COMMAND_EXECUTED: 'Príkaz vykonaný úspešne', RUN: 'Volať príkaz', INTERNET_CONNECTION_CHECK: 'Kontrola online pre dostupné verzie', -- 2.54.0 From 4fb5d366d9ec1c00559285ae11d73d0e422f063f Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 12 Oct 2026 19:56:55 +0200 Subject: [PATCH 095/148] fixes #3283 --- CHANGELOG_LATEST.md | 1 + src/uart/emsuart_esp32.cpp | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 2ea8c72fc..eee8f3361 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -55,6 +55,7 @@ This release is based on the latest Espressif/Arduino core version 3. It brings - show temperature value for sensor 0x40 [#3272](https://github.com/emsesp/EMS-ESP32/issues/3272) - no EMS bus on custom boards whose interface relies on a pull-up on the Rx line. The newer ESP-IDF no longer enables the internal pull-up on the UART Rx pin, so it is now set explicitly as it was in 3.8 [#3258](https://github.com/emsesp/EMS-ESP32/discussions/3258) - no EMS bus after restart when Rx uses a pin that boots with another IO_MUX function (e.g. GPIO43/44 = UART0 on ESP32-S3). IDF 5 `uart_set_pin()` no longer selects the GPIO function on the Rx pad when routing via the matrix, so the pin is reset before UART setup [#3258](https://github.com/emsesp/EMS-ESP32/discussions/3258) +- Tx mode Auto preferred HT3 pacing over EMS+ when the bus used the HT3 address mask. Some Bosch heat pumps (e.g. Compress 7000i AW, CS5800i) need EMS+ timing; Auto now prefers EMS+ when EMS 2.0 telegrams are seen [#3283](https://github.com/emsesp/EMS-ESP32/issues/3283), [#3245](https://github.com/emsesp/EMS-ESP32/issues/3245) - Guru Meditation (cache error) on HybridCompile builds when the EMS or console UART ISR ran from flash during a SPI flash read (WiFi power-down, mDNS, NVS). The UART ISR and ringbuf ISR helpers are now in IRAM - compile errors against Arduino 3.3.12 from Tasmota/Arduino headers named `console.h`, `network.h` and `httpClient.h`. Those EMS-ESP headers are now `emsesp_console.h`, `emsesp_network.h` and `emsesp_http_client.h` - HTTP OTA from WSL/mDNS stalled on IPv6 and used tiny write chunks. Uploads now resolve IPv4 and stream in 64 KB blocks (`scripts/upload.py`, `scripts/upload_cli.py`) diff --git a/src/uart/emsuart_esp32.cpp b/src/uart/emsuart_esp32.cpp index 1d88d468b..014f71b87 100644 --- a/src/uart/emsuart_esp32.cpp +++ b/src/uart/emsuart_esp32.cpp @@ -171,7 +171,9 @@ 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: prefer EMS+ over HT3. Some Bosch heat pumps set the HT3 address mask (source MSB) + // but need EMS+ pacing; HT3-first caused FF→E3 echo corruption (#3283, #3245). + auto tx_mode = tx_mode_ != EMS_TXMODE_AUTO ? tx_mode_ : EMSbus::is_ems2() ? EMS_TXMODE_EMSPLUS : EMSbus::is_ht3() ? EMS_TXMODE_HT3 : EMS_TXMODE_EMS; // TXMODE is EMS+ with long delay if (tx_mode == EMS_TXMODE_EMSPLUS) { -- 2.54.0 From 229ba81301c4c25b483d121f3be86af3a0a9eb7b Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 12 Oct 2026 22:23:04 +0200 Subject: [PATCH 096/148] #3284 --- src/core/emsesp.cpp | 44 ++++++++++++++++++++++++++++++++++ src/core/emsesp.h | 1 + src/core/system.cpp | 11 ++++++++- src/web/WebActivityService.cpp | 10 +++++--- 4 files changed, 62 insertions(+), 4 deletions(-) diff --git a/src/core/emsesp.cpp b/src/core/emsesp.cpp index 977b3c2b9..8a7a6cca2 100644 --- a/src/core/emsesp.cpp +++ b/src/core/emsesp.cpp @@ -1595,6 +1595,49 @@ void EMSESP::send_write_request(const uint16_t type_id, const uint8_t dest, cons EMSESP::send_write_request(type_id, dest, offset, message_data, 1, validate_typeid); } +// answer a read or write aimed at our own bus id, so the requester is not left waiting for a timeout +// a reply to one of our own reads has the same destination and no read-bit, so only ack a write when we are not finishing a read +// see https://github.com/emsesp/EMS-ESP32/issues/3094 +void EMSESP::reply_own_request(const uint8_t * data, const uint8_t length, const uint8_t tx_state) { + if (length < 4) { + return; + } + + const uint8_t our = EMSbus::ems_bus_id(); + uint8_t mask = EMSbus::ems_mask(); + if (mask == EMSbus::EMS_MASK_UNSET) { + mask = data[0] & 0x80; // same bit RxService uses, before this telegram has been queued + } + + if (data[1] == (our | 0x80)) { + uint8_t reply[7]; + reply[0] = our | mask; + reply[1] = data[0] & 0x7F; + if (data[2] < 0xF0) { // EMS read + reply[2] = data[2]; + reply[3] = data[3]; + reply[4] = EMSbus::calculate_crc(reply, 4); + EMSuart::transmit(reply, 5); + LOG_DEBUG("Empty reply to 0x%02X read 0x%02X", reply[1], data[2]); + } else if (data[2] == 0xFF && length >= 7) { // EMS+ read + reply[2] = 0xFF; + reply[3] = data[3]; + reply[4] = data[5]; + reply[5] = data[6]; + reply[6] = EMSbus::calculate_crc(reply, 6); + EMSuart::transmit(reply, 7); + LOG_DEBUG("Empty reply to 0x%02X read 0x%02X%02X", reply[1], data[5], data[6]); + } + return; + } + + if (tx_state == Telegram::Operation::NONE && data[1] == our) { // EMS/EMS+ write + uint8_t ack = TxService::TX_WRITE_SUCCESS; + EMSuart::transmit(&ack, 1); + LOG_DEBUG("Ack write from 0x%02X", data[0] & 0x7F); + } +} + // this is main entry point when data is received on the Rx line, via emsuart library // we check if its a complete telegram or just a single byte (which could be a poll or a return status) // the CRC check is not done here, only when it's added to the Rx queue with add() @@ -1721,6 +1764,7 @@ void EMSESP::incoming_telegram(uint8_t * data, const uint8_t length) { LOG_TRACE("[UART_DEBUG] Reply after %d ms: %s", uuid::get_uptime_ms() - rx_time_, Helpers::data_to_hex(data, length).c_str()); #endif Roomctrl::check(data[1], data, length); // check if there is a message for the roomcontroller + reply_own_request(data, length, tx_state); #ifdef EMSESP_GATEWAY_TX_HOLD gateway_rx_check(data, length); diff --git a/src/core/emsesp.h b/src/core/emsesp.h index b5dcfca90..8bdb6d5b2 100644 --- a/src/core/emsesp.h +++ b/src/core/emsesp.h @@ -283,6 +283,7 @@ class EMSESP { static void process_version(const std::shared_ptr & telegram); static void publish_response(const std::shared_ptr & telegram); static void publish_all_loop(); + static void reply_own_request(const uint8_t * data, const uint8_t length, const uint8_t tx_state); // one-time compaction of per-device/command vectors once registration has been stable static void compact_entities_if_stable(); diff --git a/src/core/system.cpp b/src/core/system.cpp index d880cc9ef..632d444b8 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -749,7 +749,10 @@ void System::syslog_init() { #ifndef EMSESP_STANDALONE if (syslog_enabled_) { // start & configure syslog - syslog_.maximum_log_messages(10); + // 10 is smaller than one DEBUG/ALL bus burst (about 30 telegrams, two lines each). + // The queue is PSRAM-backed and drains at one UDP packet per 10 ms, so 100 holds + // the burst until the next quiet period. + syslog_.maximum_log_messages(100); syslog_.log_level((uuid::log::Level)syslog_level_); syslog_.mark_interval(syslog_mark_interval_); syslog_.destination(syslog_host_.c_str(), syslog_port_); @@ -1122,6 +1125,12 @@ void System::heartbeat_json(JsonObject output) { output["mqttfails"] = Mqtt::publish_fails(); output["mqttreconnects"] = Mqtt::connect_count(); } +#ifndef EMSESP_STANDALONE + if (syslog_enabled_) { + output["syslogcount"] = syslog_count(); + output["syslogfails"] = syslog_fails(); + } +#endif output["apicalls"] = WebAPIService::api_count(); // + WebAPIService::api_fails(); output["apifails"] = WebAPIService::api_fails(); diff --git a/src/web/WebActivityService.cpp b/src/web/WebActivityService.cpp index 09e12f5af..f2b3c8acd 100644 --- a/src/web/WebActivityService.cpp +++ b/src/web/WebActivityService.cpp @@ -86,9 +86,13 @@ void WebActivityService::webActivityService(AsyncWebServerRequest * request) { if (EMSESP::system_.syslog_enabled()) { statJson = statsJson.add(); statJson["id"] = 7; - statJson["s"] = EMSESP::system_.syslog_count(); - statJson["f"] = EMSESP::system_.syslog_fails(); - statJson["q"] = EMSESP::system_.syslog_count() == 0 ? 100 : 100 - (uint8_t)((100 * EMSESP::system_.syslog_fails()) / EMSESP::system_.syslog_count()); + const unsigned long syslog_count = EMSESP::system_.syslog_count(); + const unsigned long syslog_fails = EMSESP::system_.syslog_fails(); + statJson["s"] = syslog_count; + statJson["f"] = syslog_fails; + // Round to the nearest percent. Integer division alone stays on the truncated value + // (8.7% dropped still displays as 92%) until the ratio crosses the next whole percent. + statJson["q"] = syslog_count == 0 ? 100 : (uint8_t)(100 - ((100ULL * syslog_fails + syslog_count / 2) / syslog_count)); } #endif -- 2.54.0 From 540a87f46575495b1c6034e1cc78318ff33555d8 Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 12 Oct 2026 23:19:16 +0200 Subject: [PATCH 097/148] #3273 --- interface/src/app/main/Customizations.tsx | 170 ++++++++++++++++-- .../src/app/main/CustomizationsDialog.tsx | 18 ++ interface/src/app/main/types.ts | 1 + interface/src/i18n/cs/index.ts | 2 + interface/src/i18n/de/index.ts | 2 + interface/src/i18n/en/index.ts | 2 + interface/src/i18n/fr/index.ts | 2 + interface/src/i18n/it/index.ts | 2 + interface/src/i18n/nl/index.ts | 2 + interface/src/i18n/no/index.ts | 2 + interface/src/i18n/pl/index.ts | 2 + interface/src/i18n/sk/index.ts | 2 + interface/src/i18n/sv/index.ts | 2 + interface/src/i18n/tr/index.ts | 2 + src/core/emsdevice.cpp | 7 + 15 files changed, 204 insertions(+), 14 deletions(-) diff --git a/interface/src/app/main/Customizations.tsx b/interface/src/app/main/Customizations.tsx index d975e6442..013492275 100644 --- a/interface/src/app/main/Customizations.tsx +++ b/interface/src/app/main/Customizations.tsx @@ -11,6 +11,7 @@ import WarningIcon from '@mui/icons-material/Warning'; import { Box, Button, + Checkbox, Dialog, DialogActions, DialogContent, @@ -91,6 +92,8 @@ const Customizations = () => { const [deviceEntities, setDeviceEntities] = useState([]); const [confirmReset, setConfirmReset] = useState(false); const [selectedFilters, setSelectedFilters] = useState(0); + const [modifiedOnly, setModifiedOnly] = useState(false); + const [selectedIds, setSelectedIds] = useState>(new Set()); const [search, setSearch] = useState(''); const [selectedDeviceEntity, setSelectedDeviceEntity] = useState(); const [dialogOpen, setDialogOpen] = useState(false); @@ -173,7 +176,7 @@ const Customizations = () => { const entities_theme = useTheme({ Table: ` - --data-table-library_grid-template-columns: 156px repeat(1, minmax(80px, 1fr)) 45px minmax(45px, auto) minmax(120px, auto); + --data-table-library_grid-template-columns: 32px 156px repeat(1, minmax(80px, 1fr)) 45px minmax(45px, auto) minmax(120px, auto); `, BaseRow: ` font-size: 14px; @@ -182,10 +185,10 @@ const Customizations = () => { } `, BaseCell: ` - &:nth-of-type(3) { + &:nth-of-type(4) { text-align: right; } - &:nth-of-type(4) { + &:nth-of-type(5) { text-align: right; } &:last-of-type { @@ -221,13 +224,13 @@ const Customizations = () => { } `, Cell: ` - &:nth-of-type(2) { + &:nth-of-type(3) { padding: 8px; } - &:nth-of-type(3) { + &:nth-of-type(4) { padding-right: 4px; } - &:nth-of-type(4) { + &:nth-of-type(5) { padding-right: 4px; } &:last-of-type { @@ -245,6 +248,11 @@ const Customizations = () => { ); } + // Saved customization (c), or an edit that is not applied yet. + function isModified(de: DeviceEntity) { + return !!de.c || hasEntityChanged(de); + } + useEffect(() => { if (deviceEntities.length) { const changedEntities = deviceEntities.filter((de) => hasEntityChanged(de)); @@ -267,6 +275,7 @@ const Customizations = () => { setSelectedDeviceBrand(device.b); } setNumChanges(0); + setSelectedIds(new Set()); setRestartNeeded(false); } } @@ -331,24 +340,61 @@ const Customizations = () => { const filter_entity = (de: DeviceEntity) => (de.m & selectedFilters || !selectedFilters) && + (!modifiedOnly || isModified(de)) && formatName(de, true).toLowerCase().includes(search.toLowerCase()); + // Checked rows when any are checked, otherwise every row the filter is showing. + const inBulkTarget = (de: DeviceEntity) => + selectedIds.size > 0 ? selectedIds.has(de.id) : filter_entity(de); + const maskDisabled = (set: boolean) => { + const excludeMask = + DeviceEntityMask.DV_API_MQTT_EXCLUDE | DeviceEntityMask.DV_WEB_EXCLUDE; setDeviceEntities((prev) => prev.map((de) => { - if (filter_entity(de)) { - const excludeMask = - DeviceEntityMask.DV_API_MQTT_EXCLUDE | DeviceEntityMask.DV_WEB_EXCLUDE; - return { - ...de, - m: set ? de.m | excludeMask : de.m & ~excludeMask - }; + if (!inBulkTarget(de)) { + return de; } - return de; + return { + ...de, + m: set ? de.m | excludeMask : de.m & ~excludeMask + }; }) ); }; + const maskReadonly = (set: boolean) => { + setDeviceEntities((prev) => + prev.map((de) => { + if (!inBulkTarget(de) || !de.w) { + return de; + } + return { + ...de, + m: set + ? de.m | DeviceEntityMask.DV_READONLY + : de.m & ~DeviceEntityMask.DV_READONLY + }; + }) + ); + }; + + const resetSelected = () => { + setDeviceEntities((prev) => + prev.map((de) => { + if (!selectedIds.has(de.id)) { + return de; + } + const next: DeviceEntity = { ...de, m: 0, c: false }; + delete next.cn; + delete next.mi; + delete next.ma; + return next; + }) + ); + setSelectedIds(new Set()); + }; + const resetCustomization = async () => { try { await sendResetCustomizations(); @@ -414,6 +460,8 @@ const Customizations = () => { }) .then(() => { toast.success(LL.CUSTOMIZATIONS_SAVED()); + // Reload so cleared min/max fall back to the built-in limits and the modified flag matches the file. + void sendDeviceEntities(selectedDevice); }) .catch((error: Error) => { if (error.message === 'Reboot required') { @@ -541,6 +589,34 @@ const Customizations = () => { ); const filteredEntities = deviceEntities.filter((de) => filter_entity(de)); + const allFilteredSelected = + filteredEntities.length > 0 && + filteredEntities.every((de) => selectedIds.has(de.id)); + const someFilteredSelected = filteredEntities.some((de) => selectedIds.has(de.id)); + + const toggleSelected = (id: string) => { + setSelectedIds((prev) => { + const next = new Set(prev); + if (next.has(id)) { + next.delete(id); + } else { + next.add(id); + } + return next; + }); + }; + + const toggleSelectFiltered = () => { + setSelectedIds((prev) => { + const next = new Set(prev); + if (allFilteredSelected) { + filteredEntities.forEach((de) => next.delete(de.id)); + } else { + filteredEntities.forEach((de) => next.add(de.id)); + } + return next; + }); + }; const renderDeviceData = () => { return ( @@ -608,6 +684,17 @@ const Customizations = () => { + + + + + + + + + + {selectedIds.size > 0 && ( + + + + )} {LL.SHOWING()} {filteredEntities.length}/{deviceEntities.length} @@ -650,6 +774,16 @@ const Customizations = () => { <>
+ + + {LL.OPTIONS()} {LL.NAME(1)} {LL.MIN()} @@ -660,6 +794,14 @@ const Customizations = () => { {tableList.map((de: DeviceEntity) => ( editDeviceEntity(de)}> + event.stopPropagation()}> + toggleSelected(de.id)} + /> + diff --git a/interface/src/app/main/CustomizationsDialog.tsx b/interface/src/app/main/CustomizationsDialog.tsx index 9e5d68ca9..d701487bb 100644 --- a/interface/src/app/main/CustomizationsDialog.tsx +++ b/interface/src/app/main/CustomizationsDialog.tsx @@ -3,6 +3,7 @@ import { memo, useEffect, useState } from 'react'; import CancelIcon from '@mui/icons-material/Cancel'; import CloseIcon from '@mui/icons-material/Close'; import DoneIcon from '@mui/icons-material/Done'; +import SettingsBackupRestoreIcon from '@mui/icons-material/SettingsBackupRestore'; import { Box, Button, @@ -101,6 +102,14 @@ const CustomizationsDialog = ({ setEditItem((prev) => ({ ...prev, m: updatedItem.m })); }; + const remove = () => { + const next: DeviceEntity = { ...editItem, m: 0, c: false }; + delete next.cn; + delete next.mi; + delete next.ma; + onSave(next); + }; + return ( {`${LL.EDIT()} ${LL.ENTITY()}`} @@ -169,6 +178,15 @@ const CustomizationsDialog = ({ + + + {editItem.c && ( + + )}