diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8e4f2328f..6314e7c64 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,7 +5,7 @@ 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.0]
+## [3.8.0] 31 December 2025
## Added
@@ -26,8 +26,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- FW200 display options [#2610](https://github.com/emsesp/EMS-ESP32/discussions/2610)
- CR11 mode settings OFF/MANUAL depends on selTemp [#2437](https://github.com/emsesp/EMS-ESP32/issues/2437)
- implemented eFuse settings for BBQKees boards to store model type and ESP chipset
-- Analogsensors for pulse output [#2624](https://github.com/emsesp/EMS-ESP32/discussions/2624)
-- Analogsensors frequency input [#2631](https://github.com/emsesp/EMS-ESP32/discussions/2631)
+- analogsensors for pulse output [#2624](https://github.com/emsesp/EMS-ESP32/discussions/2624)
+- analogsensors frequency input [#2631](https://github.com/emsesp/EMS-ESP32/discussions/2631)
- SRC plus thermostats [#2636](https://github.com/emsesp/EMS-ESP32/issues/2636)
- Greenstar 2000 [#2645](https://github.com/emsesp/EMS-ESP32/issues/2645)
- RC3xx `dhw modetype` [#2659](https://github.com/emsesp/EMS-ESP32/discussions/2659)
@@ -90,7 +90,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- added Home Assistant device details to MQTT Discovery for all devices
- device_class and state_class changes for HA MQTT Discovery [#2825](https://github.com/emsesp/EMS-ESP32/issues/2825)
-
## [3.7.2] 22 March 2025
## Added
diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md
index b47972202..b8ca89838 100644
--- a/CHANGELOG_LATEST.md
+++ b/CHANGELOG_LATEST.md
@@ -1,3 +1,31 @@
# Changelog
For more details go to [emsesp.org](https://emsesp.org/).
+
+## [3.8.1]
+
+## Added
+
+- update time saved in nvs
+- heatpump entities [#2883](https://github.com/emsesp/EMS-ESP32/issues/2883)
+- HA input number format (mode) selectable box/slider (slider for max range 100) [#2900](https://github.com/emsesp/EMS-ESP32/discussions/2900)
+
+## Fixed
+
+- fix EMS bus disconnected errors on some systems [#2881](https://github.com/emsesp/EMS-ESP32/issues/2881)
+- selflowtemp fix [#2876](https://github.com/emsesp/EMS-ESP32/issues/2876)
+- updated valid GPIOs for ESP32S2, ESP32S3 and ESP32 that caused custom systems to block gpios [#2887](https://github.com/emsesp/EMS-ESP32/issues/2887)
+- Junkers wwcharge offset [#2860](https://github.com/emsesp/EMS-ESP32/issues/2860)
+- fixed minflowtemp [#2890](https://github.com/emsesp/EMS-ESP32/issues/2890)
+- don't add HA uom/classes for bool values [#2885](https://github.com/emsesp/EMS-ESP32/issues/2885)
+- fixed missing progress bar on web firmware uploads
+
+## Changed
+
+- snapshot gpios stored in temporary ram
+- GPIOs stored along with the name and reported in log if conflicting
+- free GPIOs depend on board profile [#2901](https://github.com/emsesp/EMS-ESP32/issues/2901)
+- prefer PSram for mqtt queue [#2889](https://github.com/emsesp/EMS-ESP32/issues/2889)
+- day schedule defult to all days, no day selected is not allowed
+- board profile `CUSTOM` can only be selected in developer mode
+- mqtt sends round values without decimals (`28` instead of `28.0`)
diff --git a/Makefile b/Makefile
index fdab1d661..c1ca05b90 100644
--- a/Makefile
+++ b/Makefile
@@ -67,7 +67,7 @@ DEFINES += -DARDUINOJSON_ENABLE -DARDUINOJSON_ENABLE_ARDUINO_STRING -DARDUINOJSO
DEFINES += -DEMSESP_STANDALONE -DEMSESP_TEST -DEMSESP_DEBUG -DEMC_RX_BUFFER_SIZE=1500
DEFINES += $(ARGS)
-DEFAULTS = -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_TX_MODE=8 -DEMSESP_DEFAULT_VERSION=\"3.8.0-dev.0\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32S3\"
+DEFAULTS = -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32S3\"
#----------------------------------------------------------------------
# Sources & Files
diff --git a/README.md b/README.md
index 93b2ed589..5a8e7ad51 100644
--- a/README.md
+++ b/README.md
@@ -78,15 +78,13 @@ For a live demo go to [demo.emsesp.org](https://demo.emsesp.org). Pick a languag
## 💖 **Contributors**
-EMS-ESP is a project created by [proddy](https://github.com/proddy) and owned and maintained by both [proddy](https://github.com/proddy) and [MichaelDvP](https://github.com/MichaelDvP) with support from [BBQKees Electronics](https://bbqkees-electronics.nl).
+EMS-ESP is a project originally created by [proddy](https://github.com/proddy) and maintained by the ems-esp community.
If you like **EMS-ESP**, please give it a ✨ on GitHub, or even better fork it and contribute. You can also offer a small donation. This is an open-source project maintained by volunteers, and your support is greatly appreciated.
## 📦 **Building**
-To build the web interface only, run `platformio run -e build_webUI`. This will install the necessary dependencies and build the web interface and also create the embedded code used need to build the firmware. You can run the web interface locally by going to the `interface` directory and running `pnpm standalone`.
-
-To build the firmware, run `platformio run`. This will build the firmware for all ESP32 modules and place the binaries in the `build/firmware` folder. If you want to configure the build for a single platform create a local `pio_local.ni` file in the root directory (see example in `pio_local.ini_example`).
+See the [Building Guide](https://emsesp.org/Building) section of the documentation for instructions on how to build EMS-ESP.
## 📢 **Libraries used**
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 000000000..899c07d73
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,5 @@
+# Security Policy
+
+## Reporting a Vulnerability
+
+Please report any security vulnerabilities using the [Contact Form](https://emsesp.org/About/#-contact).
diff --git a/boards/s2_4M_P.json b/boards/s2_4M_P.json
index 349b065b1..3c313da37 100644
--- a/boards/s2_4M_P.json
+++ b/boards/s2_4M_P.json
@@ -37,8 +37,8 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
- "use_1200bps_touch": true,
- "wait_for_upload_port": true,
+ "use_1200bps_touch": false,
+ "wait_for_upload_port": false,
"require_upload_port": true,
"speed": 921600
},
diff --git a/cspell.json b/cspell.json
index 24df974df..880eedb9c 100644
--- a/cspell.json
+++ b/cspell.json
@@ -35,6 +35,7 @@
"managed_components/**",
"pnpm-*.yaml",
"vite.config.ts",
- "lib/esp32-psram/**"
+ "lib/esp32-psram/**",
+ "test/test_api/test_api.h"
]
}
\ No newline at end of file
diff --git a/docs/Modbus-Entity-Registers.md b/docs/Modbus-Entity-Registers.md
index 05c5b8d09..00540f20e 100644
--- a/docs/Modbus-Entity-Registers.md
+++ b/docs/Modbus-Entity-Registers.md
@@ -1,3 +1,6 @@
+---
+id: Modbus-Entity-Registers
+---
# Modbus Entity/Register Mapping
:::warning
@@ -10,4053 +13,5115 @@ This file has been auto-generated. Do not modify.
| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor |
|-|-|-|-|-|-|-|-|-|
-| reset | reset | cmd [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| mandefrost | manual defrost | cmd [off\|on] | | true | DEVICE_DATA | 84 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
-| dhw.nrg | energy | uint24 (>=0<=167772) | kWh | false | DHW | 0 | 2 | 1/100 |
-| nrgheat | energy heating | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 87 | 2 | 1/100 |
-| nrgcool | energy cooling | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 |
-| metertotal | meter total | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 91 | 2 | 1/100 |
-| metercomp | meter compressor | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 93 | 2 | 1/100 |
-| metereheat | meter e-heater | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 95 | 2 | 1/100 |
-| meterheat | meter heating | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 97 | 2 | 1/100 |
-| metercool | meter cooling | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 99 | 2 | 1/100 |
-| dhw.meter | meter | uint24 (>=0<=167772) | kWh | false | DHW | 2 | 2 | 1/100 |
-| uptimetotal | heatpump total uptime | time (>=0<=279620) | minutes | false | DEVICE_DATA | 101 | 2 | 1/60 |
-| uptimecontrol | total operating time heat | time (>=0<=279620) | minutes | false | DEVICE_DATA | 103 | 2 | 1/60 |
-| uptimecompheating | operating time compressor heating | time (>=0<=279620) | minutes | false | DEVICE_DATA | 105 | 2 | 1/60 |
-| uptimecompcooling | operating time compressor cooling | time (>=0<=279620) | minutes | false | DEVICE_DATA | 107 | 2 | 1/60 |
-| dhw.uptimecomp | operating time compressor | time (>=0<=279620) | minutes | false | DHW | 4 | 2 | 1/60 |
-| uptimecomppool | operating time compressor pool | time (>=0<=279620) | minutes | false | DEVICE_DATA | 109 | 2 | 1/60 |
-| totalcompstarts | total compressor control starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 111 | 2 | 1 |
-| heatingstarts | heating control starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 113 | 2 | 1 |
-| coolingstarts | cooling control starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 115 | 2 | 1 |
-| dhw.startshp | starts hp | uint24 (>=0<=16777214) | | false | DHW | 6 | 2 | 1 |
-| poolstarts | pool control starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 117 | 2 | 1 |
-| nrgconstotal | total energy consumption | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 119 | 2 | 1 |
-| nrgconscomptotal | total energy consumption compressor | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 121 | 2 | 1 |
-| nrgconscompheating | energy consumption compressor heating | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 123 | 2 | 1 |
-| dhw.nrgconscomp | energy consumption compressor | uint24 (>=0<=16777214) | kWh | false | DHW | 8 | 2 | 1 |
-| nrgconscompcooling | energy consumption compressor cooling | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 125 | 2 | 1 |
-| nrgconscomppool | energy consumption compressor pool | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 127 | 2 | 1 |
-| auxelecheatnrgconstotal | total aux elec. heater energy consumption | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 129 | 2 | 1 |
-| auxelecheatnrgconsheating | aux elec. heater energy consumption heating | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 131 | 2 | 1 |
-| dhw.auxelecheatnrgcons | aux elec. heater energy consumption | uint24 (>=0<=16777214) | kWh | false | DHW | 10 | 2 | 1 |
-| auxelecheatnrgconspool | aux elec. heater energy consumption pool | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 133 | 2 | 1 |
-| nrgsupptotal | total energy supplied | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 135 | 2 | 1 |
-| nrgsuppheating | total energy supplied heating | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 137 | 2 | 1 |
-| dhw.nrgsupp | total energy warm supplied | uint24 (>=0<=16777214) | kWh | false | DHW | 12 | 2 | 1 |
-| nrgsuppcooling | total energy supplied cooling | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 139 | 2 | 1 |
-| nrgsupppool | total energy supplied pool | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 141 | 2 | 1 |
-| hppower | compressor power output | uint16 (>=0<=3199) | kW | false | DEVICE_DATA | 143 | 1 | 1/10 |
-| hpmaxpower | compressor max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 144 | 1 | 1 |
-| pvmaxcomp | pv compressor max power | uint8 (>=0<=25) | kW | true | DEVICE_DATA | 145 | 1 | 1/10 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| mandefrost | manual defrost | cmd | | true | DEVICE_DATA | 84 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| dhw.nrg | energy | uint24 | kWh | false | DHW | 0 | 2 | 1/100 |
+| nrgheat | energy heating | uint24 | kWh | false | DEVICE_DATA | 87 | 2 | 1/100 |
+| nrgcool | energy cooling | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 |
+| metertotal | meter total | uint24 | kWh | false | DEVICE_DATA | 91 | 2 | 1/100 |
+| metercomp | meter compressor | uint24 | kWh | false | DEVICE_DATA | 93 | 2 | 1/100 |
+| metereheat | meter e-heater | uint24 | kWh | false | DEVICE_DATA | 95 | 2 | 1/100 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/100 |
+| metercool | meter cooling | uint24 | kWh | false | DEVICE_DATA | 99 | 2 | 1/100 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/100 |
+| uptimetotal | heatpump total uptime | time | minutes | false | DEVICE_DATA | 101 | 2 | 1/60 |
+| uptimecontrol | total operating time heat | time | minutes | false | DEVICE_DATA | 103 | 2 | 1/60 |
+| uptimecompheating | operating time compressor heating | time | minutes | false | DEVICE_DATA | 105 | 2 | 1/60 |
+| uptimecompcooling | operating time compressor cooling | time | minutes | false | DEVICE_DATA | 107 | 2 | 1/60 |
+| dhw.uptimecomp | operating time compressor | time | minutes | false | DHW | 4 | 2 | 1/60 |
+| uptimecomppool | operating time compressor pool | time | minutes | false | DEVICE_DATA | 109 | 2 | 1/60 |
+| totalcompstarts | total compressor control starts | uint24 | | false | DEVICE_DATA | 111 | 2 | 1 |
+| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 113 | 2 | 1 |
+| coolingstarts | cooling control starts | uint24 | | false | DEVICE_DATA | 115 | 2 | 1 |
+| dhw.startshp | starts hp | uint24 | | false | DHW | 6 | 2 | 1 |
+| poolstarts | pool control starts | uint24 | | false | DEVICE_DATA | 117 | 2 | 1 |
+| nrgconstotal | total energy consumption | uint24 | kWh | false | DEVICE_DATA | 119 | 2 | 1 |
+| nrgconscomptotal | total energy consumption compressor | uint24 | kWh | false | DEVICE_DATA | 121 | 2 | 1 |
+| nrgconscompheating | energy consumption compressor heating | uint24 | kWh | false | DEVICE_DATA | 123 | 2 | 1 |
+| dhw.nrgconscomp | energy consumption compressor | uint24 | kWh | false | DHW | 8 | 2 | 1 |
+| nrgconscompcooling | energy consumption compressor cooling | uint24 | kWh | false | DEVICE_DATA | 125 | 2 | 1 |
+| nrgconscomppool | energy consumption compressor pool | uint24 | kWh | false | DEVICE_DATA | 127 | 2 | 1 |
+| auxelecheatnrgconstotal | total aux elec. heater energy consumption | uint24 | kWh | false | DEVICE_DATA | 129 | 2 | 1 |
+| auxelecheatnrgconsheating | aux elec. heater energy consumption heating | uint24 | kWh | false | DEVICE_DATA | 131 | 2 | 1 |
+| dhw.auxelecheatnrgcons | aux elec. heater energy consumption | uint24 | kWh | false | DHW | 10 | 2 | 1 |
+| auxelecheatnrgconspool | aux elec. heater energy consumption pool | uint24 | kWh | false | DEVICE_DATA | 133 | 2 | 1 |
+| nrgsupptotal | total energy supplied | uint24 | kWh | false | DEVICE_DATA | 135 | 2 | 1 |
+| nrgsuppheating | total energy supplied heating | uint24 | kWh | false | DEVICE_DATA | 137 | 2 | 1 |
+| dhw.nrgsupp | total energy warm supplied | uint24 | kWh | false | DHW | 12 | 2 | 1 |
+| nrgsuppcooling | total energy supplied cooling | uint24 | kWh | false | DEVICE_DATA | 139 | 2 | 1 |
+| nrgsupppool | total energy supplied pool | uint24 | kWh | false | DEVICE_DATA | 141 | 2 | 1 |
+| hppower | compressor power output | uint16 | kW | false | DEVICE_DATA | 143 | 1 | 1/10 |
+uint8
+| hpmaxpower | compressor max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 144 | 1 | 1 |
+uint8
+| pvmaxcomp | pv compressor max power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 145 | 1 | 1/10 |
+uint8
| powerreduction | power reduction | uint8 (>=30<=60) | % | true | DEVICE_DATA | 146 | 1 | 10 |
+uint8
| hpsetdiffpress | set differential pressure | uint8 (>=150<=750) | mbar | true | DEVICE_DATA | 147 | 1 | 50 |
-| hpcompon | hp compressor | boolean | | false | DEVICE_DATA | 148 | 1 | 1 |
-| hpactivity | compressor activity | enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm] | | false | DEVICE_DATA | 149 | 1 | 1 |
-| hpbrinepumpspd | brine pump speed | uint8 (>=0<=100) | % | false | DEVICE_DATA | 150 | 1 | 1 |
-| hpswitchvalve | switch valve | boolean | | false | DEVICE_DATA | 151 | 1 | 1 |
-| hpcompspd | compressor speed | uint8 (>=0<=100) | % | false | DEVICE_DATA | 152 | 1 | 1 |
-| hptargetspd | compressor target speed | uint8 (>=0<=100) | % | false | DEVICE_DATA | 153 | 1 | 1 |
-| hpcircspd | circulation pump speed | uint8 (>=0<=100) | % | false | DEVICE_DATA | 154 | 1 | 1 |
-| recvalve | receiver valve VR0 | uint8 (>=0<=100) | % | false | DEVICE_DATA | 155 | 1 | 1 |
-| expvalve | expansion valve VR1 | uint8 (>=0<=100) | % | false | DEVICE_DATA | 156 | 1 | 1 |
-| hpbrinein | brine in/evaporator | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 157 | 1 | 1/10 |
-| hpbrineout | brine out/condenser | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 158 | 1 | 1/10 |
-| hptc0 | heat carrier return (TC0) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 159 | 1 | 1/10 |
-| hptc1 | heat carrier forward (TC1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 160 | 1 | 1/10 |
-| hptc3 | condenser temperature (TC3) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 161 | 1 | 1/10 |
-| hptr1 | compressor temperature (TR1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 162 | 1 | 1/10 |
-| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 163 | 1 | 1/10 |
-| hptr4 | evaporator inlet temperature (TR4) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 164 | 1 | 1/10 |
-| hptr5 | compressor inlet temperature (TR5) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 165 | 1 | 1/10 |
-| hptr6 | compressor outlet temperature (TR6) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 166 | 1 | 1/10 |
-| hptr7 | refrigerant temperature gas side (condenser input) (TR7) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 167 | 1 | 1/10 |
-| hptl2 | air inlet temperature (TL2) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 168 | 1 | 1/10 |
-| hppl1 | low pressure side temperature (PL1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 169 | 1 | 1/10 |
-| hpph1 | high pressure side temperature (PH1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 170 | 1 | 1/10 |
-| hpta4 | drain pan temp (TA4) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 171 | 1 | 1/10 |
-| hptw1 | reservoir temp (TW1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 172 | 1 | 1/10 |
-| poolsettemp | pool set temperature | uint8 (>=0<=127) | C | true | DEVICE_DATA | 173 | 1 | 1/2 |
-| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 174 | 1 | 1 |
-| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 175 | 8 | 1 |
-| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 183 | 1 | 1 |
-| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 184 | 8 | 1 |
-| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 192 | 1 | 1 |
-| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 193 | 8 | 1 |
-| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 201 | 1 | 1 |
-| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 202 | 8 | 1 |
-| maxheatcomp | heat limit compressor | enum [0 kW\|3 kW\|6 kW\|9 kW] | | true | DEVICE_DATA | 210 | 1 | 1 |
-| maxheatheat | heat limit heating | enum [3 kW\|6 kW\|9 kW] | | true | DEVICE_DATA | 211 | 1 | 1 |
-| dhw.maxheat | heat limit | enum [3 kW\|6 kW\|9 kW] | | true | DHW | 14 | 1 | 1 |
-| auxheatersource | aux heater source | enum [not installed\|electric heater\|exclusive\|parallel\|hybrid] | | true | DEVICE_DATA | 212 | 1 | 1 |
-| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 213 | 1 | 1 |
-| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 214 | 1 | 1 |
-| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 215 | 1 | 1 |
-| auxheaterstatus | aux heater status | enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm] | | false | DEVICE_DATA | 216 | 1 | 1 |
-| auxheaterlevel | aux heater level | uint8 (>=0<=100) | % | false | DEVICE_DATA | 217 | 1 | 1 |
+| hpcompon | hp compressor | boolean | | false | DEVICE_DATA | 148 | 1 | 1 |
+| hpactivity | compressor activity | enum | | false | DEVICE_DATA | 149 | 1 | 1 |
+| hpbrinepumpspd | brine pump speed | uint8 | % | false | DEVICE_DATA | 150 | 1 | 1 |
+| hpswitchvalve | switch valve | boolean | | false | DEVICE_DATA | 151 | 1 | 1 |
+| hpcompspd | compressor speed | uint8 | % | false | DEVICE_DATA | 152 | 1 | 1 |
+| hptargetspd | compressor target speed | uint8 | % | false | DEVICE_DATA | 153 | 1 | 1 |
+| hpcircspd | circulation pump speed | uint8 | % | false | DEVICE_DATA | 154 | 1 | 1 |
+| recvalve | receiver valve VR0 | uint8 | % | false | DEVICE_DATA | 155 | 1 | 1 |
+| expvalve | expansion valve VR1 | uint8 | % | false | DEVICE_DATA | 156 | 1 | 1 |
+| hpbrinein | brine in/evaporator | int16 | C | false | DEVICE_DATA | 157 | 1 | 1/10 |
+| hpbrineout | brine out/condenser | int16 | C | false | DEVICE_DATA | 158 | 1 | 1/10 |
+| hptc0 | heat carrier return (TC0) | int16 | C | false | DEVICE_DATA | 159 | 1 | 1/10 |
+| hptc1 | heat carrier forward (TC1) | int16 | C | false | DEVICE_DATA | 160 | 1 | 1/10 |
+| hptc3 | condenser temperature (TC3) | int16 | C | false | DEVICE_DATA | 161 | 1 | 1/10 |
+| hptr1 | compressor temperature (TR1) | int16 | C | false | DEVICE_DATA | 162 | 1 | 1/10 |
+| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 | C | false | DEVICE_DATA | 163 | 1 | 1/10 |
+| hptr4 | evaporator inlet temperature (TR4) | int16 | C | false | DEVICE_DATA | 164 | 1 | 1/10 |
+| hptr5 | compressor inlet temperature (TR5) | int16 | C | false | DEVICE_DATA | 165 | 1 | 1/10 |
+| hptr6 | compressor outlet temperature (TR6) | int16 | C | false | DEVICE_DATA | 166 | 1 | 1/10 |
+| hptr7 | refrigerant temperature gas side (condenser input) (TR7) | int16 | C | false | DEVICE_DATA | 167 | 1 | 1/10 |
+| hptl2 | air inlet temperature (TL2) | int16 | C | false | DEVICE_DATA | 168 | 1 | 1/10 |
+| hppl1 | low pressure side temperature (PL1) | int16 | C | false | DEVICE_DATA | 169 | 1 | 1/10 |
+| hpph1 | high pressure side temperature (PH1) | int16 | C | false | DEVICE_DATA | 170 | 1 | 1/10 |
+| hpta4 | drain pan temp (TA4) | int16 | C | false | DEVICE_DATA | 171 | 1 | 1/10 |
+| hptw1 | reservoir temp (TW1) | int16 | C | false | DEVICE_DATA | 172 | 1 | 1/10 |
+uint8
+| poolsettemp | pool set temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 173 | 1 | 1/2 |
+| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 174 | 1 | 1 |
+| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 175 | 8 | 1 |
+| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 183 | 1 | 1 |
+| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 184 | 8 | 1 |
+| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 192 | 1 | 1 |
+| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 193 | 8 | 1 |
+| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 201 | 1 | 1 |
+| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 202 | 8 | 1 |
+| maxheatcomp | heat limit compressor | enum | | true | DEVICE_DATA | 210 | 1 | 1 |
+| maxheatheat | heat limit heating | enum | | true | DEVICE_DATA | 211 | 1 | 1 |
+| dhw.maxheat | heat limit | enum | | true | DHW | 14 | 1 | 1 |
+| auxheatersource | aux heater source | enum | | true | DEVICE_DATA | 212 | 1 | 1 |
+| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 213 | 1 | 1 |
+| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 214 | 1 | 1 |
+| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 215 | 1 | 1 |
+| auxheaterstatus | aux heater status | enum | | false | DEVICE_DATA | 216 | 1 | 1 |
+| auxheaterlevel | aux heater level | uint8 | % | false | DEVICE_DATA | 217 | 1 | 1 |
+uint16
| auxheaterdelay | aux heater on delay | uint16 (>=10<=1000) | K*min | true | DEVICE_DATA | 218 | 1 | 10 |
+uint8
| auxmaxlimit | aux heater max limit | uint8 (>=0<=10) | K | true | DEVICE_DATA | 219 | 1 | 1/10 |
+uint8
| auxlimitstart | aux heater limit start | uint8 (>=0<=10) | K | true | DEVICE_DATA | 220 | 1 | 1/10 |
-| auxheatrmode | aux heater mode | enum [eco\|comfort] | | true | DEVICE_DATA | 221 | 1 | 1 |
+| auxheatrmode | aux heater mode | enum | | true | DEVICE_DATA | 221 | 1 | 1 |
+uint16
| hphystheat | on/off hyst heat | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 222 | 1 | 5 |
+uint16
| hphystcool | on/off hyst cool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 223 | 1 | 5 |
+uint16
| hphystpool | on/off hyst pool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 224 | 1 | 5 |
-| silentmode | silent mode | enum [off\|auto\|on] | | true | DEVICE_DATA | 225 | 1 | 1 |
-| silentfrom | silent mode from | uint8 (>=0<=3810) | minutes | true | DEVICE_DATA | 226 | 1 | 15 |
-| silentto | silent mode to | uint8 (>=0<=3810) | minutes | true | DEVICE_DATA | 227 | 1 | 15 |
-| mintempsilent | min outside temp for silent mode | int8 (>=-126<=126) | C | true | DEVICE_DATA | 228 | 1 | 1 |
-| tempparmode | outside temp parallel mode | int8 (>=-126<=126) | C | true | DEVICE_DATA | 229 | 1 | 1 |
-| auxheatmix | aux heater mixing valve | int8 (>=-100<=100) | % | false | DEVICE_DATA | 230 | 1 | 1 |
+| silentmode | silent mode | enum | | true | DEVICE_DATA | 225 | 1 | 1 |
+uint8
+| silentfrom | silent mode from | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 226 | 1 | 15 |
+uint8
+| silentto | silent mode to | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 227 | 1 | 15 |
+int8
+| mintempsilent | min outside temp for silent mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 228 | 1 | 1 |
+int8
+| tempparmode | outside temp parallel mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 229 | 1 | 1 |
+| auxheatmix | aux heater mixing valve | int8 | % | false | DEVICE_DATA | 230 | 1 | 1 |
+uint8
| tempdiffheat | temp diff TC3/TC0 heat | uint8 (>=2<=10) | K | true | DEVICE_DATA | 231 | 1 | 1/10 |
+uint8
| tempdiffcool | temp diff TC3/TC0 cool | uint8 (>=2<=10) | K | true | DEVICE_DATA | 232 | 1 | 1/10 |
-| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 233 | 1 | 1 |
-| heatcable | heating cable | boolean | | true | DEVICE_DATA | 234 | 1 | 1 |
-| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 235 | 1 | 1 |
-| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 236 | 1 | 1 |
-| primepumpmod | primary heatpump modulation | uint8 (>=0<=100) | % | true | DEVICE_DATA | 237 | 1 | 1 |
-| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 238 | 1 | 1 |
-| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 239 | 1 | 1 |
-| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 240 | 1 | 1 |
-| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 241 | 1 | 1 |
-| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 242 | 1 | 1 |
-| hppumpmode | primary heatpump mode | enum [auto\|continuous] | | true | DEVICE_DATA | 243 | 1 | 1 |
+| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 233 | 1 | 1 |
+| heatcable | heating cable | boolean | | true | DEVICE_DATA | 234 | 1 | 1 |
+| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 235 | 1 | 1 |
+| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 236 | 1 | 1 |
+uint8
+| primepumpmod | primary heatpump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 237 | 1 | 1 |
+| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 238 | 1 | 1 |
+| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 239 | 1 | 1 |
+| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 240 | 1 | 1 |
+| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 241 | 1 | 1 |
+| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 242 | 1 | 1 |
+| hppumpmode | primary heatpump mode | enum | | true | DEVICE_DATA | 243 | 1 | 1 |
+uint8
| fan | fan | uint8 (>=20<=100) | % | true | DEVICE_DATA | 244 | 1 | 1 |
-| fanspd | fan speed | uint8 (>=0<=100) | % | false | DEVICE_DATA | 245 | 1 | 1 |
-| shutdown | shutdown | cmd [off\|on] | | true | DEVICE_DATA | 246 | 1 | 1 |
-| hpcurrpower | compressor current power | uint16 (>=0<=31999) | W | false | DEVICE_DATA | 247 | 1 | 1 |
-| hppowerlimit | power limit | uint16 (>=0<=31999) | W | true | DEVICE_DATA | 248 | 1 | 1 |
-| dhw.alternatingop | alternating operation | boolean | | true | DHW | 15 | 1 | 1 |
+| fanspd | fan speed | uint8 | % | false | DEVICE_DATA | 245 | 1 | 1 |
+| shutdown | shutdown | cmd | | true | DEVICE_DATA | 246 | 1 | 1 |
+| hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 247 | 1 | 1 |
+uint16
+| hppowerlimit | power limit | uint16 (>=0<=0) | W | true | DEVICE_DATA | 248 | 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 (>=4<=15) | K | true | DHW | 21 | 1 | 1 |
+uint8
| dhw.ecodiff | eco diff | uint8 (>=4<=15) | K | true | DHW | 22 | 1 | 1 |
+uint8
| dhw.ecoplusdiff | eco+ diff | uint8 (>=4<=15) | K | true | DHW | 23 | 1 | 1 |
-| dhw.comfstop | comfort stop temp | uint8 (>=0<=254) | C | true | DHW | 24 | 1 | 1 |
-| dhw.ecostop | eco stop temp | uint8 (>=0<=254) | C | true | DHW | 25 | 1 | 1 |
-| dhw.ecoplusstop | eco+ stop temp | uint8 (>=0<=254) | 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 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| exhausttemp | exhaust temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 249 | 1 | 1/10 |
-| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
-| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
-| flamecurr | flame current | uint16 (>=0<=3199) | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
-| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
-| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
-| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
-| burnminpower | burner min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 256 | 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 | 249 | 1 | 1/10 |
+| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
+| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
+| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
+| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
+| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
+| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
+uint8
+| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 |
+uint8
| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 |
+uint8
| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 |
-| absburnpow | burner current power (absolute) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 259 | 1 | 1 |
-| heatblock | heating block | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 |
+| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+int8
| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 |
+int8
| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 |
+int8
| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 |
+int8
| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 |
-| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+uint8
| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 |
+uint8
| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 |
+uint8
| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 |
-| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+uint8
| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 1 |
-| nompower | nominal Power | uint8 (>=0<=254) | kW | true | DEVICE_DATA | 275 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| 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 | 275 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+uint24
| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 |
+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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| exhausttemp | exhaust temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 249 | 1 | 1/10 |
-| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
-| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
-| flamecurr | flame current | uint16 (>=0<=3199) | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
-| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
-| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
-| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
-| burnminpower | burner min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 256 | 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 | 249 | 1 | 1/10 |
+| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
+| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
+| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
+| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
+| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
+| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
+uint8
+| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 |
+uint8
| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 |
+uint8
| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 |
-| absburnpow | burner current power (absolute) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 259 | 1 | 1 |
-| heatblock | heating block | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 |
+| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+int8
| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 |
+int8
| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 |
+int8
| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 |
+int8
| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 |
-| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+uint8
| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 |
+uint8
| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 |
+uint8
| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 |
-| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+uint8
| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 1 |
-| nompower | nominal Power | uint8 (>=0<=254) | kW | true | DEVICE_DATA | 275 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| 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 | 275 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+uint24
| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 |
+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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| exhausttemp | exhaust temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 249 | 1 | 1/10 |
-| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
-| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
-| flamecurr | flame current | uint16 (>=0<=3199) | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
-| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
-| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
-| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
-| burnminpower | burner min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 256 | 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 | 249 | 1 | 1/10 |
+| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
+| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
+| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
+| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
+| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
+| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
+uint8
+| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 |
+uint8
| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 |
+uint8
| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 |
-| absburnpow | burner current power (absolute) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 259 | 1 | 1 |
-| heatblock | heating block | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 |
+| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+int8
| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 |
+int8
| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 |
+int8
| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 |
+int8
| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 |
-| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+uint8
| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 |
+uint8
| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 |
+uint8
| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 |
-| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+uint8
| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 1 |
-| nompower | nominal Power | uint8 (>=0<=254) | kW | true | DEVICE_DATA | 275 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| 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 | 275 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+uint24
| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 |
+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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| exhausttemp | exhaust temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 249 | 1 | 1/10 |
-| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
-| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
-| flamecurr | flame current | uint16 (>=0<=3199) | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
-| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
-| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
-| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
-| burnminpower | burner min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 256 | 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 | 249 | 1 | 1/10 |
+| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
+| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
+| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
+| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
+| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
+| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
+uint8
+| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 |
+uint8
| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 |
+uint8
| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 |
-| absburnpow | burner current power (absolute) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 259 | 1 | 1 |
-| heatblock | heating block | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 |
+| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+int8
| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 |
+int8
| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 |
+int8
| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 |
+int8
| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 |
-| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+uint8
| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 |
+uint8
| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 |
+uint8
| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 |
-| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+uint8
| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 1 |
-| nompower | nominal Power | uint8 (>=0<=254) | kW | true | DEVICE_DATA | 275 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| 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 | 275 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+uint24
| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 |
+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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| exhausttemp | exhaust temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 249 | 1 | 1/10 |
-| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
-| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
-| flamecurr | flame current | uint16 (>=0<=3199) | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
-| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
-| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
-| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
-| burnminpower | burner min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 256 | 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 | 249 | 1 | 1/10 |
+| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
+| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
+| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
+| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
+| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
+| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
+uint8
+| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 |
+uint8
| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 |
+uint8
| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 |
-| absburnpow | burner current power (absolute) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 259 | 1 | 1 |
-| heatblock | heating block | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 |
+| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+int8
| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 |
+int8
| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 |
+int8
| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 |
+int8
| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 |
-| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+uint8
| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 |
+uint8
| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 |
+uint8
| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 |
-| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+uint8
| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 1 |
-| nompower | nominal Power | uint8 (>=0<=254) | kW | true | DEVICE_DATA | 275 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| 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 | 275 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+uint24
| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 |
+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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| exhausttemp | exhaust temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 249 | 1 | 1/10 |
-| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
-| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
-| flamecurr | flame current | uint16 (>=0<=3199) | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
-| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
-| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
-| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
-| burnminpower | burner min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 256 | 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 | 249 | 1 | 1/10 |
+| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
+| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
+| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
+| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
+| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
+| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
+uint8
+| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 |
+uint8
| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 |
+uint8
| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 |
-| absburnpow | burner current power (absolute) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 259 | 1 | 1 |
-| heatblock | heating block | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 |
+| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+int8
| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 |
+int8
| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 |
+int8
| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 |
+int8
| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 |
-| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+uint8
| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 |
+uint8
| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 |
+uint8
| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 |
-| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+uint8
| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 1 |
-| nompower | nominal Power | uint8 (>=0<=254) | kW | true | DEVICE_DATA | 275 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| 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 | 275 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+uint24
| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 |
+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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| exhausttemp | exhaust temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 249 | 1 | 1/10 |
-| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
-| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
-| flamecurr | flame current | uint16 (>=0<=3199) | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
-| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
-| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
-| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
-| burnminpower | burner min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 256 | 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 | 249 | 1 | 1/10 |
+| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
+| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
+| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
+| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
+| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
+| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
+uint8
+| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 |
+uint8
| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 |
+uint8
| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 |
-| absburnpow | burner current power (absolute) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 259 | 1 | 1 |
-| heatblock | heating block | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 |
+| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+int8
| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 |
+int8
| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 |
+int8
| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 |
+int8
| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 |
-| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+uint8
| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 |
+uint8
| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 |
+uint8
| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 |
-| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+uint8
| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 1 |
-| nompower | nominal Power | uint8 (>=0<=254) | kW | true | DEVICE_DATA | 275 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| 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 | 275 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+uint24
| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 |
+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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| exhausttemp | exhaust temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 249 | 1 | 1/10 |
-| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
-| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
-| flamecurr | flame current | uint16 (>=0<=3199) | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
-| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
-| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
-| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
-| burnminpower | burner min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 256 | 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 | 249 | 1 | 1/10 |
+| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
+| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
+| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
+| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
+| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
+| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
+uint8
+| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 |
+uint8
| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 |
+uint8
| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 |
-| absburnpow | burner current power (absolute) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 259 | 1 | 1 |
-| heatblock | heating block | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 |
+| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+int8
| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 |
+int8
| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 |
+int8
| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 |
+int8
| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 |
-| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+uint8
| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 |
+uint8
| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 |
+uint8
| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 |
-| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+uint8
| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [pumpstep\|const.high\|const.medium\|const.low\|prop.high\|propo.low] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 1 |
-| nompower | nominal Power | uint8 (>=0<=254) | kW | true | DEVICE_DATA | 275 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| 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 | 275 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+uint24
| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 |
+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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| exhausttemp | exhaust temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 249 | 1 | 1/10 |
-| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
-| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
-| flamecurr | flame current | uint16 (>=0<=3199) | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
-| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
-| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
-| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
-| burnminpower | burner min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 256 | 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 | 249 | 1 | 1/10 |
+| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
+| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
+| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
+| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
+| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
+| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
+uint8
+| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 |
+uint8
| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 |
+uint8
| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 |
-| absburnpow | burner current power (absolute) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 259 | 1 | 1 |
-| heatblock | heating block | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 |
+| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+int8
| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 |
+int8
| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 |
+int8
| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 |
+int8
| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 |
-| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+uint8
| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 |
+uint8
| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 |
+uint8
| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 |
-| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+uint8
| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 1 |
-| nompower | nominal Power | uint8 (>=0<=254) | kW | true | DEVICE_DATA | 275 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| 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 | 275 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+uint24
| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 |
+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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| exhausttemp | exhaust temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 249 | 1 | 1/10 |
-| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
-| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
-| flamecurr | flame current | uint16 (>=0<=3199) | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
-| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
-| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
-| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
-| burnminpower | burner min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 256 | 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 | 249 | 1 | 1/10 |
+| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
+| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
+| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
+| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
+| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
+| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
+uint8
+| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 |
+uint8
| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 |
+uint8
| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 |
-| absburnpow | burner current power (absolute) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 259 | 1 | 1 |
-| heatblock | heating block | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 |
+| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+int8
| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 |
+int8
| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 |
+int8
| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 |
+int8
| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 |
-| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+uint8
| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 |
+uint8
| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 |
+uint8
| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 |
-| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+uint8
| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 1 |
-| nompower | nominal Power | uint8 (>=0<=254) | kW | true | DEVICE_DATA | 275 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| 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 | 275 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+uint24
| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 |
+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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| exhausttemp | exhaust temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 249 | 1 | 1/10 |
-| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
-| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
-| flamecurr | flame current | uint16 (>=0<=3199) | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
-| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
-| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
-| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
-| burnminpower | burner min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 256 | 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 | 249 | 1 | 1/10 |
+| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
+| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
+| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
+| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
+| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
+| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
+uint8
+| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 |
+uint8
| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 |
+uint8
| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 |
-| absburnpow | burner current power (absolute) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 259 | 1 | 1 |
-| heatblock | heating block | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 |
+| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+int8
| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 |
+int8
| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 |
+int8
| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 |
+int8
| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 |
-| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+uint8
| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 |
+uint8
| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 |
+uint8
| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 |
-| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+uint8
| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 1 |
-| nompower | nominal Power | uint8 (>=0<=254) | kW | true | DEVICE_DATA | 275 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| 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 | 275 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+uint24
| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 |
+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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| exhausttemp | exhaust temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 249 | 1 | 1/10 |
-| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
-| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
-| flamecurr | flame current | uint16 (>=0<=3199) | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
-| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
-| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
-| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
-| burnminpower | burner min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 256 | 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 | 249 | 1 | 1/10 |
+| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
+| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
+| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
+| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
+| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
+| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
+uint8
+| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 |
+uint8
| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 |
+uint8
| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 |
-| absburnpow | burner current power (absolute) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 259 | 1 | 1 |
-| heatblock | heating block | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 |
+| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+int8
| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 |
+int8
| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 |
+int8
| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 |
+int8
| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 |
-| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+uint8
| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 |
+uint8
| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 |
+uint8
| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 |
-| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+uint8
| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 1 |
-| nompower | nominal Power | uint8 (>=0<=254) | kW | true | DEVICE_DATA | 275 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| 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 | 275 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+uint24
| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 |
+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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| exhausttemp | exhaust temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 249 | 1 | 1/10 |
-| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
-| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
-| flamecurr | flame current | uint16 (>=0<=3199) | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
-| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
-| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
-| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
-| burnminpower | burner min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 256 | 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 | 249 | 1 | 1/10 |
+| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
+| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
+| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
+| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
+| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
+| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
+uint8
+| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 |
+uint8
| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 |
+uint8
| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 |
-| absburnpow | burner current power (absolute) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 259 | 1 | 1 |
-| heatblock | heating block | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 |
+| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+int8
| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 |
+int8
| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 |
+int8
| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 |
+int8
| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 |
-| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+uint8
| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 |
+uint8
| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 |
+uint8
| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 |
-| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+uint8
| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 1 |
-| nompower | nominal Power | uint8 (>=0<=254) | kW | true | DEVICE_DATA | 275 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| 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 | 275 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+uint24
| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 |
+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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| exhausttemp | exhaust temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 249 | 1 | 1/10 |
-| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
-| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
-| flamecurr | flame current | uint16 (>=0<=3199) | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
-| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
-| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
-| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
-| burnminpower | burner min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 256 | 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 | 249 | 1 | 1/10 |
+| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
+| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
+| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
+| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
+| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
+| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
+uint8
+| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 |
+uint8
| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 |
+uint8
| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 |
-| absburnpow | burner current power (absolute) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 259 | 1 | 1 |
-| heatblock | heating block | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 |
+| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+int8
| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 |
+int8
| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 |
+int8
| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 |
+int8
| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 |
-| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+uint8
| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 |
+uint8
| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 |
+uint8
| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 |
-| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+uint8
| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 1 |
-| nompower | nominal Power | uint8 (>=0<=254) | kW | true | DEVICE_DATA | 275 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| 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 | 275 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+uint24
| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 |
+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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| exhausttemp | exhaust temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 249 | 1 | 1/10 |
-| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
-| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
-| flamecurr | flame current | uint16 (>=0<=3199) | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
-| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
-| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
-| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
-| burnminpower | burner min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 256 | 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 | 249 | 1 | 1/10 |
+| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
+| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
+| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
+| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
+| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
+| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
+uint8
+| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 |
+uint8
| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 |
+uint8
| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 |
-| absburnpow | burner current power (absolute) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 259 | 1 | 1 |
-| heatblock | heating block | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 |
+| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+int8
| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 |
+int8
| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 |
+int8
| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 |
+int8
| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 |
-| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+uint8
| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 |
+uint8
| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 |
+uint8
| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 |
-| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+uint8
| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 1 |
-| nompower | nominal Power | uint8 (>=0<=254) | kW | true | DEVICE_DATA | 275 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| 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 | 275 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+uint24
| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 |
+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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| exhausttemp | exhaust temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 249 | 1 | 1/10 |
-| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
-| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
-| flamecurr | flame current | uint16 (>=0<=3199) | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
-| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
-| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
-| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
-| burnminpower | burner min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 256 | 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 | 249 | 1 | 1/10 |
+| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
+| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
+| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
+| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
+| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
+| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
+uint8
+| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 |
+uint8
| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 |
+uint8
| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 |
-| absburnpow | burner current power (absolute) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 259 | 1 | 1 |
-| heatblock | heating block | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 |
+| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+int8
| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 |
+int8
| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 |
+int8
| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 |
+int8
| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 |
-| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+uint8
| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 |
+uint8
| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 |
+uint8
| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 |
-| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+uint8
| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 1 |
-| nompower | nominal Power | uint8 (>=0<=254) | kW | true | DEVICE_DATA | 275 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| 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 | 275 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+uint24
| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 |
+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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| exhausttemp | exhaust temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 249 | 1 | 1/10 |
-| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
-| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
-| flamecurr | flame current | uint16 (>=0<=3199) | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
-| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
-| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
-| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
-| burnminpower | burner min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 256 | 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 | 249 | 1 | 1/10 |
+| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
+| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
+| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
+| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
+| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
+| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
+uint8
+| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 |
+uint8
| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 |
+uint8
| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 |
-| absburnpow | burner current power (absolute) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 259 | 1 | 1 |
-| heatblock | heating block | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 |
+| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+int8
| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 |
+int8
| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 |
+int8
| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 |
+int8
| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 |
-| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+uint8
| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 |
+uint8
| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 |
+uint8
| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 |
-| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+uint8
| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 1 |
-| nompower | nominal Power | uint8 (>=0<=254) | kW | true | DEVICE_DATA | 275 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| 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 | 275 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+uint24
| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 |
+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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| exhausttemp | exhaust temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 249 | 1 | 1/10 |
-| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
-| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
-| flamecurr | flame current | uint16 (>=0<=3199) | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
-| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
-| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
-| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
-| burnminpower | burner min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 256 | 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 | 249 | 1 | 1/10 |
+| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
+| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
+| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
+| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
+| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
+| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
+uint8
+| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 |
+uint8
| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 |
+uint8
| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 |
-| absburnpow | burner current power (absolute) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 259 | 1 | 1 |
-| heatblock | heating block | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 |
+| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+int8
| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 |
+int8
| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 |
+int8
| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 |
+int8
| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 |
-| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+uint8
| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 |
+uint8
| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 |
+uint8
| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 |
-| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+uint8
| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 1 |
-| nompower | nominal Power | uint8 (>=0<=254) | kW | true | DEVICE_DATA | 275 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| 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 | 275 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+uint24
| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 |
+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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| exhausttemp | exhaust temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 249 | 1 | 1/10 |
-| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
-| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
-| flamecurr | flame current | uint16 (>=0<=3199) | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
-| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
-| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
-| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
-| burnminpower | burner min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 256 | 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 | 249 | 1 | 1/10 |
+| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
+| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
+| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
+| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
+| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
+| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
+uint8
+| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 |
+uint8
| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 |
+uint8
| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 |
-| absburnpow | burner current power (absolute) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 259 | 1 | 1 |
-| heatblock | heating block | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 |
+| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+int8
| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 |
+int8
| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 |
+int8
| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 |
+int8
| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 |
-| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+uint8
| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 |
+uint8
| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 |
+uint8
| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 |
-| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+uint8
| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 1 |
-| nompower | nominal Power | uint8 (>=0<=254) | kW | true | DEVICE_DATA | 275 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| 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 | 275 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+uint24
| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 |
+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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| exhausttemp | exhaust temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 249 | 1 | 1/10 |
-| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
-| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
-| flamecurr | flame current | uint16 (>=0<=3199) | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
-| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
-| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
-| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
-| burnminpower | burner min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 256 | 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 | 249 | 1 | 1/10 |
+| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
+| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
+| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
+| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
+| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
+| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
+uint8
+| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 |
+uint8
| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 |
+uint8
| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 |
-| absburnpow | burner current power (absolute) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 259 | 1 | 1 |
-| heatblock | heating block | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 |
+| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+int8
| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 |
+int8
| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 |
+int8
| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 |
+int8
| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 |
-| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+uint8
| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 |
+uint8
| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 |
+uint8
| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 |
-| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+uint8
| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 1 |
-| nompower | nominal Power | uint8 (>=0<=254) | kW | true | DEVICE_DATA | 275 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| 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 | 275 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+uint24
| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 |
+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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| mandefrost | manual defrost | cmd [off\|on] | | true | DEVICE_DATA | 84 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
-| dhw.nrg | energy | uint24 (>=0<=167772) | kWh | false | DHW | 0 | 2 | 1/100 |
-| nrgheat | energy heating | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 87 | 2 | 1/100 |
-| nrgcool | energy cooling | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 |
-| metertotal | meter total | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 91 | 2 | 1/100 |
-| metercomp | meter compressor | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 93 | 2 | 1/100 |
-| metereheat | meter e-heater | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 95 | 2 | 1/100 |
-| meterheat | meter heating | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 97 | 2 | 1/100 |
-| metercool | meter cooling | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 99 | 2 | 1/100 |
-| dhw.meter | meter | uint24 (>=0<=167772) | kWh | false | DHW | 2 | 2 | 1/100 |
-| uptimetotal | heatpump total uptime | time (>=0<=279620) | minutes | false | DEVICE_DATA | 101 | 2 | 1/60 |
-| uptimecontrol | total operating time heat | time (>=0<=279620) | minutes | false | DEVICE_DATA | 103 | 2 | 1/60 |
-| uptimecompheating | operating time compressor heating | time (>=0<=279620) | minutes | false | DEVICE_DATA | 105 | 2 | 1/60 |
-| uptimecompcooling | operating time compressor cooling | time (>=0<=279620) | minutes | false | DEVICE_DATA | 107 | 2 | 1/60 |
-| dhw.uptimecomp | operating time compressor | time (>=0<=279620) | minutes | false | DHW | 4 | 2 | 1/60 |
-| uptimecomppool | operating time compressor pool | time (>=0<=279620) | minutes | false | DEVICE_DATA | 109 | 2 | 1/60 |
-| totalcompstarts | total compressor control starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 111 | 2 | 1 |
-| heatingstarts | heating control starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 113 | 2 | 1 |
-| coolingstarts | cooling control starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 115 | 2 | 1 |
-| dhw.startshp | starts hp | uint24 (>=0<=16777214) | | false | DHW | 6 | 2 | 1 |
-| poolstarts | pool control starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 117 | 2 | 1 |
-| nrgconstotal | total energy consumption | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 119 | 2 | 1 |
-| nrgconscomptotal | total energy consumption compressor | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 121 | 2 | 1 |
-| nrgconscompheating | energy consumption compressor heating | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 123 | 2 | 1 |
-| dhw.nrgconscomp | energy consumption compressor | uint24 (>=0<=16777214) | kWh | false | DHW | 8 | 2 | 1 |
-| nrgconscompcooling | energy consumption compressor cooling | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 125 | 2 | 1 |
-| nrgconscomppool | energy consumption compressor pool | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 127 | 2 | 1 |
-| auxelecheatnrgconstotal | total aux elec. heater energy consumption | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 129 | 2 | 1 |
-| auxelecheatnrgconsheating | aux elec. heater energy consumption heating | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 131 | 2 | 1 |
-| dhw.auxelecheatnrgcons | aux elec. heater energy consumption | uint24 (>=0<=16777214) | kWh | false | DHW | 10 | 2 | 1 |
-| auxelecheatnrgconspool | aux elec. heater energy consumption pool | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 133 | 2 | 1 |
-| nrgsupptotal | total energy supplied | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 135 | 2 | 1 |
-| nrgsuppheating | total energy supplied heating | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 137 | 2 | 1 |
-| dhw.nrgsupp | total energy warm supplied | uint24 (>=0<=16777214) | kWh | false | DHW | 12 | 2 | 1 |
-| nrgsuppcooling | total energy supplied cooling | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 139 | 2 | 1 |
-| nrgsupppool | total energy supplied pool | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 141 | 2 | 1 |
-| hppower | compressor power output | uint16 (>=0<=3199) | kW | false | DEVICE_DATA | 143 | 1 | 1/10 |
-| hpmaxpower | compressor max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 144 | 1 | 1 |
-| pvmaxcomp | pv compressor max power | uint8 (>=0<=25) | kW | true | DEVICE_DATA | 145 | 1 | 1/10 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| mandefrost | manual defrost | cmd | | true | DEVICE_DATA | 84 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| dhw.nrg | energy | uint24 | kWh | false | DHW | 0 | 2 | 1/100 |
+| nrgheat | energy heating | uint24 | kWh | false | DEVICE_DATA | 87 | 2 | 1/100 |
+| nrgcool | energy cooling | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 |
+| metertotal | meter total | uint24 | kWh | false | DEVICE_DATA | 91 | 2 | 1/100 |
+| metercomp | meter compressor | uint24 | kWh | false | DEVICE_DATA | 93 | 2 | 1/100 |
+| metereheat | meter e-heater | uint24 | kWh | false | DEVICE_DATA | 95 | 2 | 1/100 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/100 |
+| metercool | meter cooling | uint24 | kWh | false | DEVICE_DATA | 99 | 2 | 1/100 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/100 |
+| uptimetotal | heatpump total uptime | time | minutes | false | DEVICE_DATA | 101 | 2 | 1/60 |
+| uptimecontrol | total operating time heat | time | minutes | false | DEVICE_DATA | 103 | 2 | 1/60 |
+| uptimecompheating | operating time compressor heating | time | minutes | false | DEVICE_DATA | 105 | 2 | 1/60 |
+| uptimecompcooling | operating time compressor cooling | time | minutes | false | DEVICE_DATA | 107 | 2 | 1/60 |
+| dhw.uptimecomp | operating time compressor | time | minutes | false | DHW | 4 | 2 | 1/60 |
+| uptimecomppool | operating time compressor pool | time | minutes | false | DEVICE_DATA | 109 | 2 | 1/60 |
+| totalcompstarts | total compressor control starts | uint24 | | false | DEVICE_DATA | 111 | 2 | 1 |
+| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 113 | 2 | 1 |
+| coolingstarts | cooling control starts | uint24 | | false | DEVICE_DATA | 115 | 2 | 1 |
+| dhw.startshp | starts hp | uint24 | | false | DHW | 6 | 2 | 1 |
+| poolstarts | pool control starts | uint24 | | false | DEVICE_DATA | 117 | 2 | 1 |
+| nrgconstotal | total energy consumption | uint24 | kWh | false | DEVICE_DATA | 119 | 2 | 1 |
+| nrgconscomptotal | total energy consumption compressor | uint24 | kWh | false | DEVICE_DATA | 121 | 2 | 1 |
+| nrgconscompheating | energy consumption compressor heating | uint24 | kWh | false | DEVICE_DATA | 123 | 2 | 1 |
+| dhw.nrgconscomp | energy consumption compressor | uint24 | kWh | false | DHW | 8 | 2 | 1 |
+| nrgconscompcooling | energy consumption compressor cooling | uint24 | kWh | false | DEVICE_DATA | 125 | 2 | 1 |
+| nrgconscomppool | energy consumption compressor pool | uint24 | kWh | false | DEVICE_DATA | 127 | 2 | 1 |
+| auxelecheatnrgconstotal | total aux elec. heater energy consumption | uint24 | kWh | false | DEVICE_DATA | 129 | 2 | 1 |
+| auxelecheatnrgconsheating | aux elec. heater energy consumption heating | uint24 | kWh | false | DEVICE_DATA | 131 | 2 | 1 |
+| dhw.auxelecheatnrgcons | aux elec. heater energy consumption | uint24 | kWh | false | DHW | 10 | 2 | 1 |
+| auxelecheatnrgconspool | aux elec. heater energy consumption pool | uint24 | kWh | false | DEVICE_DATA | 133 | 2 | 1 |
+| nrgsupptotal | total energy supplied | uint24 | kWh | false | DEVICE_DATA | 135 | 2 | 1 |
+| nrgsuppheating | total energy supplied heating | uint24 | kWh | false | DEVICE_DATA | 137 | 2 | 1 |
+| dhw.nrgsupp | total energy warm supplied | uint24 | kWh | false | DHW | 12 | 2 | 1 |
+| nrgsuppcooling | total energy supplied cooling | uint24 | kWh | false | DEVICE_DATA | 139 | 2 | 1 |
+| nrgsupppool | total energy supplied pool | uint24 | kWh | false | DEVICE_DATA | 141 | 2 | 1 |
+| hppower | compressor power output | uint16 | kW | false | DEVICE_DATA | 143 | 1 | 1/10 |
+uint8
+| hpmaxpower | compressor max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 144 | 1 | 1 |
+uint8
+| pvmaxcomp | pv compressor max power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 145 | 1 | 1/10 |
+uint8
| powerreduction | power reduction | uint8 (>=30<=60) | % | true | DEVICE_DATA | 146 | 1 | 10 |
+uint8
| hpsetdiffpress | set differential pressure | uint8 (>=150<=750) | mbar | true | DEVICE_DATA | 147 | 1 | 50 |
-| hpcompon | hp compressor | boolean | | false | DEVICE_DATA | 148 | 1 | 1 |
-| hpactivity | compressor activity | enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm] | | false | DEVICE_DATA | 149 | 1 | 1 |
-| hpbrinepumpspd | brine pump speed | uint8 (>=0<=100) | % | false | DEVICE_DATA | 150 | 1 | 1 |
-| hpswitchvalve | switch valve | boolean | | false | DEVICE_DATA | 151 | 1 | 1 |
-| hpcompspd | compressor speed | uint8 (>=0<=100) | % | false | DEVICE_DATA | 152 | 1 | 1 |
-| hptargetspd | compressor target speed | uint8 (>=0<=100) | % | false | DEVICE_DATA | 153 | 1 | 1 |
-| hpcircspd | circulation pump speed | uint8 (>=0<=100) | % | false | DEVICE_DATA | 154 | 1 | 1 |
-| recvalve | receiver valve VR0 | uint8 (>=0<=100) | % | false | DEVICE_DATA | 155 | 1 | 1 |
-| expvalve | expansion valve VR1 | uint8 (>=0<=100) | % | false | DEVICE_DATA | 156 | 1 | 1 |
-| hpbrinein | brine in/evaporator | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 157 | 1 | 1/10 |
-| hpbrineout | brine out/condenser | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 158 | 1 | 1/10 |
-| hptc0 | heat carrier return (TC0) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 159 | 1 | 1/10 |
-| hptc1 | heat carrier forward (TC1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 160 | 1 | 1/10 |
-| hptc3 | condenser temperature (TC3) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 161 | 1 | 1/10 |
-| hptr1 | compressor temperature (TR1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 162 | 1 | 1/10 |
-| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 163 | 1 | 1/10 |
-| hptr4 | evaporator inlet temperature (TR4) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 164 | 1 | 1/10 |
-| hptr5 | compressor inlet temperature (TR5) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 165 | 1 | 1/10 |
-| hptr6 | compressor outlet temperature (TR6) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 166 | 1 | 1/10 |
-| hptr7 | refrigerant temperature gas side (condenser input) (TR7) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 167 | 1 | 1/10 |
-| hptl2 | air inlet temperature (TL2) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 168 | 1 | 1/10 |
-| hppl1 | low pressure side temperature (PL1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 169 | 1 | 1/10 |
-| hpph1 | high pressure side temperature (PH1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 170 | 1 | 1/10 |
-| hpta4 | drain pan temp (TA4) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 171 | 1 | 1/10 |
-| hptw1 | reservoir temp (TW1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 172 | 1 | 1/10 |
-| poolsettemp | pool set temperature | uint8 (>=0<=127) | C | true | DEVICE_DATA | 173 | 1 | 1/2 |
-| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 174 | 1 | 1 |
-| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 175 | 8 | 1 |
-| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 183 | 1 | 1 |
-| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 184 | 8 | 1 |
-| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 192 | 1 | 1 |
-| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 193 | 8 | 1 |
-| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 201 | 1 | 1 |
-| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 202 | 8 | 1 |
-| maxheatcomp | heat limit compressor | enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] | | true | DEVICE_DATA | 210 | 1 | 1 |
-| maxheatheat | heat limit heating | enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] | | true | DEVICE_DATA | 211 | 1 | 1 |
-| dhw.maxheat | heat limit | enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] | | true | DHW | 14 | 1 | 1 |
-| auxheatersource | aux heater source | enum [not installed\|electric heater\|exclusive\|parallel\|hybrid] | | true | DEVICE_DATA | 212 | 1 | 1 |
-| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 213 | 1 | 1 |
-| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 214 | 1 | 1 |
-| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 215 | 1 | 1 |
-| auxheaterstatus | aux heater status | enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm] | | false | DEVICE_DATA | 216 | 1 | 1 |
-| auxheaterlevel | aux heater level | uint8 (>=0<=100) | % | false | DEVICE_DATA | 217 | 1 | 1 |
+| hpcompon | hp compressor | boolean | | false | DEVICE_DATA | 148 | 1 | 1 |
+| hpactivity | compressor activity | enum | | false | DEVICE_DATA | 149 | 1 | 1 |
+| hpbrinepumpspd | brine pump speed | uint8 | % | false | DEVICE_DATA | 150 | 1 | 1 |
+| hpswitchvalve | switch valve | boolean | | false | DEVICE_DATA | 151 | 1 | 1 |
+| hpcompspd | compressor speed | uint8 | % | false | DEVICE_DATA | 152 | 1 | 1 |
+| hptargetspd | compressor target speed | uint8 | % | false | DEVICE_DATA | 153 | 1 | 1 |
+| hpcircspd | circulation pump speed | uint8 | % | false | DEVICE_DATA | 154 | 1 | 1 |
+| recvalve | receiver valve VR0 | uint8 | % | false | DEVICE_DATA | 155 | 1 | 1 |
+| expvalve | expansion valve VR1 | uint8 | % | false | DEVICE_DATA | 156 | 1 | 1 |
+| hpbrinein | brine in/evaporator | int16 | C | false | DEVICE_DATA | 157 | 1 | 1/10 |
+| hpbrineout | brine out/condenser | int16 | C | false | DEVICE_DATA | 158 | 1 | 1/10 |
+| hptc0 | heat carrier return (TC0) | int16 | C | false | DEVICE_DATA | 159 | 1 | 1/10 |
+| hptc1 | heat carrier forward (TC1) | int16 | C | false | DEVICE_DATA | 160 | 1 | 1/10 |
+| hptc3 | condenser temperature (TC3) | int16 | C | false | DEVICE_DATA | 161 | 1 | 1/10 |
+| hptr1 | compressor temperature (TR1) | int16 | C | false | DEVICE_DATA | 162 | 1 | 1/10 |
+| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 | C | false | DEVICE_DATA | 163 | 1 | 1/10 |
+| hptr4 | evaporator inlet temperature (TR4) | int16 | C | false | DEVICE_DATA | 164 | 1 | 1/10 |
+| hptr5 | compressor inlet temperature (TR5) | int16 | C | false | DEVICE_DATA | 165 | 1 | 1/10 |
+| hptr6 | compressor outlet temperature (TR6) | int16 | C | false | DEVICE_DATA | 166 | 1 | 1/10 |
+| hptr7 | refrigerant temperature gas side (condenser input) (TR7) | int16 | C | false | DEVICE_DATA | 167 | 1 | 1/10 |
+| hptl2 | air inlet temperature (TL2) | int16 | C | false | DEVICE_DATA | 168 | 1 | 1/10 |
+| hppl1 | low pressure side temperature (PL1) | int16 | C | false | DEVICE_DATA | 169 | 1 | 1/10 |
+| hpph1 | high pressure side temperature (PH1) | int16 | C | false | DEVICE_DATA | 170 | 1 | 1/10 |
+| hpta4 | drain pan temp (TA4) | int16 | C | false | DEVICE_DATA | 171 | 1 | 1/10 |
+| hptw1 | reservoir temp (TW1) | int16 | C | false | DEVICE_DATA | 172 | 1 | 1/10 |
+uint8
+| poolsettemp | pool set temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 173 | 1 | 1/2 |
+| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 174 | 1 | 1 |
+| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 175 | 8 | 1 |
+| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 183 | 1 | 1 |
+| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 184 | 8 | 1 |
+| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 192 | 1 | 1 |
+| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 193 | 8 | 1 |
+| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 201 | 1 | 1 |
+| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 202 | 8 | 1 |
+| maxheatcomp | heat limit compressor | enum | | true | DEVICE_DATA | 210 | 1 | 1 |
+| maxheatheat | heat limit heating | enum | | true | DEVICE_DATA | 211 | 1 | 1 |
+| dhw.maxheat | heat limit | enum | | true | DHW | 14 | 1 | 1 |
+| auxheatersource | aux heater source | enum | | true | DEVICE_DATA | 212 | 1 | 1 |
+| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 213 | 1 | 1 |
+| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 214 | 1 | 1 |
+| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 215 | 1 | 1 |
+| auxheaterstatus | aux heater status | enum | | false | DEVICE_DATA | 216 | 1 | 1 |
+| auxheaterlevel | aux heater level | uint8 | % | false | DEVICE_DATA | 217 | 1 | 1 |
+uint16
| auxheaterdelay | aux heater on delay | uint16 (>=10<=1000) | K*min | true | DEVICE_DATA | 218 | 1 | 10 |
+uint8
| auxmaxlimit | aux heater max limit | uint8 (>=0<=10) | K | true | DEVICE_DATA | 219 | 1 | 1/10 |
+uint8
| auxlimitstart | aux heater limit start | uint8 (>=0<=10) | K | true | DEVICE_DATA | 220 | 1 | 1/10 |
-| auxheatrmode | aux heater mode | enum [eco\|comfort] | | true | DEVICE_DATA | 221 | 1 | 1 |
+| auxheatrmode | aux heater mode | enum | | true | DEVICE_DATA | 221 | 1 | 1 |
+uint16
| hphystheat | on/off hyst heat | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 222 | 1 | 5 |
+uint16
| hphystcool | on/off hyst cool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 223 | 1 | 5 |
+uint16
| hphystpool | on/off hyst pool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 224 | 1 | 5 |
-| silentmode | silent mode | enum [off\|auto\|on] | | true | DEVICE_DATA | 225 | 1 | 1 |
-| silentfrom | silent mode from | uint8 (>=0<=3810) | minutes | true | DEVICE_DATA | 226 | 1 | 15 |
-| silentto | silent mode to | uint8 (>=0<=3810) | minutes | true | DEVICE_DATA | 227 | 1 | 15 |
-| mintempsilent | min outside temp for silent mode | int8 (>=-126<=126) | C | true | DEVICE_DATA | 228 | 1 | 1 |
-| tempparmode | outside temp parallel mode | int8 (>=-126<=126) | C | true | DEVICE_DATA | 229 | 1 | 1 |
-| auxheatmix | aux heater mixing valve | int8 (>=-100<=100) | % | false | DEVICE_DATA | 230 | 1 | 1 |
+| silentmode | silent mode | enum | | true | DEVICE_DATA | 225 | 1 | 1 |
+uint8
+| silentfrom | silent mode from | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 226 | 1 | 15 |
+uint8
+| silentto | silent mode to | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 227 | 1 | 15 |
+int8
+| mintempsilent | min outside temp for silent mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 228 | 1 | 1 |
+int8
+| tempparmode | outside temp parallel mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 229 | 1 | 1 |
+| auxheatmix | aux heater mixing valve | int8 | % | false | DEVICE_DATA | 230 | 1 | 1 |
+uint8
| tempdiffheat | temp diff TC3/TC0 heat | uint8 (>=2<=10) | K | true | DEVICE_DATA | 231 | 1 | 1/10 |
+uint8
| tempdiffcool | temp diff TC3/TC0 cool | uint8 (>=2<=10) | K | true | DEVICE_DATA | 232 | 1 | 1/10 |
-| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 233 | 1 | 1 |
-| heatcable | heating cable | boolean | | true | DEVICE_DATA | 234 | 1 | 1 |
-| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 235 | 1 | 1 |
-| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 236 | 1 | 1 |
-| primepumpmod | primary heatpump modulation | uint8 (>=0<=100) | % | true | DEVICE_DATA | 237 | 1 | 1 |
-| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 238 | 1 | 1 |
-| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 239 | 1 | 1 |
-| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 240 | 1 | 1 |
-| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 241 | 1 | 1 |
-| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 242 | 1 | 1 |
-| hppumpmode | primary heatpump mode | enum [auto\|continuous] | | true | DEVICE_DATA | 243 | 1 | 1 |
+| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 233 | 1 | 1 |
+| heatcable | heating cable | boolean | | true | DEVICE_DATA | 234 | 1 | 1 |
+| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 235 | 1 | 1 |
+| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 236 | 1 | 1 |
+uint8
+| primepumpmod | primary heatpump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 237 | 1 | 1 |
+| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 238 | 1 | 1 |
+| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 239 | 1 | 1 |
+| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 240 | 1 | 1 |
+| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 241 | 1 | 1 |
+| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 242 | 1 | 1 |
+| hppumpmode | primary heatpump mode | enum | | true | DEVICE_DATA | 243 | 1 | 1 |
+uint8
| fan | fan | uint8 (>=20<=100) | % | true | DEVICE_DATA | 244 | 1 | 1 |
-| fanspd | fan speed | uint8 (>=0<=100) | % | false | DEVICE_DATA | 245 | 1 | 1 |
-| shutdown | shutdown | cmd [off\|on] | | true | DEVICE_DATA | 246 | 1 | 1 |
-| hpcurrpower | compressor current power | uint16 (>=0<=31999) | W | false | DEVICE_DATA | 247 | 1 | 1 |
-| hppowerlimit | power limit | uint16 (>=0<=31999) | W | true | DEVICE_DATA | 248 | 1 | 1 |
-| dhw.alternatingop | alternating operation | boolean | | true | DHW | 15 | 1 | 1 |
+| fanspd | fan speed | uint8 | % | false | DEVICE_DATA | 245 | 1 | 1 |
+| shutdown | shutdown | cmd | | true | DEVICE_DATA | 246 | 1 | 1 |
+| hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 247 | 1 | 1 |
+uint16
+| hppowerlimit | power limit | uint16 (>=0<=0) | W | true | DEVICE_DATA | 248 | 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 (>=4<=15) | K | true | DHW | 21 | 1 | 1 |
+uint8
| dhw.ecodiff | eco diff | uint8 (>=4<=15) | K | true | DHW | 22 | 1 | 1 |
+uint8
| dhw.ecoplusdiff | eco+ diff | uint8 (>=4<=15) | K | true | DHW | 23 | 1 | 1 |
-| dhw.comfstop | comfort stop temp | uint8 (>=0<=254) | C | true | DHW | 24 | 1 | 1 |
-| dhw.ecostop | eco stop temp | uint8 (>=0<=254) | C | true | DHW | 25 | 1 | 1 |
-| dhw.ecoplusstop | eco+ stop temp | uint8 (>=0<=254) | 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 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| mandefrost | manual defrost | cmd [off\|on] | | true | DEVICE_DATA | 84 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
-| dhw.nrg | energy | uint24 (>=0<=167772) | kWh | false | DHW | 0 | 2 | 1/100 |
-| nrgheat | energy heating | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 87 | 2 | 1/100 |
-| nrgcool | energy cooling | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 |
-| metertotal | meter total | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 91 | 2 | 1/100 |
-| metercomp | meter compressor | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 93 | 2 | 1/100 |
-| metereheat | meter e-heater | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 95 | 2 | 1/100 |
-| meterheat | meter heating | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 97 | 2 | 1/100 |
-| metercool | meter cooling | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 99 | 2 | 1/100 |
-| dhw.meter | meter | uint24 (>=0<=167772) | kWh | false | DHW | 2 | 2 | 1/100 |
-| uptimetotal | heatpump total uptime | time (>=0<=279620) | minutes | false | DEVICE_DATA | 101 | 2 | 1/60 |
-| uptimecontrol | total operating time heat | time (>=0<=279620) | minutes | false | DEVICE_DATA | 103 | 2 | 1/60 |
-| uptimecompheating | operating time compressor heating | time (>=0<=279620) | minutes | false | DEVICE_DATA | 105 | 2 | 1/60 |
-| uptimecompcooling | operating time compressor cooling | time (>=0<=279620) | minutes | false | DEVICE_DATA | 107 | 2 | 1/60 |
-| dhw.uptimecomp | operating time compressor | time (>=0<=279620) | minutes | false | DHW | 4 | 2 | 1/60 |
-| uptimecomppool | operating time compressor pool | time (>=0<=279620) | minutes | false | DEVICE_DATA | 109 | 2 | 1/60 |
-| totalcompstarts | total compressor control starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 111 | 2 | 1 |
-| heatingstarts | heating control starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 113 | 2 | 1 |
-| coolingstarts | cooling control starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 115 | 2 | 1 |
-| dhw.startshp | starts hp | uint24 (>=0<=16777214) | | false | DHW | 6 | 2 | 1 |
-| poolstarts | pool control starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 117 | 2 | 1 |
-| nrgconstotal | total energy consumption | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 119 | 2 | 1 |
-| nrgconscomptotal | total energy consumption compressor | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 121 | 2 | 1 |
-| nrgconscompheating | energy consumption compressor heating | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 123 | 2 | 1 |
-| dhw.nrgconscomp | energy consumption compressor | uint24 (>=0<=16777214) | kWh | false | DHW | 8 | 2 | 1 |
-| nrgconscompcooling | energy consumption compressor cooling | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 125 | 2 | 1 |
-| nrgconscomppool | energy consumption compressor pool | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 127 | 2 | 1 |
-| auxelecheatnrgconstotal | total aux elec. heater energy consumption | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 129 | 2 | 1 |
-| auxelecheatnrgconsheating | aux elec. heater energy consumption heating | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 131 | 2 | 1 |
-| dhw.auxelecheatnrgcons | aux elec. heater energy consumption | uint24 (>=0<=16777214) | kWh | false | DHW | 10 | 2 | 1 |
-| auxelecheatnrgconspool | aux elec. heater energy consumption pool | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 133 | 2 | 1 |
-| nrgsupptotal | total energy supplied | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 135 | 2 | 1 |
-| nrgsuppheating | total energy supplied heating | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 137 | 2 | 1 |
-| dhw.nrgsupp | total energy warm supplied | uint24 (>=0<=16777214) | kWh | false | DHW | 12 | 2 | 1 |
-| nrgsuppcooling | total energy supplied cooling | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 139 | 2 | 1 |
-| nrgsupppool | total energy supplied pool | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 141 | 2 | 1 |
-| hppower | compressor power output | uint16 (>=0<=3199) | kW | false | DEVICE_DATA | 143 | 1 | 1/10 |
-| hpmaxpower | compressor max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 144 | 1 | 1 |
-| pvmaxcomp | pv compressor max power | uint8 (>=0<=25) | kW | true | DEVICE_DATA | 145 | 1 | 1/10 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| mandefrost | manual defrost | cmd | | true | DEVICE_DATA | 84 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| dhw.nrg | energy | uint24 | kWh | false | DHW | 0 | 2 | 1/100 |
+| nrgheat | energy heating | uint24 | kWh | false | DEVICE_DATA | 87 | 2 | 1/100 |
+| nrgcool | energy cooling | uint24 | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 |
+| metertotal | meter total | uint24 | kWh | false | DEVICE_DATA | 91 | 2 | 1/100 |
+| metercomp | meter compressor | uint24 | kWh | false | DEVICE_DATA | 93 | 2 | 1/100 |
+| metereheat | meter e-heater | uint24 | kWh | false | DEVICE_DATA | 95 | 2 | 1/100 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/100 |
+| metercool | meter cooling | uint24 | kWh | false | DEVICE_DATA | 99 | 2 | 1/100 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/100 |
+| uptimetotal | heatpump total uptime | time | minutes | false | DEVICE_DATA | 101 | 2 | 1/60 |
+| uptimecontrol | total operating time heat | time | minutes | false | DEVICE_DATA | 103 | 2 | 1/60 |
+| uptimecompheating | operating time compressor heating | time | minutes | false | DEVICE_DATA | 105 | 2 | 1/60 |
+| uptimecompcooling | operating time compressor cooling | time | minutes | false | DEVICE_DATA | 107 | 2 | 1/60 |
+| dhw.uptimecomp | operating time compressor | time | minutes | false | DHW | 4 | 2 | 1/60 |
+| uptimecomppool | operating time compressor pool | time | minutes | false | DEVICE_DATA | 109 | 2 | 1/60 |
+| totalcompstarts | total compressor control starts | uint24 | | false | DEVICE_DATA | 111 | 2 | 1 |
+| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 113 | 2 | 1 |
+| coolingstarts | cooling control starts | uint24 | | false | DEVICE_DATA | 115 | 2 | 1 |
+| dhw.startshp | starts hp | uint24 | | false | DHW | 6 | 2 | 1 |
+| poolstarts | pool control starts | uint24 | | false | DEVICE_DATA | 117 | 2 | 1 |
+| nrgconstotal | total energy consumption | uint24 | kWh | false | DEVICE_DATA | 119 | 2 | 1 |
+| nrgconscomptotal | total energy consumption compressor | uint24 | kWh | false | DEVICE_DATA | 121 | 2 | 1 |
+| nrgconscompheating | energy consumption compressor heating | uint24 | kWh | false | DEVICE_DATA | 123 | 2 | 1 |
+| dhw.nrgconscomp | energy consumption compressor | uint24 | kWh | false | DHW | 8 | 2 | 1 |
+| nrgconscompcooling | energy consumption compressor cooling | uint24 | kWh | false | DEVICE_DATA | 125 | 2 | 1 |
+| nrgconscomppool | energy consumption compressor pool | uint24 | kWh | false | DEVICE_DATA | 127 | 2 | 1 |
+| auxelecheatnrgconstotal | total aux elec. heater energy consumption | uint24 | kWh | false | DEVICE_DATA | 129 | 2 | 1 |
+| auxelecheatnrgconsheating | aux elec. heater energy consumption heating | uint24 | kWh | false | DEVICE_DATA | 131 | 2 | 1 |
+| dhw.auxelecheatnrgcons | aux elec. heater energy consumption | uint24 | kWh | false | DHW | 10 | 2 | 1 |
+| auxelecheatnrgconspool | aux elec. heater energy consumption pool | uint24 | kWh | false | DEVICE_DATA | 133 | 2 | 1 |
+| nrgsupptotal | total energy supplied | uint24 | kWh | false | DEVICE_DATA | 135 | 2 | 1 |
+| nrgsuppheating | total energy supplied heating | uint24 | kWh | false | DEVICE_DATA | 137 | 2 | 1 |
+| dhw.nrgsupp | total energy warm supplied | uint24 | kWh | false | DHW | 12 | 2 | 1 |
+| nrgsuppcooling | total energy supplied cooling | uint24 | kWh | false | DEVICE_DATA | 139 | 2 | 1 |
+| nrgsupppool | total energy supplied pool | uint24 | kWh | false | DEVICE_DATA | 141 | 2 | 1 |
+| hppower | compressor power output | uint16 | kW | false | DEVICE_DATA | 143 | 1 | 1/10 |
+uint8
+| hpmaxpower | compressor max power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 144 | 1 | 1 |
+uint8
+| pvmaxcomp | pv compressor max power | uint8 (>=0<=0) | kW | true | DEVICE_DATA | 145 | 1 | 1/10 |
+uint8
| powerreduction | power reduction | uint8 (>=30<=60) | % | true | DEVICE_DATA | 146 | 1 | 10 |
+uint8
| hpsetdiffpress | set differential pressure | uint8 (>=150<=750) | mbar | true | DEVICE_DATA | 147 | 1 | 50 |
-| hpcompon | hp compressor | boolean | | false | DEVICE_DATA | 148 | 1 | 1 |
-| hpactivity | compressor activity | enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm] | | false | DEVICE_DATA | 149 | 1 | 1 |
-| hpbrinepumpspd | brine pump speed | uint8 (>=0<=100) | % | false | DEVICE_DATA | 150 | 1 | 1 |
-| hpswitchvalve | switch valve | boolean | | false | DEVICE_DATA | 151 | 1 | 1 |
-| hpcompspd | compressor speed | uint8 (>=0<=100) | % | false | DEVICE_DATA | 152 | 1 | 1 |
-| hptargetspd | compressor target speed | uint8 (>=0<=100) | % | false | DEVICE_DATA | 153 | 1 | 1 |
-| hpcircspd | circulation pump speed | uint8 (>=0<=100) | % | false | DEVICE_DATA | 154 | 1 | 1 |
-| recvalve | receiver valve VR0 | uint8 (>=0<=100) | % | false | DEVICE_DATA | 155 | 1 | 1 |
-| expvalve | expansion valve VR1 | uint8 (>=0<=100) | % | false | DEVICE_DATA | 156 | 1 | 1 |
-| hpbrinein | brine in/evaporator | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 157 | 1 | 1/10 |
-| hpbrineout | brine out/condenser | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 158 | 1 | 1/10 |
-| hptc0 | heat carrier return (TC0) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 159 | 1 | 1/10 |
-| hptc1 | heat carrier forward (TC1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 160 | 1 | 1/10 |
-| hptc3 | condenser temperature (TC3) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 161 | 1 | 1/10 |
-| hptr1 | compressor temperature (TR1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 162 | 1 | 1/10 |
-| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 163 | 1 | 1/10 |
-| hptr4 | evaporator inlet temperature (TR4) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 164 | 1 | 1/10 |
-| hptr5 | compressor inlet temperature (TR5) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 165 | 1 | 1/10 |
-| hptr6 | compressor outlet temperature (TR6) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 166 | 1 | 1/10 |
-| hptr7 | refrigerant temperature gas side (condenser input) (TR7) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 167 | 1 | 1/10 |
-| hptl2 | air inlet temperature (TL2) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 168 | 1 | 1/10 |
-| hppl1 | low pressure side temperature (PL1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 169 | 1 | 1/10 |
-| hpph1 | high pressure side temperature (PH1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 170 | 1 | 1/10 |
-| hpta4 | drain pan temp (TA4) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 171 | 1 | 1/10 |
-| hptw1 | reservoir temp (TW1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 172 | 1 | 1/10 |
-| poolsettemp | pool set temperature | uint8 (>=0<=127) | C | true | DEVICE_DATA | 173 | 1 | 1/2 |
-| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 174 | 1 | 1 |
-| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 175 | 8 | 1 |
-| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 183 | 1 | 1 |
-| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 184 | 8 | 1 |
-| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 192 | 1 | 1 |
-| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 193 | 8 | 1 |
-| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 201 | 1 | 1 |
-| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 202 | 8 | 1 |
-| maxheatcomp | heat limit compressor | enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] | | true | DEVICE_DATA | 210 | 1 | 1 |
-| maxheatheat | heat limit heating | enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] | | true | DEVICE_DATA | 211 | 1 | 1 |
-| dhw.maxheat | heat limit | enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] | | true | DHW | 14 | 1 | 1 |
-| auxheatersource | aux heater source | enum [not installed\|electric heater\|exclusive\|parallel\|hybrid] | | true | DEVICE_DATA | 212 | 1 | 1 |
-| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 213 | 1 | 1 |
-| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 214 | 1 | 1 |
-| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 215 | 1 | 1 |
-| auxheaterstatus | aux heater status | enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm] | | false | DEVICE_DATA | 216 | 1 | 1 |
-| auxheaterlevel | aux heater level | uint8 (>=0<=100) | % | false | DEVICE_DATA | 217 | 1 | 1 |
+| hpcompon | hp compressor | boolean | | false | DEVICE_DATA | 148 | 1 | 1 |
+| hpactivity | compressor activity | enum | | false | DEVICE_DATA | 149 | 1 | 1 |
+| hpbrinepumpspd | brine pump speed | uint8 | % | false | DEVICE_DATA | 150 | 1 | 1 |
+| hpswitchvalve | switch valve | boolean | | false | DEVICE_DATA | 151 | 1 | 1 |
+| hpcompspd | compressor speed | uint8 | % | false | DEVICE_DATA | 152 | 1 | 1 |
+| hptargetspd | compressor target speed | uint8 | % | false | DEVICE_DATA | 153 | 1 | 1 |
+| hpcircspd | circulation pump speed | uint8 | % | false | DEVICE_DATA | 154 | 1 | 1 |
+| recvalve | receiver valve VR0 | uint8 | % | false | DEVICE_DATA | 155 | 1 | 1 |
+| expvalve | expansion valve VR1 | uint8 | % | false | DEVICE_DATA | 156 | 1 | 1 |
+| hpbrinein | brine in/evaporator | int16 | C | false | DEVICE_DATA | 157 | 1 | 1/10 |
+| hpbrineout | brine out/condenser | int16 | C | false | DEVICE_DATA | 158 | 1 | 1/10 |
+| hptc0 | heat carrier return (TC0) | int16 | C | false | DEVICE_DATA | 159 | 1 | 1/10 |
+| hptc1 | heat carrier forward (TC1) | int16 | C | false | DEVICE_DATA | 160 | 1 | 1/10 |
+| hptc3 | condenser temperature (TC3) | int16 | C | false | DEVICE_DATA | 161 | 1 | 1/10 |
+| hptr1 | compressor temperature (TR1) | int16 | C | false | DEVICE_DATA | 162 | 1 | 1/10 |
+| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 | C | false | DEVICE_DATA | 163 | 1 | 1/10 |
+| hptr4 | evaporator inlet temperature (TR4) | int16 | C | false | DEVICE_DATA | 164 | 1 | 1/10 |
+| hptr5 | compressor inlet temperature (TR5) | int16 | C | false | DEVICE_DATA | 165 | 1 | 1/10 |
+| hptr6 | compressor outlet temperature (TR6) | int16 | C | false | DEVICE_DATA | 166 | 1 | 1/10 |
+| hptr7 | refrigerant temperature gas side (condenser input) (TR7) | int16 | C | false | DEVICE_DATA | 167 | 1 | 1/10 |
+| hptl2 | air inlet temperature (TL2) | int16 | C | false | DEVICE_DATA | 168 | 1 | 1/10 |
+| hppl1 | low pressure side temperature (PL1) | int16 | C | false | DEVICE_DATA | 169 | 1 | 1/10 |
+| hpph1 | high pressure side temperature (PH1) | int16 | C | false | DEVICE_DATA | 170 | 1 | 1/10 |
+| hpta4 | drain pan temp (TA4) | int16 | C | false | DEVICE_DATA | 171 | 1 | 1/10 |
+| hptw1 | reservoir temp (TW1) | int16 | C | false | DEVICE_DATA | 172 | 1 | 1/10 |
+uint8
+| poolsettemp | pool set temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 173 | 1 | 1/2 |
+| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 174 | 1 | 1 |
+| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 175 | 8 | 1 |
+| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 183 | 1 | 1 |
+| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 184 | 8 | 1 |
+| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 192 | 1 | 1 |
+| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 193 | 8 | 1 |
+| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 201 | 1 | 1 |
+| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 202 | 8 | 1 |
+| maxheatcomp | heat limit compressor | enum | | true | DEVICE_DATA | 210 | 1 | 1 |
+| maxheatheat | heat limit heating | enum | | true | DEVICE_DATA | 211 | 1 | 1 |
+| dhw.maxheat | heat limit | enum | | true | DHW | 14 | 1 | 1 |
+| auxheatersource | aux heater source | enum | | true | DEVICE_DATA | 212 | 1 | 1 |
+| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 213 | 1 | 1 |
+| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 214 | 1 | 1 |
+| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 215 | 1 | 1 |
+| auxheaterstatus | aux heater status | enum | | false | DEVICE_DATA | 216 | 1 | 1 |
+| auxheaterlevel | aux heater level | uint8 | % | false | DEVICE_DATA | 217 | 1 | 1 |
+uint16
| auxheaterdelay | aux heater on delay | uint16 (>=10<=1000) | K*min | true | DEVICE_DATA | 218 | 1 | 10 |
+uint8
| auxmaxlimit | aux heater max limit | uint8 (>=0<=10) | K | true | DEVICE_DATA | 219 | 1 | 1/10 |
+uint8
| auxlimitstart | aux heater limit start | uint8 (>=0<=10) | K | true | DEVICE_DATA | 220 | 1 | 1/10 |
-| auxheatrmode | aux heater mode | enum [eco\|comfort] | | true | DEVICE_DATA | 221 | 1 | 1 |
+| auxheatrmode | aux heater mode | enum | | true | DEVICE_DATA | 221 | 1 | 1 |
+uint16
| hphystheat | on/off hyst heat | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 222 | 1 | 5 |
+uint16
| hphystcool | on/off hyst cool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 223 | 1 | 5 |
+uint16
| hphystpool | on/off hyst pool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 224 | 1 | 5 |
-| silentmode | silent mode | enum [off\|auto\|on] | | true | DEVICE_DATA | 225 | 1 | 1 |
-| silentfrom | silent mode from | uint8 (>=0<=3810) | minutes | true | DEVICE_DATA | 226 | 1 | 15 |
-| silentto | silent mode to | uint8 (>=0<=3810) | minutes | true | DEVICE_DATA | 227 | 1 | 15 |
-| mintempsilent | min outside temp for silent mode | int8 (>=-126<=126) | C | true | DEVICE_DATA | 228 | 1 | 1 |
-| tempparmode | outside temp parallel mode | int8 (>=-126<=126) | C | true | DEVICE_DATA | 229 | 1 | 1 |
-| auxheatmix | aux heater mixing valve | int8 (>=-100<=100) | % | false | DEVICE_DATA | 230 | 1 | 1 |
+| silentmode | silent mode | enum | | true | DEVICE_DATA | 225 | 1 | 1 |
+uint8
+| silentfrom | silent mode from | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 226 | 1 | 15 |
+uint8
+| silentto | silent mode to | uint8 (>=0<=0) | minutes | true | DEVICE_DATA | 227 | 1 | 15 |
+int8
+| mintempsilent | min outside temp for silent mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 228 | 1 | 1 |
+int8
+| tempparmode | outside temp parallel mode | int8 (>=0<=0) | C | true | DEVICE_DATA | 229 | 1 | 1 |
+| auxheatmix | aux heater mixing valve | int8 | % | false | DEVICE_DATA | 230 | 1 | 1 |
+uint8
| tempdiffheat | temp diff TC3/TC0 heat | uint8 (>=2<=10) | K | true | DEVICE_DATA | 231 | 1 | 1/10 |
+uint8
| tempdiffcool | temp diff TC3/TC0 cool | uint8 (>=2<=10) | K | true | DEVICE_DATA | 232 | 1 | 1/10 |
-| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 233 | 1 | 1 |
-| heatcable | heating cable | boolean | | true | DEVICE_DATA | 234 | 1 | 1 |
-| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 235 | 1 | 1 |
-| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 236 | 1 | 1 |
-| primepumpmod | primary heatpump modulation | uint8 (>=0<=100) | % | true | DEVICE_DATA | 237 | 1 | 1 |
-| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 238 | 1 | 1 |
-| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 239 | 1 | 1 |
-| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 240 | 1 | 1 |
-| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 241 | 1 | 1 |
-| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 242 | 1 | 1 |
-| hppumpmode | primary heatpump mode | enum [auto\|continuous] | | true | DEVICE_DATA | 243 | 1 | 1 |
+| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 233 | 1 | 1 |
+| heatcable | heating cable | boolean | | true | DEVICE_DATA | 234 | 1 | 1 |
+| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 235 | 1 | 1 |
+| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 236 | 1 | 1 |
+uint8
+| primepumpmod | primary heatpump modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 237 | 1 | 1 |
+| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 238 | 1 | 1 |
+| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 239 | 1 | 1 |
+| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 240 | 1 | 1 |
+| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 241 | 1 | 1 |
+| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 242 | 1 | 1 |
+| hppumpmode | primary heatpump mode | enum | | true | DEVICE_DATA | 243 | 1 | 1 |
+uint8
| fan | fan | uint8 (>=20<=100) | % | true | DEVICE_DATA | 244 | 1 | 1 |
-| fanspd | fan speed | uint8 (>=0<=100) | % | false | DEVICE_DATA | 245 | 1 | 1 |
-| shutdown | shutdown | cmd [off\|on] | | true | DEVICE_DATA | 246 | 1 | 1 |
-| hpcurrpower | compressor current power | uint16 (>=0<=31999) | W | false | DEVICE_DATA | 247 | 1 | 1 |
-| hppowerlimit | power limit | uint16 (>=0<=31999) | W | true | DEVICE_DATA | 248 | 1 | 1 |
-| dhw.alternatingop | alternating operation | boolean | | true | DHW | 15 | 1 | 1 |
+| fanspd | fan speed | uint8 | % | false | DEVICE_DATA | 245 | 1 | 1 |
+| shutdown | shutdown | cmd | | true | DEVICE_DATA | 246 | 1 | 1 |
+| hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 247 | 1 | 1 |
+uint16
+| hppowerlimit | power limit | uint16 (>=0<=0) | W | true | DEVICE_DATA | 248 | 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 (>=4<=15) | K | true | DHW | 21 | 1 | 1 |
+uint8
| dhw.ecodiff | eco diff | uint8 (>=4<=15) | K | true | DHW | 22 | 1 | 1 |
+uint8
| dhw.ecoplusdiff | eco+ diff | uint8 (>=4<=15) | K | true | DHW | 23 | 1 | 1 |
-| dhw.comfstop | comfort stop temp | uint8 (>=0<=254) | C | true | DHW | 24 | 1 | 1 |
-| dhw.ecostop | eco stop temp | uint8 (>=0<=254) | C | true | DHW | 25 | 1 | 1 |
-| dhw.ecoplusstop | eco+ stop temp | uint8 (>=0<=254) | 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 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| exhausttemp | exhaust temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 249 | 1 | 1/10 |
-| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
-| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
-| flamecurr | flame current | uint16 (>=0<=3199) | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
-| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
-| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
-| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
-| burnminpower | burner min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 256 | 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 | 249 | 1 | 1/10 |
+| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
+| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
+| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
+| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
+| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
+| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
+uint8
+| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 |
+uint8
| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 |
+uint8
| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 |
-| absburnpow | burner current power (absolute) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 259 | 1 | 1 |
-| heatblock | heating block | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 |
+| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+int8
| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 |
+int8
| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 |
+int8
| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 |
+int8
| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 |
-| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+uint8
| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 |
+uint8
| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 |
+uint8
| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 |
-| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+uint8
| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 1 |
-| nompower | nominal Power | uint8 (>=0<=254) | kW | true | DEVICE_DATA | 275 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| 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 | 275 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+uint24
| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 |
+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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| exhausttemp | exhaust temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 249 | 1 | 1/10 |
-| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
-| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
-| flamecurr | flame current | uint16 (>=0<=3199) | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
-| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
-| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
-| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
-| burnminpower | burner min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 256 | 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 | 249 | 1 | 1/10 |
+| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
+| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
+| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
+| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
+| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
+| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
+uint8
+| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 |
+uint8
| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 |
+uint8
| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 |
-| absburnpow | burner current power (absolute) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 259 | 1 | 1 |
-| heatblock | heating block | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 |
+| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+int8
| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 |
+int8
| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 |
+int8
| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 |
+int8
| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 |
-| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+uint8
| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 |
+uint8
| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 |
+uint8
| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 |
-| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+uint8
| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 1 |
-| nompower | nominal Power | uint8 (>=0<=254) | kW | true | DEVICE_DATA | 275 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| 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 | 275 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+uint24
| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 |
+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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| exhausttemp | exhaust temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 249 | 1 | 1/10 |
-| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
-| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
-| flamecurr | flame current | uint16 (>=0<=3199) | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
-| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
-| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
-| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
-| burnminpower | burner min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 256 | 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 | 249 | 1 | 1/10 |
+| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
+| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
+| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
+| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
+| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
+| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
+uint8
+| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 |
+uint8
| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 |
+uint8
| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 |
-| absburnpow | burner current power (absolute) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 259 | 1 | 1 |
-| heatblock | heating block | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 |
+| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+int8
| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 |
+int8
| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 |
+int8
| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 |
+int8
| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 |
-| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+uint8
| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 |
+uint8
| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 |
+uint8
| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 |
-| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+uint8
| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 1 |
-| nompower | nominal Power | uint8 (>=0<=254) | kW | true | DEVICE_DATA | 275 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| 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 | 275 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+uint24
| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 |
+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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| exhausttemp | exhaust temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 249 | 1 | 1/10 |
-| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
-| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
-| flamecurr | flame current | uint16 (>=0<=3199) | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
-| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
-| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
-| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
-| burnminpower | burner min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 256 | 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 | 249 | 1 | 1/10 |
+| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
+| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
+| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
+| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
+| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
+| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
+uint8
+| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 |
+uint8
| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 |
+uint8
| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 |
-| absburnpow | burner current power (absolute) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 259 | 1 | 1 |
-| heatblock | heating block | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 |
+| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+int8
| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 |
+int8
| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 |
+int8
| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 |
+int8
| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 |
-| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+uint8
| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 |
+uint8
| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 |
+uint8
| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 |
-| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+uint8
| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 1 |
-| nompower | nominal Power | uint8 (>=0<=254) | kW | true | DEVICE_DATA | 275 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| 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 | 275 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+uint24
| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 |
+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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| exhausttemp | exhaust temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 249 | 1 | 1/10 |
-| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
-| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
-| flamecurr | flame current | uint16 (>=0<=3199) | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
-| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
-| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
-| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
-| burnminpower | burner min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 256 | 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 | 249 | 1 | 1/10 |
+| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
+| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
+| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
+| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
+| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
+| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
+uint8
+| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 |
+uint8
| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 |
+uint8
| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 |
-| absburnpow | burner current power (absolute) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 259 | 1 | 1 |
-| heatblock | heating block | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 |
+| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+int8
| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 |
+int8
| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 |
+int8
| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 |
+int8
| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 |
-| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+uint8
| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 |
+uint8
| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 |
+uint8
| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 |
-| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+uint8
| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 1 |
-| nompower | nominal Power | uint8 (>=0<=254) | kW | true | DEVICE_DATA | 275 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| 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 | 275 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+uint24
| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 |
+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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| exhausttemp | exhaust temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 249 | 1 | 1/10 |
-| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
-| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
-| flamecurr | flame current | uint16 (>=0<=3199) | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
-| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
-| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
-| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
-| burnminpower | burner min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 256 | 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 | 249 | 1 | 1/10 |
+| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
+| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
+| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
+| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
+| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
+| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
+uint8
+| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 |
+uint8
| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 |
+uint8
| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 |
-| absburnpow | burner current power (absolute) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 259 | 1 | 1 |
-| heatblock | heating block | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 |
+| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+int8
| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 |
+int8
| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 |
+int8
| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 |
+int8
| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 |
-| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+uint8
| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 |
+uint8
| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 |
+uint8
| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 |
-| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+uint8
| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 1 |
-| nompower | nominal Power | uint8 (>=0<=254) | kW | true | DEVICE_DATA | 275 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| 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 | 275 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+uint24
| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 |
+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 (>=0<=3199) | C | false | DEVICE_DATA | 276 | 1 | 1/10 |
-| heatvalve | heating valve | uint8 (>=0<=100) | % | false | DEVICE_DATA | 277 | 1 | 1 |
-| dhw.dhwvalve | valve | uint8 (>=0<=100) | % | false | DHW | 75 | 1 | 1 |
-| keepwarmtemp | keep warm temperature | uint8 (>=0<=254) | C | true | DEVICE_DATA | 278 | 1 | 1 |
-| setreturntemp | set temp return | uint8 (>=0<=254) | C | true | DEVICE_DATA | 279 | 1 | 1 |
-| heating | heating | boolean | | false | DEVICE_DATA | 280 | 1 | 1 |
-| reset | reset | cmd [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| netflowtemp | heat network flow temp | uint16 | C | false | DEVICE_DATA | 276 | 1 | 1/10 |
+| heatvalve | heating valve | uint8 | % | false | DEVICE_DATA | 277 | 1 | 1 |
+| dhw.dhwvalve | valve | uint8 | % | false | DHW | 75 | 1 | 1 |
+uint8
+| keepwarmtemp | keep warm temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 278 | 1 | 1 |
+uint8
+| setreturntemp | set temp return | uint8 (>=0<=0) | C | true | DEVICE_DATA | 279 | 1 | 1 |
+| heating | heating | boolean | | false | DEVICE_DATA | 280 | 1 | 1 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 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 [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
-| chimneysweeper | chimney sweeper | cmd [off\|on] | | 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 6 | 1 | 1 |
-| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| exhausttemp | exhaust temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 249 | 1 | 1/10 |
-| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
-| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
-| flamecurr | flame current | uint16 (>=0<=3199) | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
-| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
-| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
-| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
-| burnminpower | burner min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 256 | 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 | 249 | 1 | 1/10 |
+| burngas | gas | boolean | | false | DEVICE_DATA | 250 | 1 | 1 |
+| burngas2 | gas stage 2 | boolean | | false | DEVICE_DATA | 251 | 1 | 1 |
+| flamecurr | flame current | uint16 | µA | false | DEVICE_DATA | 252 | 1 | 1/10 |
+| fanwork | fan | boolean | | false | DEVICE_DATA | 253 | 1 | 1 |
+| ignwork | ignition | boolean | | false | DEVICE_DATA | 254 | 1 | 1 |
+| oilpreheat | oil preheating | boolean | | false | DEVICE_DATA | 255 | 1 | 1 |
+uint8
+| burnminpower | burner min power | uint8 (>=0<=0) | % | true | DEVICE_DATA | 256 | 1 | 1 |
+uint8
| burnmaxpower | burner max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 257 | 1 | 1 |
+uint8
| burnminperiod | burner min period | uint8 (>=0<=120) | minutes | true | DEVICE_DATA | 258 | 1 | 1 |
-| absburnpow | burner current power (absolute) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 259 | 1 | 1 |
-| heatblock | heating block | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+| absburnpow | burner current power (absolute) | uint8 | % | false | DEVICE_DATA | 259 | 1 | 1 |
+| heatblock | heating block | uint16 | C | false | DEVICE_DATA | 260 | 1 | 1/10 |
+int8
| boilhyston | hysteresis on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 261 | 1 | 1 |
+int8
| boilhystoff | hysteresis off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 262 | 1 | 1 |
+int8
| boil2hyston | hysteresis stage 2 on temperature | int8 (>=-20<=0) | C | true | DEVICE_DATA | 263 | 1 | 1 |
+int8
| boil2hystoff | hysteresis stage 2 off temperature | int8 (>=0<=20) | C | true | DEVICE_DATA | 264 | 1 | 1 |
-| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+| curveon | heatingcurve on | boolean | | true | DEVICE_DATA | 265 | 1 | 1 |
+uint8
| curvebase | heatingcurve base | uint8 (>=20<=90) | C | true | DEVICE_DATA | 266 | 1 | 1 |
+uint8
| curveend | heatingcurve end | uint8 (>=20<=90) | C | true | DEVICE_DATA | 267 | 1 | 1 |
+uint8
| summertemp | summer temperature | uint8 (>=0<=45) | C | true | DEVICE_DATA | 268 | 1 | 1 |
-| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+| nofrostmode | nofrost mode | boolean | | true | DEVICE_DATA | 269 | 1 | 1 |
+uint8
| nofrosttemp | nofrost temperature | uint8 (>=0<=10) | C | true | DEVICE_DATA | 270 | 1 | 1 |
-| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 14 | 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 |
-| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
-| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 18 | 1 | 1 |
-| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 19 | 1 | 1 |
-| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 20 | 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 (>=0<=100) | % | false | DEVICE_DATA | 24 | 1 | 1 |
-| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 25 | 2 | 1 |
-| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 27 | 2 | 1 |
-| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 29 | 2 | 1 |
-| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 31 | 2 | 1 |
-| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 33 | 2 | 1 |
-| ubauptime | total UBA operating time | time (>=0<=16777214) | 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 (>=0<=31999) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 68 | 2 | 1 |
-| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 70 | 1 | 1 |
-| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | 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 |
+| 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 |
-| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
-| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
-| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
-| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 83 | 1 | 1 |
-| meterheat | meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
-| dhw.meter | meter | uint24 (>=0<=1677721) | kWh | false | DHW | 2 | 2 | 1/10 |
-| gasmeterheat | gas meter heating | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
-| dhw.gasmeter | gas meter | uint24 (>=0<=1677721) | kWh | false | DHW | 71 | 2 | 1/10 |
-| nrgheat2 | energy heating 2 | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
-| dhw.nrg2 | energy 2 | uint24 (>=0<=1677721) | kWh | false | DHW | 73 | 2 | 1/10 |
-| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
-| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
-| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
-| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
-| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
-| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
-| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
-| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
-| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
+| pc0flow | Flow PC0 | int16 | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
+| pc1flow | Flow PC1 | int16 | l/h | false | DEVICE_DATA | 81 | 1 | 1 |
+| pc1on | PC1 | boolean | | false | DEVICE_DATA | 82 | 1 | 1 |
+| pc1rate | PC1 rate | uint8 | % | false | DEVICE_DATA | 83 | 1 | 1 |
+| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 97 | 2 | 1/10 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 2 | 2 | 1/10 |
+| gasmeterheat | gas meter heating | uint24 | kWh | false | DEVICE_DATA | 271 | 2 | 1/10 |
+| dhw.gasmeter | gas meter | uint24 | kWh | false | DHW | 71 | 2 | 1/10 |
+| nrgheat2 | energy heating 2 | uint24 | kWh | false | DEVICE_DATA | 273 | 2 | 1/10 |
+| dhw.nrg2 | energy 2 | uint24 | kWh | false | DHW | 73 | 2 | 1/10 |
+| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
+| dhw.settemp | set temperature | uint8 | C | false | DHW | 29 | 1 | 1 |
+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 |
+| 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 [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 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 [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
-| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
-| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
-| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | 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 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
-| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
-| dhw.dhwprio | dhw priority | boolean | | true | DHW | 66 | 1 | 1 |
-| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 67 | 2 | 1 |
-| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 69 | 2 | 1 |
-| nompower | nominal Power | uint8 (>=0<=254) | kW | true | DEVICE_DATA | 275 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+| 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 | 275 | 1 | 1 |
+| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
+uint24
| nrgheat | energy heating | uint24 (>=0<=10000000) | kWh | true | DEVICE_DATA | 87 | 2 | 1/100 |
+uint24
| dhw.nrg | energy | uint24 (>=0<=10000000) | kWh | true | DHW | 0 | 2 | 1/100 |
## Devices of type \_thermostat
@@ -4065,1589 +5130,2159 @@ This file has been auto-generated. Do not modify.
| 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 (>=-319<=319) | C | false | HC | 0 | 1 | 1/100 |
-| hc1.currtemp | current room temperature | int16 (>=-319<=319) | C | false | HC | 1 | 1 | 1/100 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 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 |
+| 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 (>=-319<=319) | C | false | HC | 0 | 1 | 1/100 |
-| hc1.currtemp | current room temperature | int16 (>=-319<=319) | C | false | HC | 1 | 1 | 1/100 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 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 |
+| 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 |
-| intoffset | internal temperature offset | int8 (>=-12<=12) | C | true | DEVICE_DATA | 46 | 1 | 1/10 |
-| floordry | floor drying | enum [off\|start\|heat\|hold\|cool\|end] | | false | DEVICE_DATA | 47 | 1 | 1 |
-| dampedoutdoortemp | damped outdoor temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 48 | 1 | 1/10 |
-| floordrytemp | floor drying temperature | uint8 (>=0<=254) | C | false | DEVICE_DATA | 49 | 1 | 1 |
-| building | building type | enum [light\|medium\|heavy] | | true | DEVICE_DATA | 50 | 1 | 1 |
-| minexttemp | minimal external temperature | int8 (>=-126<=126) | 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 [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] | | true | DEVICE_DATA | 54 | 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 | | 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 |
+| 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 |
+| 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [off\|manual\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [eco\|comfort] | | false | HC | 4 | 1 | 1 |
-| hc1.ecotemp | eco temperature | uint8 (>=0<=127) | C | true | HC | 5 | 1 | 1/2 |
-| hc1.manualtemp | manual temperature | uint8 (>=0<=127) | C | true | HC | 6 | 1 | 1/2 |
-| hc1.comforttemp | comfort temperature | uint8 (>=0<=127) | C | true | HC | 7 | 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 |
-| hc1.designtemp | design temperature | uint8 (>=0<=254) | C | true | HC | 9 | 1 | 1 |
-| hc1.offsettemp | offset temperature | int8 (>=-126<=126) | C | true | HC | 10 | 1 | 1 |
-| hc1.minflowtemp | min flow temperature | uint8 (>=0<=254) | C | true | HC | 11 | 1 | 1 |
-| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=254) | C | true | HC | 12 | 1 | 1 |
-| hc1.roominfluence | room influence | uint8 (>=0<=254) | C | true | HC | 13 | 1 | 1 |
-| hc1.roominflfactor | room influence factor | uint8 (>=0<=25) | | true | HC | 14 | 1 | 1/10 |
-| hc1.curroominfl | current room influence | int16 (>=-3199<=3199) | C | false | HC | 15 | 1 | 1/10 |
-| hc1.nofrostmode | nofrost mode | enum [room\|outdoor\|room outdoor] | | true | HC | 16 | 1 | 1 |
-| hc1.nofrosttemp | nofrost temperature | int8 (>=-126<=126) | C | true | HC | 17 | 1 | 1 |
-| hc1.targetflowtemp | target flow temperature | uint8 (>=0<=254) | C | false | HC | 18 | 1 | 1 |
-| hc1.heatingtype | heating type | enum [off\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
-| hc1.summersetmode | set summer mode | enum [summer\|auto\|winter] | | true | HC | 20 | 1 | 1 |
-| hc1.hpoperatingmode | heatpump operating mode | enum [off\|auto\|heating\|cooling] | | true | HC | 21 | 1 | 1 |
-| hc1.summermode | summer mode | enum [winter\|summer] | | false | HC | 22 | 1 | 1 |
-| hc1.hpoperatingstate | heatpump operating state | enum [heating\|off\|cooling] | | false | HC | 23 | 1 | 1 |
-| hc1.vacationmode | vacation mode | boolean | | false | HC | 24 | 1 | 1 |
-| hc1.controlmode | control mode | enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant] | | true | HC | 25 | 1 | 1 |
-| hc1.program | program | enum [prog 1\|prog 2] | | true | HC | 26 | 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.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 |
+uint8
+| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 |
+uint8
+| hc1.roominfluence | room influence | uint8 (>=0<=0) | C | true | HC | 13 | 1 | 1 |
+uint8
+| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | | true | HC | 14 | 1 | 1/10 |
+| hc1.curroominfl | current room influence | int16 | C | false | HC | 15 | 1 | 1/10 |
+| hc1.nofrostmode | nofrost mode | enum | | true | HC | 16 | 1 | 1 |
+int8
+| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1 |
+| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
+| hc1.summersetmode | set summer mode | enum | | true | HC | 20 | 1 | 1 |
+| hc1.hpoperatingmode | heatpump operating mode | enum | | true | HC | 21 | 1 | 1 |
+| hc1.summermode | summer mode | enum | | false | HC | 22 | 1 | 1 |
+| hc1.hpoperatingstate | heatpump operating state | enum | | false | HC | 23 | 1 | 1 |
+| hc1.vacationmode | vacation mode | boolean | | false | HC | 24 | 1 | 1 |
+| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 |
+| hc1.program | program | enum | | true | HC | 26 | 1 | 1 |
+int8
| hc1.tempautotemp | temporary set temperature automode | int8 (>=-1<=30) | C | true | HC | 27 | 1 | 1/2 |
+int8
| hc1.cooltemp | cooling temperature | int8 (>=-1<=30) | C | true | HC | 28 | 1 | 1/2 |
-| hc1.fastheatup | fast heatup | uint8 (>=0<=100) | % | true | HC | 29 | 1 | 1 |
-| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
-| hc1.reducemode | reduce mode | enum [outdoor\|room\|reduce] | | true | HC | 31 | 1 | 1 |
-| hc1.noreducetemp | no reduce below temperature | int8 (>=-126<=126) | C | true | HC | 32 | 1 | 1 |
-| hc1.reducetemp | off/reduce switch temperature | int8 (>=-126<=126) | C | true | HC | 33 | 1 | 1 |
-| hc1.dhwprio | dhw priority | boolean | | true | HC | 34 | 1 | 1 |
-| hc1.hpcooling | hp cooling | boolean | | true | HC | 35 | 1 | 1 |
-| hc1.coolingon | cooling on | boolean | | false | HC | 36 | 1 | 1 |
-| hc1.hpmode | HP Mode | enum [heating\|cooling\|heating & cooling] | | true | HC | 37 | 1 | 1 |
+uint8
+| hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 29 | 1 | 1 |
+| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
+| hc1.reducemode | reduce mode | enum | | true | HC | 31 | 1 | 1 |
+int8
+| hc1.noreducetemp | no reduce below temperature | int8 (>=0<=0) | C | true | HC | 32 | 1 | 1 |
+int8
+| hc1.reducetemp | off/reduce switch temperature | int8 (>=0<=0) | C | true | HC | 33 | 1 | 1 |
+| hc1.dhwprio | dhw priority | boolean | | true | HC | 34 | 1 | 1 |
+| hc1.hpcooling | hp cooling | boolean | | true | HC | 35 | 1 | 1 |
+| hc1.coolingon | cooling on | boolean | | false | HC | 36 | 1 | 1 |
+| hc1.hpmode | HP Mode | enum | | true | HC | 37 | 1 | 1 |
+uint8
| hc1.dewoffset | dew point offset | uint8 (>=2<=10) | K | true | HC | 38 | 1 | 1 |
-| hc1.roomtempdiff | room temp difference | uint8 (>=0<=254) | K | true | HC | 39 | 1 | 1 |
-| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=254) | C | true | HC | 40 | 1 | 1 |
-| hc1.control | control device | enum [off\|-\|RC100\|RC100H\|-\|RC120RF\|RC220/RT800\|single] | | true | HC | 41 | 1 | 1 |
-| hc1.remotetemp | room temperature from remote | cmd [] (>=-1<=101) | C | true | HC | 42 | 1 | 1/10 |
-| hc1.remotehum | room humidity from remote | cmd [] (>=-1<=101) | % | true | HC | 43 | 1 | 1 |
+uint8
+| hc1.roomtempdiff | room temp difference | uint8 (>=0<=0) | K | true | HC | 39 | 1 | 1 |
+uint8
+| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=0) | C | true | HC | 40 | 1 | 1 |
+| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 |
+| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 |
+| hc1.remotehum | room humidity from remote | cmd | % | true | HC | 43 | 1 | 1 |
+uint8
| hc1.heatondelay | heat-on delay | uint8 (>=1<=48) | hours | true | HC | 44 | 1 | 1 |
+uint8
| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 45 | 1 | 1 |
+uint8
| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 46 | 1 | 1 |
-| hc1.boost | boost mode | boolean | | true | HC | 47 | 1 | 1 |
-| hc1.boosttime | boost time | uint8 (>=0<=254) | hours | true | HC | 48 | 1 | 1 |
+| hc1.boost | boost mode | boolean | | true | HC | 47 | 1 | 1 |
+uint8
+| hc1.boosttime | boost time | uint8 (>=0<=0) | hours | true | HC | 48 | 1 | 1 |
+uint8
| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 49 | 1 | 1 |
+uint8
| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 50 | 1 | 1 |
+uint8
| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 51 | 1 | 1 |
-| hc1.switchprogmode | switch program mode | enum [level\|absolute] | | true | HC | 52 | 1 | 1 |
+| hc1.switchprogmode | switch program mode | enum | | true | HC | 52 | 1 | 1 |
+int8
| hc1.redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 53 | 1 | 1/2 |
+uint8
| hc1.solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | 54 | 1 | 1 |
-| hc1.currsolarinfl | current solar influence | uint8 (>=0<=25) | C | false | HC | 55 | 1 | 1/10 |
-| hc1.heatingpid | heating PID | enum [fast\|medium\|slow] | | true | HC | 56 | 1 | 1 |
-| hc1.pumpopt | pump optimization | boolean | | true | HC | 57 | 1 | 1 |
+| hc1.currsolarinfl | current solar influence | uint8 | C | false | HC | 55 | 1 | 1/10 |
+| hc1.heatingpid | heating PID | enum | | true | HC | 56 | 1 | 1 |
+| hc1.pumpopt | pump optimization | boolean | | true | HC | 57 | 1 | 1 |
+uint8
| hc1.inttimefloor | integral time floor | uint8 (>=160<=320) | minutes | true | HC | 58 | 1 | 10 |
+uint8
| hc1.inttime | integral time | uint8 (>=3<=80) | minutes | true | HC | 59 | 1 | 1 |
-| dhw.mode | operating mode | enum [off\|eco+\|eco\|comfort\|auto] | | true | DHW | 0 | 1 | 1 |
-| dhw.modetype | mode type | enum [off\|eco\|comfort\|eco+] | | false | DHW | 1 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | true | DHW | 2 | 1 | 1 |
-| dhw.settemplow | set low temperature | uint8 (>=0<=254) | C | true | DHW | 3 | 1 | 1 |
-| dhw.circmode | circulation pump mode | enum [off\|on\|auto\|own prog] | | true | DHW | 4 | 1 | 1 |
-| dhw.chargeduration | charge duration | uint8 (>=0<=3810) | 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 [mo\|tu\|we\|th\|fr\|sa\|su\|all] | | true | DHW | 9 | 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 |
+| 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 |
+| 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [off\|manual] | | true | HC | 3 | 1 | 1 |
-| hc1.targetflowtemp | target flow temperature | uint8 (>=0<=254) | C | false | HC | 18 | 1 | 1 |
-| hc1.heatingtype | heating type | enum [off\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
+| hc1.currtemp | current room temperature | int16 | C | false | HC | 1 | 1 | 1/10 |
+| hc1.haclimate | mqtt discovery current room temperature | enum | | false | HC | 2 | 1 | 1 |
+| hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 |
+| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
### 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 |
-| minexttemp | minimal external temperature | int8 (>=-126<=126) | C | true | DEVICE_DATA | 51 | 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [night\|day\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [night\|day] | | false | HC | 4 | 1 | 1 |
-| hc1.daytemp | day temperature | uint8 (>=0<=127) | C | true | HC | 60 | 1 | 1/2 |
-| hc1.nighttemp | night temperature | uint8 (>=0<=127) | C | true | HC | 61 | 1 | 1/2 |
-| hc1.program | program | enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors] | | true | HC | 26 | 1 | 1 |
-| hc1.minflowtemp | min flow temperature | uint8 (>=0<=254) | C | true | HC | 11 | 1 | 1 |
-| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=254) | C | true | HC | 12 | 1 | 1 |
-| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=127) | C | true | HC | 27 | 1 | 1/2 |
-| hc1.heatingtype | heating type | enum [off\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
+| 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 | 60 | 1 | 1/2 |
+uint8
+| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 61 | 1 | 1/2 |
+| hc1.program | program | enum | | true | HC | 26 | 1 | 1 |
+uint8
+| hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 |
+uint8
+| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 |
+uint8
+| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=0) | C | true | HC | 27 | 1 | 1/2 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
+uint8
| hc1.summertemp | summer temperature | uint8 (>=10<=30) | C | true | HC | 8 | 1 | 1 |
-| hc1.summermode | summer mode | enum [winter\|summer] | | false | HC | 22 | 1 | 1 |
+| hc1.summermode | summer mode | enum | | false | HC | 22 | 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 [internal temperature\|internal setpoint\|external temperature\|burner temperature\|dhw temperature\|functioning mode\|time\|date\|smoke temperature] | | true | DEVICE_DATA | 65 | 1 | 1 |
-| language | language | enum [german\|dutch\|french\|italian] | | false | DEVICE_DATA | 66 | 1 | 1 |
-| clockoffset | clock offset | int8 (>=-126<=126) | seconds | true | DEVICE_DATA | 67 | 1 | 1 |
-| intoffset | internal temperature offset | int8 (>=-12<=12) | C | true | DEVICE_DATA | 46 | 1 | 1/10 |
-| minexttemp | minimal external temperature | int8 (>=-126<=126) | C | true | DEVICE_DATA | 51 | 1 | 1 |
-| inttemp1 | temperature sensor 1 | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 68 | 1 | 1/10 |
-| inttemp2 | temperature sensor 2 | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 69 | 1 | 1/10 |
-| damping | damping outdoor temperature | boolean | | true | DEVICE_DATA | 52 | 1 | 1 |
-| dampedoutdoortemp | damped outdoor temperature | int8 (>=-126<=126) | C | false | DEVICE_DATA | 48 | 1 | 1 |
-| building | building type | enum [light\|medium\|heavy] | | true | DEVICE_DATA | 50 | 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 |
+| 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [night\|day\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [night\|day] | | false | HC | 4 | 1 | 1 |
+| 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 | 60 | 1 | 1/2 |
+uint8
| hc1.nighttemp | night temperature | uint8 (>=10<=30) | C | true | HC | 61 | 1 | 1/2 |
+uint8
| hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 |
+int8
| hc1.offsettemp | offset temperature | int8 (>=-5<=5) | C | true | HC | 10 | 1 | 1/2 |
+uint8
| hc1.holidaytemp | holiday temperature | uint8 (>=5<=30) | C | true | HC | 62 | 1 | 1/2 |
-| hc1.targetflowtemp | target flow temperature | uint8 (>=0<=254) | C | false | HC | 18 | 1 | 1 |
+| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 |
+uint8
| hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1 |
-| hc1.summermode | summer mode | enum [winter\|summer] | | false | HC | 22 | 1 | 1 |
-| hc1.holidaymode | holiday mode | boolean | | false | HC | 63 | 1 | 1 |
+| hc1.summermode | summer mode | enum | | false | HC | 22 | 1 | 1 |
+| hc1.holidaymode | holiday mode | boolean | | false | HC | 63 | 1 | 1 |
+int8
| hc1.nofrosttemp | nofrost temperature | int8 (>=-20<=10) | C | true | HC | 17 | 1 | 1 |
-| hc1.nofrostmode | nofrost mode | enum [off\|outdoor\|room] | | true | HC | 16 | 1 | 1 |
+| hc1.nofrostmode | nofrost mode | enum | | true | HC | 16 | 1 | 1 |
+uint8
| hc1.roominfluence | room influence | uint8 (>=0<=10) | C | true | HC | 13 | 1 | 1 |
+uint8
| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 |
+uint8
| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 |
+uint8
| hc1.flowtempoffset | flow temperature offset for mixer | uint8 (>=0<=20) | C | true | HC | 64 | 1 | 1 |
-| hc1.heatingtype | heating type | enum [off\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
-| hc1.reducemode | reduce mode | enum [nofrost\|reduce\|room\|outdoor] | | true | HC | 31 | 1 | 1 |
-| hc1.controlmode | control mode | enum [outdoor\|room] | | true | HC | 25 | 1 | 1 |
-| hc1.control | control device | enum [off\|RC20\|RC3x] | | true | HC | 41 | 1 | 1 |
-| hc1.holidays | holiday dates | string | | true | HC | 65 | 13 | 1 |
-| hc1.vacations | vacation dates | string | | true | HC | 78 | 13 | 1 |
-| hc1.program | program | enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2] | | true | HC | 26 | 1 | 1 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
+| hc1.reducemode | reduce mode | enum | | true | HC | 31 | 1 | 1 |
+| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 |
+| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 |
+| hc1.holidays | holiday dates | string | | true | HC | 65 | 13 | 1 |
+| hc1.vacations | vacation dates | string | | true | HC | 78 | 13 | 1 |
+| hc1.program | program | enum | | true | HC | 26 | 1 | 1 |
+uint8
| hc1.pause | pause time | uint8 (>=0<=99) | hours | true | HC | 91 | 1 | 1 |
+uint8
| hc1.party | party time | uint8 (>=0<=99) | hours | true | HC | 92 | 1 | 1 |
+uint8
| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=30) | C | true | HC | 27 | 1 | 1/2 |
+int8
| hc1.noreducetemp | no reduce below temperature | int8 (>=-31<=10) | C | true | HC | 32 | 1 | 1 |
+int8
| hc1.reducetemp | off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 33 | 1 | 1 |
+int8
| hc1.vacreducetemp | vacations off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 93 | 1 | 1 |
-| hc1.vacreducemode | vacations reduce mode | enum [nofrost\|reduce\|room\|outdoor] | | true | HC | 94 | 1 | 1 |
-| hc1.remotetemp | room temperature from remote | cmd [] (>=-1<=101) | C | true | HC | 42 | 1 | 1/10 |
-| hc1.dhwprio | dhw priority | boolean | | true | HC | 34 | 1 | 1 |
-| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
-| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 95 | 8 | 1 |
-| hc1.switchtime2 | own2 program switchtime | string | | true | HC | 103 | 8 | 1 |
-| dhw.mode | operating mode | enum [off\|on\|auto] | | true | DHW | 0 | 1 | 1 |
-| dhw.circmode | circulation pump mode | enum [off\|on\|auto] | | true | DHW | 4 | 1 | 1 |
-| dhw.progmode | program | enum [std prog\|own prog] | | true | DHW | 13 | 1 | 1 |
-| dhw.circprog | circulation program | enum [std prog\|own prog] | | true | DHW | 14 | 1 | 1 |
-| dhw.disinfecting | disinfecting | boolean | | true | DHW | 8 | 1 | 1 |
-| dhw.disinfectday | disinfection day | enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] | | true | DHW | 9 | 1 | 1 |
+| hc1.vacreducemode | vacations reduce mode | enum | | true | HC | 94 | 1 | 1 |
+| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 |
+| hc1.dhwprio | dhw priority | boolean | | true | HC | 34 | 1 | 1 |
+| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
+| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 95 | 8 | 1 |
+| hc1.switchtime2 | own2 program switchtime | string | | true | HC | 103 | 8 | 1 |
+| 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 |
-| dhw.maxtemp | maximum temperature | uint8 (>=0<=254) | 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 |
+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 |
+| 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [off\|manual\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.manualtemp | manual temperature | uint8 (>=0<=127) | C | true | HC | 6 | 1 | 1/2 |
-| hc1.offtemp | temperature when mode is off | uint8 (>=0<=127) | C | true | HC | 111 | 1 | 1/2 |
-| hc1.daytemp2 | day temperature T2 | uint8 (>=0<=127) | C | true | HC | 112 | 1 | 1/2 |
-| hc1.daytemp3 | day temperature T3 | uint8 (>=0<=127) | C | true | HC | 113 | 1 | 1/2 |
-| hc1.daytemp4 | day temperature T4 | uint8 (>=0<=127) | C | true | HC | 114 | 1 | 1/2 |
-| hc1.nighttemp | night temperature T1 | uint8 (>=0<=127) | C | true | HC | 61 | 1 | 1/2 |
-| hc1.switchtime | program switchtime | string | | true | HC | 115 | 8 | 1 |
+| 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 | 111 | 1 | 1/2 |
+uint8
+| hc1.daytemp2 | day temperature T2 | uint8 (>=0<=0) | C | true | HC | 112 | 1 | 1/2 |
+uint8
+| hc1.daytemp3 | day temperature T3 | uint8 (>=0<=0) | C | true | HC | 113 | 1 | 1/2 |
+uint8
+| hc1.daytemp4 | day temperature T4 | uint8 (>=0<=0) | C | true | HC | 114 | 1 | 1/2 |
+uint8
+| hc1.nighttemp | night temperature T1 | uint8 (>=0<=0) | C | true | HC | 61 | 1 | 1/2 |
+| hc1.switchtime | program switchtime | string | | true | HC | 115 | 8 | 1 |
### 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 |
-| clockoffset | clock offset | int8 (>=-126<=126) | seconds | true | DEVICE_DATA | 67 | 1 | 1 |
-| autodst | automatic change daylight saving time | boolean | | true | DEVICE_DATA | 70 | 1 | 1 |
-| language | language | enum [german\|dutch] | | true | DEVICE_DATA | 66 | 1 | 1 |
-| backlight | key backlight | boolean | | true | DEVICE_DATA | 71 | 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
+| 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 [light\|medium\|heavy] | | true | DEVICE_DATA | 50 | 1 | 1 |
-| heatingpid | heating PID | enum [fast\|medium\|slow] | | true | DEVICE_DATA | 74 | 1 | 1 |
-| preheating | preheating in the clock program | boolean | | true | DEVICE_DATA | 75 | 1 | 1 |
-| intoffset | internal temperature offset | int8 (>=-12<=12) | C | true | DEVICE_DATA | 46 | 1 | 1/10 |
+| 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [off\|manual\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.pause | pause time | uint8 (>=0<=254) | hours | true | HC | 91 | 1 | 1 |
-| hc1.party | party time | uint8 (>=0<=254) | hours | true | HC | 92 | 1 | 1 |
-| hc1.vacations1 | vacation dates 1 | string | | true | HC | 123 | 11 | 1 |
-| hc1.vacations2 | vacation dates 2 | string | | true | HC | 134 | 11 | 1 |
-| hc1.vacations3 | vacation dates 3 | string | | true | HC | 145 | 11 | 1 |
-| hc1.vacations4 | vacation dates 4 | string | | true | HC | 156 | 11 | 1 |
-| hc1.vacations5 | vacation dates 5 | string | | true | HC | 167 | 11 | 1 |
-| hc1.vacations6 | vacation dates 6 | string | | true | HC | 178 | 11 | 1 |
-| hc1.vacations7 | vacation dates 7 | string | | true | HC | 189 | 11 | 1 |
-| hc1.program | program | enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2] | | true | HC | 26 | 1 | 1 |
-| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 95 | 8 | 1 |
-| hc1.heatingtype | heating type | enum [off\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
-| hc1.controlmode | control mode | enum [outdoor\|room] | | true | HC | 25 | 1 | 1 |
-| hc1.holidaytemp | holiday temperature | uint8 (>=0<=127) | C | true | HC | 62 | 1 | 1/2 |
-| hc1.nighttemp | night temperature T1 | uint8 (>=0<=127) | C | true | HC | 61 | 1 | 1/2 |
-| hc1.daytemp2 | day temperature T2 | uint8 (>=0<=127) | C | true | HC | 112 | 1 | 1/2 |
-| hc1.daytemp3 | day temperature T3 | uint8 (>=0<=127) | C | true | HC | 113 | 1 | 1/2 |
-| hc1.daytemp4 | day temperature T4 | uint8 (>=0<=127) | C | true | HC | 114 | 1 | 1/2 |
-| hc1.manualtemp | manual temperature | uint8 (>=0<=127) | C | true | HC | 6 | 1 | 1/2 |
-| hc1.offtemp | temperature when mode is off | uint8 (>=0<=127) | C | true | HC | 111 | 1 | 1/2 |
-| dhw.mode | operating mode | enum [on\|off\|auto] | | 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 [mo\|tu\|we\|th\|fr\|sa\|su\|all] | | true | DHW | 9 | 1 | 1 |
+| 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 | 91 | 1 | 1 |
+uint8
+| hc1.party | party time | uint8 (>=0<=0) | hours | true | HC | 92 | 1 | 1 |
+| hc1.vacations1 | vacation dates 1 | string | | true | HC | 123 | 11 | 1 |
+| hc1.vacations2 | vacation dates 2 | string | | true | HC | 134 | 11 | 1 |
+| hc1.vacations3 | vacation dates 3 | string | | true | HC | 145 | 11 | 1 |
+| hc1.vacations4 | vacation dates 4 | string | | true | HC | 156 | 11 | 1 |
+| hc1.vacations5 | vacation dates 5 | string | | true | HC | 167 | 11 | 1 |
+| hc1.vacations6 | vacation dates 6 | string | | true | HC | 178 | 11 | 1 |
+| hc1.vacations7 | vacation dates 7 | string | | true | HC | 189 | 11 | 1 |
+| hc1.program | program | enum | | true | HC | 26 | 1 | 1 |
+| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 95 | 8 | 1 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
+| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 |
+uint8
+| hc1.holidaytemp | holiday temperature | uint8 (>=0<=0) | C | true | HC | 62 | 1 | 1/2 |
+uint8
+| hc1.nighttemp | night temperature T1 | uint8 (>=0<=0) | C | true | HC | 61 | 1 | 1/2 |
+uint8
+| hc1.daytemp2 | day temperature T2 | uint8 (>=0<=0) | C | true | HC | 112 | 1 | 1/2 |
+uint8
+| hc1.daytemp3 | day temperature T3 | uint8 (>=0<=0) | C | true | HC | 113 | 1 | 1/2 |
+uint8
+| hc1.daytemp4 | day temperature T4 | uint8 (>=0<=0) | C | true | HC | 114 | 1 | 1/2 |
+uint8
+| hc1.manualtemp | manual temperature | uint8 (>=0<=0) | C | true | HC | 6 | 1 | 1/2 |
+uint8
+| hc1.offtemp | temperature when mode is off | uint8 (>=0<=0) | C | true | HC | 111 | 1 | 1/2 |
+| 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 |
-| intoffset | internal temperature offset | int8 (>=-12<=12) | C | true | DEVICE_DATA | 46 | 1 | 1/10 |
-| heatingpid | heating PID | enum [fast\|medium\|slow] | | true | DEVICE_DATA | 74 | 1 | 1 |
-| backlight | key backlight | boolean | | true | DEVICE_DATA | 71 | 1 | 1 |
+| 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [nofrost\|night\|day] | | true | HC | 3 | 1 | 1 |
-| hc1.daytemp | day temperature | uint8 (>=0<=127) | C | true | HC | 60 | 1 | 1/2 |
-| hc1.nighttemp | night temperature | uint8 (>=0<=127) | C | true | HC | 61 | 1 | 1/2 |
-| hc1.reducehours | duration for nighttemp | uint8 (>=0<=254) | hours | true | HC | 200 | 1 | 1 |
-| hc1.reduceminutes | remaining time for nightmode | uint16 (>=0<=31999) | minutes | false | HC | 201 | 1 | 1 |
-| dhw.mode | operating mode | enum [on\|off\|auto] | | 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 |
-| minexttemp | minimal external temperature | int8 (>=-126<=126) | C | true | DEVICE_DATA | 51 | 1 | 1 |
+| 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 | 60 | 1 | 1/2 |
+uint8
+| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 61 | 1 | 1/2 |
+uint8
+| hc1.reducehours | duration for nighttemp | uint8 (>=0<=0) | hours | true | HC | 200 | 1 | 1 |
+| hc1.reduceminutes | remaining time for nightmode | uint16 | minutes | false | HC | 201 | 1 | 1 |
+| 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [night\|day\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [night\|day] | | false | HC | 4 | 1 | 1 |
-| hc1.daytemp | day temperature | uint8 (>=0<=127) | C | true | HC | 60 | 1 | 1/2 |
-| hc1.nighttemp | night temperature | uint8 (>=0<=127) | C | true | HC | 61 | 1 | 1/2 |
-| hc1.program | program | enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors] | | true | HC | 26 | 1 | 1 |
-| hc1.minflowtemp | min flow temperature | uint8 (>=0<=254) | C | true | HC | 11 | 1 | 1 |
-| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=254) | C | true | HC | 12 | 1 | 1 |
-| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=127) | C | true | HC | 27 | 1 | 1/2 |
-| hc1.heatingtype | heating type | enum [off\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
+| 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 | 60 | 1 | 1/2 |
+uint8
+| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 61 | 1 | 1/2 |
+| hc1.program | program | enum | | true | HC | 26 | 1 | 1 |
+uint8
+| hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 |
+uint8
+| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 |
+uint8
+| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=0) | C | true | HC | 27 | 1 | 1/2 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
+uint8
| hc1.summertemp | summer temperature | uint8 (>=10<=30) | C | true | HC | 8 | 1 | 1 |
-| hc1.summermode | summer mode | enum [winter\|summer] | | false | HC | 22 | 1 | 1 |
+| hc1.summermode | summer mode | enum | | false | HC | 22 | 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 |
-| intoffset | internal temperature offset | int8 (>=-12<=12) | C | true | DEVICE_DATA | 46 | 1 | 1/10 |
-| heatingpid | heating PID | enum [fast\|medium\|slow] | | true | DEVICE_DATA | 74 | 1 | 1 |
-| backlight | key backlight | boolean | | true | DEVICE_DATA | 71 | 1 | 1 |
+| 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [nofrost\|night\|day] | | true | HC | 3 | 1 | 1 |
-| hc1.daytemp | day temperature | uint8 (>=0<=127) | C | true | HC | 60 | 1 | 1/2 |
-| hc1.nighttemp | night temperature | uint8 (>=0<=127) | C | true | HC | 61 | 1 | 1/2 |
-| hc1.reducehours | duration for nighttemp | uint8 (>=0<=254) | hours | true | HC | 200 | 1 | 1 |
-| hc1.reduceminutes | remaining time for nightmode | uint16 (>=0<=31999) | minutes | false | HC | 201 | 1 | 1 |
-| dhw.mode | operating mode | enum [on\|off\|auto] | | true | DHW | 0 | 1 | 1 |
+| 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 | 60 | 1 | 1/2 |
+uint8
+| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 61 | 1 | 1/2 |
+uint8
+| hc1.reducehours | duration for nighttemp | uint8 (>=0<=0) | hours | true | HC | 200 | 1 | 1 |
+| hc1.reduceminutes | remaining time for nightmode | uint16 | minutes | false | HC | 201 | 1 | 1 |
+| 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 |
+| 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 (>=-3199<=3199) | C | false | DEVICE_DATA | 68 | 1 | 1/10 |
-| inttemp2 | temperature sensor 2 | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 69 | 1 | 1/10 |
-| damping | damping outdoor temperature | boolean | | true | DEVICE_DATA | 52 | 1 | 1 |
-| dampedoutdoortemp | damped outdoor temperature | int8 (>=-126<=126) | C | false | DEVICE_DATA | 48 | 1 | 1 |
-| building | building type | enum [light\|medium\|heavy] | | true | DEVICE_DATA | 50 | 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [night\|day\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [night\|day] | | false | HC | 4 | 1 | 1 |
+| 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 | 60 | 1 | 1/2 |
+uint8
| hc1.nighttemp | night temperature | uint8 (>=10<=30) | C | true | HC | 61 | 1 | 1/2 |
+uint8
| hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 |
+int8
| hc1.offsettemp | offset temperature | int8 (>=-5<=5) | C | true | HC | 10 | 1 | 1/2 |
+uint8
| hc1.holidaytemp | holiday temperature | uint8 (>=5<=30) | C | true | HC | 62 | 1 | 1/2 |
-| hc1.targetflowtemp | target flow temperature | uint8 (>=0<=254) | C | false | HC | 18 | 1 | 1 |
+| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 |
+uint8
| hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1 |
-| hc1.summermode | summer mode | enum [winter\|summer] | | false | HC | 22 | 1 | 1 |
-| hc1.holidaymode | holiday mode | boolean | | false | HC | 63 | 1 | 1 |
+| hc1.summermode | summer mode | enum | | false | HC | 22 | 1 | 1 |
+| hc1.holidaymode | holiday mode | boolean | | false | HC | 63 | 1 | 1 |
+int8
| hc1.nofrosttemp | nofrost temperature | int8 (>=-20<=10) | C | true | HC | 17 | 1 | 1 |
-| hc1.nofrostmode | nofrost mode | enum [off\|outdoor\|room] | | true | HC | 16 | 1 | 1 |
+| hc1.nofrostmode | nofrost mode | enum | | true | HC | 16 | 1 | 1 |
+uint8
| hc1.roominfluence | room influence | uint8 (>=0<=10) | C | true | HC | 13 | 1 | 1 |
+uint8
| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 |
+uint8
| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 |
+uint8
| hc1.flowtempoffset | flow temperature offset for mixer | uint8 (>=0<=20) | C | true | HC | 64 | 1 | 1 |
-| hc1.heatingtype | heating type | enum [off\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
-| hc1.reducemode | reduce mode | enum [nofrost\|reduce\|room\|outdoor] | | true | HC | 31 | 1 | 1 |
-| hc1.controlmode | control mode | enum [outdoor\|room] | | true | HC | 25 | 1 | 1 |
-| hc1.control | control device | enum [off\|RC20\|RC3x] | | true | HC | 41 | 1 | 1 |
-| hc1.holidays | holiday dates | string | | true | HC | 65 | 13 | 1 |
-| hc1.vacations | vacation dates | string | | true | HC | 78 | 13 | 1 |
-| hc1.program | program | enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2] | | true | HC | 26 | 1 | 1 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
+| hc1.reducemode | reduce mode | enum | | true | HC | 31 | 1 | 1 |
+| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 |
+| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 |
+| hc1.holidays | holiday dates | string | | true | HC | 65 | 13 | 1 |
+| hc1.vacations | vacation dates | string | | true | HC | 78 | 13 | 1 |
+| hc1.program | program | enum | | true | HC | 26 | 1 | 1 |
+uint8
| hc1.pause | pause time | uint8 (>=0<=99) | hours | true | HC | 91 | 1 | 1 |
+uint8
| hc1.party | party time | uint8 (>=0<=99) | hours | true | HC | 92 | 1 | 1 |
+uint8
| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=30) | C | true | HC | 27 | 1 | 1/2 |
+int8
| hc1.noreducetemp | no reduce below temperature | int8 (>=-31<=10) | C | true | HC | 32 | 1 | 1 |
+int8
| hc1.reducetemp | off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 33 | 1 | 1 |
+int8
| hc1.vacreducetemp | vacations off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 93 | 1 | 1 |
-| hc1.vacreducemode | vacations reduce mode | enum [nofrost\|reduce\|room\|outdoor] | | true | HC | 94 | 1 | 1 |
-| hc1.remotetemp | room temperature from remote | cmd [] (>=-1<=101) | C | true | HC | 42 | 1 | 1/10 |
-| hc1.dhwprio | dhw priority | boolean | | true | HC | 34 | 1 | 1 |
-| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
-| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 95 | 8 | 1 |
-| hc1.switchtime2 | own2 program switchtime | string | | true | HC | 103 | 8 | 1 |
-| dhw.mode | operating mode | enum [off\|on\|auto] | | true | DHW | 0 | 1 | 1 |
-| dhw.circmode | circulation pump mode | enum [off\|on\|auto] | | true | DHW | 4 | 1 | 1 |
-| dhw.progmode | program | enum [std prog\|own prog] | | true | DHW | 13 | 1 | 1 |
-| dhw.circprog | circulation program | enum [std prog\|own prog] | | true | DHW | 14 | 1 | 1 |
-| dhw.disinfecting | disinfecting | boolean | | true | DHW | 8 | 1 | 1 |
-| dhw.disinfectday | disinfection day | enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] | | true | DHW | 9 | 1 | 1 |
+| hc1.vacreducemode | vacations reduce mode | enum | | true | HC | 94 | 1 | 1 |
+| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 |
+| hc1.dhwprio | dhw priority | boolean | | true | HC | 34 | 1 | 1 |
+| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
+| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 95 | 8 | 1 |
+| hc1.switchtime2 | own2 program switchtime | string | | true | HC | 103 | 8 | 1 |
+| 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 |
+| 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 |
+| 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [off\|manual\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.manualtemp | manual temperature | uint8 (>=0<=127) | C | true | HC | 6 | 1 | 1/2 |
-| hc1.offtemp | temperature when mode is off | uint8 (>=0<=127) | C | true | HC | 111 | 1 | 1/2 |
-| hc1.daytemp2 | day temperature T2 | uint8 (>=0<=127) | C | true | HC | 112 | 1 | 1/2 |
-| hc1.daytemp3 | day temperature T3 | uint8 (>=0<=127) | C | true | HC | 113 | 1 | 1/2 |
-| hc1.daytemp4 | day temperature T4 | uint8 (>=0<=127) | C | true | HC | 114 | 1 | 1/2 |
-| hc1.nighttemp | night temperature T1 | uint8 (>=0<=127) | C | true | HC | 61 | 1 | 1/2 |
-| hc1.switchtime | program switchtime | string | | true | HC | 115 | 8 | 1 |
+| 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 | 111 | 1 | 1/2 |
+uint8
+| hc1.daytemp2 | day temperature T2 | uint8 (>=0<=0) | C | true | HC | 112 | 1 | 1/2 |
+uint8
+| hc1.daytemp3 | day temperature T3 | uint8 (>=0<=0) | C | true | HC | 113 | 1 | 1/2 |
+uint8
+| hc1.daytemp4 | day temperature T4 | uint8 (>=0<=0) | C | true | HC | 114 | 1 | 1/2 |
+uint8
+| hc1.nighttemp | night temperature T1 | uint8 (>=0<=0) | C | true | HC | 61 | 1 | 1/2 |
+| hc1.switchtime | program switchtime | string | | true | HC | 115 | 8 | 1 |
### 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 |
+| 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
+| 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 |
-| minexttemp | minimal external temperature | int8 (>=-126<=126) | C | true | DEVICE_DATA | 51 | 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [night\|day\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [night\|day] | | false | HC | 4 | 1 | 1 |
-| hc1.daytemp | day temperature | uint8 (>=0<=127) | C | true | HC | 60 | 1 | 1/2 |
-| hc1.nighttemp | night temperature | uint8 (>=0<=127) | C | true | HC | 61 | 1 | 1/2 |
-| hc1.program | program | enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors] | | true | HC | 26 | 1 | 1 |
-| hc1.minflowtemp | min flow temperature | uint8 (>=0<=254) | C | true | HC | 11 | 1 | 1 |
-| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=254) | C | true | HC | 12 | 1 | 1 |
-| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=127) | C | true | HC | 27 | 1 | 1/2 |
-| hc1.heatingtype | heating type | enum [off\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
+| 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 | 60 | 1 | 1/2 |
+uint8
+| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 61 | 1 | 1/2 |
+| hc1.program | program | enum | | true | HC | 26 | 1 | 1 |
+uint8
+| hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 |
+uint8
+| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 |
+uint8
+| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=0) | C | true | HC | 27 | 1 | 1/2 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
+uint8
| hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1 |
-| hc1.summermode | summer mode | enum [winter\|summer] | | false | HC | 22 | 1 | 1 |
+| hc1.summermode | summer mode | enum | | false | HC | 22 | 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 |
-| intoffset | internal temperature offset | int8 (>=-12<=12) | C | true | DEVICE_DATA | 46 | 1 | 1/10 |
-| floordry | floor drying | enum [off\|start\|heat\|hold\|cool\|end] | | false | DEVICE_DATA | 47 | 1 | 1 |
-| dampedoutdoortemp | damped outdoor temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 48 | 1 | 1/10 |
-| floordrytemp | floor drying temperature | uint8 (>=0<=254) | C | false | DEVICE_DATA | 49 | 1 | 1 |
-| building | building type | enum [light\|medium\|heavy] | | true | DEVICE_DATA | 50 | 1 | 1 |
-| minexttemp | minimal external temperature | int8 (>=-126<=126) | 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 [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] | | true | DEVICE_DATA | 54 | 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 | | 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 |
+| 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 |
+| 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [manual\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [eco\|comfort] | | false | HC | 4 | 1 | 1 |
-| hc1.ecotemp | eco temperature | uint8 (>=0<=127) | C | true | HC | 5 | 1 | 1/2 |
-| hc1.manualtemp | manual temperature | uint8 (>=0<=127) | C | true | HC | 6 | 1 | 1/2 |
-| hc1.comforttemp | comfort temperature | uint8 (>=0<=127) | C | true | HC | 7 | 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 |
-| hc1.designtemp | design temperature | uint8 (>=0<=254) | C | true | HC | 9 | 1 | 1 |
-| hc1.offsettemp | offset temperature | int8 (>=-126<=126) | C | true | HC | 10 | 1 | 1 |
-| hc1.minflowtemp | min flow temperature | uint8 (>=0<=254) | C | true | HC | 11 | 1 | 1 |
-| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=254) | C | true | HC | 12 | 1 | 1 |
-| hc1.roominfluence | room influence | uint8 (>=0<=254) | C | true | HC | 13 | 1 | 1 |
-| hc1.roominflfactor | room influence factor | uint8 (>=0<=25) | | true | HC | 14 | 1 | 1/10 |
-| hc1.curroominfl | current room influence | int16 (>=-3199<=3199) | C | false | HC | 15 | 1 | 1/10 |
-| hc1.nofrostmode | nofrost mode | enum [room\|outdoor\|room outdoor] | | true | HC | 16 | 1 | 1 |
-| hc1.nofrosttemp | nofrost temperature | int8 (>=-126<=126) | C | true | HC | 17 | 1 | 1 |
-| hc1.targetflowtemp | target flow temperature | uint8 (>=0<=254) | C | false | HC | 18 | 1 | 1 |
-| hc1.heatingtype | heating type | enum [off\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
-| hc1.summersetmode | set summer mode | enum [summer\|auto\|winter] | | true | HC | 20 | 1 | 1 |
-| hc1.hpoperatingmode | heatpump operating mode | enum [off\|auto\|heating\|cooling] | | true | HC | 21 | 1 | 1 |
-| hc1.summermode | summer mode | enum [winter\|summer] | | false | HC | 22 | 1 | 1 |
-| hc1.hpoperatingstate | heatpump operating state | enum [heating\|off\|cooling] | | false | HC | 23 | 1 | 1 |
-| hc1.vacationmode | vacation mode | boolean | | false | HC | 24 | 1 | 1 |
-| hc1.controlmode | control mode | enum [optimized\|simple\|n/a\|room\|power] | | true | HC | 25 | 1 | 1 |
-| hc1.program | program | enum [prog 1\|prog 2] | | true | HC | 26 | 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.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 |
+uint8
+| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 |
+uint8
+| hc1.roominfluence | room influence | uint8 (>=0<=0) | C | true | HC | 13 | 1 | 1 |
+uint8
+| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | | true | HC | 14 | 1 | 1/10 |
+| hc1.curroominfl | current room influence | int16 | C | false | HC | 15 | 1 | 1/10 |
+| hc1.nofrostmode | nofrost mode | enum | | true | HC | 16 | 1 | 1 |
+int8
+| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1 |
+| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
+| hc1.summersetmode | set summer mode | enum | | true | HC | 20 | 1 | 1 |
+| hc1.hpoperatingmode | heatpump operating mode | enum | | true | HC | 21 | 1 | 1 |
+| hc1.summermode | summer mode | enum | | false | HC | 22 | 1 | 1 |
+| hc1.hpoperatingstate | heatpump operating state | enum | | false | HC | 23 | 1 | 1 |
+| hc1.vacationmode | vacation mode | boolean | | false | HC | 24 | 1 | 1 |
+| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 |
+| hc1.program | program | enum | | true | HC | 26 | 1 | 1 |
+int8
| hc1.tempautotemp | temporary set temperature automode | int8 (>=-1<=30) | C | true | HC | 27 | 1 | 1/2 |
+int8
| hc1.cooltemp | cooling temperature | int8 (>=-1<=30) | C | true | HC | 28 | 1 | 1/2 |
-| hc1.fastheatup | fast heatup | uint8 (>=0<=100) | % | true | HC | 29 | 1 | 1 |
-| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
-| hc1.reducemode | reduce mode | enum [outdoor\|room\|reduce] | | true | HC | 31 | 1 | 1 |
-| hc1.noreducetemp | no reduce below temperature | int8 (>=-126<=126) | C | true | HC | 32 | 1 | 1 |
-| hc1.reducetemp | off/reduce switch temperature | int8 (>=-126<=126) | C | true | HC | 33 | 1 | 1 |
-| hc1.dhwprio | dhw priority | boolean | | true | HC | 34 | 1 | 1 |
-| hc1.hpcooling | hp cooling | boolean | | true | HC | 35 | 1 | 1 |
-| hc1.coolingon | cooling on | boolean | | false | HC | 36 | 1 | 1 |
-| hc1.hpmode | HP Mode | enum [heating\|cooling\|heating & cooling] | | true | HC | 37 | 1 | 1 |
+uint8
+| hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 29 | 1 | 1 |
+| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
+| hc1.reducemode | reduce mode | enum | | true | HC | 31 | 1 | 1 |
+int8
+| hc1.noreducetemp | no reduce below temperature | int8 (>=0<=0) | C | true | HC | 32 | 1 | 1 |
+int8
+| hc1.reducetemp | off/reduce switch temperature | int8 (>=0<=0) | C | true | HC | 33 | 1 | 1 |
+| hc1.dhwprio | dhw priority | boolean | | true | HC | 34 | 1 | 1 |
+| hc1.hpcooling | hp cooling | boolean | | true | HC | 35 | 1 | 1 |
+| hc1.coolingon | cooling on | boolean | | false | HC | 36 | 1 | 1 |
+| hc1.hpmode | HP Mode | enum | | true | HC | 37 | 1 | 1 |
+uint8
| hc1.dewoffset | dew point offset | uint8 (>=2<=10) | K | true | HC | 38 | 1 | 1 |
-| hc1.roomtempdiff | room temp difference | uint8 (>=0<=254) | K | true | HC | 39 | 1 | 1 |
-| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=254) | C | true | HC | 40 | 1 | 1 |
-| hc1.control | control device | enum [RC310\|RC200\|RC100\|RC100H\|TC100] | | true | HC | 41 | 1 | 1 |
+uint8
+| hc1.roomtempdiff | room temp difference | uint8 (>=0<=0) | K | true | HC | 39 | 1 | 1 |
+uint8
+| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=0) | C | true | HC | 40 | 1 | 1 |
+| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 |
+uint8
| hc1.heatondelay | heat-on delay | uint8 (>=1<=48) | hours | true | HC | 44 | 1 | 1 |
+uint8
| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 45 | 1 | 1 |
+uint8
| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 46 | 1 | 1 |
-| hc1.boost | boost mode | boolean | | true | HC | 47 | 1 | 1 |
-| hc1.boosttime | boost time | uint8 (>=0<=254) | hours | true | HC | 48 | 1 | 1 |
+| hc1.boost | boost mode | boolean | | true | HC | 47 | 1 | 1 |
+uint8
+| hc1.boosttime | boost time | uint8 (>=0<=0) | hours | true | HC | 48 | 1 | 1 |
+uint8
| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 49 | 1 | 1 |
+uint8
| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 50 | 1 | 1 |
+uint8
| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 51 | 1 | 1 |
-| hc1.switchprogmode | switch program mode | enum [level\|absolute] | | true | HC | 52 | 1 | 1 |
+| hc1.switchprogmode | switch program mode | enum | | true | HC | 52 | 1 | 1 |
+int8
| hc1.redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 53 | 1 | 1/2 |
+uint8
| hc1.solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | 54 | 1 | 1 |
-| hc1.currsolarinfl | current solar influence | uint8 (>=0<=25) | C | false | HC | 55 | 1 | 1/10 |
-| hc1.heatingpid | heating PID | enum [fast\|medium\|slow] | | true | HC | 56 | 1 | 1 |
-| hc1.pumpopt | pump optimization | boolean | | true | HC | 57 | 1 | 1 |
+| hc1.currsolarinfl | current solar influence | uint8 | C | false | HC | 55 | 1 | 1/10 |
+| hc1.heatingpid | heating PID | enum | | true | HC | 56 | 1 | 1 |
+| hc1.pumpopt | pump optimization | boolean | | true | HC | 57 | 1 | 1 |
+uint8
| hc1.inttimefloor | integral time floor | uint8 (>=160<=320) | minutes | true | HC | 58 | 1 | 10 |
+uint8
| hc1.inttime | integral time | uint8 (>=3<=80) | minutes | true | HC | 59 | 1 | 1 |
-| dhw.mode | operating mode | enum [off\|on\|auto] | | true | DHW | 0 | 1 | 1 |
-| dhw.modetype | mode type | enum [off\|eco\|comfort\|eco+] | | false | DHW | 1 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | true | DHW | 2 | 1 | 1 |
-| dhw.settemplow | set low temperature | uint8 (>=0<=254) | C | true | DHW | 3 | 1 | 1 |
-| dhw.circmode | circulation pump mode | enum [off\|on\|auto\|own prog] | | true | DHW | 4 | 1 | 1 |
-| dhw.chargeduration | charge duration | uint8 (>=0<=3810) | 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 [mo\|tu\|we\|th\|fr\|sa\|su\|all] | | true | DHW | 9 | 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 |
+| 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 |
-| intoffset | internal temperature offset | int8 (>=-12<=12) | C | true | DEVICE_DATA | 46 | 1 | 1/10 |
-| floordry | floor drying | enum [off\|start\|heat\|hold\|cool\|end] | | false | DEVICE_DATA | 47 | 1 | 1 |
-| dampedoutdoortemp | damped outdoor temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 48 | 1 | 1/10 |
-| floordrytemp | floor drying temperature | uint8 (>=0<=254) | C | false | DEVICE_DATA | 49 | 1 | 1 |
-| building | building type | enum [light\|medium\|heavy] | | true | DEVICE_DATA | 50 | 1 | 1 |
-| minexttemp | minimal external temperature | int8 (>=-126<=126) | 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 [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] | | true | DEVICE_DATA | 54 | 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 | | 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 |
+| 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 |
+| 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [manual\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [eco\|comfort] | | false | HC | 4 | 1 | 1 |
-| hc1.ecotemp | eco temperature | uint8 (>=0<=127) | C | true | HC | 5 | 1 | 1/2 |
-| hc1.manualtemp | manual temperature | uint8 (>=0<=127) | C | true | HC | 6 | 1 | 1/2 |
-| hc1.comforttemp | comfort temperature | uint8 (>=0<=127) | C | true | HC | 7 | 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 |
-| hc1.designtemp | design temperature | uint8 (>=0<=254) | C | true | HC | 9 | 1 | 1 |
-| hc1.offsettemp | offset temperature | int8 (>=-126<=126) | C | true | HC | 10 | 1 | 1 |
-| hc1.minflowtemp | min flow temperature | uint8 (>=0<=254) | C | true | HC | 11 | 1 | 1 |
-| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=254) | C | true | HC | 12 | 1 | 1 |
-| hc1.roominfluence | room influence | uint8 (>=0<=254) | C | true | HC | 13 | 1 | 1 |
-| hc1.roominflfactor | room influence factor | uint8 (>=0<=25) | | true | HC | 14 | 1 | 1/10 |
-| hc1.curroominfl | current room influence | int16 (>=-3199<=3199) | C | false | HC | 15 | 1 | 1/10 |
-| hc1.nofrostmode | nofrost mode | enum [room\|outdoor\|room outdoor] | | true | HC | 16 | 1 | 1 |
-| hc1.nofrosttemp | nofrost temperature | int8 (>=-126<=126) | C | true | HC | 17 | 1 | 1 |
-| hc1.targetflowtemp | target flow temperature | uint8 (>=0<=254) | C | false | HC | 18 | 1 | 1 |
-| hc1.heatingtype | heating type | enum [off\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
-| hc1.summersetmode | set summer mode | enum [summer\|auto\|winter] | | true | HC | 20 | 1 | 1 |
-| hc1.hpoperatingmode | heatpump operating mode | enum [off\|auto\|heating\|cooling] | | true | HC | 21 | 1 | 1 |
-| hc1.summermode | summer mode | enum [winter\|summer] | | false | HC | 22 | 1 | 1 |
-| hc1.hpoperatingstate | heatpump operating state | enum [heating\|off\|cooling] | | false | HC | 23 | 1 | 1 |
-| hc1.vacationmode | vacation mode | boolean | | false | HC | 24 | 1 | 1 |
-| hc1.controlmode | control mode | enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant] | | true | HC | 25 | 1 | 1 |
-| hc1.program | program | enum [prog 1\|prog 2] | | true | HC | 26 | 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.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 |
+uint8
+| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 |
+uint8
+| hc1.roominfluence | room influence | uint8 (>=0<=0) | C | true | HC | 13 | 1 | 1 |
+uint8
+| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | | true | HC | 14 | 1 | 1/10 |
+| hc1.curroominfl | current room influence | int16 | C | false | HC | 15 | 1 | 1/10 |
+| hc1.nofrostmode | nofrost mode | enum | | true | HC | 16 | 1 | 1 |
+int8
+| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1 |
+| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
+| hc1.summersetmode | set summer mode | enum | | true | HC | 20 | 1 | 1 |
+| hc1.hpoperatingmode | heatpump operating mode | enum | | true | HC | 21 | 1 | 1 |
+| hc1.summermode | summer mode | enum | | false | HC | 22 | 1 | 1 |
+| hc1.hpoperatingstate | heatpump operating state | enum | | false | HC | 23 | 1 | 1 |
+| hc1.vacationmode | vacation mode | boolean | | false | HC | 24 | 1 | 1 |
+| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 |
+| hc1.program | program | enum | | true | HC | 26 | 1 | 1 |
+int8
| hc1.tempautotemp | temporary set temperature automode | int8 (>=-1<=30) | C | true | HC | 27 | 1 | 1/2 |
+int8
| hc1.cooltemp | cooling temperature | int8 (>=-1<=30) | C | true | HC | 28 | 1 | 1/2 |
-| hc1.fastheatup | fast heatup | uint8 (>=0<=100) | % | true | HC | 29 | 1 | 1 |
-| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
-| hc1.reducemode | reduce mode | enum [outdoor\|room\|reduce] | | true | HC | 31 | 1 | 1 |
-| hc1.noreducetemp | no reduce below temperature | int8 (>=-126<=126) | C | true | HC | 32 | 1 | 1 |
-| hc1.reducetemp | off/reduce switch temperature | int8 (>=-126<=126) | C | true | HC | 33 | 1 | 1 |
-| hc1.dhwprio | dhw priority | boolean | | true | HC | 34 | 1 | 1 |
-| hc1.hpcooling | hp cooling | boolean | | true | HC | 35 | 1 | 1 |
-| hc1.coolingon | cooling on | boolean | | false | HC | 36 | 1 | 1 |
-| hc1.hpmode | HP Mode | enum [heating\|cooling\|heating & cooling] | | true | HC | 37 | 1 | 1 |
+uint8
+| hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 29 | 1 | 1 |
+| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
+| hc1.reducemode | reduce mode | enum | | true | HC | 31 | 1 | 1 |
+int8
+| hc1.noreducetemp | no reduce below temperature | int8 (>=0<=0) | C | true | HC | 32 | 1 | 1 |
+int8
+| hc1.reducetemp | off/reduce switch temperature | int8 (>=0<=0) | C | true | HC | 33 | 1 | 1 |
+| hc1.dhwprio | dhw priority | boolean | | true | HC | 34 | 1 | 1 |
+| hc1.hpcooling | hp cooling | boolean | | true | HC | 35 | 1 | 1 |
+| hc1.coolingon | cooling on | boolean | | false | HC | 36 | 1 | 1 |
+| hc1.hpmode | HP Mode | enum | | true | HC | 37 | 1 | 1 |
+uint8
| hc1.dewoffset | dew point offset | uint8 (>=2<=10) | K | true | HC | 38 | 1 | 1 |
-| hc1.roomtempdiff | room temp difference | uint8 (>=0<=254) | K | true | HC | 39 | 1 | 1 |
-| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=254) | C | true | HC | 40 | 1 | 1 |
-| hc1.control | control device | enum [RC310\|RC200\|RC100\|RC100H\|TC100] | | true | HC | 41 | 1 | 1 |
-| hc1.remotetemp | room temperature from remote | cmd [] (>=-1<=101) | C | true | HC | 42 | 1 | 1/10 |
-| hc1.remotehum | room humidity from remote | cmd [] (>=-1<=101) | % | true | HC | 43 | 1 | 1 |
+uint8
+| hc1.roomtempdiff | room temp difference | uint8 (>=0<=0) | K | true | HC | 39 | 1 | 1 |
+uint8
+| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=0) | C | true | HC | 40 | 1 | 1 |
+| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 |
+| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 |
+| hc1.remotehum | room humidity from remote | cmd | % | true | HC | 43 | 1 | 1 |
+uint8
| hc1.heatondelay | heat-on delay | uint8 (>=1<=48) | hours | true | HC | 44 | 1 | 1 |
+uint8
| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 45 | 1 | 1 |
+uint8
| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 46 | 1 | 1 |
-| hc1.boost | boost mode | boolean | | true | HC | 47 | 1 | 1 |
-| hc1.boosttime | boost time | uint8 (>=0<=254) | hours | true | HC | 48 | 1 | 1 |
+| hc1.boost | boost mode | boolean | | true | HC | 47 | 1 | 1 |
+uint8
+| hc1.boosttime | boost time | uint8 (>=0<=0) | hours | true | HC | 48 | 1 | 1 |
+uint8
| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 49 | 1 | 1 |
+uint8
| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 50 | 1 | 1 |
+uint8
| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 51 | 1 | 1 |
-| hc1.switchprogmode | switch program mode | enum [level\|absolute] | | true | HC | 52 | 1 | 1 |
+| hc1.switchprogmode | switch program mode | enum | | true | HC | 52 | 1 | 1 |
+int8
| hc1.redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 53 | 1 | 1/2 |
+uint8
| hc1.solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | 54 | 1 | 1 |
-| hc1.currsolarinfl | current solar influence | uint8 (>=0<=25) | C | false | HC | 55 | 1 | 1/10 |
-| hc1.heatingpid | heating PID | enum [fast\|medium\|slow] | | true | HC | 56 | 1 | 1 |
-| hc1.pumpopt | pump optimization | boolean | | true | HC | 57 | 1 | 1 |
+| hc1.currsolarinfl | current solar influence | uint8 | C | false | HC | 55 | 1 | 1/10 |
+| hc1.heatingpid | heating PID | enum | | true | HC | 56 | 1 | 1 |
+| hc1.pumpopt | pump optimization | boolean | | true | HC | 57 | 1 | 1 |
+uint8
| hc1.inttimefloor | integral time floor | uint8 (>=160<=320) | minutes | true | HC | 58 | 1 | 10 |
+uint8
| hc1.inttime | integral time | uint8 (>=3<=80) | minutes | true | HC | 59 | 1 | 1 |
-| dhw.mode | operating mode | enum [off\|normal\|comfort\|auto\|own prog] | | true | DHW | 0 | 1 | 1 |
-| dhw.modetype | mode type | enum [off\|eco\|comfort\|eco+] | | false | DHW | 1 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | true | DHW | 2 | 1 | 1 |
-| dhw.settemplow | set low temperature | uint8 (>=0<=254) | C | true | DHW | 3 | 1 | 1 |
-| dhw.circmode | circulation pump mode | enum [off\|on\|auto\|own prog] | | true | DHW | 4 | 1 | 1 |
-| dhw.chargeduration | charge duration | uint8 (>=0<=3810) | 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 [mo\|tu\|we\|th\|fr\|sa\|su\|all] | | true | DHW | 9 | 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 |
+| 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 |
+| 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [off\|manual] | | true | HC | 3 | 1 | 1 |
-| hc1.targetflowtemp | target flow temperature | uint8 (>=0<=254) | C | false | HC | 18 | 1 | 1 |
-| hc1.heatingtype | heating type | enum [off\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
+| hc1.currtemp | current room temperature | int16 | C | false | HC | 1 | 1 | 1/10 |
+| hc1.haclimate | mqtt discovery current room temperature | enum | | false | HC | 2 | 1 | 1 |
+| hc1.mode | operating mode | enum | | true | HC | 3 | 1 | 1 |
+| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
### 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 |
-| intoffset | internal temperature offset | int8 (>=-12<=12) | C | true | DEVICE_DATA | 46 | 1 | 1/10 |
-| floordry | floor drying | enum [off\|start\|heat\|hold\|cool\|end] | | false | DEVICE_DATA | 47 | 1 | 1 |
-| dampedoutdoortemp | damped outdoor temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 48 | 1 | 1/10 |
-| floordrytemp | floor drying temperature | uint8 (>=0<=254) | C | false | DEVICE_DATA | 49 | 1 | 1 |
-| building | building type | enum [light\|medium\|heavy] | | true | DEVICE_DATA | 50 | 1 | 1 |
-| minexttemp | minimal external temperature | int8 (>=-126<=126) | 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 [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] | | true | DEVICE_DATA | 54 | 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 | | 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 |
+| 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 |
+| 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [manual\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [eco\|comfort] | | false | HC | 4 | 1 | 1 |
-| hc1.ecotemp | eco temperature | uint8 (>=0<=127) | C | true | HC | 5 | 1 | 1/2 |
-| hc1.manualtemp | manual temperature | uint8 (>=0<=127) | C | true | HC | 6 | 1 | 1/2 |
-| hc1.comforttemp | comfort temperature | uint8 (>=0<=127) | C | true | HC | 7 | 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 |
-| hc1.designtemp | design temperature | uint8 (>=0<=254) | C | true | HC | 9 | 1 | 1 |
-| hc1.offsettemp | offset temperature | int8 (>=-126<=126) | C | true | HC | 10 | 1 | 1 |
-| hc1.minflowtemp | min flow temperature | uint8 (>=0<=254) | C | true | HC | 11 | 1 | 1 |
-| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=254) | C | true | HC | 12 | 1 | 1 |
-| hc1.roominfluence | room influence | uint8 (>=0<=254) | C | true | HC | 13 | 1 | 1 |
-| hc1.roominflfactor | room influence factor | uint8 (>=0<=25) | | true | HC | 14 | 1 | 1/10 |
-| hc1.curroominfl | current room influence | int16 (>=-3199<=3199) | C | false | HC | 15 | 1 | 1/10 |
-| hc1.nofrostmode | nofrost mode | enum [room\|outdoor\|room outdoor] | | true | HC | 16 | 1 | 1 |
-| hc1.nofrosttemp | nofrost temperature | int8 (>=-126<=126) | C | true | HC | 17 | 1 | 1 |
-| hc1.targetflowtemp | target flow temperature | uint8 (>=0<=254) | C | false | HC | 18 | 1 | 1 |
-| hc1.heatingtype | heating type | enum [off\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
-| hc1.summersetmode | set summer mode | enum [summer\|auto\|winter] | | true | HC | 20 | 1 | 1 |
-| hc1.hpoperatingmode | heatpump operating mode | enum [off\|auto\|heating\|cooling] | | true | HC | 21 | 1 | 1 |
-| hc1.summermode | summer mode | enum [winter\|summer] | | false | HC | 22 | 1 | 1 |
-| hc1.hpoperatingstate | heatpump operating state | enum [heating\|off\|cooling] | | false | HC | 23 | 1 | 1 |
-| hc1.vacationmode | vacation mode | boolean | | false | HC | 24 | 1 | 1 |
-| hc1.controlmode | control mode | enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant] | | true | HC | 25 | 1 | 1 |
-| hc1.program | program | enum [prog 1\|prog 2] | | true | HC | 26 | 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.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 |
+uint8
+| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 |
+uint8
+| hc1.roominfluence | room influence | uint8 (>=0<=0) | C | true | HC | 13 | 1 | 1 |
+uint8
+| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | | true | HC | 14 | 1 | 1/10 |
+| hc1.curroominfl | current room influence | int16 | C | false | HC | 15 | 1 | 1/10 |
+| hc1.nofrostmode | nofrost mode | enum | | true | HC | 16 | 1 | 1 |
+int8
+| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1 |
+| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
+| hc1.summersetmode | set summer mode | enum | | true | HC | 20 | 1 | 1 |
+| hc1.hpoperatingmode | heatpump operating mode | enum | | true | HC | 21 | 1 | 1 |
+| hc1.summermode | summer mode | enum | | false | HC | 22 | 1 | 1 |
+| hc1.hpoperatingstate | heatpump operating state | enum | | false | HC | 23 | 1 | 1 |
+| hc1.vacationmode | vacation mode | boolean | | false | HC | 24 | 1 | 1 |
+| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 |
+| hc1.program | program | enum | | true | HC | 26 | 1 | 1 |
+int8
| hc1.tempautotemp | temporary set temperature automode | int8 (>=-1<=30) | C | true | HC | 27 | 1 | 1/2 |
+int8
| hc1.cooltemp | cooling temperature | int8 (>=-1<=30) | C | true | HC | 28 | 1 | 1/2 |
-| hc1.fastheatup | fast heatup | uint8 (>=0<=100) | % | true | HC | 29 | 1 | 1 |
-| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
-| hc1.reducemode | reduce mode | enum [outdoor\|room\|reduce] | | true | HC | 31 | 1 | 1 |
-| hc1.noreducetemp | no reduce below temperature | int8 (>=-126<=126) | C | true | HC | 32 | 1 | 1 |
-| hc1.reducetemp | off/reduce switch temperature | int8 (>=-126<=126) | C | true | HC | 33 | 1 | 1 |
-| hc1.dhwprio | dhw priority | boolean | | true | HC | 34 | 1 | 1 |
-| hc1.hpcooling | hp cooling | boolean | | true | HC | 35 | 1 | 1 |
-| hc1.coolingon | cooling on | boolean | | false | HC | 36 | 1 | 1 |
-| hc1.hpmode | HP Mode | enum [heating\|cooling\|heating & cooling] | | true | HC | 37 | 1 | 1 |
+uint8
+| hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 29 | 1 | 1 |
+| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
+| hc1.reducemode | reduce mode | enum | | true | HC | 31 | 1 | 1 |
+int8
+| hc1.noreducetemp | no reduce below temperature | int8 (>=0<=0) | C | true | HC | 32 | 1 | 1 |
+int8
+| hc1.reducetemp | off/reduce switch temperature | int8 (>=0<=0) | C | true | HC | 33 | 1 | 1 |
+| hc1.dhwprio | dhw priority | boolean | | true | HC | 34 | 1 | 1 |
+| hc1.hpcooling | hp cooling | boolean | | true | HC | 35 | 1 | 1 |
+| hc1.coolingon | cooling on | boolean | | false | HC | 36 | 1 | 1 |
+| hc1.hpmode | HP Mode | enum | | true | HC | 37 | 1 | 1 |
+uint8
| hc1.dewoffset | dew point offset | uint8 (>=2<=10) | K | true | HC | 38 | 1 | 1 |
-| hc1.roomtempdiff | room temp difference | uint8 (>=0<=254) | K | true | HC | 39 | 1 | 1 |
-| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=254) | C | true | HC | 40 | 1 | 1 |
-| hc1.control | control device | enum [RC310\|RC200\|RC100\|RC100H\|TC100] | | true | HC | 41 | 1 | 1 |
-| hc1.remotetemp | room temperature from remote | cmd [] (>=-1<=101) | C | true | HC | 42 | 1 | 1/10 |
-| hc1.remotehum | room humidity from remote | cmd [] (>=-1<=101) | % | true | HC | 43 | 1 | 1 |
+uint8
+| hc1.roomtempdiff | room temp difference | uint8 (>=0<=0) | K | true | HC | 39 | 1 | 1 |
+uint8
+| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=0) | C | true | HC | 40 | 1 | 1 |
+| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 |
+| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 |
+| hc1.remotehum | room humidity from remote | cmd | % | true | HC | 43 | 1 | 1 |
+uint8
| hc1.heatondelay | heat-on delay | uint8 (>=1<=48) | hours | true | HC | 44 | 1 | 1 |
+uint8
| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 45 | 1 | 1 |
+uint8
| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 46 | 1 | 1 |
-| hc1.boost | boost mode | boolean | | true | HC | 47 | 1 | 1 |
-| hc1.boosttime | boost time | uint8 (>=0<=254) | hours | true | HC | 48 | 1 | 1 |
+| hc1.boost | boost mode | boolean | | true | HC | 47 | 1 | 1 |
+uint8
+| hc1.boosttime | boost time | uint8 (>=0<=0) | hours | true | HC | 48 | 1 | 1 |
+uint8
| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 49 | 1 | 1 |
+uint8
| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 50 | 1 | 1 |
+uint8
| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 51 | 1 | 1 |
-| hc1.switchprogmode | switch program mode | enum [level\|absolute] | | true | HC | 52 | 1 | 1 |
+| hc1.switchprogmode | switch program mode | enum | | true | HC | 52 | 1 | 1 |
+int8
| hc1.redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 53 | 1 | 1/2 |
+uint8
| hc1.solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | 54 | 1 | 1 |
-| hc1.currsolarinfl | current solar influence | uint8 (>=0<=25) | C | false | HC | 55 | 1 | 1/10 |
-| hc1.heatingpid | heating PID | enum [fast\|medium\|slow] | | true | HC | 56 | 1 | 1 |
-| hc1.pumpopt | pump optimization | boolean | | true | HC | 57 | 1 | 1 |
+| hc1.currsolarinfl | current solar influence | uint8 | C | false | HC | 55 | 1 | 1/10 |
+| hc1.heatingpid | heating PID | enum | | true | HC | 56 | 1 | 1 |
+| hc1.pumpopt | pump optimization | boolean | | true | HC | 57 | 1 | 1 |
+uint8
| hc1.inttimefloor | integral time floor | uint8 (>=160<=320) | minutes | true | HC | 58 | 1 | 10 |
+uint8
| hc1.inttime | integral time | uint8 (>=3<=80) | minutes | true | HC | 59 | 1 | 1 |
-| dhw.mode | operating mode | enum [normal\|comfort\|eco+] | | true | DHW | 0 | 1 | 1 |
-| dhw.modetype | mode type | enum [off\|eco\|comfort\|eco+] | | false | DHW | 1 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | true | DHW | 2 | 1 | 1 |
-| dhw.settemplow | set low temperature | uint8 (>=0<=254) | C | true | DHW | 3 | 1 | 1 |
-| dhw.circmode | circulation pump mode | enum [off\|on\|auto\|own prog] | | true | DHW | 4 | 1 | 1 |
-| dhw.chargeduration | charge duration | uint8 (>=0<=3810) | 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 [mo\|tu\|we\|th\|fr\|sa\|su\|all] | | true | DHW | 9 | 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 |
+| 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 (>=-15999<=15999) | C | false | HC | 0 | 1 | 1/2 |
-| hc1.currtemp | current room temperature | int16 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [auto\|off] | | false | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [off\|on] | | false | HC | 4 | 1 | 1 |
-| hc1.targetflowtemp | target flow temperature | uint8 (>=0<=254) | C | false | HC | 18 | 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 |
+| 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 | 18 | 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 (>=-15999<=15999) | C | false | HC | 0 | 1 | 1/2 |
-| hc1.currtemp | current room temperature | int16 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [auto\|off] | | false | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [off\|on] | | false | HC | 4 | 1 | 1 |
-| hc1.targetflowtemp | target flow temperature | uint8 (>=0<=254) | C | false | HC | 18 | 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 |
+| 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 | 18 | 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 (>=-15999<=15999) | C | false | HC | 0 | 1 | 1/2 |
-| hc1.currtemp | current room temperature | int16 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [auto\|off] | | false | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [off\|on] | | false | HC | 4 | 1 | 1 |
-| hc1.targetflowtemp | target flow temperature | uint8 (>=0<=254) | C | false | HC | 18 | 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 |
+| 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 | 18 | 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 |
-| intoffset | internal temperature offset | int8 (>=-12<=12) | C | true | DEVICE_DATA | 46 | 1 | 1/10 |
-| floordry | floor drying | enum [off\|start\|heat\|hold\|cool\|end] | | false | DEVICE_DATA | 47 | 1 | 1 |
-| dampedoutdoortemp | damped outdoor temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 48 | 1 | 1/10 |
-| floordrytemp | floor drying temperature | uint8 (>=0<=254) | C | false | DEVICE_DATA | 49 | 1 | 1 |
-| building | building type | enum [light\|medium\|heavy] | | true | DEVICE_DATA | 50 | 1 | 1 |
-| minexttemp | minimal external temperature | int8 (>=-126<=126) | 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 [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] | | true | DEVICE_DATA | 54 | 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 | | 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 |
+| 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 |
+| 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [off\|manual\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [eco\|comfort] | | false | HC | 4 | 1 | 1 |
-| hc1.ecotemp | eco temperature | uint8 (>=0<=127) | C | true | HC | 5 | 1 | 1/2 |
-| hc1.manualtemp | manual temperature | uint8 (>=0<=127) | C | true | HC | 6 | 1 | 1/2 |
-| hc1.comforttemp | comfort temperature | uint8 (>=0<=127) | C | true | HC | 7 | 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 |
-| hc1.designtemp | design temperature | uint8 (>=0<=254) | C | true | HC | 9 | 1 | 1 |
-| hc1.offsettemp | offset temperature | int8 (>=-126<=126) | C | true | HC | 10 | 1 | 1 |
-| hc1.minflowtemp | min flow temperature | uint8 (>=0<=254) | C | true | HC | 11 | 1 | 1 |
-| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=254) | C | true | HC | 12 | 1 | 1 |
-| hc1.roominfluence | room influence | uint8 (>=0<=254) | C | true | HC | 13 | 1 | 1 |
-| hc1.roominflfactor | room influence factor | uint8 (>=0<=25) | | true | HC | 14 | 1 | 1/10 |
-| hc1.curroominfl | current room influence | int16 (>=-3199<=3199) | C | false | HC | 15 | 1 | 1/10 |
-| hc1.nofrostmode | nofrost mode | enum [room\|outdoor\|room outdoor] | | true | HC | 16 | 1 | 1 |
-| hc1.nofrosttemp | nofrost temperature | int8 (>=-126<=126) | C | true | HC | 17 | 1 | 1 |
-| hc1.targetflowtemp | target flow temperature | uint8 (>=0<=254) | C | false | HC | 18 | 1 | 1 |
-| hc1.heatingtype | heating type | enum [off\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
-| hc1.summersetmode | set summer mode | enum [summer\|auto\|winter] | | true | HC | 20 | 1 | 1 |
-| hc1.hpoperatingmode | heatpump operating mode | enum [off\|auto\|heating\|cooling] | | true | HC | 21 | 1 | 1 |
-| hc1.summermode | summer mode | enum [winter\|summer] | | false | HC | 22 | 1 | 1 |
-| hc1.hpoperatingstate | heatpump operating state | enum [heating\|off\|cooling] | | false | HC | 23 | 1 | 1 |
-| hc1.vacationmode | vacation mode | boolean | | false | HC | 24 | 1 | 1 |
-| hc1.controlmode | control mode | enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant] | | true | HC | 25 | 1 | 1 |
-| hc1.program | program | enum [prog 1\|prog 2] | | true | HC | 26 | 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.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 |
+uint8
+| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 |
+uint8
+| hc1.roominfluence | room influence | uint8 (>=0<=0) | C | true | HC | 13 | 1 | 1 |
+uint8
+| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | | true | HC | 14 | 1 | 1/10 |
+| hc1.curroominfl | current room influence | int16 | C | false | HC | 15 | 1 | 1/10 |
+| hc1.nofrostmode | nofrost mode | enum | | true | HC | 16 | 1 | 1 |
+int8
+| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1 |
+| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
+| hc1.summersetmode | set summer mode | enum | | true | HC | 20 | 1 | 1 |
+| hc1.hpoperatingmode | heatpump operating mode | enum | | true | HC | 21 | 1 | 1 |
+| hc1.summermode | summer mode | enum | | false | HC | 22 | 1 | 1 |
+| hc1.hpoperatingstate | heatpump operating state | enum | | false | HC | 23 | 1 | 1 |
+| hc1.vacationmode | vacation mode | boolean | | false | HC | 24 | 1 | 1 |
+| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 |
+| hc1.program | program | enum | | true | HC | 26 | 1 | 1 |
+int8
| hc1.tempautotemp | temporary set temperature automode | int8 (>=-1<=30) | C | true | HC | 27 | 1 | 1/2 |
+int8
| hc1.cooltemp | cooling temperature | int8 (>=-1<=30) | C | true | HC | 28 | 1 | 1/2 |
-| hc1.fastheatup | fast heatup | uint8 (>=0<=100) | % | true | HC | 29 | 1 | 1 |
-| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
-| hc1.reducemode | reduce mode | enum [outdoor\|room\|reduce] | | true | HC | 31 | 1 | 1 |
-| hc1.noreducetemp | no reduce below temperature | int8 (>=-126<=126) | C | true | HC | 32 | 1 | 1 |
-| hc1.reducetemp | off/reduce switch temperature | int8 (>=-126<=126) | C | true | HC | 33 | 1 | 1 |
-| hc1.dhwprio | dhw priority | boolean | | true | HC | 34 | 1 | 1 |
-| hc1.hpcooling | hp cooling | boolean | | true | HC | 35 | 1 | 1 |
-| hc1.coolingon | cooling on | boolean | | false | HC | 36 | 1 | 1 |
-| hc1.hpmode | HP Mode | enum [heating\|cooling\|heating & cooling] | | true | HC | 37 | 1 | 1 |
+uint8
+| hc1.fastheatup | fast heatup | uint8 (>=0<=0) | % | true | HC | 29 | 1 | 1 |
+| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
+| hc1.reducemode | reduce mode | enum | | true | HC | 31 | 1 | 1 |
+int8
+| hc1.noreducetemp | no reduce below temperature | int8 (>=0<=0) | C | true | HC | 32 | 1 | 1 |
+int8
+| hc1.reducetemp | off/reduce switch temperature | int8 (>=0<=0) | C | true | HC | 33 | 1 | 1 |
+| hc1.dhwprio | dhw priority | boolean | | true | HC | 34 | 1 | 1 |
+| hc1.hpcooling | hp cooling | boolean | | true | HC | 35 | 1 | 1 |
+| hc1.coolingon | cooling on | boolean | | false | HC | 36 | 1 | 1 |
+| hc1.hpmode | HP Mode | enum | | true | HC | 37 | 1 | 1 |
+uint8
| hc1.dewoffset | dew point offset | uint8 (>=2<=10) | K | true | HC | 38 | 1 | 1 |
-| hc1.roomtempdiff | room temp difference | uint8 (>=0<=254) | K | true | HC | 39 | 1 | 1 |
-| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=254) | C | true | HC | 40 | 1 | 1 |
-| hc1.control | control device | enum [off\|-\|RC100\|RC100H\|-\|RC120RF\|RC220/RT800\|single] | | true | HC | 41 | 1 | 1 |
-| hc1.remotetemp | room temperature from remote | cmd [] (>=-1<=101) | C | true | HC | 42 | 1 | 1/10 |
-| hc1.remotehum | room humidity from remote | cmd [] (>=-1<=101) | % | true | HC | 43 | 1 | 1 |
+uint8
+| hc1.roomtempdiff | room temp difference | uint8 (>=0<=0) | K | true | HC | 39 | 1 | 1 |
+uint8
+| hc1.hpminflowtemp | HP min. flow temp. | uint8 (>=0<=0) | C | true | HC | 40 | 1 | 1 |
+| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 |
+| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 |
+| hc1.remotehum | room humidity from remote | cmd | % | true | HC | 43 | 1 | 1 |
+uint8
| hc1.heatondelay | heat-on delay | uint8 (>=1<=48) | hours | true | HC | 44 | 1 | 1 |
+uint8
| hc1.heatoffdelay | heat-off delay | uint8 (>=1<=48) | hours | true | HC | 45 | 1 | 1 |
+uint8
| hc1.instantstart | instant start | uint8 (>=1<=10) | K | true | HC | 46 | 1 | 1 |
-| hc1.boost | boost mode | boolean | | true | HC | 47 | 1 | 1 |
-| hc1.boosttime | boost time | uint8 (>=0<=254) | hours | true | HC | 48 | 1 | 1 |
+| hc1.boost | boost mode | boolean | | true | HC | 47 | 1 | 1 |
+uint8
+| hc1.boosttime | boost time | uint8 (>=0<=0) | hours | true | HC | 48 | 1 | 1 |
+uint8
| hc1.coolstart | cooling starttemp | uint8 (>=20<=35) | C | true | HC | 49 | 1 | 1 |
+uint8
| hc1.coolondelay | cooling on delay | uint8 (>=1<=48) | hours | true | HC | 50 | 1 | 1 |
+uint8
| hc1.cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 51 | 1 | 1 |
-| hc1.switchprogmode | switch program mode | enum [level\|absolute] | | true | HC | 52 | 1 | 1 |
+| hc1.switchprogmode | switch program mode | enum | | true | HC | 52 | 1 | 1 |
+int8
| hc1.redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 53 | 1 | 1/2 |
+uint8
| hc1.solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | 54 | 1 | 1 |
-| hc1.currsolarinfl | current solar influence | uint8 (>=0<=25) | C | false | HC | 55 | 1 | 1/10 |
-| hc1.heatingpid | heating PID | enum [fast\|medium\|slow] | | true | HC | 56 | 1 | 1 |
-| hc1.pumpopt | pump optimization | boolean | | true | HC | 57 | 1 | 1 |
+| hc1.currsolarinfl | current solar influence | uint8 | C | false | HC | 55 | 1 | 1/10 |
+| hc1.heatingpid | heating PID | enum | | true | HC | 56 | 1 | 1 |
+| hc1.pumpopt | pump optimization | boolean | | true | HC | 57 | 1 | 1 |
+uint8
| hc1.inttimefloor | integral time floor | uint8 (>=160<=320) | minutes | true | HC | 58 | 1 | 10 |
+uint8
| hc1.inttime | integral time | uint8 (>=3<=80) | minutes | true | HC | 59 | 1 | 1 |
-| dhw.mode | operating mode | enum [off\|eco+\|eco\|comfort\|auto] | | true | DHW | 0 | 1 | 1 |
-| dhw.modetype | mode type | enum [off\|eco\|comfort\|eco+] | | false | DHW | 1 | 1 | 1 |
-| dhw.settemp | set temperature | uint8 (>=0<=254) | C | true | DHW | 2 | 1 | 1 |
-| dhw.settemplow | set low temperature | uint8 (>=0<=254) | C | true | DHW | 3 | 1 | 1 |
-| dhw.circmode | circulation pump mode | enum [off\|on\|auto\|own prog] | | true | DHW | 4 | 1 | 1 |
-| dhw.chargeduration | charge duration | uint8 (>=0<=3810) | 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 [mo\|tu\|we\|th\|fr\|sa\|su\|all] | | true | DHW | 9 | 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 |
+| 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 |
-| minexttemp | minimal external temperature | int8 (>=-126<=126) | C | true | DEVICE_DATA | 51 | 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [night\|day\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [night\|day] | | false | HC | 4 | 1 | 1 |
-| hc1.daytemp | day temperature | uint8 (>=0<=127) | C | true | HC | 60 | 1 | 1/2 |
-| hc1.nighttemp | night temperature | uint8 (>=0<=127) | C | true | HC | 61 | 1 | 1/2 |
-| hc1.program | program | enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors] | | true | HC | 26 | 1 | 1 |
-| hc1.minflowtemp | min flow temperature | uint8 (>=0<=254) | C | true | HC | 11 | 1 | 1 |
-| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=254) | C | true | HC | 12 | 1 | 1 |
-| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=127) | C | true | HC | 27 | 1 | 1/2 |
-| hc1.heatingtype | heating type | enum [off\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
+| 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 | 60 | 1 | 1/2 |
+uint8
+| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 61 | 1 | 1/2 |
+| hc1.program | program | enum | | true | HC | 26 | 1 | 1 |
+uint8
+| hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 |
+uint8
+| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 |
+uint8
+| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=0) | C | true | HC | 27 | 1 | 1/2 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
+uint8
| hc1.summertemp | summer temperature | uint8 (>=10<=30) | C | true | HC | 8 | 1 | 1 |
-| hc1.summermode | summer mode | enum [winter\|summer] | | false | HC | 22 | 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 |
-| minexttemp | minimal external temperature | int8 (>=-126<=126) | C | true | DEVICE_DATA | 51 | 1 | 1 |
+| hc1.summermode | summer mode | enum | | false | HC | 22 | 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [night\|day\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [night\|day] | | false | HC | 4 | 1 | 1 |
-| hc1.daytemp | day temperature | uint8 (>=0<=127) | C | true | HC | 60 | 1 | 1/2 |
-| hc1.nighttemp | night temperature | uint8 (>=0<=127) | C | true | HC | 61 | 1 | 1/2 |
-| hc1.program | program | enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors] | | true | HC | 26 | 1 | 1 |
-| hc1.minflowtemp | min flow temperature | uint8 (>=0<=254) | C | true | HC | 11 | 1 | 1 |
-| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=254) | C | true | HC | 12 | 1 | 1 |
-| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=127) | C | true | HC | 27 | 1 | 1/2 |
-| hc1.heatingtype | heating type | enum [off\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
+| 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 | 60 | 1 | 1/2 |
+uint8
+| hc1.nighttemp | night temperature | uint8 (>=0<=0) | C | true | HC | 61 | 1 | 1/2 |
+| hc1.program | program | enum | | true | HC | 26 | 1 | 1 |
+uint8
+| hc1.minflowtemp | min flow temperature | uint8 (>=0<=0) | C | true | HC | 11 | 1 | 1 |
+uint8
+| hc1.maxflowtemp | max flow temperature | uint8 (>=0<=0) | C | true | HC | 12 | 1 | 1 |
+uint8
+| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=0) | C | true | HC | 27 | 1 | 1/2 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
+uint8
| hc1.summertemp | summer temperature | uint8 (>=10<=30) | C | true | HC | 8 | 1 | 1 |
-| hc1.summermode | summer mode | enum [winter\|summer] | | false | HC | 22 | 1 | 1 |
+| hc1.summermode | summer mode | enum | | false | HC | 22 | 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 [internal temperature\|internal setpoint\|external temperature\|burner temperature\|dhw temperature\|functioning mode\|time\|date\|smoke temperature] | | true | DEVICE_DATA | 65 | 1 | 1 |
-| language | language | enum [german\|dutch\|french\|italian] | | false | DEVICE_DATA | 66 | 1 | 1 |
-| clockoffset | clock offset | int8 (>=-126<=126) | seconds | true | DEVICE_DATA | 67 | 1 | 1 |
-| intoffset | internal temperature offset | int8 (>=-12<=12) | C | true | DEVICE_DATA | 46 | 1 | 1/10 |
-| minexttemp | minimal external temperature | int8 (>=-126<=126) | C | true | DEVICE_DATA | 51 | 1 | 1 |
-| inttemp1 | temperature sensor 1 | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 68 | 1 | 1/10 |
-| inttemp2 | temperature sensor 2 | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 69 | 1 | 1/10 |
-| damping | damping outdoor temperature | boolean | | true | DEVICE_DATA | 52 | 1 | 1 |
-| dampedoutdoortemp | damped outdoor temperature | int8 (>=-126<=126) | C | false | DEVICE_DATA | 48 | 1 | 1 |
-| building | building type | enum [light\|medium\|heavy] | | true | DEVICE_DATA | 50 | 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 |
+| 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [night\|day\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [night\|day] | | false | HC | 4 | 1 | 1 |
+| 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 | 60 | 1 | 1/2 |
+uint8
| hc1.nighttemp | night temperature | uint8 (>=10<=30) | C | true | HC | 61 | 1 | 1/2 |
+uint8
| hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 |
+int8
| hc1.offsettemp | offset temperature | int8 (>=-5<=5) | C | true | HC | 10 | 1 | 1/2 |
+uint8
| hc1.holidaytemp | holiday temperature | uint8 (>=5<=30) | C | true | HC | 62 | 1 | 1/2 |
-| hc1.targetflowtemp | target flow temperature | uint8 (>=0<=254) | C | false | HC | 18 | 1 | 1 |
+| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 |
+uint8
| hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1 |
-| hc1.summermode | summer mode | enum [winter\|summer] | | false | HC | 22 | 1 | 1 |
-| hc1.holidaymode | holiday mode | boolean | | false | HC | 63 | 1 | 1 |
+| hc1.summermode | summer mode | enum | | false | HC | 22 | 1 | 1 |
+| hc1.holidaymode | holiday mode | boolean | | false | HC | 63 | 1 | 1 |
+int8
| hc1.nofrosttemp | nofrost temperature | int8 (>=-20<=10) | C | true | HC | 17 | 1 | 1 |
-| hc1.nofrostmode | nofrost mode | enum [off\|outdoor\|room] | | true | HC | 16 | 1 | 1 |
+| hc1.nofrostmode | nofrost mode | enum | | true | HC | 16 | 1 | 1 |
+uint8
| hc1.roominfluence | room influence | uint8 (>=0<=10) | C | true | HC | 13 | 1 | 1 |
+uint8
| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 |
+uint8
| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 |
+uint8
| hc1.flowtempoffset | flow temperature offset for mixer | uint8 (>=0<=20) | C | true | HC | 64 | 1 | 1 |
-| hc1.heatingtype | heating type | enum [off\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
-| hc1.reducemode | reduce mode | enum [nofrost\|reduce\|room\|outdoor] | | true | HC | 31 | 1 | 1 |
-| hc1.controlmode | control mode | enum [outdoor\|room] | | true | HC | 25 | 1 | 1 |
-| hc1.control | control device | enum [off\|RC20\|RC3x] | | true | HC | 41 | 1 | 1 |
-| hc1.holidays | holiday dates | string | | true | HC | 65 | 13 | 1 |
-| hc1.vacations | vacation dates | string | | true | HC | 78 | 13 | 1 |
-| hc1.program | program | enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2] | | true | HC | 26 | 1 | 1 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
+| hc1.reducemode | reduce mode | enum | | true | HC | 31 | 1 | 1 |
+| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 |
+| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 |
+| hc1.holidays | holiday dates | string | | true | HC | 65 | 13 | 1 |
+| hc1.vacations | vacation dates | string | | true | HC | 78 | 13 | 1 |
+| hc1.program | program | enum | | true | HC | 26 | 1 | 1 |
+uint8
| hc1.pause | pause time | uint8 (>=0<=99) | hours | true | HC | 91 | 1 | 1 |
+uint8
| hc1.party | party time | uint8 (>=0<=99) | hours | true | HC | 92 | 1 | 1 |
+uint8
| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=30) | C | true | HC | 27 | 1 | 1/2 |
+int8
| hc1.noreducetemp | no reduce below temperature | int8 (>=-31<=10) | C | true | HC | 32 | 1 | 1 |
+int8
| hc1.reducetemp | off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 33 | 1 | 1 |
+int8
| hc1.vacreducetemp | vacations off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 93 | 1 | 1 |
-| hc1.vacreducemode | vacations reduce mode | enum [nofrost\|reduce\|room\|outdoor] | | true | HC | 94 | 1 | 1 |
-| hc1.remotetemp | room temperature from remote | cmd [] (>=-1<=101) | C | true | HC | 42 | 1 | 1/10 |
-| hc1.dhwprio | dhw priority | boolean | | true | HC | 34 | 1 | 1 |
-| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
-| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 95 | 8 | 1 |
-| hc1.switchtime2 | own2 program switchtime | string | | true | HC | 103 | 8 | 1 |
-| dhw.mode | operating mode | enum [off\|on\|auto] | | true | DHW | 0 | 1 | 1 |
-| dhw.circmode | circulation pump mode | enum [off\|on\|auto] | | true | DHW | 4 | 1 | 1 |
-| dhw.progmode | program | enum [std prog\|own prog] | | true | DHW | 13 | 1 | 1 |
-| dhw.circprog | circulation program | enum [std prog\|own prog] | | true | DHW | 14 | 1 | 1 |
-| dhw.disinfecting | disinfecting | boolean | | true | DHW | 8 | 1 | 1 |
-| dhw.disinfectday | disinfection day | enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] | | true | DHW | 9 | 1 | 1 |
+| hc1.vacreducemode | vacations reduce mode | enum | | true | HC | 94 | 1 | 1 |
+| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 |
+| hc1.dhwprio | dhw priority | boolean | | true | HC | 34 | 1 | 1 |
+| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
+| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 95 | 8 | 1 |
+| hc1.switchtime2 | own2 program switchtime | string | | true | HC | 103 | 8 | 1 |
+| 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 |
-| dhw.maxtemp | maximum temperature | uint8 (>=0<=254) | 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 |
+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 |
+| 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 (>=-3199<=3199) | C | false | DEVICE_DATA | 68 | 1 | 1/10 |
-| inttemp2 | temperature sensor 2 | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 69 | 1 | 1/10 |
-| damping | damping outdoor temperature | boolean | | true | DEVICE_DATA | 52 | 1 | 1 |
-| dampedoutdoortemp | damped outdoor temperature | int8 (>=-126<=126) | C | false | DEVICE_DATA | 48 | 1 | 1 |
-| building | building type | enum [light\|medium\|heavy] | | true | DEVICE_DATA | 50 | 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [night\|day\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [night\|day] | | false | HC | 4 | 1 | 1 |
+| 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 | 60 | 1 | 1/2 |
+uint8
| hc1.nighttemp | night temperature | uint8 (>=10<=30) | C | true | HC | 61 | 1 | 1/2 |
+uint8
| hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 |
+int8
| hc1.offsettemp | offset temperature | int8 (>=-5<=5) | C | true | HC | 10 | 1 | 1/2 |
+uint8
| hc1.holidaytemp | holiday temperature | uint8 (>=5<=30) | C | true | HC | 62 | 1 | 1/2 |
-| hc1.targetflowtemp | target flow temperature | uint8 (>=0<=254) | C | false | HC | 18 | 1 | 1 |
+| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 |
+uint8
| hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1 |
-| hc1.summermode | summer mode | enum [winter\|summer] | | false | HC | 22 | 1 | 1 |
-| hc1.holidaymode | holiday mode | boolean | | false | HC | 63 | 1 | 1 |
+| hc1.summermode | summer mode | enum | | false | HC | 22 | 1 | 1 |
+| hc1.holidaymode | holiday mode | boolean | | false | HC | 63 | 1 | 1 |
+int8
| hc1.nofrosttemp | nofrost temperature | int8 (>=-20<=10) | C | true | HC | 17 | 1 | 1 |
-| hc1.nofrostmode | nofrost mode | enum [off\|outdoor\|room] | | true | HC | 16 | 1 | 1 |
+| hc1.nofrostmode | nofrost mode | enum | | true | HC | 16 | 1 | 1 |
+uint8
| hc1.roominfluence | room influence | uint8 (>=0<=10) | C | true | HC | 13 | 1 | 1 |
+uint8
| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 |
+uint8
| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 |
+uint8
| hc1.flowtempoffset | flow temperature offset for mixer | uint8 (>=0<=20) | C | true | HC | 64 | 1 | 1 |
-| hc1.heatingtype | heating type | enum [off\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
-| hc1.reducemode | reduce mode | enum [nofrost\|reduce\|room\|outdoor] | | true | HC | 31 | 1 | 1 |
-| hc1.controlmode | control mode | enum [outdoor\|room] | | true | HC | 25 | 1 | 1 |
-| hc1.control | control device | enum [off\|RC20\|RC3x] | | true | HC | 41 | 1 | 1 |
-| hc1.holidays | holiday dates | string | | true | HC | 65 | 13 | 1 |
-| hc1.vacations | vacation dates | string | | true | HC | 78 | 13 | 1 |
-| hc1.program | program | enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2] | | true | HC | 26 | 1 | 1 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
+| hc1.reducemode | reduce mode | enum | | true | HC | 31 | 1 | 1 |
+| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 |
+| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 |
+| hc1.holidays | holiday dates | string | | true | HC | 65 | 13 | 1 |
+| hc1.vacations | vacation dates | string | | true | HC | 78 | 13 | 1 |
+| hc1.program | program | enum | | true | HC | 26 | 1 | 1 |
+uint8
| hc1.pause | pause time | uint8 (>=0<=99) | hours | true | HC | 91 | 1 | 1 |
+uint8
| hc1.party | party time | uint8 (>=0<=99) | hours | true | HC | 92 | 1 | 1 |
+uint8
| hc1.tempautotemp | temporary set temperature automode | uint8 (>=0<=30) | C | true | HC | 27 | 1 | 1/2 |
+int8
| hc1.noreducetemp | no reduce below temperature | int8 (>=-31<=10) | C | true | HC | 32 | 1 | 1 |
+int8
| hc1.reducetemp | off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 33 | 1 | 1 |
+int8
| hc1.vacreducetemp | vacations off/reduce switch temperature | int8 (>=-20<=10) | C | true | HC | 93 | 1 | 1 |
-| hc1.vacreducemode | vacations reduce mode | enum [nofrost\|reduce\|room\|outdoor] | | true | HC | 94 | 1 | 1 |
-| hc1.remotetemp | room temperature from remote | cmd [] (>=-1<=101) | C | true | HC | 42 | 1 | 1/10 |
-| hc1.dhwprio | dhw priority | boolean | | true | HC | 34 | 1 | 1 |
-| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
-| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 95 | 8 | 1 |
-| hc1.switchtime2 | own2 program switchtime | string | | true | HC | 103 | 8 | 1 |
-| dhw.mode | operating mode | enum [off\|on\|auto] | | true | DHW | 0 | 1 | 1 |
-| dhw.circmode | circulation pump mode | enum [off\|on\|auto] | | true | DHW | 4 | 1 | 1 |
-| dhw.progmode | program | enum [std prog\|own prog] | | true | DHW | 13 | 1 | 1 |
-| dhw.circprog | circulation program | enum [std prog\|own prog] | | true | DHW | 14 | 1 | 1 |
-| dhw.disinfecting | disinfecting | boolean | | true | DHW | 8 | 1 | 1 |
-| dhw.disinfectday | disinfection day | enum [mo\|tu\|we\|th\|fr\|sa\|su\|all] | | true | DHW | 9 | 1 | 1 |
+| hc1.vacreducemode | vacations reduce mode | enum | | true | HC | 94 | 1 | 1 |
+| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 |
+| hc1.dhwprio | dhw priority | boolean | | true | HC | 34 | 1 | 1 |
+| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
+| hc1.switchtime1 | own1 program switchtime | string | | true | HC | 95 | 8 | 1 |
+| hc1.switchtime2 | own2 program switchtime | string | | true | HC | 103 | 8 | 1 |
+| 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 |
+| 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 [dhw temperature\|date\|external temperature] | | true | DEVICE_DATA | 65 | 1 | 1 |
-| language | language | enum [german\|italian\|french\|dutch] | | true | DEVICE_DATA | 66 | 1 | 1 |
-| hybridstrategy | hybrid control strategy | enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] | | true | DEVICE_DATA | 54 | 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 | | true | DEVICE_DATA | 33 | 13 | 1 |
+| display | display | enum | | true | DEVICE_DATA | 65 | 1 | 1 |
+| language | language | enum | | true | DEVICE_DATA | 66 | 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [nofrost\|eco\|heat\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [nofrost\|eco\|heat] | | false | HC | 4 | 1 | 1 |
-| hc1.heattemp | heat temperature | uint8 (>=0<=127) | C | true | HC | 202 | 1 | 1/2 |
-| hc1.ecotemp | eco temperature | uint8 (>=0<=127) | C | true | HC | 5 | 1 | 1/2 |
-| hc1.nofrosttemp | nofrost temperature | int8 (>=-63<=63) | C | true | HC | 17 | 1 | 1/2 |
-| hc1.control | control device | enum [off\|FB10\|FB100] | | true | HC | 41 | 1 | 1 |
-| hc1.program | program | enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] | | true | HC | 26 | 1 | 1 |
-| hc1.remotetemp | room temperature from remote | cmd [] (>=-1<=101) | C | true | HC | 42 | 1 | 1/10 |
-| hc1.targetflowtemp | target flow temperature | uint8 (>=0<=254) | C | false | HC | 18 | 1 | 1 |
+| 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 | 202 | 1 | 1/2 |
+uint8
+| hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 |
+int8
+| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 |
+| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 |
+| hc1.program | program | enum | | true | HC | 26 | 1 | 1 |
+| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 |
+| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 |
+uint8
| hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 |
-| hc1.roomsensor | room sensor | enum [extern\|intern\|auto] | | true | HC | 203 | 1 | 1 |
-| hc1.holidaymode | holiday mode | enum [nofrost\|eco\|heat\|auto] | | true | HC | 63 | 1 | 1 |
-| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
-| hc1.heatup | heatup | enum [slow\|medium\|fast] | | true | HC | 204 | 1 | 1 |
+| hc1.roomsensor | room sensor | enum | | true | HC | 203 | 1 | 1 |
+| hc1.holidaymode | holiday mode | enum | | true | HC | 63 | 1 | 1 |
+| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
+| hc1.heatup | heatup | enum | | true | HC | 204 | 1 | 1 |
+uint8
| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 |
+uint8
| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 |
+uint8
| hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 |
-| hc1.roominfluence | room influence | enum [off\|intern\|extern\|auto] | | true | HC | 13 | 1 | 1 |
-| hc1.roominflfactor | room influence factor | uint8 (>=0<=100) | % | true | HC | 14 | 1 | 10 |
-| hc1.heatingtype | heating type | enum [off\|heatingcurve\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
-| hc1.controlmode | control mode | enum [off\|unmixed\|unmixed IPM\|mixed IPM] | | true | HC | 25 | 1 | 1 |
-| dhw.charge | charge | boolean | | true | DHW | 6 | 1 | 1 |
+| hc1.roominfluence | room influence | enum | | true | HC | 13 | 1 | 1 |
+uint8
+| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 14 | 1 | 10 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
+| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 |
+| 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 [dhw temperature\|date\|external temperature] | | true | DEVICE_DATA | 65 | 1 | 1 |
-| language | language | enum [german\|italian\|french\|dutch] | | true | DEVICE_DATA | 66 | 1 | 1 |
-| hybridstrategy | hybrid control strategy | enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] | | true | DEVICE_DATA | 54 | 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 | | true | DEVICE_DATA | 33 | 13 | 1 |
+| display | display | enum | | true | DEVICE_DATA | 65 | 1 | 1 |
+| language | language | enum | | true | DEVICE_DATA | 66 | 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [nofrost\|eco\|heat\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [nofrost\|eco\|heat] | | false | HC | 4 | 1 | 1 |
-| hc1.heattemp | heat temperature | uint8 (>=0<=127) | C | true | HC | 202 | 1 | 1/2 |
-| hc1.ecotemp | eco temperature | uint8 (>=0<=127) | C | true | HC | 5 | 1 | 1/2 |
-| hc1.nofrosttemp | nofrost temperature | int8 (>=-63<=63) | C | true | HC | 17 | 1 | 1/2 |
-| hc1.control | control device | enum [off\|FB10\|FB100] | | true | HC | 41 | 1 | 1 |
-| hc1.program | program | enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] | | true | HC | 26 | 1 | 1 |
-| hc1.remotetemp | room temperature from remote | cmd [] (>=-1<=101) | C | true | HC | 42 | 1 | 1/10 |
-| hc1.targetflowtemp | target flow temperature | uint8 (>=0<=254) | C | false | HC | 18 | 1 | 1 |
+| 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 | 202 | 1 | 1/2 |
+uint8
+| hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 |
+int8
+| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 |
+| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 |
+| hc1.program | program | enum | | true | HC | 26 | 1 | 1 |
+| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 |
+| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 |
+uint8
| hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 |
-| hc1.roomsensor | room sensor | enum [extern\|intern\|auto] | | true | HC | 203 | 1 | 1 |
-| hc1.holidaymode | holiday mode | enum [nofrost\|eco\|heat\|auto] | | true | HC | 63 | 1 | 1 |
-| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
-| hc1.heatup | heatup | enum [slow\|medium\|fast] | | true | HC | 204 | 1 | 1 |
+| hc1.roomsensor | room sensor | enum | | true | HC | 203 | 1 | 1 |
+| hc1.holidaymode | holiday mode | enum | | true | HC | 63 | 1 | 1 |
+| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
+| hc1.heatup | heatup | enum | | true | HC | 204 | 1 | 1 |
+uint8
| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 |
+uint8
| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 |
+uint8
| hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 |
-| hc1.roominfluence | room influence | enum [off\|intern\|extern\|auto] | | true | HC | 13 | 1 | 1 |
-| hc1.roominflfactor | room influence factor | uint8 (>=0<=100) | % | true | HC | 14 | 1 | 10 |
-| hc1.heatingtype | heating type | enum [off\|heatingcurve\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
-| hc1.controlmode | control mode | enum [off\|unmixed\|unmixed IPM\|mixed IPM] | | true | HC | 25 | 1 | 1 |
-| dhw.charge | charge | boolean | | true | DHW | 6 | 1 | 1 |
+| hc1.roominfluence | room influence | enum | | true | HC | 13 | 1 | 1 |
+uint8
+| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 14 | 1 | 10 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
+| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 |
+| 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 |
-| hybridstrategy | hybrid control strategy | enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] | | true | DEVICE_DATA | 54 | 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 |
+| 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [nofrost\|eco\|heat\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [nofrost\|eco\|heat] | | false | HC | 4 | 1 | 1 |
-| hc1.heattemp | heat temperature | uint8 (>=0<=127) | C | true | HC | 202 | 1 | 1/2 |
-| hc1.ecotemp | eco temperature | uint8 (>=0<=127) | C | true | HC | 5 | 1 | 1/2 |
-| hc1.nofrosttemp | nofrost temperature | int8 (>=-63<=63) | C | true | HC | 17 | 1 | 1/2 |
-| hc1.control | control device | enum [off\|FB10\|FB100] | | true | HC | 41 | 1 | 1 |
-| hc1.program | program | enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] | | true | HC | 26 | 1 | 1 |
-| hc1.remotetemp | room temperature from remote | cmd [] (>=-1<=101) | C | true | HC | 42 | 1 | 1/10 |
-| hc1.targetflowtemp | target flow temperature | uint8 (>=0<=254) | C | false | HC | 18 | 1 | 1 |
+| 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 | 202 | 1 | 1/2 |
+uint8
+| hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 |
+int8
+| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 |
+| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 |
+| hc1.program | program | enum | | true | HC | 26 | 1 | 1 |
+| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 |
+| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 |
+uint8
| hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 |
-| hc1.roomsensor | room sensor | enum [extern\|intern\|auto] | | true | HC | 203 | 1 | 1 |
-| hc1.holidaymode | holiday mode | enum [nofrost\|eco\|heat\|auto] | | true | HC | 63 | 1 | 1 |
-| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
-| hc1.heatup | heatup | enum [slow\|medium\|fast] | | true | HC | 204 | 1 | 1 |
+| hc1.roomsensor | room sensor | enum | | true | HC | 203 | 1 | 1 |
+| hc1.holidaymode | holiday mode | enum | | true | HC | 63 | 1 | 1 |
+| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
+| hc1.heatup | heatup | enum | | true | HC | 204 | 1 | 1 |
+uint8
| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 |
+uint8
| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 |
+uint8
| hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 |
-| hc1.roominfluence | room influence | enum [off\|intern\|extern\|auto] | | true | HC | 13 | 1 | 1 |
-| hc1.roominflfactor | room influence factor | uint8 (>=0<=100) | % | true | HC | 14 | 1 | 10 |
-| hc1.heatingtype | heating type | enum [off\|heatingcurve\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
-| hc1.controlmode | control mode | enum [off\|unmixed\|unmixed IPM\|mixed IPM] | | true | HC | 25 | 1 | 1 |
-| dhw.charge | charge | boolean | | true | DHW | 6 | 1 | 1 |
+| hc1.roominfluence | room influence | enum | | true | HC | 13 | 1 | 1 |
+uint8
+| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 14 | 1 | 10 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
+| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 |
+| 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 |
-| hybridstrategy | hybrid control strategy | enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] | | true | DEVICE_DATA | 54 | 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 |
+| 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [nofrost\|eco\|heat\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [nofrost\|eco\|heat] | | false | HC | 4 | 1 | 1 |
-| hc1.heattemp | heat temperature | uint8 (>=0<=127) | C | true | HC | 202 | 1 | 1/2 |
-| hc1.ecotemp | eco temperature | uint8 (>=0<=127) | C | true | HC | 5 | 1 | 1/2 |
-| hc1.nofrosttemp | nofrost temperature | int8 (>=-63<=63) | C | true | HC | 17 | 1 | 1/2 |
-| hc1.control | control device | enum [off\|FB10\|FB100] | | true | HC | 41 | 1 | 1 |
-| hc1.program | program | enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] | | true | HC | 26 | 1 | 1 |
-| hc1.remotetemp | room temperature from remote | cmd [] (>=-1<=101) | C | true | HC | 42 | 1 | 1/10 |
-| hc1.targetflowtemp | target flow temperature | uint8 (>=0<=254) | C | false | HC | 18 | 1 | 1 |
+| 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 | 202 | 1 | 1/2 |
+uint8
+| hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 |
+int8
+| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 |
+| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 |
+| hc1.program | program | enum | | true | HC | 26 | 1 | 1 |
+| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 |
+| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 |
+uint8
| hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 |
-| hc1.roomsensor | room sensor | enum [extern\|intern\|auto] | | true | HC | 203 | 1 | 1 |
-| hc1.holidaymode | holiday mode | enum [nofrost\|eco\|heat\|auto] | | true | HC | 63 | 1 | 1 |
-| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
-| hc1.heatup | heatup | enum [slow\|medium\|fast] | | true | HC | 204 | 1 | 1 |
+| hc1.roomsensor | room sensor | enum | | true | HC | 203 | 1 | 1 |
+| hc1.holidaymode | holiday mode | enum | | true | HC | 63 | 1 | 1 |
+| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
+| hc1.heatup | heatup | enum | | true | HC | 204 | 1 | 1 |
+uint8
| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 |
+uint8
| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 |
+uint8
| hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 |
-| hc1.roominfluence | room influence | enum [off\|intern\|extern\|auto] | | true | HC | 13 | 1 | 1 |
-| hc1.roominflfactor | room influence factor | uint8 (>=0<=100) | % | true | HC | 14 | 1 | 10 |
-| hc1.heatingtype | heating type | enum [off\|heatingcurve\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
-| hc1.controlmode | control mode | enum [off\|unmixed\|unmixed IPM\|mixed IPM] | | true | HC | 25 | 1 | 1 |
-| dhw.charge | charge | boolean | | true | DHW | 6 | 1 | 1 |
+| hc1.roominfluence | room influence | enum | | true | HC | 13 | 1 | 1 |
+uint8
+| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 14 | 1 | 10 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
+| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 |
+| 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 [dhw temperature\|date\|external temperature] | | true | DEVICE_DATA | 65 | 1 | 1 |
-| language | language | enum [german\|italian\|french\|dutch] | | true | DEVICE_DATA | 66 | 1 | 1 |
-| hybridstrategy | hybrid control strategy | enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] | | true | DEVICE_DATA | 54 | 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 | | true | DEVICE_DATA | 33 | 13 | 1 |
+| display | display | enum | | true | DEVICE_DATA | 65 | 1 | 1 |
+| language | language | enum | | true | DEVICE_DATA | 66 | 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [nofrost\|eco\|heat\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [nofrost\|eco\|heat] | | false | HC | 4 | 1 | 1 |
-| hc1.heattemp | heat temperature | uint8 (>=0<=127) | C | true | HC | 202 | 1 | 1/2 |
-| hc1.ecotemp | eco temperature | uint8 (>=0<=127) | C | true | HC | 5 | 1 | 1/2 |
-| hc1.nofrosttemp | nofrost temperature | int8 (>=-63<=63) | C | true | HC | 17 | 1 | 1/2 |
-| hc1.control | control device | enum [off\|FB10\|FB100] | | true | HC | 41 | 1 | 1 |
-| hc1.program | program | enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] | | true | HC | 26 | 1 | 1 |
-| hc1.remotetemp | room temperature from remote | cmd [] (>=-1<=101) | C | true | HC | 42 | 1 | 1/10 |
-| hc1.targetflowtemp | target flow temperature | uint8 (>=0<=254) | C | false | HC | 18 | 1 | 1 |
+| 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 | 202 | 1 | 1/2 |
+uint8
+| hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 |
+int8
+| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 |
+| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 |
+| hc1.program | program | enum | | true | HC | 26 | 1 | 1 |
+| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 |
+| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 |
+uint8
| hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 |
-| hc1.roomsensor | room sensor | enum [extern\|intern\|auto] | | true | HC | 203 | 1 | 1 |
-| hc1.holidaymode | holiday mode | enum [nofrost\|eco\|heat\|auto] | | true | HC | 63 | 1 | 1 |
-| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
-| hc1.heatup | heatup | enum [slow\|medium\|fast] | | true | HC | 204 | 1 | 1 |
+| hc1.roomsensor | room sensor | enum | | true | HC | 203 | 1 | 1 |
+| hc1.holidaymode | holiday mode | enum | | true | HC | 63 | 1 | 1 |
+| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
+| hc1.heatup | heatup | enum | | true | HC | 204 | 1 | 1 |
+uint8
| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 |
+uint8
| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 |
+uint8
| hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 |
-| hc1.roominfluence | room influence | enum [off\|intern\|extern\|auto] | | true | HC | 13 | 1 | 1 |
-| hc1.roominflfactor | room influence factor | uint8 (>=0<=100) | % | true | HC | 14 | 1 | 10 |
-| hc1.heatingtype | heating type | enum [off\|heatingcurve\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
-| hc1.controlmode | control mode | enum [off\|unmixed\|unmixed IPM\|mixed IPM] | | true | HC | 25 | 1 | 1 |
-| dhw.charge | charge | boolean | | true | DHW | 6 | 1 | 1 |
+| hc1.roominfluence | room influence | enum | | true | HC | 13 | 1 | 1 |
+uint8
+| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 14 | 1 | 10 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
+| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 |
+| 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 [dhw temperature\|date\|external temperature] | | true | DEVICE_DATA | 65 | 1 | 1 |
-| language | language | enum [german\|italian\|french\|dutch] | | true | DEVICE_DATA | 66 | 1 | 1 |
-| hybridstrategy | hybrid control strategy | enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] | | true | DEVICE_DATA | 54 | 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 | | true | DEVICE_DATA | 33 | 13 | 1 |
+| display | display | enum | | true | DEVICE_DATA | 65 | 1 | 1 |
+| language | language | enum | | true | DEVICE_DATA | 66 | 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [nofrost\|eco\|heat\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [nofrost\|eco\|heat] | | false | HC | 4 | 1 | 1 |
-| hc1.heattemp | heat temperature | uint8 (>=0<=127) | C | true | HC | 202 | 1 | 1/2 |
-| hc1.ecotemp | eco temperature | uint8 (>=0<=127) | C | true | HC | 5 | 1 | 1/2 |
-| hc1.nofrosttemp | nofrost temperature | int8 (>=-63<=63) | C | true | HC | 17 | 1 | 1/2 |
-| hc1.control | control device | enum [off\|FB10\|FB100] | | true | HC | 41 | 1 | 1 |
-| hc1.program | program | enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] | | true | HC | 26 | 1 | 1 |
-| hc1.remotetemp | room temperature from remote | cmd [] (>=-1<=101) | C | true | HC | 42 | 1 | 1/10 |
-| hc1.targetflowtemp | target flow temperature | uint8 (>=0<=254) | C | false | HC | 18 | 1 | 1 |
+| 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 | 202 | 1 | 1/2 |
+uint8
+| hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 |
+int8
+| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 |
+| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 |
+| hc1.program | program | enum | | true | HC | 26 | 1 | 1 |
+| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 |
+| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 |
+uint8
| hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 |
-| hc1.roomsensor | room sensor | enum [extern\|intern\|auto] | | true | HC | 203 | 1 | 1 |
-| hc1.holidaymode | holiday mode | enum [nofrost\|eco\|heat\|auto] | | true | HC | 63 | 1 | 1 |
-| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
-| hc1.heatup | heatup | enum [slow\|medium\|fast] | | true | HC | 204 | 1 | 1 |
+| hc1.roomsensor | room sensor | enum | | true | HC | 203 | 1 | 1 |
+| hc1.holidaymode | holiday mode | enum | | true | HC | 63 | 1 | 1 |
+| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
+| hc1.heatup | heatup | enum | | true | HC | 204 | 1 | 1 |
+uint8
| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 |
+uint8
| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 |
+uint8
| hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 |
-| hc1.roominfluence | room influence | enum [off\|intern\|extern\|auto] | | true | HC | 13 | 1 | 1 |
-| hc1.roominflfactor | room influence factor | uint8 (>=0<=100) | % | true | HC | 14 | 1 | 10 |
-| hc1.heatingtype | heating type | enum [off\|heatingcurve\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
-| hc1.controlmode | control mode | enum [off\|unmixed\|unmixed IPM\|mixed IPM] | | true | HC | 25 | 1 | 1 |
-| dhw.charge | charge | boolean | | true | DHW | 6 | 1 | 1 |
+| hc1.roominfluence | room influence | enum | | true | HC | 13 | 1 | 1 |
+uint8
+| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 14 | 1 | 10 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
+| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 |
+| 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 |
-| hybridstrategy | hybrid control strategy | enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] | | true | DEVICE_DATA | 54 | 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 |
+| 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [nofrost\|eco\|heat\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [nofrost\|eco\|heat] | | false | HC | 4 | 1 | 1 |
-| hc1.heattemp | heat temperature | uint8 (>=0<=127) | C | true | HC | 202 | 1 | 1/2 |
-| hc1.ecotemp | eco temperature | uint8 (>=0<=127) | C | true | HC | 5 | 1 | 1/2 |
-| hc1.nofrosttemp | nofrost temperature | int8 (>=-63<=63) | C | true | HC | 17 | 1 | 1/2 |
-| hc1.control | control device | enum [off\|FB10\|FB100] | | true | HC | 41 | 1 | 1 |
-| hc1.program | program | enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] | | true | HC | 26 | 1 | 1 |
-| hc1.remotetemp | room temperature from remote | cmd [] (>=-1<=101) | C | true | HC | 42 | 1 | 1/10 |
-| hc1.targetflowtemp | target flow temperature | uint8 (>=0<=254) | C | false | HC | 18 | 1 | 1 |
+| 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 | 202 | 1 | 1/2 |
+uint8
+| hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 |
+int8
+| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 |
+| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 |
+| hc1.program | program | enum | | true | HC | 26 | 1 | 1 |
+| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 |
+| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 |
+uint8
| hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 |
-| hc1.roomsensor | room sensor | enum [extern\|intern\|auto] | | true | HC | 203 | 1 | 1 |
-| hc1.holidaymode | holiday mode | enum [nofrost\|eco\|heat\|auto] | | true | HC | 63 | 1 | 1 |
-| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
-| hc1.heatup | heatup | enum [slow\|medium\|fast] | | true | HC | 204 | 1 | 1 |
+| hc1.roomsensor | room sensor | enum | | true | HC | 203 | 1 | 1 |
+| hc1.holidaymode | holiday mode | enum | | true | HC | 63 | 1 | 1 |
+| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
+| hc1.heatup | heatup | enum | | true | HC | 204 | 1 | 1 |
+uint8
| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 |
+uint8
| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 |
+uint8
| hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 |
-| hc1.roominfluence | room influence | enum [off\|intern\|extern\|auto] | | true | HC | 13 | 1 | 1 |
-| hc1.roominflfactor | room influence factor | uint8 (>=0<=100) | % | true | HC | 14 | 1 | 10 |
-| hc1.heatingtype | heating type | enum [off\|heatingcurve\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
-| hc1.controlmode | control mode | enum [off\|unmixed\|unmixed IPM\|mixed IPM] | | true | HC | 25 | 1 | 1 |
-| dhw.charge | charge | boolean | | true | DHW | 6 | 1 | 1 |
+| hc1.roominfluence | room influence | enum | | true | HC | 13 | 1 | 1 |
+uint8
+| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 14 | 1 | 10 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
+| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 |
+| 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 [dhw temperature\|date\|external temperature] | | true | DEVICE_DATA | 65 | 1 | 1 |
-| language | language | enum [german\|italian\|french\|dutch] | | true | DEVICE_DATA | 66 | 1 | 1 |
-| hybridstrategy | hybrid control strategy | enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] | | true | DEVICE_DATA | 54 | 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 | | true | DEVICE_DATA | 33 | 13 | 1 |
+| display | display | enum | | true | DEVICE_DATA | 65 | 1 | 1 |
+| language | language | enum | | true | DEVICE_DATA | 66 | 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [nofrost\|eco\|heat\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [nofrost\|eco\|heat] | | false | HC | 4 | 1 | 1 |
-| hc1.heattemp | heat temperature | uint8 (>=0<=127) | C | true | HC | 202 | 1 | 1/2 |
-| hc1.ecotemp | eco temperature | uint8 (>=0<=127) | C | true | HC | 5 | 1 | 1/2 |
-| hc1.nofrosttemp | nofrost temperature | int8 (>=-63<=63) | C | true | HC | 17 | 1 | 1/2 |
-| hc1.control | control device | enum [off\|FB10\|FB100] | | true | HC | 41 | 1 | 1 |
-| hc1.program | program | enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] | | true | HC | 26 | 1 | 1 |
-| hc1.remotetemp | room temperature from remote | cmd [] (>=-1<=101) | C | true | HC | 42 | 1 | 1/10 |
-| hc1.targetflowtemp | target flow temperature | uint8 (>=0<=254) | C | false | HC | 18 | 1 | 1 |
+| 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 | 202 | 1 | 1/2 |
+uint8
+| hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 |
+int8
+| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 |
+| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 |
+| hc1.program | program | enum | | true | HC | 26 | 1 | 1 |
+| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 |
+| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 |
+uint8
| hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 |
-| hc1.roomsensor | room sensor | enum [extern\|intern\|auto] | | true | HC | 203 | 1 | 1 |
-| hc1.holidaymode | holiday mode | enum [nofrost\|eco\|heat\|auto] | | true | HC | 63 | 1 | 1 |
-| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
-| hc1.heatup | heatup | enum [slow\|medium\|fast] | | true | HC | 204 | 1 | 1 |
+| hc1.roomsensor | room sensor | enum | | true | HC | 203 | 1 | 1 |
+| hc1.holidaymode | holiday mode | enum | | true | HC | 63 | 1 | 1 |
+| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
+| hc1.heatup | heatup | enum | | true | HC | 204 | 1 | 1 |
+uint8
| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 |
+uint8
| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 |
+uint8
| hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 |
-| hc1.roominfluence | room influence | enum [off\|intern\|extern\|auto] | | true | HC | 13 | 1 | 1 |
-| hc1.roominflfactor | room influence factor | uint8 (>=0<=100) | % | true | HC | 14 | 1 | 10 |
-| hc1.heatingtype | heating type | enum [off\|heatingcurve\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
-| hc1.controlmode | control mode | enum [off\|unmixed\|unmixed IPM\|mixed IPM] | | true | HC | 25 | 1 | 1 |
-| dhw.charge | charge | boolean | | true | DHW | 6 | 1 | 1 |
+| hc1.roominfluence | room influence | enum | | true | HC | 13 | 1 | 1 |
+uint8
+| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 14 | 1 | 10 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
+| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 |
+| 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 |
-| hybridstrategy | hybrid control strategy | enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] | | true | DEVICE_DATA | 54 | 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 |
+| 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [nofrost\|eco\|heat\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [nofrost\|eco\|heat] | | false | HC | 4 | 1 | 1 |
-| hc1.heattemp | heat temperature | uint8 (>=0<=127) | C | true | HC | 202 | 1 | 1/2 |
-| hc1.ecotemp | eco temperature | uint8 (>=0<=127) | C | true | HC | 5 | 1 | 1/2 |
-| hc1.nofrosttemp | nofrost temperature | int8 (>=-63<=63) | C | true | HC | 17 | 1 | 1/2 |
-| hc1.control | control device | enum [off\|FB10\|FB100] | | true | HC | 41 | 1 | 1 |
-| hc1.program | program | enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] | | true | HC | 26 | 1 | 1 |
-| hc1.remotetemp | room temperature from remote | cmd [] (>=-1<=101) | C | true | HC | 42 | 1 | 1/10 |
-| hc1.targetflowtemp | target flow temperature | uint8 (>=0<=254) | C | false | HC | 18 | 1 | 1 |
+| 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 | 202 | 1 | 1/2 |
+uint8
+| hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 |
+int8
+| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 |
+| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 |
+| hc1.program | program | enum | | true | HC | 26 | 1 | 1 |
+| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 |
+| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 |
+uint8
| hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 |
-| hc1.roomsensor | room sensor | enum [extern\|intern\|auto] | | true | HC | 203 | 1 | 1 |
-| hc1.holidaymode | holiday mode | enum [nofrost\|eco\|heat\|auto] | | true | HC | 63 | 1 | 1 |
-| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
-| hc1.heatup | heatup | enum [slow\|medium\|fast] | | true | HC | 204 | 1 | 1 |
+| hc1.roomsensor | room sensor | enum | | true | HC | 203 | 1 | 1 |
+| hc1.holidaymode | holiday mode | enum | | true | HC | 63 | 1 | 1 |
+| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
+| hc1.heatup | heatup | enum | | true | HC | 204 | 1 | 1 |
+uint8
| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 |
+uint8
| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 |
+uint8
| hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 |
-| hc1.roominfluence | room influence | enum [off\|intern\|extern\|auto] | | true | HC | 13 | 1 | 1 |
-| hc1.roominflfactor | room influence factor | uint8 (>=0<=100) | % | true | HC | 14 | 1 | 10 |
-| hc1.heatingtype | heating type | enum [off\|heatingcurve\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
-| hc1.controlmode | control mode | enum [off\|unmixed\|unmixed IPM\|mixed IPM] | | true | HC | 25 | 1 | 1 |
-| dhw.charge | charge | boolean | | true | DHW | 6 | 1 | 1 |
+| hc1.roominfluence | room influence | enum | | true | HC | 13 | 1 | 1 |
+uint8
+| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 14 | 1 | 10 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
+| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 |
+| 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 |
-| hybridstrategy | hybrid control strategy | enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] | | true | DEVICE_DATA | 54 | 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 |
+| 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [nofrost\|eco\|heat\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [nofrost\|eco\|heat] | | false | HC | 4 | 1 | 1 |
-| hc1.heattemp | heat temperature | uint8 (>=0<=127) | C | true | HC | 202 | 1 | 1/2 |
-| hc1.ecotemp | eco temperature | uint8 (>=0<=127) | C | true | HC | 5 | 1 | 1/2 |
-| hc1.nofrosttemp | nofrost temperature | int8 (>=-63<=63) | C | true | HC | 17 | 1 | 1/2 |
-| hc1.control | control device | enum [off\|FB10\|FB100] | | true | HC | 41 | 1 | 1 |
-| hc1.program | program | enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] | | true | HC | 26 | 1 | 1 |
-| hc1.remotetemp | room temperature from remote | cmd [] (>=-1<=101) | C | true | HC | 42 | 1 | 1/10 |
-| hc1.targetflowtemp | target flow temperature | uint8 (>=0<=254) | C | false | HC | 18 | 1 | 1 |
+| 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 | 202 | 1 | 1/2 |
+uint8
+| hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 |
+int8
+| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 |
+| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 |
+| hc1.program | program | enum | | true | HC | 26 | 1 | 1 |
+| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 |
+| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 |
+uint8
| hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 |
-| hc1.roomsensor | room sensor | enum [extern\|intern\|auto] | | true | HC | 203 | 1 | 1 |
-| hc1.holidaymode | holiday mode | enum [nofrost\|eco\|heat\|auto] | | true | HC | 63 | 1 | 1 |
-| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
-| hc1.heatup | heatup | enum [slow\|medium\|fast] | | true | HC | 204 | 1 | 1 |
+| hc1.roomsensor | room sensor | enum | | true | HC | 203 | 1 | 1 |
+| hc1.holidaymode | holiday mode | enum | | true | HC | 63 | 1 | 1 |
+| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
+| hc1.heatup | heatup | enum | | true | HC | 204 | 1 | 1 |
+uint8
| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 |
+uint8
| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 |
+uint8
| hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 |
-| hc1.roominfluence | room influence | enum [off\|intern\|extern\|auto] | | true | HC | 13 | 1 | 1 |
-| hc1.roominflfactor | room influence factor | uint8 (>=0<=100) | % | true | HC | 14 | 1 | 10 |
-| hc1.heatingtype | heating type | enum [off\|heatingcurve\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
-| hc1.controlmode | control mode | enum [off\|unmixed\|unmixed IPM\|mixed IPM] | | true | HC | 25 | 1 | 1 |
-| dhw.charge | charge | boolean | | true | DHW | 6 | 1 | 1 |
+| hc1.roominfluence | room influence | enum | | true | HC | 13 | 1 | 1 |
+uint8
+| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 14 | 1 | 10 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
+| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 |
+| 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 [dhw temperature\|date\|external temperature] | | true | DEVICE_DATA | 65 | 1 | 1 |
-| language | language | enum [german\|italian\|french\|dutch] | | true | DEVICE_DATA | 66 | 1 | 1 |
-| hybridstrategy | hybrid control strategy | enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] | | true | DEVICE_DATA | 54 | 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 | | true | DEVICE_DATA | 33 | 13 | 1 |
+| display | display | enum | | true | DEVICE_DATA | 65 | 1 | 1 |
+| language | language | enum | | true | DEVICE_DATA | 66 | 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
-| hc1.mode | operating mode | enum [nofrost\|eco\|heat\|auto] | | true | HC | 3 | 1 | 1 |
-| hc1.modetype | mode type | enum [nofrost\|eco\|heat] | | false | HC | 4 | 1 | 1 |
-| hc1.heattemp | heat temperature | uint8 (>=0<=127) | C | true | HC | 202 | 1 | 1/2 |
-| hc1.ecotemp | eco temperature | uint8 (>=0<=127) | C | true | HC | 5 | 1 | 1/2 |
-| hc1.nofrosttemp | nofrost temperature | int8 (>=-63<=63) | C | true | HC | 17 | 1 | 1/2 |
-| hc1.control | control device | enum [off\|FB10\|FB100] | | true | HC | 41 | 1 | 1 |
-| hc1.program | program | enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] | | true | HC | 26 | 1 | 1 |
-| hc1.remotetemp | room temperature from remote | cmd [] (>=-1<=101) | C | true | HC | 42 | 1 | 1/10 |
-| hc1.targetflowtemp | target flow temperature | uint8 (>=0<=254) | C | false | HC | 18 | 1 | 1 |
+| 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 | 202 | 1 | 1/2 |
+uint8
+| hc1.ecotemp | eco temperature | uint8 (>=0<=0) | C | true | HC | 5 | 1 | 1/2 |
+int8
+| hc1.nofrosttemp | nofrost temperature | int8 (>=0<=0) | C | true | HC | 17 | 1 | 1/2 |
+| hc1.control | control device | enum | | true | HC | 41 | 1 | 1 |
+| hc1.program | program | enum | | true | HC | 26 | 1 | 1 |
+| hc1.remotetemp | room temperature from remote | cmd | C | true | HC | 42 | 1 | 1/10 |
+| hc1.targetflowtemp | target flow temperature | uint8 | C | false | HC | 18 | 1 | 1 |
+uint8
| hc1.summertemp | summer temperature | uint8 (>=9<=25) | C | true | HC | 8 | 1 | 1/2 |
-| hc1.roomsensor | room sensor | enum [extern\|intern\|auto] | | true | HC | 203 | 1 | 1 |
-| hc1.holidaymode | holiday mode | enum [nofrost\|eco\|heat\|auto] | | true | HC | 63 | 1 | 1 |
-| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
-| hc1.heatup | heatup | enum [slow\|medium\|fast] | | true | HC | 204 | 1 | 1 |
+| hc1.roomsensor | room sensor | enum | | true | HC | 203 | 1 | 1 |
+| hc1.holidaymode | holiday mode | enum | | true | HC | 63 | 1 | 1 |
+| hc1.switchonoptimization | switch-on optimization | boolean | | true | HC | 30 | 1 | 1 |
+| hc1.heatup | heatup | enum | | true | HC | 204 | 1 | 1 |
+uint8
| hc1.minflowtemp | min flow temperature | uint8 (>=5<=70) | C | true | HC | 11 | 1 | 1 |
+uint8
| hc1.maxflowtemp | max flow temperature | uint8 (>=30<=90) | C | true | HC | 12 | 1 | 1 |
+uint8
| hc1.designtemp | design temperature | uint8 (>=30<=90) | C | true | HC | 9 | 1 | 1 |
-| hc1.roominfluence | room influence | enum [off\|intern\|extern\|auto] | | true | HC | 13 | 1 | 1 |
-| hc1.roominflfactor | room influence factor | uint8 (>=0<=100) | % | true | HC | 14 | 1 | 10 |
-| hc1.heatingtype | heating type | enum [off\|heatingcurve\|radiator\|convector\|floor] | | true | HC | 19 | 1 | 1 |
-| hc1.controlmode | control mode | enum [off\|unmixed\|unmixed IPM\|mixed IPM] | | true | HC | 25 | 1 | 1 |
-| dhw.charge | charge | boolean | | true | DHW | 6 | 1 | 1 |
+| hc1.roominfluence | room influence | enum | | true | HC | 13 | 1 | 1 |
+uint8
+| hc1.roominflfactor | room influence factor | uint8 (>=0<=0) | % | true | HC | 14 | 1 | 10 |
+| hc1.heatingtype | heating type | enum | | true | HC | 19 | 1 | 1 |
+| hc1.controlmode | control mode | enum | | true | HC | 25 | 1 | 1 |
+| 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 |
+| 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
+| 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 |
+| 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
+| 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 |
+| 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 (>=-3199<=3199) | C | false | HC | 1 | 1 | 1/10 |
-| hc1.haclimate | mqtt discovery current room temperature | enum [selTemp\|roomTemp] (>=5<=30) | | false | HC | 2 | 1 | 1 |
+| 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
@@ -5655,122 +7290,150 @@ This file has been auto-generated. Do not modify.
| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor |
|-|-|-|-|-|-|-|-|-|
-| hc1.flowtemphc | flow temperature (TC1) | uint16 (>=0<=3199) | C | false | HC | 0 | 1 | 1/10 |
-| hc1.valvestatus | mixing valve actuator (VC1) | uint8 (>=0<=100) | % | false | HC | 1 | 1 | 1 |
-| hc1.flowsettemp | setpoint flow temperature | uint8 (>=0<=254) | 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 (>=0<=31999) | l/h | false | HC | 5 | 1 | 1 |
-| hc1.setdiffpress | set differential pressure | uint8 (>=0<=12700) | mbar | true | HC | 6 | 1 | 50 |
+| 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 |
+| 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 (>=0<=3199) | C | false | HC | 0 | 1 | 1/10 |
-| hc1.valvestatus | mixing valve actuator (VC1) | int8 (>=-100<=100) | % | false | HC | 1 | 1 | 1 |
-| hc1.flowsettemp | setpoint flow temperature | uint8 (>=0<=254) | 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.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 (>=0<=3199) | C | false | HC | 0 | 1 | 1/10 |
-| hc1.valvestatus | mixing valve actuator (VC1) | uint8 (>=0<=100) | % | false | HC | 1 | 1 | 1 |
-| hc1.flowsettemp | setpoint flow temperature | uint8 (>=0<=254) | 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 (>=0<=3199) | C | false | HC | 10 | 1 | 1/10 |
+| 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 (>=0<=3199) | C | false | HC | 0 | 1 | 1/10 |
-| hc1.valvestatus | mixing valve actuator (VC1) | uint8 (>=0<=100) | % | false | HC | 1 | 1 | 1 |
-| hc1.flowsettemp | setpoint flow temperature | uint8 (>=0<=254) | 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 (>=0<=3199) | C | false | HC | 10 | 1 | 1/10 |
+| 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 (>=0<=3199) | C | false | HC | 0 | 1 | 1/10 |
-| hc1.valvestatus | mixing valve actuator (VC1) | uint8 (>=0<=100) | % | false | HC | 1 | 1 | 1 |
-| hc1.flowsettemp | setpoint flow temperature | uint8 (>=0<=254) | 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 (>=0<=31999) | l/h | false | HC | 5 | 1 | 1 |
-| hc1.setdiffpress | set differential pressure | uint8 (>=0<=12700) | mbar | true | HC | 6 | 1 | 50 |
+| 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 |
+| 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 (>=0<=3199) | C | false | HC | 0 | 1 | 1/10 |
-| hc1.valvestatus | mixing valve actuator (VC1) | uint8 (>=0<=100) | % | false | HC | 1 | 1 | 1 |
-| hc1.flowsettemp | setpoint flow temperature | uint8 (>=0<=254) | 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 (>=0<=31999) | l/h | false | HC | 5 | 1 | 1 |
-| hc1.setdiffpress | set differential pressure | uint8 (>=0<=12700) | mbar | true | HC | 6 | 1 | 50 |
+| 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 |
+| 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 (>=0<=3199) | C | false | HC | 0 | 1 | 1/10 |
-| hc1.valvestatus | mixing valve actuator (VC1) | uint8 (>=0<=100) | % | false | HC | 1 | 1 | 1 |
-| hc1.flowsettemp | setpoint flow temperature | uint8 (>=0<=254) | 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 (>=0<=31999) | l/h | false | HC | 5 | 1 | 1 |
-| hc1.setdiffpress | set differential pressure | uint8 (>=0<=12700) | mbar | true | HC | 6 | 1 | 50 |
+| 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 |
+| 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 (>=0<=3199) | C | false | HC | 0 | 1 | 1/10 |
-| hc1.valvestatus | mixing valve actuator (VC1) | uint8 (>=0<=100) | % | false | HC | 1 | 1 | 1 |
-| hc1.flowsettemp | setpoint flow temperature | uint8 (>=0<=254) | 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 (>=0<=31999) | l/h | false | HC | 5 | 1 | 1 |
-| hc1.setdiffpress | set differential pressure | uint8 (>=0<=12700) | mbar | true | HC | 6 | 1 | 50 |
+| 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 |
+| 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 (>=0<=3199) | C | false | HC | 0 | 1 | 1/10 |
-| hc1.valvestatus | mixing valve actuator (VC1) | uint8 (>=0<=100) | % | false | HC | 1 | 1 | 1 |
-| hc1.flowsettemp | setpoint flow temperature | uint8 (>=0<=254) | 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 (>=0<=31999) | l/h | false | HC | 5 | 1 | 1 |
-| hc1.setdiffpress | set differential pressure | uint8 (>=0<=12700) | mbar | true | HC | 6 | 1 | 50 |
+| 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 |
+| hc1.dhwprio | dhw priority | boolean | | true | HC | 9 | 1 | 1 |
## Devices of type \_solar
@@ -5778,258 +7441,308 @@ This file has been auto-generated. Do not modify.
| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor |
|-|-|-|-|-|-|-|-|-|
-| collectortemp | collector temperature (TS1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 0 | 1 | 1/10 |
-| cylbottomtemp | cylinder bottom temperature (TS2) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 1 | 1 | 1/10 |
-| solarpump | pump (PS1) | boolean | | false | DEVICE_DATA | 2 | 1 | 1 |
-| pumpworktime | pump working time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 3 | 2 | 1 |
-| cylmaxtemp | maximum cylinder temperature | uint8 (>=0<=254) | 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 (>=0<=100) | % | false | DEVICE_DATA | 8 | 1 | 1 |
-| pumpminmod | minimum pump modulation | uint8 (>=0<=100) | % | true | DEVICE_DATA | 9 | 1 | 1 |
-| turnondiff | pump turn on difference | uint8 (>=0<=254) | C | true | DEVICE_DATA | 10 | 1 | 1 |
-| turnoffdiff | pump turn off difference | uint8 (>=0<=254) | C | true | DEVICE_DATA | 11 | 1 | 1 |
-| solarpower | actual solar power | int16 (>=-31999<=31999) | W | false | DEVICE_DATA | 12 | 1 | 1 |
-| energylasthour | energy last hour | uint24 (>=0<=1677721) | Wh | false | DEVICE_DATA | 13 | 2 | 1/10 |
-| maxflow | maximum solar flow | uint8 (>=0<=25) | l/min | true | DEVICE_DATA | 15 | 1 | 1/10 |
-| dhw.mintemp | minimum temperature | uint8 (>=0<=254) | C | true | DHW | 0 | 1 | 1 |
-| solarenabled | solarmodule enabled | boolean | | true | DEVICE_DATA | 16 | 1 | 1 |
+| 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 (>=-3199<=3199) | C | false | DEVICE_DATA | 0 | 1 | 1/10 |
-| cylbottomtemp | cylinder bottom temperature (TS2) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 1 | 1 | 1/10 |
-| solarpump | pump (PS1) | boolean | | false | DEVICE_DATA | 2 | 1 | 1 |
-| pumpworktime | pump working time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 3 | 2 | 1 |
-| cylmaxtemp | maximum cylinder temperature | uint8 (>=0<=254) | 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 (TS3) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 17 | 1 | 1/10 |
-| retheatassist | return temperature heat assistance (TS4) | int16 (>=-3199<=3199) | 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 (>=0<=1677721) | Wh | false | DEVICE_DATA | 13 | 2 | 1/10 |
+| 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 (TS3) | 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 (>=-3199<=3199) | C | false | DEVICE_DATA | 0 | 1 | 1/10 |
-| cylbottomtemp | cylinder bottom temperature (TS2) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 1 | 1 | 1/10 |
-| solarpump | pump (PS1) | boolean | | false | DEVICE_DATA | 2 | 1 | 1 |
-| pumpworktime | pump working time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 3 | 2 | 1 |
-| cylmaxtemp | maximum cylinder temperature | uint8 (>=0<=254) | 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 (TS3) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 17 | 1 | 1/10 |
-| retheatassist | return temperature heat assistance (TS4) | int16 (>=-3199<=3199) | 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 (>=0<=1677721) | Wh | false | DEVICE_DATA | 13 | 2 | 1/10 |
+| 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 (TS3) | 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 (>=-3199<=3199) | C | false | DEVICE_DATA | 0 | 1 | 1/10 |
-| cylbottomtemp | cylinder bottom temperature (TS2) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 1 | 1 | 1/10 |
-| solarpump | pump (PS1) | boolean | | false | DEVICE_DATA | 2 | 1 | 1 |
-| pumpworktime | pump working time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 3 | 2 | 1 |
-| cylmaxtemp | maximum cylinder temperature | uint8 (>=0<=254) | 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 (>=0<=100) | % | false | DEVICE_DATA | 8 | 1 | 1 |
-| pumpminmod | minimum pump modulation | uint8 (>=0<=100) | % | true | DEVICE_DATA | 9 | 1 | 5 |
-| turnondiff | pump turn on difference | uint8 (>=0<=25) | C | true | DEVICE_DATA | 10 | 1 | 1/10 |
-| turnoffdiff | pump turn off difference | uint8 (>=0<=25) | C | true | DEVICE_DATA | 11 | 1 | 1/10 |
-| collector2temp | collector 2 temperature (TS7) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 20 | 1 | 1/10 |
-| cylmiddletemp | cylinder middle temperature (TS3) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 17 | 1 | 1/10 |
-| retheatassist | return temperature heat assistance (TS4) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 18 | 1 | 1/10 |
-| ts8 | (TS8) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 21 | 1 | 1/10 |
-| ts16 | (TS16) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 22 | 1 | 1/10 |
-| heatassistvalve | heat assistance valve (M1) | boolean | | false | DEVICE_DATA | 19 | 1 | 1 |
-| heatassistpower | heat assistance valve power (M1) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 23 | 1 | 1 |
-| solarpump2 | pump 2 (PS4) | boolean | | false | DEVICE_DATA | 24 | 1 | 1 |
-| solarpump2mod | pump 2 modulation (PS4) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 25 | 1 | 1 |
-| cyl2bottomtemp | second cylinder bottom temperature (TS5) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 26 | 1 | 1/10 |
-| cyl3bottomtemp | third cylinder bottom temperature (TS11) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 27 | 1 | 1/10 |
-| cyltoptemp | cylinder top temperature (TS10) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 28 | 1 | 1/10 |
-| heatexchangertemp | heat exchanger temperature (TS6) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 29 | 1 | 1/10 |
-| cylpumpmod | cylinder pump modulation (PS5) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 30 | 1 | 1 |
-| valvestatus | valve status | boolean | | false | DEVICE_DATA | 31 | 1 | 1 |
-| vs1status | valve status VS1 | boolean | | false | DEVICE_DATA | 32 | 1 | 1 |
-| vs3status | valve status VS3 | boolean | | false | DEVICE_DATA | 33 | 1 | 1 |
-| transferpump | transfer pump | boolean | | false | DEVICE_DATA | 34 | 1 | 1 |
-| transferpumpmod | transfer pump modulation | uint8 (>=0<=100) | % | false | DEVICE_DATA | 35 | 1 | 1 |
-| collectormaxtemp | maximum collector temperature | uint8 (>=0<=254) | C | true | DEVICE_DATA | 36 | 1 | 1 |
-| collectormintemp | minimum collector temperature | uint8 (>=0<=254) | C | true | DEVICE_DATA | 37 | 1 | 1 |
-| energylasthour | energy last hour | uint24 (>=0<=1677721) | Wh | false | DEVICE_DATA | 13 | 2 | 1/10 |
-| energytoday | total energy today | uint24 (>=0<=16777214) | Wh | false | DEVICE_DATA | 38 | 2 | 1 |
-| energytotal | total energy | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 40 | 2 | 1/10 |
-| pump2worktime | pump 2 working time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 42 | 2 | 1 |
-| m1worktime | differential control working time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 44 | 2 | 1 |
-| heattransfersystem | heattransfer system | boolean | | true | DEVICE_DATA | 46 | 1 | 1 |
-| externalcyl | external cylinder | boolean | | true | DEVICE_DATA | 47 | 1 | 1 |
-| thermaldisinfect | thermal disinfection | boolean | | true | DEVICE_DATA | 48 | 1 | 1 |
-| heatmetering | heatmetering | boolean | | true | DEVICE_DATA | 49 | 1 | 1 |
-| activated | activated | boolean | | true | DEVICE_DATA | 50 | 1 | 1 |
-| solarpumpmode | solar pump mode | enum [constant\|pwm\|analog] | | true | DEVICE_DATA | 51 | 1 | 1 |
-| solarpumpkick | solar pump kick | boolean | | true | DEVICE_DATA | 52 | 1 | 1 |
-| plainwatermode | plain water mode | boolean | | true | DEVICE_DATA | 53 | 1 | 1 |
-| doublematchflow | doublematchflow | boolean | | true | DEVICE_DATA | 54 | 1 | 1 |
-| pump2minmod | minimum pump 2 modulation | uint8 (>=0<=100) | % | true | DEVICE_DATA | 55 | 1 | 1 |
-| turnondiff2 | pump 2 turn on difference | uint8 (>=0<=25) | C | true | DEVICE_DATA | 56 | 1 | 1/10 |
-| turnoffdiff2 | pump 2 turn off difference | uint8 (>=0<=25) | C | true | DEVICE_DATA | 57 | 1 | 1/10 |
-| pump2kick | pump kick 2 | boolean | | true | DEVICE_DATA | 58 | 1 | 1 |
-| climatezone | climate zone | uint8 (>=0<=254) | | true | DEVICE_DATA | 59 | 1 | 1 |
-| collector1area | collector 1 area | uint16 (>=0<=3199) | m² | true | DEVICE_DATA | 60 | 1 | 1/10 |
-| collector1type | collector 1 type | enum [flat\|vacuum] | | true | DEVICE_DATA | 61 | 1 | 1 |
-| collector2area | collector 2 area | uint16 (>=0<=3199) | m² | true | DEVICE_DATA | 62 | 1 | 1/10 |
-| collector2type | collector 2 type | enum [flat\|vacuum] | | true | DEVICE_DATA | 63 | 1 | 1 |
-| cylpriority | cylinder priority | enum [cyl 1\|cyl 2] | | true | DEVICE_DATA | 64 | 1 | 1 |
-| heatcntflowtemp | heat counter flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 65 | 1 | 1/10 |
-| heatcntrettemp | heat counter return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 66 | 1 | 1/10 |
-| heatcnt | heat counter impulses | uint8 (>=0<=254) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| swapflowtemp | swap flow temperature (TS14) | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 68 | 1 | 1/10 |
-| swaprettemp | swap return temperature (TS15) | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 69 | 1 | 1/10 |
-| heatassiston | heat assistance on | int8 (>=-12<=12) | K | true | DEVICE_DATA | 70 | 1 | 1/10 |
-| heatassistoff | heat assistance off | int8 (>=-12<=12) | K | true | DEVICE_DATA | 71 | 1 | 1/10 |
+| 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 (TS3) | int16 | C | false | DEVICE_DATA | 17 | 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 | 21 | 1 | 1/10 |
+| ts16 | (TS16) | int16 | C | false | DEVICE_DATA | 22 | 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 | 23 | 1 | 1 |
+| solarpump2 | pump 2 (PS4) | boolean | | false | DEVICE_DATA | 24 | 1 | 1 |
+| solarpump2mod | pump 2 modulation (PS4) | uint8 | % | false | DEVICE_DATA | 25 | 1 | 1 |
+| cyl2bottomtemp | second cylinder bottom temperature (TS5) | int16 | C | false | DEVICE_DATA | 26 | 1 | 1/10 |
+| cyl3bottomtemp | third cylinder bottom temperature (TS11) | int16 | C | false | DEVICE_DATA | 27 | 1 | 1/10 |
+| cyltoptemp | cylinder top temperature (TS10) | int16 | C | false | DEVICE_DATA | 28 | 1 | 1/10 |
+| heatexchangertemp | heat exchanger temperature (TS6) | int16 | C | false | DEVICE_DATA | 29 | 1 | 1/10 |
+| cylpumpmod | cylinder pump modulation (PS5) | uint8 | % | false | DEVICE_DATA | 30 | 1 | 1 |
+| valvestatus | valve status | boolean | | false | DEVICE_DATA | 31 | 1 | 1 |
+| vs1status | valve status VS1 | boolean | | false | DEVICE_DATA | 32 | 1 | 1 |
+| vs3status | valve status VS3 | boolean | | false | DEVICE_DATA | 33 | 1 | 1 |
+| transferpump | transfer pump | boolean | | false | DEVICE_DATA | 34 | 1 | 1 |
+| transferpumpmod | transfer pump modulation | uint8 | % | false | DEVICE_DATA | 35 | 1 | 1 |
+uint8
+| collectormaxtemp | maximum collector temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 36 | 1 | 1 |
+uint8
+| collectormintemp | minimum collector temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 37 | 1 | 1 |
+| energylasthour | energy last hour | uint24 | Wh | false | DEVICE_DATA | 13 | 2 | 1/10 |
+| energytoday | total energy today | uint24 | Wh | false | DEVICE_DATA | 38 | 2 | 1 |
+| energytotal | total energy | uint24 | kWh | false | DEVICE_DATA | 40 | 2 | 1/10 |
+| pump2worktime | pump 2 working time | time | minutes | false | DEVICE_DATA | 42 | 2 | 1 |
+| m1worktime | differential control working time | time | minutes | false | DEVICE_DATA | 44 | 2 | 1 |
+| heattransfersystem | heattransfer system | boolean | | true | DEVICE_DATA | 46 | 1 | 1 |
+| externalcyl | external cylinder | boolean | | true | DEVICE_DATA | 47 | 1 | 1 |
+| thermaldisinfect | thermal disinfection | boolean | | true | DEVICE_DATA | 48 | 1 | 1 |
+| heatmetering | heatmetering | boolean | | true | DEVICE_DATA | 49 | 1 | 1 |
+| activated | activated | boolean | | true | DEVICE_DATA | 50 | 1 | 1 |
+| solarpumpmode | solar pump mode | enum | | true | DEVICE_DATA | 51 | 1 | 1 |
+| solarpumpkick | solar pump kick | boolean | | true | DEVICE_DATA | 52 | 1 | 1 |
+| plainwatermode | plain water mode | boolean | | true | DEVICE_DATA | 53 | 1 | 1 |
+| doublematchflow | doublematchflow | boolean | | true | DEVICE_DATA | 54 | 1 | 1 |
+uint8
+| pump2minmod | minimum pump 2 modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 55 | 1 | 1 |
+uint8
+| turnondiff2 | pump 2 turn on difference | uint8 (>=0<=0) | C | true | DEVICE_DATA | 56 | 1 | 1/10 |
+uint8
+| turnoffdiff2 | pump 2 turn off difference | uint8 (>=0<=0) | C | true | DEVICE_DATA | 57 | 1 | 1/10 |
+| pump2kick | pump kick 2 | boolean | | true | DEVICE_DATA | 58 | 1 | 1 |
+uint8
+| climatezone | climate zone | uint8 (>=0<=0) | | true | DEVICE_DATA | 59 | 1 | 1 |
+uint16
+| collector1area | collector 1 area | uint16 (>=0<=0) | m² | true | DEVICE_DATA | 60 | 1 | 1/10 |
+| collector1type | collector 1 type | enum | | true | DEVICE_DATA | 61 | 1 | 1 |
+uint16
+| collector2area | collector 2 area | uint16 (>=0<=0) | m² | true | DEVICE_DATA | 62 | 1 | 1/10 |
+| collector2type | collector 2 type | enum | | true | DEVICE_DATA | 63 | 1 | 1 |
+| cylpriority | cylinder priority | enum | | true | DEVICE_DATA | 64 | 1 | 1 |
+| heatcntflowtemp | heat counter flow temperature | uint16 | C | false | DEVICE_DATA | 65 | 1 | 1/10 |
+| heatcntrettemp | heat counter return temperature | uint16 | C | false | DEVICE_DATA | 66 | 1 | 1/10 |
+| heatcnt | heat counter impulses | uint8 | | false | DEVICE_DATA | 67 | 1 | 1 |
+| swapflowtemp | swap flow temperature (TS14) | uint16 | C | false | DEVICE_DATA | 68 | 1 | 1/10 |
+| swaprettemp | swap return temperature (TS15) | uint16 | C | false | DEVICE_DATA | 69 | 1 | 1/10 |
+int8
+| heatassiston | heat assistance on | int8 (>=0<=0) | K | true | DEVICE_DATA | 70 | 1 | 1/10 |
+int8
+| heatassistoff | heat assistance off | int8 (>=0<=0) | K | true | DEVICE_DATA | 71 | 1 | 1/10 |
### SM100, MS100
| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor |
|-|-|-|-|-|-|-|-|-|
-| collectortemp | collector temperature (TS1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 0 | 1 | 1/10 |
-| cylbottomtemp | cylinder bottom temperature (TS2) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 1 | 1 | 1/10 |
-| solarpump | pump (PS1) | boolean | | false | DEVICE_DATA | 2 | 1 | 1 |
-| pumpworktime | pump working time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 3 | 2 | 1 |
-| cylmaxtemp | maximum cylinder temperature | uint8 (>=0<=254) | 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 (>=0<=100) | % | false | DEVICE_DATA | 8 | 1 | 1 |
-| pumpminmod | minimum pump modulation | uint8 (>=0<=100) | % | true | DEVICE_DATA | 9 | 1 | 5 |
-| turnondiff | pump turn on difference | uint8 (>=0<=25) | C | true | DEVICE_DATA | 10 | 1 | 1/10 |
-| turnoffdiff | pump turn off difference | uint8 (>=0<=25) | C | true | DEVICE_DATA | 11 | 1 | 1/10 |
-| collector2temp | collector 2 temperature (TS7) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 20 | 1 | 1/10 |
-| cylmiddletemp | cylinder middle temperature (TS3) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 17 | 1 | 1/10 |
-| retheatassist | return temperature heat assistance (TS4) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 18 | 1 | 1/10 |
-| ts8 | (TS8) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 21 | 1 | 1/10 |
-| ts16 | (TS16) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 22 | 1 | 1/10 |
-| heatassistvalve | heat assistance valve (M1) | boolean | | false | DEVICE_DATA | 19 | 1 | 1 |
-| heatassistpower | heat assistance valve power (M1) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 23 | 1 | 1 |
-| solarpump2 | pump 2 (PS4) | boolean | | false | DEVICE_DATA | 24 | 1 | 1 |
-| solarpump2mod | pump 2 modulation (PS4) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 25 | 1 | 1 |
-| cyl2bottomtemp | second cylinder bottom temperature (TS5) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 26 | 1 | 1/10 |
-| cyl3bottomtemp | third cylinder bottom temperature (TS11) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 27 | 1 | 1/10 |
-| cyltoptemp | cylinder top temperature (TS10) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 28 | 1 | 1/10 |
-| heatexchangertemp | heat exchanger temperature (TS6) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 29 | 1 | 1/10 |
-| cylpumpmod | cylinder pump modulation (PS5) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 30 | 1 | 1 |
-| valvestatus | valve status | boolean | | false | DEVICE_DATA | 31 | 1 | 1 |
-| vs1status | valve status VS1 | boolean | | false | DEVICE_DATA | 32 | 1 | 1 |
-| vs3status | valve status VS3 | boolean | | false | DEVICE_DATA | 33 | 1 | 1 |
-| transferpump | transfer pump | boolean | | false | DEVICE_DATA | 34 | 1 | 1 |
-| transferpumpmod | transfer pump modulation | uint8 (>=0<=100) | % | false | DEVICE_DATA | 35 | 1 | 1 |
-| collectormaxtemp | maximum collector temperature | uint8 (>=0<=254) | C | true | DEVICE_DATA | 36 | 1 | 1 |
-| collectormintemp | minimum collector temperature | uint8 (>=0<=254) | C | true | DEVICE_DATA | 37 | 1 | 1 |
-| energylasthour | energy last hour | uint24 (>=0<=1677721) | Wh | false | DEVICE_DATA | 13 | 2 | 1/10 |
-| energytoday | total energy today | uint24 (>=0<=16777214) | Wh | false | DEVICE_DATA | 38 | 2 | 1 |
-| energytotal | total energy | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 40 | 2 | 1/10 |
-| pump2worktime | pump 2 working time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 42 | 2 | 1 |
-| m1worktime | differential control working time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 44 | 2 | 1 |
-| heattransfersystem | heattransfer system | boolean | | true | DEVICE_DATA | 46 | 1 | 1 |
-| externalcyl | external cylinder | boolean | | true | DEVICE_DATA | 47 | 1 | 1 |
-| thermaldisinfect | thermal disinfection | boolean | | true | DEVICE_DATA | 48 | 1 | 1 |
-| heatmetering | heatmetering | boolean | | true | DEVICE_DATA | 49 | 1 | 1 |
-| activated | activated | boolean | | true | DEVICE_DATA | 50 | 1 | 1 |
-| solarpumpmode | solar pump mode | enum [constant\|pwm\|analog] | | true | DEVICE_DATA | 51 | 1 | 1 |
-| solarpumpkick | solar pump kick | boolean | | true | DEVICE_DATA | 52 | 1 | 1 |
-| plainwatermode | plain water mode | boolean | | true | DEVICE_DATA | 53 | 1 | 1 |
-| doublematchflow | doublematchflow | boolean | | true | DEVICE_DATA | 54 | 1 | 1 |
-| pump2minmod | minimum pump 2 modulation | uint8 (>=0<=100) | % | true | DEVICE_DATA | 55 | 1 | 1 |
-| turnondiff2 | pump 2 turn on difference | uint8 (>=0<=25) | C | true | DEVICE_DATA | 56 | 1 | 1/10 |
-| turnoffdiff2 | pump 2 turn off difference | uint8 (>=0<=25) | C | true | DEVICE_DATA | 57 | 1 | 1/10 |
-| pump2kick | pump kick 2 | boolean | | true | DEVICE_DATA | 58 | 1 | 1 |
-| climatezone | climate zone | uint8 (>=0<=254) | | true | DEVICE_DATA | 59 | 1 | 1 |
-| collector1area | collector 1 area | uint16 (>=0<=3199) | m² | true | DEVICE_DATA | 60 | 1 | 1/10 |
-| collector1type | collector 1 type | enum [flat\|vacuum] | | true | DEVICE_DATA | 61 | 1 | 1 |
-| collector2area | collector 2 area | uint16 (>=0<=3199) | m² | true | DEVICE_DATA | 62 | 1 | 1/10 |
-| collector2type | collector 2 type | enum [flat\|vacuum] | | true | DEVICE_DATA | 63 | 1 | 1 |
-| cylpriority | cylinder priority | enum [cyl 1\|cyl 2] | | true | DEVICE_DATA | 64 | 1 | 1 |
-| heatcntflowtemp | heat counter flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 65 | 1 | 1/10 |
-| heatcntrettemp | heat counter return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 66 | 1 | 1/10 |
-| heatcnt | heat counter impulses | uint8 (>=0<=254) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| swapflowtemp | swap flow temperature (TS14) | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 68 | 1 | 1/10 |
-| swaprettemp | swap return temperature (TS15) | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 69 | 1 | 1/10 |
-| heatassiston | heat assistance on | int8 (>=-12<=12) | K | true | DEVICE_DATA | 70 | 1 | 1/10 |
-| heatassistoff | heat assistance off | int8 (>=-12<=12) | K | true | DEVICE_DATA | 71 | 1 | 1/10 |
+| 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 (TS3) | int16 | C | false | DEVICE_DATA | 17 | 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 | 21 | 1 | 1/10 |
+| ts16 | (TS16) | int16 | C | false | DEVICE_DATA | 22 | 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 | 23 | 1 | 1 |
+| solarpump2 | pump 2 (PS4) | boolean | | false | DEVICE_DATA | 24 | 1 | 1 |
+| solarpump2mod | pump 2 modulation (PS4) | uint8 | % | false | DEVICE_DATA | 25 | 1 | 1 |
+| cyl2bottomtemp | second cylinder bottom temperature (TS5) | int16 | C | false | DEVICE_DATA | 26 | 1 | 1/10 |
+| cyl3bottomtemp | third cylinder bottom temperature (TS11) | int16 | C | false | DEVICE_DATA | 27 | 1 | 1/10 |
+| cyltoptemp | cylinder top temperature (TS10) | int16 | C | false | DEVICE_DATA | 28 | 1 | 1/10 |
+| heatexchangertemp | heat exchanger temperature (TS6) | int16 | C | false | DEVICE_DATA | 29 | 1 | 1/10 |
+| cylpumpmod | cylinder pump modulation (PS5) | uint8 | % | false | DEVICE_DATA | 30 | 1 | 1 |
+| valvestatus | valve status | boolean | | false | DEVICE_DATA | 31 | 1 | 1 |
+| vs1status | valve status VS1 | boolean | | false | DEVICE_DATA | 32 | 1 | 1 |
+| vs3status | valve status VS3 | boolean | | false | DEVICE_DATA | 33 | 1 | 1 |
+| transferpump | transfer pump | boolean | | false | DEVICE_DATA | 34 | 1 | 1 |
+| transferpumpmod | transfer pump modulation | uint8 | % | false | DEVICE_DATA | 35 | 1 | 1 |
+uint8
+| collectormaxtemp | maximum collector temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 36 | 1 | 1 |
+uint8
+| collectormintemp | minimum collector temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 37 | 1 | 1 |
+| energylasthour | energy last hour | uint24 | Wh | false | DEVICE_DATA | 13 | 2 | 1/10 |
+| energytoday | total energy today | uint24 | Wh | false | DEVICE_DATA | 38 | 2 | 1 |
+| energytotal | total energy | uint24 | kWh | false | DEVICE_DATA | 40 | 2 | 1/10 |
+| pump2worktime | pump 2 working time | time | minutes | false | DEVICE_DATA | 42 | 2 | 1 |
+| m1worktime | differential control working time | time | minutes | false | DEVICE_DATA | 44 | 2 | 1 |
+| heattransfersystem | heattransfer system | boolean | | true | DEVICE_DATA | 46 | 1 | 1 |
+| externalcyl | external cylinder | boolean | | true | DEVICE_DATA | 47 | 1 | 1 |
+| thermaldisinfect | thermal disinfection | boolean | | true | DEVICE_DATA | 48 | 1 | 1 |
+| heatmetering | heatmetering | boolean | | true | DEVICE_DATA | 49 | 1 | 1 |
+| activated | activated | boolean | | true | DEVICE_DATA | 50 | 1 | 1 |
+| solarpumpmode | solar pump mode | enum | | true | DEVICE_DATA | 51 | 1 | 1 |
+| solarpumpkick | solar pump kick | boolean | | true | DEVICE_DATA | 52 | 1 | 1 |
+| plainwatermode | plain water mode | boolean | | true | DEVICE_DATA | 53 | 1 | 1 |
+| doublematchflow | doublematchflow | boolean | | true | DEVICE_DATA | 54 | 1 | 1 |
+uint8
+| pump2minmod | minimum pump 2 modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 55 | 1 | 1 |
+uint8
+| turnondiff2 | pump 2 turn on difference | uint8 (>=0<=0) | C | true | DEVICE_DATA | 56 | 1 | 1/10 |
+uint8
+| turnoffdiff2 | pump 2 turn off difference | uint8 (>=0<=0) | C | true | DEVICE_DATA | 57 | 1 | 1/10 |
+| pump2kick | pump kick 2 | boolean | | true | DEVICE_DATA | 58 | 1 | 1 |
+uint8
+| climatezone | climate zone | uint8 (>=0<=0) | | true | DEVICE_DATA | 59 | 1 | 1 |
+uint16
+| collector1area | collector 1 area | uint16 (>=0<=0) | m² | true | DEVICE_DATA | 60 | 1 | 1/10 |
+| collector1type | collector 1 type | enum | | true | DEVICE_DATA | 61 | 1 | 1 |
+uint16
+| collector2area | collector 2 area | uint16 (>=0<=0) | m² | true | DEVICE_DATA | 62 | 1 | 1/10 |
+| collector2type | collector 2 type | enum | | true | DEVICE_DATA | 63 | 1 | 1 |
+| cylpriority | cylinder priority | enum | | true | DEVICE_DATA | 64 | 1 | 1 |
+| heatcntflowtemp | heat counter flow temperature | uint16 | C | false | DEVICE_DATA | 65 | 1 | 1/10 |
+| heatcntrettemp | heat counter return temperature | uint16 | C | false | DEVICE_DATA | 66 | 1 | 1/10 |
+| heatcnt | heat counter impulses | uint8 | | false | DEVICE_DATA | 67 | 1 | 1 |
+| swapflowtemp | swap flow temperature (TS14) | uint16 | C | false | DEVICE_DATA | 68 | 1 | 1/10 |
+| swaprettemp | swap return temperature (TS15) | uint16 | C | false | DEVICE_DATA | 69 | 1 | 1/10 |
+int8
+| heatassiston | heat assistance on | int8 (>=0<=0) | K | true | DEVICE_DATA | 70 | 1 | 1/10 |
+int8
+| heatassistoff | heat assistance off | int8 (>=0<=0) | K | true | DEVICE_DATA | 71 | 1 | 1/10 |
### SM200, MS200
| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor |
|-|-|-|-|-|-|-|-|-|
-| collectortemp | collector temperature (TS1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 0 | 1 | 1/10 |
-| cylbottomtemp | cylinder bottom temperature (TS2) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 1 | 1 | 1/10 |
-| solarpump | pump (PS1) | boolean | | false | DEVICE_DATA | 2 | 1 | 1 |
-| pumpworktime | pump working time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 3 | 2 | 1 |
-| cylmaxtemp | maximum cylinder temperature | uint8 (>=0<=254) | 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 (>=0<=100) | % | false | DEVICE_DATA | 8 | 1 | 1 |
-| pumpminmod | minimum pump modulation | uint8 (>=0<=100) | % | true | DEVICE_DATA | 9 | 1 | 5 |
-| turnondiff | pump turn on difference | uint8 (>=0<=25) | C | true | DEVICE_DATA | 10 | 1 | 1/10 |
-| turnoffdiff | pump turn off difference | uint8 (>=0<=25) | C | true | DEVICE_DATA | 11 | 1 | 1/10 |
-| collector2temp | collector 2 temperature (TS7) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 20 | 1 | 1/10 |
-| cylmiddletemp | cylinder middle temperature (TS3) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 17 | 1 | 1/10 |
-| retheatassist | return temperature heat assistance (TS4) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 18 | 1 | 1/10 |
-| ts8 | (TS8) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 21 | 1 | 1/10 |
-| ts16 | (TS16) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 22 | 1 | 1/10 |
-| heatassistvalve | heat assistance valve (M1) | boolean | | false | DEVICE_DATA | 19 | 1 | 1 |
-| heatassistpower | heat assistance valve power (M1) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 23 | 1 | 1 |
-| solarpump2 | pump 2 (PS4) | boolean | | false | DEVICE_DATA | 24 | 1 | 1 |
-| solarpump2mod | pump 2 modulation (PS4) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 25 | 1 | 1 |
-| cyl2bottomtemp | second cylinder bottom temperature (TS5) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 26 | 1 | 1/10 |
-| cyl3bottomtemp | third cylinder bottom temperature (TS11) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 27 | 1 | 1/10 |
-| cyltoptemp | cylinder top temperature (TS10) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 28 | 1 | 1/10 |
-| heatexchangertemp | heat exchanger temperature (TS6) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 29 | 1 | 1/10 |
-| cylpumpmod | cylinder pump modulation (PS5) | uint8 (>=0<=100) | % | false | DEVICE_DATA | 30 | 1 | 1 |
-| valvestatus | valve status | boolean | | false | DEVICE_DATA | 31 | 1 | 1 |
-| vs1status | valve status VS1 | boolean | | false | DEVICE_DATA | 32 | 1 | 1 |
-| vs3status | valve status VS3 | boolean | | false | DEVICE_DATA | 33 | 1 | 1 |
-| transferpump | transfer pump | boolean | | false | DEVICE_DATA | 34 | 1 | 1 |
-| transferpumpmod | transfer pump modulation | uint8 (>=0<=100) | % | false | DEVICE_DATA | 35 | 1 | 1 |
-| collectormaxtemp | maximum collector temperature | uint8 (>=0<=254) | C | true | DEVICE_DATA | 36 | 1 | 1 |
-| collectormintemp | minimum collector temperature | uint8 (>=0<=254) | C | true | DEVICE_DATA | 37 | 1 | 1 |
-| energylasthour | energy last hour | uint24 (>=0<=1677721) | Wh | false | DEVICE_DATA | 13 | 2 | 1/10 |
-| energytoday | total energy today | uint24 (>=0<=16777214) | Wh | false | DEVICE_DATA | 38 | 2 | 1 |
-| energytotal | total energy | uint24 (>=0<=1677721) | kWh | false | DEVICE_DATA | 40 | 2 | 1/10 |
-| pump2worktime | pump 2 working time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 42 | 2 | 1 |
-| m1worktime | differential control working time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 44 | 2 | 1 |
-| heattransfersystem | heattransfer system | boolean | | true | DEVICE_DATA | 46 | 1 | 1 |
-| externalcyl | external cylinder | boolean | | true | DEVICE_DATA | 47 | 1 | 1 |
-| thermaldisinfect | thermal disinfection | boolean | | true | DEVICE_DATA | 48 | 1 | 1 |
-| heatmetering | heatmetering | boolean | | true | DEVICE_DATA | 49 | 1 | 1 |
-| activated | activated | boolean | | true | DEVICE_DATA | 50 | 1 | 1 |
-| solarpumpmode | solar pump mode | enum [constant\|pwm\|analog] | | true | DEVICE_DATA | 51 | 1 | 1 |
-| solarpumpkick | solar pump kick | boolean | | true | DEVICE_DATA | 52 | 1 | 1 |
-| plainwatermode | plain water mode | boolean | | true | DEVICE_DATA | 53 | 1 | 1 |
-| doublematchflow | doublematchflow | boolean | | true | DEVICE_DATA | 54 | 1 | 1 |
-| pump2minmod | minimum pump 2 modulation | uint8 (>=0<=100) | % | true | DEVICE_DATA | 55 | 1 | 1 |
-| turnondiff2 | pump 2 turn on difference | uint8 (>=0<=25) | C | true | DEVICE_DATA | 56 | 1 | 1/10 |
-| turnoffdiff2 | pump 2 turn off difference | uint8 (>=0<=25) | C | true | DEVICE_DATA | 57 | 1 | 1/10 |
-| pump2kick | pump kick 2 | boolean | | true | DEVICE_DATA | 58 | 1 | 1 |
-| climatezone | climate zone | uint8 (>=0<=254) | | true | DEVICE_DATA | 59 | 1 | 1 |
-| collector1area | collector 1 area | uint16 (>=0<=3199) | m² | true | DEVICE_DATA | 60 | 1 | 1/10 |
-| collector1type | collector 1 type | enum [flat\|vacuum] | | true | DEVICE_DATA | 61 | 1 | 1 |
-| collector2area | collector 2 area | uint16 (>=0<=3199) | m² | true | DEVICE_DATA | 62 | 1 | 1/10 |
-| collector2type | collector 2 type | enum [flat\|vacuum] | | true | DEVICE_DATA | 63 | 1 | 1 |
-| cylpriority | cylinder priority | enum [cyl 1\|cyl 2] | | true | DEVICE_DATA | 64 | 1 | 1 |
-| heatcntflowtemp | heat counter flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 65 | 1 | 1/10 |
-| heatcntrettemp | heat counter return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 66 | 1 | 1/10 |
-| heatcnt | heat counter impulses | uint8 (>=0<=254) | | false | DEVICE_DATA | 67 | 1 | 1 |
-| swapflowtemp | swap flow temperature (TS14) | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 68 | 1 | 1/10 |
-| swaprettemp | swap return temperature (TS15) | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 69 | 1 | 1/10 |
-| heatassiston | heat assistance on | int8 (>=-12<=12) | K | true | DEVICE_DATA | 70 | 1 | 1/10 |
-| heatassistoff | heat assistance off | int8 (>=-12<=12) | K | true | DEVICE_DATA | 71 | 1 | 1/10 |
+| 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 (TS3) | int16 | C | false | DEVICE_DATA | 17 | 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 | 21 | 1 | 1/10 |
+| ts16 | (TS16) | int16 | C | false | DEVICE_DATA | 22 | 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 | 23 | 1 | 1 |
+| solarpump2 | pump 2 (PS4) | boolean | | false | DEVICE_DATA | 24 | 1 | 1 |
+| solarpump2mod | pump 2 modulation (PS4) | uint8 | % | false | DEVICE_DATA | 25 | 1 | 1 |
+| cyl2bottomtemp | second cylinder bottom temperature (TS5) | int16 | C | false | DEVICE_DATA | 26 | 1 | 1/10 |
+| cyl3bottomtemp | third cylinder bottom temperature (TS11) | int16 | C | false | DEVICE_DATA | 27 | 1 | 1/10 |
+| cyltoptemp | cylinder top temperature (TS10) | int16 | C | false | DEVICE_DATA | 28 | 1 | 1/10 |
+| heatexchangertemp | heat exchanger temperature (TS6) | int16 | C | false | DEVICE_DATA | 29 | 1 | 1/10 |
+| cylpumpmod | cylinder pump modulation (PS5) | uint8 | % | false | DEVICE_DATA | 30 | 1 | 1 |
+| valvestatus | valve status | boolean | | false | DEVICE_DATA | 31 | 1 | 1 |
+| vs1status | valve status VS1 | boolean | | false | DEVICE_DATA | 32 | 1 | 1 |
+| vs3status | valve status VS3 | boolean | | false | DEVICE_DATA | 33 | 1 | 1 |
+| transferpump | transfer pump | boolean | | false | DEVICE_DATA | 34 | 1 | 1 |
+| transferpumpmod | transfer pump modulation | uint8 | % | false | DEVICE_DATA | 35 | 1 | 1 |
+uint8
+| collectormaxtemp | maximum collector temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 36 | 1 | 1 |
+uint8
+| collectormintemp | minimum collector temperature | uint8 (>=0<=0) | C | true | DEVICE_DATA | 37 | 1 | 1 |
+| energylasthour | energy last hour | uint24 | Wh | false | DEVICE_DATA | 13 | 2 | 1/10 |
+| energytoday | total energy today | uint24 | Wh | false | DEVICE_DATA | 38 | 2 | 1 |
+| energytotal | total energy | uint24 | kWh | false | DEVICE_DATA | 40 | 2 | 1/10 |
+| pump2worktime | pump 2 working time | time | minutes | false | DEVICE_DATA | 42 | 2 | 1 |
+| m1worktime | differential control working time | time | minutes | false | DEVICE_DATA | 44 | 2 | 1 |
+| heattransfersystem | heattransfer system | boolean | | true | DEVICE_DATA | 46 | 1 | 1 |
+| externalcyl | external cylinder | boolean | | true | DEVICE_DATA | 47 | 1 | 1 |
+| thermaldisinfect | thermal disinfection | boolean | | true | DEVICE_DATA | 48 | 1 | 1 |
+| heatmetering | heatmetering | boolean | | true | DEVICE_DATA | 49 | 1 | 1 |
+| activated | activated | boolean | | true | DEVICE_DATA | 50 | 1 | 1 |
+| solarpumpmode | solar pump mode | enum | | true | DEVICE_DATA | 51 | 1 | 1 |
+| solarpumpkick | solar pump kick | boolean | | true | DEVICE_DATA | 52 | 1 | 1 |
+| plainwatermode | plain water mode | boolean | | true | DEVICE_DATA | 53 | 1 | 1 |
+| doublematchflow | doublematchflow | boolean | | true | DEVICE_DATA | 54 | 1 | 1 |
+uint8
+| pump2minmod | minimum pump 2 modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 55 | 1 | 1 |
+uint8
+| turnondiff2 | pump 2 turn on difference | uint8 (>=0<=0) | C | true | DEVICE_DATA | 56 | 1 | 1/10 |
+uint8
+| turnoffdiff2 | pump 2 turn off difference | uint8 (>=0<=0) | C | true | DEVICE_DATA | 57 | 1 | 1/10 |
+| pump2kick | pump kick 2 | boolean | | true | DEVICE_DATA | 58 | 1 | 1 |
+uint8
+| climatezone | climate zone | uint8 (>=0<=0) | | true | DEVICE_DATA | 59 | 1 | 1 |
+uint16
+| collector1area | collector 1 area | uint16 (>=0<=0) | m² | true | DEVICE_DATA | 60 | 1 | 1/10 |
+| collector1type | collector 1 type | enum | | true | DEVICE_DATA | 61 | 1 | 1 |
+uint16
+| collector2area | collector 2 area | uint16 (>=0<=0) | m² | true | DEVICE_DATA | 62 | 1 | 1/10 |
+| collector2type | collector 2 type | enum | | true | DEVICE_DATA | 63 | 1 | 1 |
+| cylpriority | cylinder priority | enum | | true | DEVICE_DATA | 64 | 1 | 1 |
+| heatcntflowtemp | heat counter flow temperature | uint16 | C | false | DEVICE_DATA | 65 | 1 | 1/10 |
+| heatcntrettemp | heat counter return temperature | uint16 | C | false | DEVICE_DATA | 66 | 1 | 1/10 |
+| heatcnt | heat counter impulses | uint8 | | false | DEVICE_DATA | 67 | 1 | 1 |
+| swapflowtemp | swap flow temperature (TS14) | uint16 | C | false | DEVICE_DATA | 68 | 1 | 1/10 |
+| swaprettemp | swap return temperature (TS15) | uint16 | C | false | DEVICE_DATA | 69 | 1 | 1/10 |
+int8
+| heatassiston | heat assistance on | int8 (>=0<=0) | K | true | DEVICE_DATA | 70 | 1 | 1/10 |
+int8
+| heatassistoff | heat assistance off | int8 (>=0<=0) | K | true | DEVICE_DATA | 71 | 1 | 1/10 |
## Devices of type \_heatpump
@@ -6037,157 +7750,190 @@ This file has been auto-generated. Do not modify.
| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor |
|-|-|-|-|-|-|-|-|-|
-| airhumidity | relative air humidity | uint8 (>=0<=100) | % | false | DEVICE_DATA | 0 | 1 | 1 |
-| dewtemperature | dew point temperature | uint8 (>=0<=254) | C | false | DEVICE_DATA | 1 | 1 | 1 |
-| curflowtemp | current flow temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 2 | 1 | 1/10 |
-| rettemp | return temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 3 | 1 | 1/10 |
-| sysrettemp | system return temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 4 | 1 | 1/10 |
-| hpta4 | drain pan temp (TA4) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 5 | 1 | 1/10 |
-| hptr1 | compressor temperature (TR1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 6 | 1 | 1/10 |
-| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| hptr4 | evaporator inlet temperature (TR4) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| hptr5 | compressor inlet temperature (TR5) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| hptr6 | compressor outlet temperature (TR6) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| hptl2 | air inlet temperature (TL2) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| hppl1 | low pressure side temperature (PL1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| hpph1 | high pressure side temperature (PH1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| heatingpumpmod | heating pump modulation | uint8 (>=0<=100) | % | false | DEVICE_DATA | 14 | 1 | 1 |
-| hpcompspd | compressor speed | uint8 (>=0<=100) | % | false | DEVICE_DATA | 15 | 1 | 1 |
-| hybridstrategy | hybrid control strategy | enum [cost optimized\|co2 optimized\|outside temperature alt.\|outside temperature parallel\|heatpump preferred\|boiler only] | | true | DEVICE_DATA | 16 | 1 | 1 |
-| lownoisemode | low noise mode | enum [off\|reduced output\|switch off hp\|perm. reduced] | | true | DEVICE_DATA | 17 | 1 | 1 |
-| lownoisestart | low noise starttime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 18 | 1 | 1 |
-| lownoisestop | low noise stoptime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 19 | 1 | 1 |
-| dhw.hybriddhw | hybrid DHW | enum [eco\|high comfort] | | true | DHW | 0 | 1 | 1 |
-| energypricegas | energy price gas | uint8 (>=0<=254) | ct/kWh | true | DEVICE_DATA | 20 | 1 | 1 |
-| energypriceel | energy price electric | uint8 (>=0<=254) | ct/kWh | true | DEVICE_DATA | 21 | 1 | 1 |
-| energyfeedpv | feed in PV | uint8 (>=0<=254) | ct/kWh | true | DEVICE_DATA | 22 | 1 | 1 |
-| switchovertemp | outside switchover temperature | int8 (>=-126<=126) | C | true | DEVICE_DATA | 23 | 1 | 1 |
-| airpurgemode | air purge mode | boolean | | true | DEVICE_DATA | 24 | 1 | 1 |
-| heatpumpoutput | heatpump output | uint8 (>=0<=100) | % | true | DEVICE_DATA | 25 | 1 | 1 |
-| coolingcircuit | cooling circuit | boolean | | true | DEVICE_DATA | 26 | 1 | 1 |
-| compstartmod | compressor start modulation | uint8 (>=0<=100) | % | true | DEVICE_DATA | 27 | 1 | 1 |
-| heatdrainpan | heat drain pan | boolean | | true | DEVICE_DATA | 28 | 1 | 1 |
-| heatcable | heating cable | boolean | | true | DEVICE_DATA | 29 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 30 | 2 | 1/100 |
-| dhw.nrg | energy | uint24 (>=0<=167772) | kWh | false | DHW | 1 | 2 | 1/100 |
-| nrgheat | energy heating | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 32 | 2 | 1/100 |
-| metertotal | meter total | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 34 | 2 | 1/100 |
-| metercomp | meter compressor | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 36 | 2 | 1/100 |
-| metereheat | meter e-heater | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 38 | 2 | 1/100 |
-| meterheat | meter heating | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 40 | 2 | 1/100 |
-| dhw.meter | meter | uint24 (>=0<=167772) | kWh | false | DHW | 3 | 2 | 1/100 |
-| heatingstarts | heating control starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 42 | 2 | 1 |
-| dhw.startshp | starts hp | uint24 (>=0<=16777214) | | false | DHW | 5 | 2 | 1 |
-| fuelheat | fuel consumption heating | uint32 (>=0<=1677721) | kWh | false | DEVICE_DATA | 44 | 2 | 1/10 |
-| dhw.fueldhw | fuel consumption | uint32 (>=0<=1677721) | kWh | false | DHW | 7 | 2 | 1/10 |
-| elheat | el. consumption heating | uint32 (>=0<=1677721) | kWh | false | DEVICE_DATA | 46 | 2 | 1/10 |
-| dhw.eldhw | el. consumption | uint32 (>=0<=1677721) | kWh | false | DHW | 9 | 2 | 1/10 |
-| elgenheat | el. generation heating | uint32 (>=0<=1677721) | kWh | false | DEVICE_DATA | 48 | 2 | 1/10 |
-| dhw.elgendhw | el generation | uint32 (>=0<=1677721) | kWh | false | DHW | 11 | 2 | 1/10 |
+| 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 |
+| hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 19 | 1 | 1 |
+| lownoisemode | low noise mode | enum | | true | DEVICE_DATA | 20 | 1 | 1 |
+uint8
+| lownoisestart | low noise starttime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 21 | 1 | 1 |
+uint8
+| lownoisestop | low noise stoptime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 22 | 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 |
+uint8
+| energypriceel | energy price electric | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 24 | 1 | 1 |
+uint8
+| energyfeedpv | feed in PV | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 25 | 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 |
+uint8
+| heatpumpoutput | heatpump output | uint8 (>=0<=0) | % | true | DEVICE_DATA | 28 | 1 | 1 |
+| coolingcircuit | cooling circuit | boolean | | true | DEVICE_DATA | 29 | 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 |
+| 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 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 3 | 2 | 1/100 |
+| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 45 | 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 |
+| 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 |
+| 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 0 | 1 | 1 |
-| dewtemperature | dew point temperature | uint8 (>=0<=254) | C | false | DEVICE_DATA | 1 | 1 | 1 |
-| curflowtemp | current flow temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 2 | 1 | 1/10 |
-| rettemp | return temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 3 | 1 | 1/10 |
-| sysrettemp | system return temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 4 | 1 | 1/10 |
-| hpta4 | drain pan temp (TA4) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 5 | 1 | 1/10 |
-| hptr1 | compressor temperature (TR1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 6 | 1 | 1/10 |
-| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| hptr4 | evaporator inlet temperature (TR4) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| hptr5 | compressor inlet temperature (TR5) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| hptr6 | compressor outlet temperature (TR6) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| hptl2 | air inlet temperature (TL2) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| hppl1 | low pressure side temperature (PL1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| hpph1 | high pressure side temperature (PH1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| heatingpumpmod | heating pump modulation | uint8 (>=0<=100) | % | false | DEVICE_DATA | 14 | 1 | 1 |
-| hpcompspd | compressor speed | uint8 (>=0<=100) | % | false | DEVICE_DATA | 15 | 1 | 1 |
-| hybridstrategy | hybrid control strategy | enum [cost optimized\|co2 optimized\|outside temperature alt.\|outside temperature parallel\|heatpump preferred\|boiler only] | | true | DEVICE_DATA | 16 | 1 | 1 |
-| lownoisemode | low noise mode | enum [off\|reduced output\|switch off hp\|perm. reduced] | | true | DEVICE_DATA | 17 | 1 | 1 |
-| lownoisestart | low noise starttime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 18 | 1 | 1 |
-| lownoisestop | low noise stoptime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 19 | 1 | 1 |
-| dhw.hybriddhw | hybrid DHW | enum [eco\|high comfort] | | true | DHW | 0 | 1 | 1 |
-| energypricegas | energy price gas | uint8 (>=0<=254) | ct/kWh | true | DEVICE_DATA | 20 | 1 | 1 |
-| energypriceel | energy price electric | uint8 (>=0<=254) | ct/kWh | true | DEVICE_DATA | 21 | 1 | 1 |
-| energyfeedpv | feed in PV | uint8 (>=0<=254) | ct/kWh | true | DEVICE_DATA | 22 | 1 | 1 |
-| switchovertemp | outside switchover temperature | int8 (>=-126<=126) | C | true | DEVICE_DATA | 23 | 1 | 1 |
-| airpurgemode | air purge mode | boolean | | true | DEVICE_DATA | 24 | 1 | 1 |
-| heatpumpoutput | heatpump output | uint8 (>=0<=100) | % | true | DEVICE_DATA | 25 | 1 | 1 |
-| coolingcircuit | cooling circuit | boolean | | true | DEVICE_DATA | 26 | 1 | 1 |
-| compstartmod | compressor start modulation | uint8 (>=0<=100) | % | true | DEVICE_DATA | 27 | 1 | 1 |
-| heatdrainpan | heat drain pan | boolean | | true | DEVICE_DATA | 28 | 1 | 1 |
-| heatcable | heating cable | boolean | | true | DEVICE_DATA | 29 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 30 | 2 | 1/100 |
-| dhw.nrg | energy | uint24 (>=0<=167772) | kWh | false | DHW | 1 | 2 | 1/100 |
-| nrgheat | energy heating | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 32 | 2 | 1/100 |
-| metertotal | meter total | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 34 | 2 | 1/100 |
-| metercomp | meter compressor | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 36 | 2 | 1/100 |
-| metereheat | meter e-heater | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 38 | 2 | 1/100 |
-| meterheat | meter heating | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 40 | 2 | 1/100 |
-| dhw.meter | meter | uint24 (>=0<=167772) | kWh | false | DHW | 3 | 2 | 1/100 |
-| heatingstarts | heating control starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 42 | 2 | 1 |
-| dhw.startshp | starts hp | uint24 (>=0<=16777214) | | false | DHW | 5 | 2 | 1 |
-| fuelheat | fuel consumption heating | uint32 (>=0<=1677721) | kWh | false | DEVICE_DATA | 44 | 2 | 1/10 |
-| dhw.fueldhw | fuel consumption | uint32 (>=0<=1677721) | kWh | false | DHW | 7 | 2 | 1/10 |
-| elheat | el. consumption heating | uint32 (>=0<=1677721) | kWh | false | DEVICE_DATA | 46 | 2 | 1/10 |
-| dhw.eldhw | el. consumption | uint32 (>=0<=1677721) | kWh | false | DHW | 9 | 2 | 1/10 |
-| elgenheat | el. generation heating | uint32 (>=0<=1677721) | kWh | false | DEVICE_DATA | 48 | 2 | 1/10 |
-| dhw.elgendhw | el generation | uint32 (>=0<=1677721) | kWh | false | DHW | 11 | 2 | 1/10 |
+| 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 |
+| hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 19 | 1 | 1 |
+| lownoisemode | low noise mode | enum | | true | DEVICE_DATA | 20 | 1 | 1 |
+uint8
+| lownoisestart | low noise starttime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 21 | 1 | 1 |
+uint8
+| lownoisestop | low noise stoptime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 22 | 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 |
+uint8
+| energypriceel | energy price electric | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 24 | 1 | 1 |
+uint8
+| energyfeedpv | feed in PV | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 25 | 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 |
+uint8
+| heatpumpoutput | heatpump output | uint8 (>=0<=0) | % | true | DEVICE_DATA | 28 | 1 | 1 |
+| coolingcircuit | cooling circuit | boolean | | true | DEVICE_DATA | 29 | 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 |
+| 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 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 3 | 2 | 1/100 |
+| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 45 | 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 |
+| 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 |
+| 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 |
+| 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 (>=0<=100) | % | false | DEVICE_DATA | 0 | 1 | 1 |
-| dewtemperature | dew point temperature | uint8 (>=0<=254) | C | false | DEVICE_DATA | 1 | 1 | 1 |
-| curflowtemp | current flow temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 2 | 1 | 1/10 |
-| rettemp | return temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 3 | 1 | 1/10 |
-| sysrettemp | system return temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 4 | 1 | 1/10 |
-| hpta4 | drain pan temp (TA4) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 5 | 1 | 1/10 |
-| hptr1 | compressor temperature (TR1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 6 | 1 | 1/10 |
-| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
-| hptr4 | evaporator inlet temperature (TR4) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
-| hptr5 | compressor inlet temperature (TR5) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
-| hptr6 | compressor outlet temperature (TR6) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 10 | 1 | 1/10 |
-| hptl2 | air inlet temperature (TL2) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 11 | 1 | 1/10 |
-| hppl1 | low pressure side temperature (PL1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
-| hpph1 | high pressure side temperature (PH1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| heatingpumpmod | heating pump modulation | uint8 (>=0<=100) | % | false | DEVICE_DATA | 14 | 1 | 1 |
-| hpcompspd | compressor speed | uint8 (>=0<=100) | % | false | DEVICE_DATA | 15 | 1 | 1 |
-| hybridstrategy | hybrid control strategy | enum [cost optimized\|co2 optimized\|outside temperature alt.\|outside temperature parallel\|heatpump preferred\|boiler only] | | true | DEVICE_DATA | 16 | 1 | 1 |
-| lownoisemode | low noise mode | enum [off\|reduced output\|switch off hp\|perm. reduced] | | true | DEVICE_DATA | 17 | 1 | 1 |
-| lownoisestart | low noise starttime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 18 | 1 | 1 |
-| lownoisestop | low noise stoptime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 19 | 1 | 1 |
-| dhw.hybriddhw | hybrid DHW | enum [eco\|high comfort] | | true | DHW | 0 | 1 | 1 |
-| energypricegas | energy price gas | uint8 (>=0<=254) | ct/kWh | true | DEVICE_DATA | 20 | 1 | 1 |
-| energypriceel | energy price electric | uint8 (>=0<=254) | ct/kWh | true | DEVICE_DATA | 21 | 1 | 1 |
-| energyfeedpv | feed in PV | uint8 (>=0<=254) | ct/kWh | true | DEVICE_DATA | 22 | 1 | 1 |
-| switchovertemp | outside switchover temperature | int8 (>=-126<=126) | C | true | DEVICE_DATA | 23 | 1 | 1 |
-| airpurgemode | air purge mode | boolean | | true | DEVICE_DATA | 24 | 1 | 1 |
-| heatpumpoutput | heatpump output | uint8 (>=0<=100) | % | true | DEVICE_DATA | 25 | 1 | 1 |
-| coolingcircuit | cooling circuit | boolean | | true | DEVICE_DATA | 26 | 1 | 1 |
-| compstartmod | compressor start modulation | uint8 (>=0<=100) | % | true | DEVICE_DATA | 27 | 1 | 1 |
-| heatdrainpan | heat drain pan | boolean | | true | DEVICE_DATA | 28 | 1 | 1 |
-| heatcable | heating cable | boolean | | true | DEVICE_DATA | 29 | 1 | 1 |
-| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 30 | 2 | 1/100 |
-| dhw.nrg | energy | uint24 (>=0<=167772) | kWh | false | DHW | 1 | 2 | 1/100 |
-| nrgheat | energy heating | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 32 | 2 | 1/100 |
-| metertotal | meter total | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 34 | 2 | 1/100 |
-| metercomp | meter compressor | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 36 | 2 | 1/100 |
-| metereheat | meter e-heater | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 38 | 2 | 1/100 |
-| meterheat | meter heating | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 40 | 2 | 1/100 |
-| dhw.meter | meter | uint24 (>=0<=167772) | kWh | false | DHW | 3 | 2 | 1/100 |
-| heatingstarts | heating control starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 42 | 2 | 1 |
-| dhw.startshp | starts hp | uint24 (>=0<=16777214) | | false | DHW | 5 | 2 | 1 |
-| fuelheat | fuel consumption heating | uint32 (>=0<=1677721) | kWh | false | DEVICE_DATA | 44 | 2 | 1/10 |
-| dhw.fueldhw | fuel consumption | uint32 (>=0<=1677721) | kWh | false | DHW | 7 | 2 | 1/10 |
-| elheat | el. consumption heating | uint32 (>=0<=1677721) | kWh | false | DEVICE_DATA | 46 | 2 | 1/10 |
-| dhw.eldhw | el. consumption | uint32 (>=0<=1677721) | kWh | false | DHW | 9 | 2 | 1/10 |
-| elgenheat | el. generation heating | uint32 (>=0<=1677721) | kWh | false | DEVICE_DATA | 48 | 2 | 1/10 |
-| dhw.elgendhw | el generation | uint32 (>=0<=1677721) | kWh | false | DHW | 11 | 2 | 1/10 |
+| 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 |
+| hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 19 | 1 | 1 |
+| lownoisemode | low noise mode | enum | | true | DEVICE_DATA | 20 | 1 | 1 |
+uint8
+| lownoisestart | low noise starttime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 21 | 1 | 1 |
+uint8
+| lownoisestop | low noise stoptime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 22 | 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 |
+uint8
+| energypriceel | energy price electric | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 24 | 1 | 1 |
+uint8
+| energyfeedpv | feed in PV | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 25 | 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 |
+uint8
+| heatpumpoutput | heatpump output | uint8 (>=0<=0) | % | true | DEVICE_DATA | 28 | 1 | 1 |
+| coolingcircuit | cooling circuit | boolean | | true | DEVICE_DATA | 29 | 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 |
+| 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 |
+| dhw.meter | meter | uint24 | kWh | false | DHW | 3 | 2 | 1/100 |
+| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 45 | 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 |
+| 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 |
+| 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 |
+| dhw.elgendhw | el generation | uint32 | kWh | false | DHW | 11 | 2 | 1/10 |
## Devices of type \_switch
@@ -6195,9 +7941,9 @@ This file has been auto-generated. Do not modify.
| 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 (>=0<=3199) | C | false | DEVICE_DATA | 1 | 1 | 1/10 |
-| status | status | int8 (>=-126<=126) | | false | DEVICE_DATA | 2 | 1 | 1 |
+| 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
@@ -6205,7 +7951,7 @@ This file has been auto-generated. Do not modify.
| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor |
|-|-|-|-|-|-|-|-|-|
-| datetime | date/time | string | | false | DEVICE_DATA | 0 | 13 | 1 |
+| datetime | date/time | string | | false | DEVICE_DATA | 0 | 13 | 1 |
## Devices of type \_connect
@@ -6213,16 +7959,17 @@ This file has been auto-generated. Do not modify.
| 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 (>=-3199<=3199) | C | false | DEVICE_DATA | 13 | 1 | 1/10 |
-| src1.currtemp | current room temperature | int16 (>=-3199<=3199) | C | false | SRC | 0 | 1 | 1/10 |
-| src1.airhumidity | relative air humidity | int8 (>=-100<=100) | % | false | SRC | 1 | 1 | 1 |
-| src1.dewtemperature | dew point temperature | int16 (>=-3199<=3199) | C | false | SRC | 2 | 1 | 1/10 |
+| 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 | int8 | % | 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 [off\|manual\|auto] | | 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 [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] | | true | SRC | 32 | 1 | 1 |
+| 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
@@ -6230,8 +7977,8 @@ This file has been auto-generated. Do not modify.
| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor |
|-|-|-|-|-|-|-|-|-|
-| setflowtemp | set flow temperature | uint8 (>=0<=254) | C | false | DEVICE_DATA | 0 | 1 | 1 |
-| setburnpow | burner set power | uint8 (>=0<=100) | % | false | DEVICE_DATA | 1 | 1 | 1 |
+| 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
@@ -6239,31 +7986,39 @@ This file has been auto-generated. Do not modify.
| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor |
|-|-|-|-|-|-|-|-|-|
-| flowtempvf | flow temperature in header (T0/Vf) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 0 | 1 | 1/10 |
-| input | input | uint8 (>=0<=25) | V | false | DEVICE_DATA | 1 | 1 | 1/10 |
-| outpow | output IO1 | uint8 (>=0<=100) | % | false | DEVICE_DATA | 2 | 1 | 1 |
-| setpower | request power | uint8 (>=0<=100) | % | false | DEVICE_DATA | 3 | 1 | 1 |
-| setpoint | set temp. | uint8 (>=0<=254) | C | false | DEVICE_DATA | 4 | 1 | 1 |
-| minv | min volt. | uint8 (>=0<=25) | V | true | DEVICE_DATA | 5 | 1 | 1/10 |
-| maxv | max volt. | uint8 (>=0<=25) | V | true | DEVICE_DATA | 6 | 1 | 1/10 |
-| mint | min temp. | uint8 (>=0<=254) | C | true | DEVICE_DATA | 7 | 1 | 1 |
-| maxt | max temp. | uint8 (>=0<=254) | C | true | DEVICE_DATA | 8 | 1 | 1 |
-| mode | operating mode | uint8 (>=0<=254) | | false | DEVICE_DATA | 9 | 1 | 1 |
+| 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 (>=-3199<=3199) | C | false | DEVICE_DATA | 0 | 1 | 1/10 |
-| input | input | uint8 (>=0<=25) | V | false | DEVICE_DATA | 1 | 1 | 1/10 |
-| outpow | output IO1 | uint8 (>=0<=100) | % | false | DEVICE_DATA | 2 | 1 | 1 |
-| setpower | request power | uint8 (>=0<=100) | % | false | DEVICE_DATA | 3 | 1 | 1 |
-| setpoint | set temp. | uint8 (>=0<=254) | C | false | DEVICE_DATA | 4 | 1 | 1 |
-| minv | min volt. | uint8 (>=0<=25) | V | true | DEVICE_DATA | 5 | 1 | 1/10 |
-| maxv | max volt. | uint8 (>=0<=25) | V | true | DEVICE_DATA | 6 | 1 | 1/10 |
-| mint | min temp. | uint8 (>=0<=254) | C | true | DEVICE_DATA | 7 | 1 | 1 |
-| maxt | max temp. | uint8 (>=0<=254) | C | true | DEVICE_DATA | 8 | 1 | 1 |
-| mode | operating mode | uint8 (>=0<=254) | | false | DEVICE_DATA | 9 | 1 | 1 |
+| 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
@@ -6271,38 +8026,45 @@ This file has been auto-generated. Do not modify.
| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor |
|-|-|-|-|-|-|-|-|-|
-| ahs1.sysflowtemp | system flow temperature | int16 (>=-3199<=3199) | C | false | AHS | 0 | 1 | 1/10 |
-| ahs1.sysrettemp | system return temperature | int16 (>=-3199<=3199) | C | false | AHS | 1 | 1 | 1/10 |
-| ahs1.altflowtemp | alternative hs flow temperature | int16 (>=-3199<=3199) | C | false | AHS | 2 | 1 | 1/10 |
-| ahs1.altrettemp | alternative hs return temperature | int16 (>=-3199<=3199) | C | false | AHS | 3 | 1 | 1/10 |
-| ahs1.cyltoptemp | cylinder top temperature | int16 (>=-3199<=3199) | C | false | AHS | 4 | 1 | 1/10 |
-| ahs1.cylcentertemp | cylinder center temperature | int16 (>=-3199<=3199) | C | false | AHS | 5 | 1 | 1/10 |
-| ahs1.cylbottomtemp | cylinder bottom temperature | int16 (>=-3199<=3199) | C | false | AHS | 6 | 1 | 1/10 |
-| ahs1.fluegastemp | flue gas temperature | int16 (>=-3199<=3199) | C | false | AHS | 7 | 1 | 1/10 |
-| ahs1.valvebuffer | buffer valve | uint8 (>=0<=100) | % | false | AHS | 8 | 1 | 1 |
-| ahs1.valvereturn | return valve | uint8 (>=0<=100) | % | false | AHS | 9 | 1 | 1 |
-| ahs1.apumpmod | alternative hs pump modulation | uint8 (>=0<=100) | % | false | AHS | 10 | 1 | 1 |
-| ahs1.vr2config | vr2 configuration | enum [off\|bypass] | | 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 [off\|pwm\|pwm inverse] | | true | AHS | 14 | 1 | 1 |
+| 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 |
+| 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 [no\|mixer\|valve] | | true | AHS | 20 | 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 [off\|monovalent\|bivalent] | | true | AHS | 22 | 1 | 1 |
-| ahs1.blockmode | config htg. blocking mode | enum [off\|auto\|blocking] | | true | AHS | 23 | 1 | 1 |
-| ahs1.blockterm | config of block terminal | enum [n_o\|n_c] | | true | AHS | 24 | 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 (>=0<=100) | % | false | AHS | 29 | 1 | 1 |
-| ahs1.blockremain | remaining blocktime | uint8 (>=0<=254) | minutes | false | AHS | 30 | 1 | 1 |
-| ahs1.blockremaindhw | remaining blocktime dhw | uint8 (>=0<=254) | minutes | false | AHS | 31 | 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
@@ -6310,16 +8072,16 @@ This file has been auto-generated. Do not modify.
| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor |
|-|-|-|-|-|-|-|-|-|
-| outfresh | outdoor fresh air | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 0 | 1 | 1/10 |
-| infresh | indoor fresh air | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 1 | 1 | 1/10 |
-| outexhaust | outdoor exhaust air | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 2 | 1 | 1/10 |
-| inexhaust | indoor exhaust air | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 3 | 1 | 1/10 |
-| ventinspeed | in blower speed | uint8 (>=0<=100) | % | false | DEVICE_DATA | 4 | 1 | 1 |
-| ventoutspeed | out blower speed | uint8 (>=0<=100) | % | false | DEVICE_DATA | 5 | 1 | 1 |
-| ventmode | ventilation mode | enum [auto\|off\|L1\|L2\|L3\|L4\|demand\|sleep\|intense\|bypass\|party\|fireplace] | | true | DEVICE_DATA | 6 | 1 | 1 |
-| airquality | air quality (voc) | uint16 (>=0<=31999) | | false | DEVICE_DATA | 7 | 1 | 1 |
-| airhumidity | relative air humidity | uint8 (>=0<=100) | % | false | DEVICE_DATA | 8 | 1 | 1 |
-| bypass | bypass | boolean | | true | DEVICE_DATA | 9 | 1 | 1 |
+| 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
@@ -6327,117 +8089,153 @@ This file has been auto-generated. Do not modify.
| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor |
|-|-|-|-|-|-|-|-|-|
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 0 | 1 | 1 |
-| dhw.temp | current temperature | uint16 (>=0<=3199) | C | false | DHW | 1 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 2 | 1 | 1/10 |
-| dhw.hydrTemp | hydraulic header temperature | uint16 (>=0<=3199) | C | false | DHW | 3 | 1 | 1/10 |
-| dhw.pump | pump | boolean | | false | DHW | 4 | 1 | 1 |
-| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=254) | C | true | DHW | 5 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 6 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 7 | 1 | 1 |
-| dhw.disinfectiontemp | disinfection temperature | uint8 (>=0<=254) | C | true | DHW | 8 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 9 | 1 | 1 |
-| dhw.circmode | circulation pump mode | enum [off\|on\|auto\|own prog] | | true | DHW | 10 | 1 | 1 |
+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 |
|-|-|-|-|-|-|-|-|-|
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 0 | 1 | 1 |
-| dhw.temp | current temperature | uint16 (>=0<=3199) | C | false | DHW | 1 | 1 | 1/10 |
-| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 2 | 1 | 1/10 |
-| dhw.hydrTemp | hydraulic header temperature | uint16 (>=0<=3199) | C | false | DHW | 3 | 1 | 1/10 |
-| dhw.pump | pump | boolean | | false | DHW | 4 | 1 | 1 |
-| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=254) | C | true | DHW | 5 | 1 | 1 |
-| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 6 | 1 | 1 |
-| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 7 | 1 | 1 |
-| dhw.disinfectiontemp | disinfection temperature | uint8 (>=0<=254) | C | true | DHW | 8 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 9 | 1 | 1 |
-| dhw.circmode | circulation pump mode | enum [off\|on\|auto\|own prog] | | true | DHW | 10 | 1 | 1 |
+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 (>=0<=3199) | C | false | DHW | 1 | 1 | 1/10 |
-| dhw.tempstatus | temperature switch in assigned dhw (MC1) | int8 (>=-126<=126) | | false | DHW | 11 | 1 | 1 |
-| dhw.pump | pump | boolean | | false | DHW | 4 | 1 | 1 |
-| dhw.maxtemp | maximum temperature | uint8 (>=0<=254) | C | true | DHW | 12 | 1 | 1 |
-| dhw.difftemp | start differential temperature | int8 (>=-126<=126) | C | true | DHW | 13 | 1 | 1 |
-| dhw.disinfectiontemp | disinfection temperature | uint8 (>=0<=254) | C | true | DHW | 8 | 1 | 1 |
-| dhw.redtemp | reduced temperature | uint8 (>=0<=254) | C | true | DHW | 14 | 1 | 1 |
-| dhw.requiredtemp | required temperature | uint8 (>=0<=254) | C | true | DHW | 15 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 9 | 1 | 1 |
-| dhw.circmode | circulation pump mode | enum [off\|on\|auto\|own prog] | | true | DHW | 10 | 1 | 1 |
+| 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 (>=0<=3199) | C | false | DHW | 1 | 1 | 1/10 |
-| dhw.tempstatus | temperature switch in assigned dhw (MC1) | int8 (>=-126<=126) | | false | DHW | 11 | 1 | 1 |
-| dhw.pump | pump | boolean | | false | DHW | 4 | 1 | 1 |
-| dhw.maxtemp | maximum temperature | uint8 (>=0<=254) | C | true | DHW | 12 | 1 | 1 |
-| dhw.difftemp | start differential temperature | int8 (>=-126<=126) | C | true | DHW | 13 | 1 | 1 |
-| dhw.disinfectiontemp | disinfection temperature | uint8 (>=0<=254) | C | true | DHW | 8 | 1 | 1 |
-| dhw.redtemp | reduced temperature | uint8 (>=0<=254) | C | true | DHW | 14 | 1 | 1 |
-| dhw.requiredtemp | required temperature | uint8 (>=0<=254) | C | true | DHW | 15 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 9 | 1 | 1 |
-| dhw.circmode | circulation pump mode | enum [off\|on\|auto\|own prog] | | true | DHW | 10 | 1 | 1 |
+| 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 (>=0<=3199) | C | false | DHW | 1 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 16 | 1 | 1/10 |
-| dhw.coldtemp | cold water | uint16 (>=0<=3199) | C | false | DHW | 17 | 1 | 1/10 |
-| dhw.temp5 | temperature 5 | uint16 (>=0<=3199) | C | false | DHW | 18 | 1 | 1/10 |
-| dhw.rettemp | return temperature | uint16 (>=0<=3199) | C | false | DHW | 19 | 1 | 1/10 |
-| dhw.pump | pump | boolean | | false | DHW | 4 | 1 | 1 |
-| dhw.maxtemp | maximum temperature | uint8 (>=0<=254) | C | true | DHW | 12 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 0 | 1 | 1 |
-| dhw.redtemp | reduced temperature | uint8 (>=0<=254) | C | true | DHW | 14 | 1 | 1 |
-| dhw.hottemp | extra hot temperature | uint8 (>=0<=254) | C | true | DHW | 20 | 1 | 1 |
-| dhw.dailytemp | daily temperature | uint8 (>=0<=254) | C | true | DHW | 21 | 1 | 1 |
-| dhw.disinfectiontemp | disinfection temperature | uint8 (>=0<=254) | C | true | DHW | 8 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 9 | 1 | 1 |
-| dhw.circmode | circulation pump mode | enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 10 | 1 | 1 |
-| dhw.circtc | circulation time controlled | boolean | | true | DHW | 22 | 1 | 1 |
-| dhw.keepwarm | keep warm | boolean | | true | DHW | 23 | 1 | 1 |
-| dhw.status2 | status 2 | enum [\|\|\|no heat\|\|\|heat request\|\|disinfecting\|hold] | | false | DHW | 24 | 1 | 1 |
-| dhw.pumpmod | pump modulation | uint8 (>=0<=100) | % | false | DHW | 25 | 1 | 1 |
-| dhw.flow | flow rate | uint16 (>=0<=3199) | l/min | false | DHW | 26 | 1 | 1/10 |
-| dhw.valvereturn | return valve | uint8 (>=0<=100) | % | true | DHW | 27 | 1 | 1 |
-| dhw.deltatret | temp. diff. return valve | uint8 (>=0<=254) | K | true | DHW | 28 | 1 | 1 |
-| dhw.errordisp | error display | enum [off\|normal\|inverted] | | true | DHW | 29 | 1 | 1 |
+| dhw.temp | current temperature | uint16 | C | false | DHW | 1 | 1 | 1/10 |
+| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 16 | 1 | 1/10 |
+| dhw.coldtemp | cold water | uint16 | C | false | DHW | 17 | 1 | 1/10 |
+| dhw.temp5 | temperature 5 | uint16 | C | false | DHW | 18 | 1 | 1/10 |
+| dhw.rettemp | return temperature | uint16 | C | false | DHW | 19 | 1 | 1/10 |
+| dhw.pump | pump | boolean | | false | DHW | 4 | 1 | 1 |
+uint8
+| dhw.maxtemp | maximum temperature | uint8 (>=0<=0) | C | true | DHW | 12 | 1 | 1 |
+uint8
+| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 0 | 1 | 1 |
+uint8
+| dhw.redtemp | reduced temperature | uint8 (>=0<=0) | C | true | DHW | 14 | 1 | 1 |
+uint8
+| dhw.hottemp | extra hot temperature | uint8 (>=0<=0) | C | true | DHW | 20 | 1 | 1 |
+uint8
+| dhw.dailytemp | daily temperature | uint8 (>=0<=0) | C | true | DHW | 21 | 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 |
+| dhw.circtc | circulation time controlled | boolean | | true | DHW | 22 | 1 | 1 |
+| dhw.keepwarm | keep warm | boolean | | true | DHW | 23 | 1 | 1 |
+| dhw.status2 | status 2 | enum | | false | DHW | 24 | 1 | 1 |
+| dhw.pumpmod | pump modulation | uint8 | % | false | DHW | 25 | 1 | 1 |
+| dhw.flow | flow rate | uint16 | l/min | false | DHW | 26 | 1 | 1/10 |
+uint8
+| dhw.valvereturn | return valve | uint8 (>=0<=0) | % | true | DHW | 27 | 1 | 1 |
+uint8
+| dhw.deltatret | temp. diff. return valve | uint8 (>=0<=0) | K | true | DHW | 28 | 1 | 1 |
+| dhw.errordisp | error display | enum | | true | DHW | 29 | 1 | 1 |
### SM200, MS200
| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor |
|-|-|-|-|-|-|-|-|-|
-| dhw.temp | current temperature | uint16 (>=0<=3199) | C | false | DHW | 1 | 1 | 1/10 |
-| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 16 | 1 | 1/10 |
-| dhw.coldtemp | cold water | uint16 (>=0<=3199) | C | false | DHW | 17 | 1 | 1/10 |
-| dhw.temp5 | temperature 5 | uint16 (>=0<=3199) | C | false | DHW | 18 | 1 | 1/10 |
-| dhw.rettemp | return temperature | uint16 (>=0<=3199) | C | false | DHW | 19 | 1 | 1/10 |
-| dhw.pump | pump | boolean | | false | DHW | 4 | 1 | 1 |
-| dhw.maxtemp | maximum temperature | uint8 (>=0<=254) | C | true | DHW | 12 | 1 | 1 |
-| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 0 | 1 | 1 |
-| dhw.redtemp | reduced temperature | uint8 (>=0<=254) | C | true | DHW | 14 | 1 | 1 |
-| dhw.hottemp | extra hot temperature | uint8 (>=0<=254) | C | true | DHW | 20 | 1 | 1 |
-| dhw.dailytemp | daily temperature | uint8 (>=0<=254) | C | true | DHW | 21 | 1 | 1 |
-| dhw.disinfectiontemp | disinfection temperature | uint8 (>=0<=254) | C | true | DHW | 8 | 1 | 1 |
-| dhw.circ | circulation active | boolean | | true | DHW | 9 | 1 | 1 |
-| dhw.circmode | circulation pump mode | enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 10 | 1 | 1 |
-| dhw.circtc | circulation time controlled | boolean | | true | DHW | 22 | 1 | 1 |
-| dhw.keepwarm | keep warm | boolean | | true | DHW | 23 | 1 | 1 |
-| dhw.status2 | status 2 | enum [\|\|\|no heat\|\|\|heat request\|\|disinfecting\|hold] | | false | DHW | 24 | 1 | 1 |
-| dhw.pumpmod | pump modulation | uint8 (>=0<=100) | % | false | DHW | 25 | 1 | 1 |
-| dhw.flow | flow rate | uint16 (>=0<=3199) | l/min | false | DHW | 26 | 1 | 1/10 |
-| dhw.valvereturn | return valve | uint8 (>=0<=100) | % | true | DHW | 27 | 1 | 1 |
-| dhw.deltatret | temp. diff. return valve | uint8 (>=0<=254) | K | true | DHW | 28 | 1 | 1 |
-| dhw.errordisp | error display | enum [off\|normal\|inverted] | | true | DHW | 29 | 1 | 1 |
+| dhw.temp | current temperature | uint16 | C | false | DHW | 1 | 1 | 1/10 |
+| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 16 | 1 | 1/10 |
+| dhw.coldtemp | cold water | uint16 | C | false | DHW | 17 | 1 | 1/10 |
+| dhw.temp5 | temperature 5 | uint16 | C | false | DHW | 18 | 1 | 1/10 |
+| dhw.rettemp | return temperature | uint16 | C | false | DHW | 19 | 1 | 1/10 |
+| dhw.pump | pump | boolean | | false | DHW | 4 | 1 | 1 |
+uint8
+| dhw.maxtemp | maximum temperature | uint8 (>=0<=0) | C | true | DHW | 12 | 1 | 1 |
+uint8
+| dhw.seltemp | selected temperature | uint8 (>=0<=0) | C | true | DHW | 0 | 1 | 1 |
+uint8
+| dhw.redtemp | reduced temperature | uint8 (>=0<=0) | C | true | DHW | 14 | 1 | 1 |
+uint8
+| dhw.hottemp | extra hot temperature | uint8 (>=0<=0) | C | true | DHW | 20 | 1 | 1 |
+uint8
+| dhw.dailytemp | daily temperature | uint8 (>=0<=0) | C | true | DHW | 21 | 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 |
+| dhw.circtc | circulation time controlled | boolean | | true | DHW | 22 | 1 | 1 |
+| dhw.keepwarm | keep warm | boolean | | true | DHW | 23 | 1 | 1 |
+| dhw.status2 | status 2 | enum | | false | DHW | 24 | 1 | 1 |
+| dhw.pumpmod | pump modulation | uint8 | % | false | DHW | 25 | 1 | 1 |
+| dhw.flow | flow rate | uint16 | l/min | false | DHW | 26 | 1 | 1/10 |
+uint8
+| dhw.valvereturn | return valve | uint8 (>=0<=0) | % | true | DHW | 27 | 1 | 1 |
+uint8
+| dhw.deltatret | temp. diff. return valve | uint8 (>=0<=0) | K | true | DHW | 28 | 1 | 1 |
+| dhw.errordisp | error display | enum | | true | DHW | 29 | 1 | 1 |
## Devices of type \_pool
@@ -6445,7 +8243,7 @@ This file has been auto-generated. Do not modify.
| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor |
|-|-|-|-|-|-|-|-|-|
-| pooltemp | pool temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | -1 | 1 | 1/10 |
-| poolshuntstatus | pool shunt status opening/closing | enum [stopped\|opening\|closing\|open\|close] | | false | DEVICE_DATA | -1 | 1 | 1 |
-| poolshunt | pool shunt open/close (0% = pool / 100% = heat) | uint8 (>=0<=100) | % | false | DEVICE_DATA | -1 | 1 | 1 |
+| 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 |
diff --git a/docs/dump_entities.csv b/docs/dump_entities.csv
index c61153681..6711ca04c 100644
--- a/docs/dump_entities.csv
+++ b/docs/dump_entities.csv
@@ -1,165 +1,165 @@
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], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,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,5,0,1,5,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,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,5,0,1/10,8,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,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,5,0,1/10,10,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,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,5,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,5,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,5,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,5,0,1,15,1
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,0,1,18,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,0,1,19,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,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,5,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,5,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,5,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,5,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,5,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,5,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,5,0,1,23,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,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,5,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,5,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,5,0,1,31,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,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,5,0,1,35,2
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,5,0,1,37,28
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,5,0,1,65,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,5,0,1,68,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,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,5,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,5,0,1,72,6
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,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,5,0,1,79,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,mandefrost,manual defrost,cmd [off\|on], ,true,sensor.boiler_manual_defrost,sensor.boiler_mandefrost,5,0,1,84,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.nrg,energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_dhw_energy,sensor.boiler_dhw_nrg,5,9,1/100,0,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgheat,energy heating,uint24 (>=0<=167772),kWh,false,sensor.boiler_energy_heating,sensor.boiler_nrgheat,5,0,1/100,87,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgcool,energy cooling,uint24 (>=0<=167772),kWh,false,sensor.boiler_energy_cooling,sensor.boiler_nrgcool,5,0,1/100,89,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,metertotal,meter total,uint24 (>=0<=167772),kWh,false,sensor.boiler_meter_total,sensor.boiler_metertotal,5,0,1/100,91,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,metercomp,meter compressor,uint24 (>=0<=167772),kWh,false,sensor.boiler_meter_compressor,sensor.boiler_metercomp,5,0,1/100,93,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,metereheat,meter e-heater,uint24 (>=0<=167772),kWh,false,sensor.boiler_meter_e-heater,sensor.boiler_metereheat,5,0,1/100,95,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,meterheat,meter heating,uint24 (>=0<=167772),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/100,97,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,metercool,meter cooling,uint24 (>=0<=167772),kWh,false,sensor.boiler_meter_cooling,sensor.boiler_metercool,5,0,1/100,99,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.meter,meter,uint24 (>=0<=167772),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/100,2,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,uptimetotal,heatpump total uptime,time (>=0<=279620),minutes,false,sensor.boiler_heatpump_total_uptime,sensor.boiler_uptimetotal,5,0,1/60,101,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,uptimecontrol,total operating time heat,time (>=0<=279620),minutes,false,sensor.boiler_total_operating_time_heat,sensor.boiler_uptimecontrol,5,0,1/60,103,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,uptimecompheating,operating time compressor heating,time (>=0<=279620),minutes,false,sensor.boiler_operating_time_compressor_heating,sensor.boiler_uptimecompheating,5,0,1/60,105,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,uptimecompcooling,operating time compressor cooling,time (>=0<=279620),minutes,false,sensor.boiler_operating_time_compressor_cooling,sensor.boiler_uptimecompcooling,5,0,1/60,107,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.uptimecomp,operating time compressor,time (>=0<=279620),minutes,false,sensor.boiler_dhw_operating_time_compressor,sensor.boiler_dhw_uptimecomp,5,9,1/60,4,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,uptimecomppool,operating time compressor pool,time (>=0<=279620),minutes,false,sensor.boiler_operating_time_compressor_pool,sensor.boiler_uptimecomppool,5,0,1/60,109,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,totalcompstarts,total compressor control starts,uint24 (>=0<=16777214), ,false,sensor.boiler_total_compressor_control_starts,sensor.boiler_totalcompstarts,5,0,1,111,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatingstarts,heating control starts,uint24 (>=0<=16777214), ,false,sensor.boiler_heating_control_starts,sensor.boiler_heatingstarts,5,0,1,113,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,coolingstarts,cooling control starts,uint24 (>=0<=16777214), ,false,sensor.boiler_cooling_control_starts,sensor.boiler_coolingstarts,5,0,1,115,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.startshp,starts hp,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts_hp,sensor.boiler_dhw_startshp,5,9,1,6,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,poolstarts,pool control starts,uint24 (>=0<=16777214), ,false,sensor.boiler_pool_control_starts,sensor.boiler_poolstarts,5,0,1,117,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgconstotal,total energy consumption,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_energy_consumption,sensor.boiler_nrgconstotal,5,0,1,119,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgconscomptotal,total energy consumption compressor,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_energy_consumption_compressor,sensor.boiler_nrgconscomptotal,5,0,1,121,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgconscompheating,energy consumption compressor heating,uint24 (>=0<=16777214),kWh,false,sensor.boiler_energy_consumption_compressor_heating,sensor.boiler_nrgconscompheating,5,0,1,123,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.nrgconscomp,energy consumption compressor,uint24 (>=0<=16777214),kWh,false,sensor.boiler_dhw_energy_consumption_compressor,sensor.boiler_dhw_nrgconscomp,5,9,1,8,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgconscompcooling,energy consumption compressor cooling,uint24 (>=0<=16777214),kWh,false,sensor.boiler_energy_consumption_compressor_cooling,sensor.boiler_nrgconscompcooling,5,0,1,125,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgconscomppool,energy consumption compressor pool,uint24 (>=0<=16777214),kWh,false,sensor.boiler_energy_consumption_compressor_pool,sensor.boiler_nrgconscomppool,5,0,1,127,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxelecheatnrgconstotal,total aux elec. heater energy consumption,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_aux_elec._heater_energy_consumption,sensor.boiler_auxelecheatnrgconstotal,5,0,1,129,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxelecheatnrgconsheating,aux elec. heater energy consumption heating,uint24 (>=0<=16777214),kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_heating,sensor.boiler_auxelecheatnrgconsheating,5,0,1,131,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.auxelecheatnrgcons,aux elec. heater energy consumption,uint24 (>=0<=16777214),kWh,false,sensor.boiler_dhw_aux_elec._heater_energy_consumption,sensor.boiler_dhw_auxelecheatnrgcons,5,9,1,10,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxelecheatnrgconspool,aux elec. heater energy consumption pool,uint24 (>=0<=16777214),kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_pool,sensor.boiler_auxelecheatnrgconspool,5,0,1,133,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgsupptotal,total energy supplied,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_energy_supplied,sensor.boiler_nrgsupptotal,5,0,1,135,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgsuppheating,total energy supplied heating,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_energy_supplied_heating,sensor.boiler_nrgsuppheating,5,0,1,137,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.nrgsupp,total energy warm supplied,uint24 (>=0<=16777214),kWh,false,sensor.boiler_dhw_total_energy_warm_supplied,sensor.boiler_dhw_nrgsupp,5,9,1,12,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgsuppcooling,total energy supplied cooling,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_energy_supplied_cooling,sensor.boiler_nrgsuppcooling,5,0,1,139,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgsupppool,total energy supplied pool,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_energy_supplied_pool,sensor.boiler_nrgsupppool,5,0,1,141,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hppower,compressor power output,uint16 (>=0<=3199),kW,false,sensor.boiler_compressor_power_output,sensor.boiler_hppower,5,0,1/10,143,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpmaxpower,compressor max power,uint8 (>=0<=100),%,true,number.boiler_compressor_max_power,number.boiler_hpmaxpower,5,0,1,144,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pvmaxcomp,pv compressor max power,uint8 (>=0<=25),kW,true,number.boiler_pv_compressor_max_power,number.boiler_pvmaxcomp,5,0,1/10,145,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,mandefrost,manual defrost,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_manual_defrost,sensor.boiler_mandefrost,5,0,1,84,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.nrg,energy,uint24,kWh,false,sensor.boiler_dhw_energy,sensor.boiler_dhw_nrg,5,9,1/100,0,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgheat,energy heating,uint24,kWh,false,sensor.boiler_energy_heating,sensor.boiler_nrgheat,5,0,1/100,87,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgcool,energy cooling,uint24,kWh,false,sensor.boiler_energy_cooling,sensor.boiler_nrgcool,5,0,1/100,89,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,metertotal,meter total,uint24,kWh,false,sensor.boiler_meter_total,sensor.boiler_metertotal,5,0,1/100,91,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,metercomp,meter compressor,uint24,kWh,false,sensor.boiler_meter_compressor,sensor.boiler_metercomp,5,0,1/100,93,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,metereheat,meter e-heater,uint24,kWh,false,sensor.boiler_meter_e-heater,sensor.boiler_metereheat,5,0,1/100,95,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/100,97,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,metercool,meter cooling,uint24,kWh,false,sensor.boiler_meter_cooling,sensor.boiler_metercool,5,0,1/100,99,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/100,2,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,uptimetotal,heatpump total uptime,time,minutes,false,sensor.boiler_heatpump_total_uptime,sensor.boiler_uptimetotal,5,0,1/60,101,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,uptimecontrol,total operating time heat,time,minutes,false,sensor.boiler_total_operating_time_heat,sensor.boiler_uptimecontrol,5,0,1/60,103,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,uptimecompheating,operating time compressor heating,time,minutes,false,sensor.boiler_operating_time_compressor_heating,sensor.boiler_uptimecompheating,5,0,1/60,105,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,uptimecompcooling,operating time compressor cooling,time,minutes,false,sensor.boiler_operating_time_compressor_cooling,sensor.boiler_uptimecompcooling,5,0,1/60,107,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.uptimecomp,operating time compressor,time,minutes,false,sensor.boiler_dhw_operating_time_compressor,sensor.boiler_dhw_uptimecomp,5,9,1/60,4,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,uptimecomppool,operating time compressor pool,time,minutes,false,sensor.boiler_operating_time_compressor_pool,sensor.boiler_uptimecomppool,5,0,1/60,109,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,totalcompstarts,total compressor control starts,uint24, ,false,sensor.boiler_total_compressor_control_starts,sensor.boiler_totalcompstarts,5,0,1,111,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatingstarts,heating control starts,uint24, ,false,sensor.boiler_heating_control_starts,sensor.boiler_heatingstarts,5,0,1,113,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,coolingstarts,cooling control starts,uint24, ,false,sensor.boiler_cooling_control_starts,sensor.boiler_coolingstarts,5,0,1,115,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.startshp,starts hp,uint24, ,false,sensor.boiler_dhw_starts_hp,sensor.boiler_dhw_startshp,5,9,1,6,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,poolstarts,pool control starts,uint24, ,false,sensor.boiler_pool_control_starts,sensor.boiler_poolstarts,5,0,1,117,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgconstotal,total energy consumption,uint24,kWh,false,sensor.boiler_total_energy_consumption,sensor.boiler_nrgconstotal,5,0,1,119,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgconscomptotal,total energy consumption compressor,uint24,kWh,false,sensor.boiler_total_energy_consumption_compressor,sensor.boiler_nrgconscomptotal,5,0,1,121,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgconscompheating,energy consumption compressor heating,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_heating,sensor.boiler_nrgconscompheating,5,0,1,123,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.nrgconscomp,energy consumption compressor,uint24,kWh,false,sensor.boiler_dhw_energy_consumption_compressor,sensor.boiler_dhw_nrgconscomp,5,9,1,8,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgconscompcooling,energy consumption compressor cooling,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_cooling,sensor.boiler_nrgconscompcooling,5,0,1,125,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgconscomppool,energy consumption compressor pool,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_pool,sensor.boiler_nrgconscomppool,5,0,1,127,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxelecheatnrgconstotal,total aux elec. heater energy consumption,uint24,kWh,false,sensor.boiler_total_aux_elec._heater_energy_consumption,sensor.boiler_auxelecheatnrgconstotal,5,0,1,129,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxelecheatnrgconsheating,aux elec. heater energy consumption heating,uint24,kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_heating,sensor.boiler_auxelecheatnrgconsheating,5,0,1,131,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.auxelecheatnrgcons,aux elec. heater energy consumption,uint24,kWh,false,sensor.boiler_dhw_aux_elec._heater_energy_consumption,sensor.boiler_dhw_auxelecheatnrgcons,5,9,1,10,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxelecheatnrgconspool,aux elec. heater energy consumption pool,uint24,kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_pool,sensor.boiler_auxelecheatnrgconspool,5,0,1,133,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgsupptotal,total energy supplied,uint24,kWh,false,sensor.boiler_total_energy_supplied,sensor.boiler_nrgsupptotal,5,0,1,135,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgsuppheating,total energy supplied heating,uint24,kWh,false,sensor.boiler_total_energy_supplied_heating,sensor.boiler_nrgsuppheating,5,0,1,137,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.nrgsupp,total energy warm supplied,uint24,kWh,false,sensor.boiler_dhw_total_energy_warm_supplied,sensor.boiler_dhw_nrgsupp,5,9,1,12,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgsuppcooling,total energy supplied cooling,uint24,kWh,false,sensor.boiler_total_energy_supplied_cooling,sensor.boiler_nrgsuppcooling,5,0,1,139,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,nrgsupppool,total energy supplied pool,uint24,kWh,false,sensor.boiler_total_energy_supplied_pool,sensor.boiler_nrgsupppool,5,0,1,141,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hppower,compressor power output,uint16,kW,false,sensor.boiler_compressor_power_output,sensor.boiler_hppower,5,0,1/10,143,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpmaxpower,compressor max power,uint8 (>=0<=0),%,true,number.boiler_compressor_max_power,number.boiler_hpmaxpower,5,0,1,144,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pvmaxcomp,pv compressor max power,uint8 (>=0<=0),kW,true,number.boiler_pv_compressor_max_power,number.boiler_pvmaxcomp,5,0,1/10,145,1
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,powerreduction,power reduction,uint8 (>=30<=60),%,true,number.boiler_power_reduction,number.boiler_powerreduction,5,0,10,146,1
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpsetdiffpress,set differential pressure,uint8 (>=150<=750),mbar,true,number.boiler_set_differential_pressure,number.boiler_hpsetdiffpress,5,0,50,147,1
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcompon,hp compressor,boolean, ,false,binary_sensor.boiler_hp_compressor,binary_sensor.boiler_hpcompon,5,0,1,148,1
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpactivity,compressor activity,enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm], ,false,sensor.boiler_compressor_activity,sensor.boiler_hpactivity,5,0,1,149,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpbrinepumpspd,brine pump speed,uint8 (>=0<=100),%,false,sensor.boiler_brine_pump_speed,sensor.boiler_hpbrinepumpspd,5,0,1,150,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpbrinepumpspd,brine pump speed,uint8,%,false,sensor.boiler_brine_pump_speed,sensor.boiler_hpbrinepumpspd,5,0,1,150,1
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpswitchvalve,switch valve,boolean, ,false,binary_sensor.boiler_switch_valve,binary_sensor.boiler_hpswitchvalve,5,0,1,151,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcompspd,compressor speed,uint8 (>=0<=100),%,false,sensor.boiler_compressor_speed,sensor.boiler_hpcompspd,5,0,1,152,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptargetspd,compressor target speed,uint8 (>=0<=100),%,false,sensor.boiler_compressor_target_speed,sensor.boiler_hptargetspd,5,0,1,153,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcircspd,circulation pump speed,uint8 (>=0<=100),%,false,sensor.boiler_circulation_pump_speed,sensor.boiler_hpcircspd,5,0,1,154,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,recvalve,receiver valve VR0,uint8 (>=0<=100),%,false,sensor.boiler_receiver_valve_VR0,sensor.boiler_recvalve,5,0,1,155,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,expvalve,expansion valve VR1,uint8 (>=0<=100),%,false,sensor.boiler_expansion_valve_VR1,sensor.boiler_expvalve,5,0,1,156,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpbrinein,brine in/evaporator,int16 (>=-3199<=3199),C,false,sensor.boiler_brine_in/evaporator,sensor.boiler_hpbrinein,5,0,1/10,157,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpbrineout,brine out/condenser,int16 (>=-3199<=3199),C,false,sensor.boiler_brine_out/condenser,sensor.boiler_hpbrineout,5,0,1/10,158,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptc0,heat carrier return (TC0),int16 (>=-3199<=3199),C,false,sensor.boiler_heat_carrier_return_(TC0),sensor.boiler_hptc0,5,0,1/10,159,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptc1,heat carrier forward (TC1),int16 (>=-3199<=3199),C,false,sensor.boiler_heat_carrier_forward_(TC1),sensor.boiler_hptc1,5,0,1/10,160,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptc3,condenser temperature (TC3),int16 (>=-3199<=3199),C,false,sensor.boiler_condenser_temperature_(TC3),sensor.boiler_hptc3,5,0,1/10,161,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr1,compressor temperature (TR1),int16 (>=-3199<=3199),C,false,sensor.boiler_compressor_temperature_(TR1),sensor.boiler_hptr1,5,0,1/10,162,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr3,refrigerant temperature liquid side (condenser output) (TR3),int16 (>=-3199<=3199),C,false,sensor.boiler_refrigerant_temperature_liquid_side_(condenser_output)_(TR3),sensor.boiler_hptr3,5,0,1/10,163,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr4,evaporator inlet temperature (TR4),int16 (>=-3199<=3199),C,false,sensor.boiler_evaporator_inlet_temperature_(TR4),sensor.boiler_hptr4,5,0,1/10,164,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr5,compressor inlet temperature (TR5),int16 (>=-3199<=3199),C,false,sensor.boiler_compressor_inlet_temperature_(TR5),sensor.boiler_hptr5,5,0,1/10,165,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr6,compressor outlet temperature (TR6),int16 (>=-3199<=3199),C,false,sensor.boiler_compressor_outlet_temperature_(TR6),sensor.boiler_hptr6,5,0,1/10,166,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr7,refrigerant temperature gas side (condenser input) (TR7),int16 (>=-3199<=3199),C,false,sensor.boiler_refrigerant_temperature_gas_side_(condenser_input)_(TR7),sensor.boiler_hptr7,5,0,1/10,167,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptl2,air inlet temperature (TL2),int16 (>=-3199<=3199),C,false,sensor.boiler_air_inlet_temperature_(TL2),sensor.boiler_hptl2,5,0,1/10,168,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hppl1,low pressure side temperature (PL1),int16 (>=-3199<=3199),C,false,sensor.boiler_low_pressure_side_temperature_(PL1),sensor.boiler_hppl1,5,0,1/10,169,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpph1,high pressure side temperature (PH1),int16 (>=-3199<=3199),C,false,sensor.boiler_high_pressure_side_temperature_(PH1),sensor.boiler_hpph1,5,0,1/10,170,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpta4,drain pan temp (TA4),int16 (>=-3199<=3199),C,false,sensor.boiler_drain_pan_temp_(TA4),sensor.boiler_hpta4,5,0,1/10,171,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptw1,reservoir temp (TW1),int16 (>=-3199<=3199),C,false,sensor.boiler_reservoir_temp_(TW1),sensor.boiler_hptw1,5,0,1/10,172,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,poolsettemp,pool set temperature,uint8 (>=0<=127),C,true,number.boiler_pool_set_temperature,number.boiler_poolsettemp,5,0,1/2,173,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcompspd,compressor speed,uint8,%,false,sensor.boiler_compressor_speed,sensor.boiler_hpcompspd,5,0,1,152,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptargetspd,compressor target speed,uint8,%,false,sensor.boiler_compressor_target_speed,sensor.boiler_hptargetspd,5,0,1,153,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcircspd,circulation pump speed,uint8,%,false,sensor.boiler_circulation_pump_speed,sensor.boiler_hpcircspd,5,0,1,154,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,recvalve,receiver valve VR0,uint8,%,false,sensor.boiler_receiver_valve_VR0,sensor.boiler_recvalve,5,0,1,155,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,expvalve,expansion valve VR1,uint8,%,false,sensor.boiler_expansion_valve_VR1,sensor.boiler_expvalve,5,0,1,156,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpbrinein,brine in/evaporator,int16,C,false,sensor.boiler_brine_in/evaporator,sensor.boiler_hpbrinein,5,0,1/10,157,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpbrineout,brine out/condenser,int16,C,false,sensor.boiler_brine_out/condenser,sensor.boiler_hpbrineout,5,0,1/10,158,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptc0,heat carrier return (TC0),int16,C,false,sensor.boiler_heat_carrier_return_(TC0),sensor.boiler_hptc0,5,0,1/10,159,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptc1,heat carrier forward (TC1),int16,C,false,sensor.boiler_heat_carrier_forward_(TC1),sensor.boiler_hptc1,5,0,1/10,160,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptc3,condenser temperature (TC3),int16,C,false,sensor.boiler_condenser_temperature_(TC3),sensor.boiler_hptc3,5,0,1/10,161,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr1,compressor temperature (TR1),int16,C,false,sensor.boiler_compressor_temperature_(TR1),sensor.boiler_hptr1,5,0,1/10,162,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr3,refrigerant temperature liquid side (condenser output) (TR3),int16,C,false,sensor.boiler_refrigerant_temperature_liquid_side_(condenser_output)_(TR3),sensor.boiler_hptr3,5,0,1/10,163,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr4,evaporator inlet temperature (TR4),int16,C,false,sensor.boiler_evaporator_inlet_temperature_(TR4),sensor.boiler_hptr4,5,0,1/10,164,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr5,compressor inlet temperature (TR5),int16,C,false,sensor.boiler_compressor_inlet_temperature_(TR5),sensor.boiler_hptr5,5,0,1/10,165,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr6,compressor outlet temperature (TR6),int16,C,false,sensor.boiler_compressor_outlet_temperature_(TR6),sensor.boiler_hptr6,5,0,1/10,166,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptr7,refrigerant temperature gas side (condenser input) (TR7),int16,C,false,sensor.boiler_refrigerant_temperature_gas_side_(condenser_input)_(TR7),sensor.boiler_hptr7,5,0,1/10,167,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptl2,air inlet temperature (TL2),int16,C,false,sensor.boiler_air_inlet_temperature_(TL2),sensor.boiler_hptl2,5,0,1/10,168,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hppl1,low pressure side temperature (PL1),int16,C,false,sensor.boiler_low_pressure_side_temperature_(PL1),sensor.boiler_hppl1,5,0,1/10,169,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpph1,high pressure side temperature (PH1),int16,C,false,sensor.boiler_high_pressure_side_temperature_(PH1),sensor.boiler_hpph1,5,0,1/10,170,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpta4,drain pan temp (TA4),int16,C,false,sensor.boiler_drain_pan_temp_(TA4),sensor.boiler_hpta4,5,0,1/10,171,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hptw1,reservoir temp (TW1),int16,C,false,sensor.boiler_reservoir_temp_(TW1),sensor.boiler_hptw1,5,0,1/10,172,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,poolsettemp,pool set temperature,uint8 (>=0<=0),C,true,number.boiler_pool_set_temperature,number.boiler_poolsettemp,5,0,1/2,173,1
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin1,input 1 state,boolean, ,false,binary_sensor.boiler_input_1_state,binary_sensor.boiler_hpin1,5,0,1,174,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin1opt,input 1 options,string, ,true,sensor.boiler_input_1_options,sensor.boiler_hpin1opt,5,0,1,175,8
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin1opt,input 1 options,string (>=0<=0), ,true,sensor.boiler_input_1_options,sensor.boiler_hpin1opt,5,0,1,175,8
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin2,input 2 state,boolean, ,false,binary_sensor.boiler_input_2_state,binary_sensor.boiler_hpin2,5,0,1,183,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin2opt,input 2 options,string, ,true,sensor.boiler_input_2_options,sensor.boiler_hpin2opt,5,0,1,184,8
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin2opt,input 2 options,string (>=0<=0), ,true,sensor.boiler_input_2_options,sensor.boiler_hpin2opt,5,0,1,184,8
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin3,input 3 state,boolean, ,false,binary_sensor.boiler_input_3_state,binary_sensor.boiler_hpin3,5,0,1,192,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin3opt,input 3 options,string, ,true,sensor.boiler_input_3_options,sensor.boiler_hpin3opt,5,0,1,193,8
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin3opt,input 3 options,string (>=0<=0), ,true,sensor.boiler_input_3_options,sensor.boiler_hpin3opt,5,0,1,193,8
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin4,input 4 state,boolean, ,false,binary_sensor.boiler_input_4_state,binary_sensor.boiler_hpin4,5,0,1,201,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin4opt,input 4 options,string, ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt,5,0,1,202,8
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,maxheatcomp,heat limit compressor,enum [0 kW\|3 kW\|6 kW\|9 kW], ,true,select.boiler_heat_limit_compressor,select.boiler_maxheatcomp,5,0,1,210,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,maxheatheat,heat limit heating,enum [3 kW\|6 kW\|9 kW], ,true,select.boiler_heat_limit_heating,select.boiler_maxheatheat,5,0,1,211,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.maxheat,heat limit,enum [3 kW\|6 kW\|9 kW], ,true,select.boiler_dhw_heat_limit,select.boiler_dhw_maxheat,5,9,1,14,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheatersource,aux heater source,enum [not installed\|electric heater\|exclusive\|parallel\|hybrid], ,true,select.boiler_aux_heater_source,select.boiler_auxheatersource,5,0,1,212,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pvcooling,cooling only with PV,boolean, ,true,switch.boiler_cooling_only_with_PV,switch.boiler_pvcooling,5,0,1,213,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheateronly,aux heater only,boolean, ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly,5,0,1,214,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheateroff,disable aux heater,boolean, ,true,switch.boiler_disable_aux_heater,switch.boiler_auxheateroff,5,0,1,215,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpin4opt,input 4 options,string (>=0<=0), ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt,5,0,1,202,8
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,maxheatcomp,heat limit compressor,enum [0 kW\|3 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_compressor,select.boiler_maxheatcomp,5,0,1,210,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,maxheatheat,heat limit heating,enum [3 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_heating,select.boiler_maxheatheat,5,0,1,211,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.maxheat,heat limit,enum [3 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_dhw_heat_limit,select.boiler_dhw_maxheat,5,9,1,14,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheatersource,aux heater source,enum [not installed\|electric heater\|exclusive\|parallel\|hybrid] (>=0<=0), ,true,select.boiler_aux_heater_source,select.boiler_auxheatersource,5,0,1,212,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,pvcooling,cooling only with PV,boolean (>=0<=0), ,true,switch.boiler_cooling_only_with_PV,switch.boiler_pvcooling,5,0,1,213,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheateronly,aux heater only,boolean (>=0<=0), ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly,5,0,1,214,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheateroff,disable aux heater,boolean (>=0<=0), ,true,switch.boiler_disable_aux_heater,switch.boiler_auxheateroff,5,0,1,215,1
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheaterstatus,aux heater status,enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm], ,false,sensor.boiler_aux_heater_status,sensor.boiler_auxheaterstatus,5,0,1,216,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheaterlevel,aux heater level,uint8 (>=0<=100),%,false,sensor.boiler_aux_heater_level,sensor.boiler_auxheaterlevel,5,0,1,217,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheaterlevel,aux heater level,uint8,%,false,sensor.boiler_aux_heater_level,sensor.boiler_auxheaterlevel,5,0,1,217,1
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheaterdelay,aux heater on delay,uint16 (>=10<=1000),K*min,true,number.boiler_aux_heater_on_delay,number.boiler_auxheaterdelay,5,0,10,218,1
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxmaxlimit,aux heater max limit,uint8 (>=0<=10),K,true,number.boiler_aux_heater_max_limit,number.boiler_auxmaxlimit,5,0,1/10,219,1
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxlimitstart,aux heater limit start,uint8 (>=0<=10),K,true,number.boiler_aux_heater_limit_start,number.boiler_auxlimitstart,5,0,1/10,220,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheatrmode,aux heater mode,enum [eco\|comfort], ,true,select.boiler_aux_heater_mode,select.boiler_auxheatrmode,5,0,1,221,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheatrmode,aux heater mode,enum [eco\|comfort] (>=0<=0), ,true,select.boiler_aux_heater_mode,select.boiler_auxheatrmode,5,0,1,221,1
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hphystheat,on/off hyst heat,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_heat,number.boiler_hphystheat,5,0,5,222,1
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hphystcool,on/off hyst cool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_cool,number.boiler_hphystcool,5,0,5,223,1
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hphystpool,on/off hyst pool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_pool,number.boiler_hphystpool,5,0,5,224,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,silentmode,silent mode,enum [off\|auto\|on], ,true,select.boiler_silent_mode,select.boiler_silentmode,5,0,1,225,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,silentfrom,silent mode from,uint8 (>=0<=3810),minutes,true,number.boiler_silent_mode_from,number.boiler_silentfrom,5,0,15,226,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,silentto,silent mode to,uint8 (>=0<=3810),minutes,true,number.boiler_silent_mode_to,number.boiler_silentto,5,0,15,227,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,mintempsilent,min outside temp for silent mode,int8 (>=-126<=126),C,true,number.boiler_min_outside_temp_for_silent_mode,number.boiler_mintempsilent,5,0,1,228,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,tempparmode,outside temp parallel mode,int8 (>=-126<=126),C,true,number.boiler_outside_temp_parallel_mode,number.boiler_tempparmode,5,0,1,229,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheatmix,aux heater mixing valve,int8 (>=-100<=100),%,false,sensor.boiler_aux_heater_mixing_valve,sensor.boiler_auxheatmix,5,0,1,230,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,silentmode,silent mode,enum [off\|auto\|on] (>=0<=0), ,true,select.boiler_silent_mode,select.boiler_silentmode,5,0,1,225,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,silentfrom,silent mode from,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_from,number.boiler_silentfrom,5,0,15,226,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,silentto,silent mode to,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_to,number.boiler_silentto,5,0,15,227,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,mintempsilent,min outside temp for silent mode,int8 (>=0<=0),C,true,number.boiler_min_outside_temp_for_silent_mode,number.boiler_mintempsilent,5,0,1,228,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,tempparmode,outside temp parallel mode,int8 (>=0<=0),C,true,number.boiler_outside_temp_parallel_mode,number.boiler_tempparmode,5,0,1,229,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,auxheatmix,aux heater mixing valve,int8,%,false,sensor.boiler_aux_heater_mixing_valve,sensor.boiler_auxheatmix,5,0,1,230,1
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,tempdiffheat,temp diff TC3/TC0 heat,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_heat,number.boiler_tempdiffheat,5,0,1/10,231,1
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,tempdiffcool,temp diff TC3/TC0 cool,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_cool,number.boiler_tempdiffcool,5,0,1/10,232,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,vpcooling,valve/pump cooling,boolean, ,true,switch.boiler_valve/pump_cooling,switch.boiler_vpcooling,5,0,1,233,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatcable,heating cable,boolean, ,true,switch.boiler_heating_cable,switch.boiler_heatcable,5,0,1,234,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,vc0valve,VC0 valve,boolean, ,true,switch.boiler_VC0_valve,switch.boiler_vc0valve,5,0,1,235,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,primepump,primary heatpump,boolean, ,true,switch.boiler_primary_heatpump,switch.boiler_primepump,5,0,1,236,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,primepumpmod,primary heatpump modulation,uint8 (>=0<=100),%,true,number.boiler_primary_heatpump_modulation,number.boiler_primepumpmod,5,0,1,237,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hp3way,3-way valve,boolean, ,true,switch.boiler_3-way_valve,switch.boiler_hp3way,5,0,1,238,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,elheatstep1,el. heater step 1,boolean, ,true,switch.boiler_el._heater_step_1,switch.boiler_elheatstep1,5,0,1,239,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,elheatstep2,el. heater step 2,boolean, ,true,switch.boiler_el._heater_step_2,switch.boiler_elheatstep2,5,0,1,240,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,elheatstep3,el. heater step 3,boolean, ,true,switch.boiler_el._heater_step_3,switch.boiler_elheatstep3,5,0,1,241,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,vpcooling,valve/pump cooling,boolean (>=0<=0), ,true,switch.boiler_valve/pump_cooling,switch.boiler_vpcooling,5,0,1,233,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,heatcable,heating cable,boolean (>=0<=0), ,true,switch.boiler_heating_cable,switch.boiler_heatcable,5,0,1,234,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,vc0valve,VC0 valve,boolean (>=0<=0), ,true,switch.boiler_VC0_valve,switch.boiler_vc0valve,5,0,1,235,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,primepump,primary heatpump,boolean (>=0<=0), ,true,switch.boiler_primary_heatpump,switch.boiler_primepump,5,0,1,236,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,primepumpmod,primary heatpump modulation,uint8 (>=0<=0),%,true,number.boiler_primary_heatpump_modulation,number.boiler_primepumpmod,5,0,1,237,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hp3way,3-way valve,boolean (>=0<=0), ,true,switch.boiler_3-way_valve,switch.boiler_hp3way,5,0,1,238,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,elheatstep1,el. heater step 1,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_1,switch.boiler_elheatstep1,5,0,1,239,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,elheatstep2,el. heater step 2,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_2,switch.boiler_elheatstep2,5,0,1,240,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,elheatstep3,el. heater step 3,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_3,switch.boiler_elheatstep3,5,0,1,241,1
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpea0,condensate reservoir heating (EA0),boolean, ,false,binary_sensor.boiler_condensate_reservoir_heating_(EA0),binary_sensor.boiler_hpea0,5,0,1,242,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hppumpmode,primary heatpump mode,enum [auto\|continuous], ,true,select.boiler_primary_heatpump_mode,select.boiler_hppumpmode,5,0,1,243,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hppumpmode,primary heatpump mode,enum [auto\|continuous] (>=0<=0), ,true,select.boiler_primary_heatpump_mode,select.boiler_hppumpmode,5,0,1,243,1
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,fan,fan,uint8 (>=20<=100),%,true,number.boiler_fan,number.boiler_fan,5,0,1,244,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,fanspd,fan speed,uint8 (>=0<=100),%,false,sensor.boiler_fan_speed,sensor.boiler_fanspd,5,0,1,245,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,shutdown,shutdown,cmd [off\|on], ,true,sensor.boiler_shutdown,sensor.boiler_shutdown,5,0,1,246,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcurrpower,compressor current power,uint16 (>=0<=31999),W,false,sensor.boiler_compressor_current_power,sensor.boiler_hpcurrpower,5,0,1,247,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hppowerlimit,power limit,uint16 (>=0<=31999),W,true,number.boiler_power_limit,number.boiler_hppowerlimit,5,0,1,248,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.alternatingop,alternating operation,boolean, ,true,switch.boiler_dhw_alternating_operation,switch.boiler_dhw_alternatingop,5,9,1,15,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,fanspd,fan speed,uint8,%,false,sensor.boiler_fan_speed,sensor.boiler_fanspd,5,0,1,245,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,shutdown,shutdown,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_shutdown,sensor.boiler_shutdown,5,0,1,246,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hpcurrpower,compressor current power,uint16,W,false,sensor.boiler_compressor_current_power,sensor.boiler_hpcurrpower,5,0,1,247,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,hppowerlimit,power limit,uint16 (>=0<=0),W,true,number.boiler_power_limit,number.boiler_hppowerlimit,5,0,1,248,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.alternatingop,alternating operation,boolean (>=0<=0), ,true,switch.boiler_dhw_alternating_operation,switch.boiler_dhw_alternatingop,5,9,1,15,1
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.altopprioheat,prioritise heating during dhw,uint8 (>=20<=120),minutes,true,number.boiler_dhw_prioritise_heating_during_dhw,number.boiler_dhw_altopprioheat,5,9,1,16,1
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.altopprio,prioritise dhw during heating,uint8 (>=30<=120),minutes,true,number.boiler_dhw_prioritise_dhw_during_heating,number.boiler_dhw_altopprio,5,9,1,17,1
"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,5,9,1,18,1
@@ -168,2552 +168,2552 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/
"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.comfdiff,comfort diff,uint8 (>=4<=15),K,true,number.boiler_dhw_comfort_diff,number.boiler_dhw_comfdiff,5,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,5,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,5,9,1,23,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.comfstop,comfort stop temp,uint8 (>=0<=254),C,true,number.boiler_dhw_comfort_stop_temp,number.boiler_dhw_comfstop,5,9,1,24,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.ecostop,eco stop temp,uint8 (>=0<=254),C,true,number.boiler_dhw_eco_stop_temp,number.boiler_dhw_ecostop,5,9,1,25,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.ecoplusstop,eco+ stop temp,uint8 (>=0<=254),C,true,number.boiler_dhw_eco+_stop_temp,number.boiler_dhw_ecoplusstop,5,9,1,26,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.hpcircpump,circulation pump available during dhw,boolean, ,true,switch.boiler_dhw_circulation_pump_available_during_dhw,switch.boiler_dhw_hpcircpump,5,9,1,27,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,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,5,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,5,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,5,9,1,39,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,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,5,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,5,9,1,42,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,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,5,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,5,9,1,44,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,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,5,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,5,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,5,9,1,47,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,63,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"Greenstar 2000",boiler,11,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"Greenstar 2000",boiler,11,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"Greenstar 2000",boiler,11,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"CS5800i, CS6800i, WLW176i, WLW186i",boiler,8,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"Greenstar 2000",boiler,11,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"Greenstar 2000",boiler,11,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"Greenstar 2000",boiler,11,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"Greenstar 2000",boiler,11,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"Greenstar 2000",boiler,11,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,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,5,0,1,5,1
-"Greenstar 2000",boiler,11,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"Greenstar 2000",boiler,11,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"Greenstar 2000",boiler,11,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"Greenstar 2000",boiler,11,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"Greenstar 2000",boiler,11,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"Greenstar 2000",boiler,11,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"Greenstar 2000",boiler,11,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"Greenstar 2000",boiler,11,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"Greenstar 2000",boiler,11,exhausttemp,exhaust temperature,uint16 (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
+"Greenstar 2000",boiler,11,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
+"Greenstar 2000",boiler,11,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
+"Greenstar 2000",boiler,11,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
+"Greenstar 2000",boiler,11,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
+"Greenstar 2000",boiler,11,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
+"Greenstar 2000",boiler,11,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
+"Greenstar 2000",boiler,11,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"Greenstar 2000",boiler,11,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"Greenstar 2000",boiler,11,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
"Greenstar 2000",boiler,11,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1
"Greenstar 2000",boiler,11,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1
-"Greenstar 2000",boiler,11,flamecurr,flame current,uint16 (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
+"Greenstar 2000",boiler,11,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
"Greenstar 2000",boiler,11,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1
"Greenstar 2000",boiler,11,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1
"Greenstar 2000",boiler,11,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1
-"Greenstar 2000",boiler,11,burnminpower,burner min power,uint8 (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
+"Greenstar 2000",boiler,11,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
"Greenstar 2000",boiler,11,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1
"Greenstar 2000",boiler,11,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1
-"Greenstar 2000",boiler,11,absburnpow,burner current power (absolute),uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
-"Greenstar 2000",boiler,11,heatblock,heating block,uint16 (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
+"Greenstar 2000",boiler,11,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
+"Greenstar 2000",boiler,11,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
"Greenstar 2000",boiler,11,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1
"Greenstar 2000",boiler,11,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1
"Greenstar 2000",boiler,11,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1
"Greenstar 2000",boiler,11,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1
-"Greenstar 2000",boiler,11,curveon,heatingcurve on,boolean, ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
+"Greenstar 2000",boiler,11,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
"Greenstar 2000",boiler,11,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1
"Greenstar 2000",boiler,11,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1
"Greenstar 2000",boiler,11,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1
-"Greenstar 2000",boiler,11,nofrostmode,nofrost mode,boolean, ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
+"Greenstar 2000",boiler,11,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
"Greenstar 2000",boiler,11,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1
-"Greenstar 2000",boiler,11,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"Greenstar 2000",boiler,11,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"Greenstar 2000",boiler,11,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"Greenstar 2000",boiler,11,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"Greenstar 2000",boiler,11,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"Greenstar 2000",boiler,11,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,0,1,18,1
-"Greenstar 2000",boiler,11,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,0,1,19,1
-"Greenstar 2000",boiler,11,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,1
+"Greenstar 2000",boiler,11,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,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,5,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,5,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,5,0,1,20,1
"Greenstar 2000",boiler,11,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,5,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,5,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,5,0,1,23,1
-"Greenstar 2000",boiler,11,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"Greenstar 2000",boiler,11,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"Greenstar 2000",boiler,11,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"Greenstar 2000",boiler,11,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"Greenstar 2000",boiler,11,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"Greenstar 2000",boiler,11,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"Greenstar 2000",boiler,11,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"Greenstar 2000",boiler,11,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
+"Greenstar 2000",boiler,11,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,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,5,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,5,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,5,0,1,31,2
+"Greenstar 2000",boiler,11,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,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,5,0,1,35,2
"Greenstar 2000",boiler,11,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,5,0,1,37,28
"Greenstar 2000",boiler,11,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,5,0,1,65,2
-"Greenstar 2000",boiler,11,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"Greenstar 2000",boiler,11,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
"Greenstar 2000",boiler,11,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,5,0,1,68,2
-"Greenstar 2000",boiler,11,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"Greenstar 2000",boiler,11,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"Greenstar 2000",boiler,11,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"Greenstar 2000",boiler,11,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"Greenstar 2000",boiler,11,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,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,5,0,1,71,1
+"Greenstar 2000",boiler,11,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
+"Greenstar 2000",boiler,11,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
"Greenstar 2000",boiler,11,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,5,0,1,79,1
-"Greenstar 2000",boiler,11,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"Greenstar 2000",boiler,11,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"Greenstar 2000",boiler,11,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"Greenstar 2000",boiler,11,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"Greenstar 2000",boiler,11,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"Greenstar 2000",boiler,11,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"Greenstar 2000",boiler,11,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"Greenstar 2000",boiler,11,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"Greenstar 2000",boiler,11,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"Greenstar 2000",boiler,11,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"Greenstar 2000",boiler,11,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"Greenstar 2000",boiler,11,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"Greenstar 2000",boiler,11,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"Greenstar 2000",boiler,11,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"Greenstar 2000",boiler,11,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"Greenstar 2000",boiler,11,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"Greenstar 2000",boiler,11,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"Greenstar 2000",boiler,11,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"Greenstar 2000",boiler,11,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"Greenstar 2000",boiler,11,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"Greenstar 2000",boiler,11,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"Greenstar 2000",boiler,11,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"Greenstar 2000",boiler,11,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"Greenstar 2000",boiler,11,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"Greenstar 2000",boiler,11,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"Greenstar 2000",boiler,11,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"Greenstar 2000",boiler,11,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"Greenstar 2000",boiler,11,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"Greenstar 2000",boiler,11,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"Greenstar 2000",boiler,11,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"Greenstar 2000",boiler,11,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"Greenstar 2000",boiler,11,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,1
+"Greenstar 2000",boiler,11,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,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,5,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,5,9,1,39,1
-"Greenstar 2000",boiler,11,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,1
+"Greenstar 2000",boiler,11,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,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,5,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,5,9,1,42,1
-"Greenstar 2000",boiler,11,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,1
+"Greenstar 2000",boiler,11,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,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,5,9,1,44,1
-"Greenstar 2000",boiler,11,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"Greenstar 2000",boiler,11,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,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,5,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,5,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,5,9,1,47,1
-"Greenstar 2000",boiler,11,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"Greenstar 2000",boiler,11,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"Greenstar 2000",boiler,11,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"Greenstar 2000",boiler,11,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"Greenstar 2000",boiler,11,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"Greenstar 2000",boiler,11,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"Greenstar 2000",boiler,11,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"Greenstar 2000",boiler,11,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"Greenstar 2000",boiler,11,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"Greenstar 2000",boiler,11,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1/10,54,1
+"Greenstar 2000",boiler,11,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,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,5,9,1,56,1
+"Greenstar 2000",boiler,11,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,1
"Greenstar 2000",boiler,11,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,5,9,1,58,1
"Greenstar 2000",boiler,11,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,5,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,5,9,1,60,1
"Greenstar 2000",boiler,11,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,5,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,5,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,5,9,1,63,1
-"Greenstar 2000",boiler,11,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"Greenstar 2000",boiler,11,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"Greenstar 2000",boiler,11,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"Greenstar 2000",boiler,11,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"Greenstar 2000",boiler,11,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"Greenstar 2000",boiler,11,nompower,nominal Power,uint8 (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
-"Greenstar 2000",boiler,11,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"Greenstar 2000",boiler,11,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"Greenstar 2000",boiler,11,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"Greenstar 2000",boiler,11,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"Greenstar 2000",boiler,11,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
+"Greenstar 2000",boiler,11,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
"Greenstar 2000",boiler,11,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2
"Greenstar 2000",boiler,11,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
-"C1200W",boiler,12,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"C1200W",boiler,12,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"C1200W",boiler,12,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"C1200W",boiler,12,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"C1200W",boiler,12,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"C1200W",boiler,12,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"C1200W",boiler,12,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"C1200W",boiler,12,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,0,1,4,1
"C1200W",boiler,12,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,5,0,1,5,1
-"C1200W",boiler,12,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"C1200W",boiler,12,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"C1200W",boiler,12,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"C1200W",boiler,12,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"C1200W",boiler,12,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"C1200W",boiler,12,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"C1200W",boiler,12,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"C1200W",boiler,12,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"C1200W",boiler,12,exhausttemp,exhaust temperature,uint16 (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
+"C1200W",boiler,12,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
+"C1200W",boiler,12,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
+"C1200W",boiler,12,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
+"C1200W",boiler,12,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
+"C1200W",boiler,12,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
+"C1200W",boiler,12,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
+"C1200W",boiler,12,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"C1200W",boiler,12,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"C1200W",boiler,12,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
"C1200W",boiler,12,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1
"C1200W",boiler,12,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1
-"C1200W",boiler,12,flamecurr,flame current,uint16 (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
+"C1200W",boiler,12,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
"C1200W",boiler,12,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1
"C1200W",boiler,12,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1
"C1200W",boiler,12,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1
-"C1200W",boiler,12,burnminpower,burner min power,uint8 (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
+"C1200W",boiler,12,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
"C1200W",boiler,12,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1
"C1200W",boiler,12,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1
-"C1200W",boiler,12,absburnpow,burner current power (absolute),uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
-"C1200W",boiler,12,heatblock,heating block,uint16 (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
+"C1200W",boiler,12,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
+"C1200W",boiler,12,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
"C1200W",boiler,12,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1
"C1200W",boiler,12,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1
"C1200W",boiler,12,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1
"C1200W",boiler,12,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1
-"C1200W",boiler,12,curveon,heatingcurve on,boolean, ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
+"C1200W",boiler,12,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
"C1200W",boiler,12,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1
"C1200W",boiler,12,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1
"C1200W",boiler,12,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1
-"C1200W",boiler,12,nofrostmode,nofrost mode,boolean, ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
+"C1200W",boiler,12,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
"C1200W",boiler,12,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1
-"C1200W",boiler,12,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"C1200W",boiler,12,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"C1200W",boiler,12,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"C1200W",boiler,12,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"C1200W",boiler,12,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"C1200W",boiler,12,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,0,1,18,1
-"C1200W",boiler,12,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,0,1,19,1
-"C1200W",boiler,12,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,1
+"C1200W",boiler,12,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,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,5,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,5,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,5,0,1,20,1
"C1200W",boiler,12,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,5,0,1,21,1
"C1200W",boiler,12,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,5,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,5,0,1,23,1
-"C1200W",boiler,12,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"C1200W",boiler,12,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"C1200W",boiler,12,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"C1200W",boiler,12,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"C1200W",boiler,12,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"C1200W",boiler,12,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"C1200W",boiler,12,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"C1200W",boiler,12,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
+"C1200W",boiler,12,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
+"C1200W",boiler,12,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,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,5,0,1,29,2
+"C1200W",boiler,12,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
+"C1200W",boiler,12,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
+"C1200W",boiler,12,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
"C1200W",boiler,12,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,5,0,1,37,28
"C1200W",boiler,12,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,5,0,1,65,2
-"C1200W",boiler,12,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"C1200W",boiler,12,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
"C1200W",boiler,12,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,5,0,1,68,2
-"C1200W",boiler,12,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"C1200W",boiler,12,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"C1200W",boiler,12,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"C1200W",boiler,12,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"C1200W",boiler,12,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,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,5,0,1,71,1
+"C1200W",boiler,12,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
+"C1200W",boiler,12,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
"C1200W",boiler,12,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,5,0,1,79,1
-"C1200W",boiler,12,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"C1200W",boiler,12,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"C1200W",boiler,12,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"C1200W",boiler,12,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"C1200W",boiler,12,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"C1200W",boiler,12,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"C1200W",boiler,12,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"C1200W",boiler,12,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"C1200W",boiler,12,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"C1200W",boiler,12,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"C1200W",boiler,12,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"C1200W",boiler,12,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"C1200W",boiler,12,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"C1200W",boiler,12,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"C1200W",boiler,12,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"C1200W",boiler,12,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"C1200W",boiler,12,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"C1200W",boiler,12,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"C1200W",boiler,12,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"C1200W",boiler,12,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"C1200W",boiler,12,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"C1200W",boiler,12,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"C1200W",boiler,12,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"C1200W",boiler,12,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"C1200W",boiler,12,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"C1200W",boiler,12,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"C1200W",boiler,12,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"C1200W",boiler,12,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"C1200W",boiler,12,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"C1200W",boiler,12,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"C1200W",boiler,12,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"C1200W",boiler,12,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,1
+"C1200W",boiler,12,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,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,5,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,5,9,1,39,1
-"C1200W",boiler,12,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,1
+"C1200W",boiler,12,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,1
"C1200W",boiler,12,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,5,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,5,9,1,42,1
-"C1200W",boiler,12,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,1
+"C1200W",boiler,12,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,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,5,9,1,44,1
-"C1200W",boiler,12,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"C1200W",boiler,12,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,1
+"C1200W",boiler,12,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,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,5,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,5,9,1,47,1
-"C1200W",boiler,12,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"C1200W",boiler,12,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"C1200W",boiler,12,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"C1200W",boiler,12,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"C1200W",boiler,12,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"C1200W",boiler,12,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"C1200W",boiler,12,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"C1200W",boiler,12,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"C1200W",boiler,12,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"C1200W",boiler,12,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,9,1,48,1
+"C1200W",boiler,12,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,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,5,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,5,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,5,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,5,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,5,9,1/10,54,1
+"C1200W",boiler,12,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,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,5,9,1,56,1
+"C1200W",boiler,12,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,1
"C1200W",boiler,12,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,5,9,1,58,1
"C1200W",boiler,12,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,5,9,1,59,1
"C1200W",boiler,12,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,5,9,1,60,1
"C1200W",boiler,12,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,5,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,5,9,1,62,1
"C1200W",boiler,12,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,5,9,1,63,1
-"C1200W",boiler,12,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"C1200W",boiler,12,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"C1200W",boiler,12,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"C1200W",boiler,12,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"C1200W",boiler,12,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"C1200W",boiler,12,nompower,nominal Power,uint8 (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
-"C1200W",boiler,12,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"C1200W",boiler,12,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"C1200W",boiler,12,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"C1200W",boiler,12,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"C1200W",boiler,12,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
+"C1200W",boiler,12,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
"C1200W",boiler,12,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2
"C1200W",boiler,12,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
-"CS5800iG",boiler,16,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"CS5800iG",boiler,16,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"CS5800iG",boiler,16,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"CS5800iG",boiler,16,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"CS5800iG",boiler,16,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"CS5800iG",boiler,16,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"CS5800iG",boiler,16,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"CS5800iG",boiler,16,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,0,1,4,1
"CS5800iG",boiler,16,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,5,0,1,5,1
-"CS5800iG",boiler,16,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"CS5800iG",boiler,16,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"CS5800iG",boiler,16,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"CS5800iG",boiler,16,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"CS5800iG",boiler,16,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"CS5800iG",boiler,16,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"CS5800iG",boiler,16,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"CS5800iG",boiler,16,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"CS5800iG",boiler,16,exhausttemp,exhaust temperature,uint16 (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
+"CS5800iG",boiler,16,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
+"CS5800iG",boiler,16,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
+"CS5800iG",boiler,16,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
+"CS5800iG",boiler,16,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
+"CS5800iG",boiler,16,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
+"CS5800iG",boiler,16,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
+"CS5800iG",boiler,16,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"CS5800iG",boiler,16,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"CS5800iG",boiler,16,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
"CS5800iG",boiler,16,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1
"CS5800iG",boiler,16,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1
-"CS5800iG",boiler,16,flamecurr,flame current,uint16 (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
+"CS5800iG",boiler,16,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
"CS5800iG",boiler,16,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1
"CS5800iG",boiler,16,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1
"CS5800iG",boiler,16,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1
-"CS5800iG",boiler,16,burnminpower,burner min power,uint8 (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
+"CS5800iG",boiler,16,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
"CS5800iG",boiler,16,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1
"CS5800iG",boiler,16,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1
-"CS5800iG",boiler,16,absburnpow,burner current power (absolute),uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
-"CS5800iG",boiler,16,heatblock,heating block,uint16 (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
+"CS5800iG",boiler,16,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
+"CS5800iG",boiler,16,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
"CS5800iG",boiler,16,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1
"CS5800iG",boiler,16,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1
"CS5800iG",boiler,16,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1
"CS5800iG",boiler,16,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1
-"CS5800iG",boiler,16,curveon,heatingcurve on,boolean, ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
+"CS5800iG",boiler,16,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
"CS5800iG",boiler,16,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1
"CS5800iG",boiler,16,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1
"CS5800iG",boiler,16,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1
-"CS5800iG",boiler,16,nofrostmode,nofrost mode,boolean, ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
+"CS5800iG",boiler,16,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
"CS5800iG",boiler,16,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1
-"CS5800iG",boiler,16,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"CS5800iG",boiler,16,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"CS5800iG",boiler,16,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"CS5800iG",boiler,16,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"CS5800iG",boiler,16,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"CS5800iG",boiler,16,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,0,1,18,1
-"CS5800iG",boiler,16,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,0,1,19,1
-"CS5800iG",boiler,16,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,1
+"CS5800iG",boiler,16,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,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,5,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,5,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,5,0,1,20,1
"CS5800iG",boiler,16,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,5,0,1,21,1
"CS5800iG",boiler,16,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,5,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,5,0,1,23,1
-"CS5800iG",boiler,16,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"CS5800iG",boiler,16,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"CS5800iG",boiler,16,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"CS5800iG",boiler,16,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"CS5800iG",boiler,16,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"CS5800iG",boiler,16,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"CS5800iG",boiler,16,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"CS5800iG",boiler,16,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
+"CS5800iG",boiler,16,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
+"CS5800iG",boiler,16,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,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,5,0,1,29,2
+"CS5800iG",boiler,16,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
+"CS5800iG",boiler,16,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
+"CS5800iG",boiler,16,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
"CS5800iG",boiler,16,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,5,0,1,37,28
"CS5800iG",boiler,16,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,5,0,1,65,2
-"CS5800iG",boiler,16,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"CS5800iG",boiler,16,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
"CS5800iG",boiler,16,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,5,0,1,68,2
-"CS5800iG",boiler,16,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"CS5800iG",boiler,16,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"CS5800iG",boiler,16,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"CS5800iG",boiler,16,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"CS5800iG",boiler,16,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,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,5,0,1,71,1
+"CS5800iG",boiler,16,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
+"CS5800iG",boiler,16,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
"CS5800iG",boiler,16,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,5,0,1,79,1
-"CS5800iG",boiler,16,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"CS5800iG",boiler,16,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"CS5800iG",boiler,16,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"CS5800iG",boiler,16,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"CS5800iG",boiler,16,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"CS5800iG",boiler,16,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"CS5800iG",boiler,16,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"CS5800iG",boiler,16,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"CS5800iG",boiler,16,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"CS5800iG",boiler,16,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"CS5800iG",boiler,16,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"CS5800iG",boiler,16,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"CS5800iG",boiler,16,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"CS5800iG",boiler,16,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"CS5800iG",boiler,16,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"CS5800iG",boiler,16,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"CS5800iG",boiler,16,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"CS5800iG",boiler,16,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"CS5800iG",boiler,16,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"CS5800iG",boiler,16,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"CS5800iG",boiler,16,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"CS5800iG",boiler,16,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"CS5800iG",boiler,16,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"CS5800iG",boiler,16,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"CS5800iG",boiler,16,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"CS5800iG",boiler,16,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"CS5800iG",boiler,16,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"CS5800iG",boiler,16,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"CS5800iG",boiler,16,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"CS5800iG",boiler,16,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"CS5800iG",boiler,16,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"CS5800iG",boiler,16,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,1
+"CS5800iG",boiler,16,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,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,5,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,5,9,1,39,1
-"CS5800iG",boiler,16,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,1
+"CS5800iG",boiler,16,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,1
"CS5800iG",boiler,16,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,5,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,5,9,1,42,1
-"CS5800iG",boiler,16,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,1
+"CS5800iG",boiler,16,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,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,5,9,1,44,1
-"CS5800iG",boiler,16,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"CS5800iG",boiler,16,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,1
+"CS5800iG",boiler,16,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,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,5,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,5,9,1,47,1
-"CS5800iG",boiler,16,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"CS5800iG",boiler,16,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"CS5800iG",boiler,16,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"CS5800iG",boiler,16,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"CS5800iG",boiler,16,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"CS5800iG",boiler,16,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"CS5800iG",boiler,16,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"CS5800iG",boiler,16,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"CS5800iG",boiler,16,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"CS5800iG",boiler,16,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,9,1,48,1
+"CS5800iG",boiler,16,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,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,5,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,5,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,5,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,5,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,5,9,1/10,54,1
+"CS5800iG",boiler,16,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,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,5,9,1,56,1
+"CS5800iG",boiler,16,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,1
"CS5800iG",boiler,16,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,5,9,1,58,1
"CS5800iG",boiler,16,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,5,9,1,59,1
"CS5800iG",boiler,16,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,5,9,1,60,1
"CS5800iG",boiler,16,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,5,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,5,9,1,62,1
"CS5800iG",boiler,16,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,5,9,1,63,1
-"CS5800iG",boiler,16,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"CS5800iG",boiler,16,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"CS5800iG",boiler,16,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"CS5800iG",boiler,16,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"CS5800iG",boiler,16,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"CS5800iG",boiler,16,nompower,nominal Power,uint8 (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
-"CS5800iG",boiler,16,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"CS5800iG",boiler,16,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"CS5800iG",boiler,16,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"CS5800iG",boiler,16,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"CS5800iG",boiler,16,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
+"CS5800iG",boiler,16,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
"CS5800iG",boiler,16,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2
"CS5800iG",boiler,16,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
-"BK13/BK15, Smartline, GB1*2",boiler,64,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"BK13/BK15, Smartline, GB1*2",boiler,64,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"BK13/BK15, Smartline, GB1*2",boiler,64,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"BK13/BK15, Smartline, GB1*2",boiler,64,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"BK13/BK15, Smartline, GB1*2",boiler,64,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"BK13/BK15, Smartline, GB1*2",boiler,64,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,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,5,0,1,5,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,exhausttemp,exhaust temperature,uint16 (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
+"BK13/BK15, Smartline, GB1*2",boiler,64,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
+"BK13/BK15, Smartline, GB1*2",boiler,64,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,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,5,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,5,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,5,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,5,0,1/10,11,1
+"BK13/BK15, Smartline, GB1*2",boiler,64,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"BK13/BK15, Smartline, GB1*2",boiler,64,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"BK13/BK15, Smartline, GB1*2",boiler,64,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
"BK13/BK15, Smartline, GB1*2",boiler,64,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1
"BK13/BK15, Smartline, GB1*2",boiler,64,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,flamecurr,flame current,uint16 (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
+"BK13/BK15, Smartline, GB1*2",boiler,64,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
"BK13/BK15, Smartline, GB1*2",boiler,64,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1
"BK13/BK15, Smartline, GB1*2",boiler,64,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1
"BK13/BK15, Smartline, GB1*2",boiler,64,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,burnminpower,burner min power,uint8 (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
+"BK13/BK15, Smartline, GB1*2",boiler,64,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
"BK13/BK15, Smartline, GB1*2",boiler,64,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1
"BK13/BK15, Smartline, GB1*2",boiler,64,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,absburnpow,burner current power (absolute),uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,heatblock,heating block,uint16 (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
+"BK13/BK15, Smartline, GB1*2",boiler,64,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
+"BK13/BK15, Smartline, GB1*2",boiler,64,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
"BK13/BK15, Smartline, GB1*2",boiler,64,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1
"BK13/BK15, Smartline, GB1*2",boiler,64,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1
"BK13/BK15, Smartline, GB1*2",boiler,64,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1
"BK13/BK15, Smartline, GB1*2",boiler,64,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,curveon,heatingcurve on,boolean, ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
+"BK13/BK15, Smartline, GB1*2",boiler,64,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
"BK13/BK15, Smartline, GB1*2",boiler,64,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1
"BK13/BK15, Smartline, GB1*2",boiler,64,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1
"BK13/BK15, Smartline, GB1*2",boiler,64,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,nofrostmode,nofrost mode,boolean, ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
+"BK13/BK15, Smartline, GB1*2",boiler,64,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
"BK13/BK15, Smartline, GB1*2",boiler,64,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"BK13/BK15, Smartline, GB1*2",boiler,64,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"BK13/BK15, Smartline, GB1*2",boiler,64,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"BK13/BK15, Smartline, GB1*2",boiler,64,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,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], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,0,1,19,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,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,5,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,5,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,5,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,5,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,5,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,5,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,5,0,1,23,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"BK13/BK15, Smartline, GB1*2",boiler,64,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"BK13/BK15, Smartline, GB1*2",boiler,64,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"BK13/BK15, Smartline, GB1*2",boiler,64,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"BK13/BK15, Smartline, GB1*2",boiler,64,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"BK13/BK15, Smartline, GB1*2",boiler,64,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"BK13/BK15, Smartline, GB1*2",boiler,64,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
+"BK13/BK15, Smartline, GB1*2",boiler,64,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,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,5,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,5,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,5,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,5,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,5,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,5,0,1,37,28
"BK13/BK15, Smartline, GB1*2",boiler,64,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,5,0,1,65,2
-"BK13/BK15, Smartline, GB1*2",boiler,64,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"BK13/BK15, Smartline, GB1*2",boiler,64,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
"BK13/BK15, Smartline, GB1*2",boiler,64,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,5,0,1,68,2
-"BK13/BK15, Smartline, GB1*2",boiler,64,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"BK13/BK15, Smartline, GB1*2",boiler,64,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"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,5,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,5,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,5,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,5,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,5,0,1,79,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"BK13/BK15, Smartline, GB1*2",boiler,64,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"BK13/BK15, Smartline, GB1*2",boiler,64,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"BK13/BK15, Smartline, GB1*2",boiler,64,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"BK13/BK15, Smartline, GB1*2",boiler,64,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"BK13/BK15, Smartline, GB1*2",boiler,64,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"BK13/BK15, Smartline, GB1*2",boiler,64,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"BK13/BK15, Smartline, GB1*2",boiler,64,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"BK13/BK15, Smartline, GB1*2",boiler,64,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"BK13/BK15, Smartline, GB1*2",boiler,64,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,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,5,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,5,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,5,9,1,39,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,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,5,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,5,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,5,9,1,42,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,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,5,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,5,9,1,44,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,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,5,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,5,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,5,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], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,63,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"BK13/BK15, Smartline, GB1*2",boiler,64,nompower,nominal Power,uint8 (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
-"BK13/BK15, Smartline, GB1*2",boiler,64,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"BK13/BK15, Smartline, GB1*2",boiler,64,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
+"BK13/BK15, Smartline, GB1*2",boiler,64,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
"BK13/BK15, Smartline, GB1*2",boiler,64,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2
"BK13/BK15, Smartline, GB1*2",boiler,64,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
-"Logano GB1*5, Logamatic MC10",boiler,72,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"Logano GB1*5, Logamatic MC10",boiler,72,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"Logano GB1*5, Logamatic MC10",boiler,72,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"Logano GB1*5, Logamatic MC10",boiler,72,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"Logano GB1*5, Logamatic MC10",boiler,72,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"Logano GB1*5, Logamatic MC10",boiler,72,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"Logano GB1*5, Logamatic MC10",boiler,72,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"Logano GB1*5, Logamatic MC10",boiler,72,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,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,5,0,1,5,1
-"Logano GB1*5, Logamatic MC10",boiler,72,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"Logano GB1*5, Logamatic MC10",boiler,72,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"Logano GB1*5, Logamatic MC10",boiler,72,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"Logano GB1*5, Logamatic MC10",boiler,72,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"Logano GB1*5, Logamatic MC10",boiler,72,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"Logano GB1*5, Logamatic MC10",boiler,72,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"Logano GB1*5, Logamatic MC10",boiler,72,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"Logano GB1*5, Logamatic MC10",boiler,72,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"Logano GB1*5, Logamatic MC10",boiler,72,exhausttemp,exhaust temperature,uint16 (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
+"Logano GB1*5, Logamatic MC10",boiler,72,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
+"Logano GB1*5, Logamatic MC10",boiler,72,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,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,5,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,5,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,5,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,5,0,1/10,11,1
+"Logano GB1*5, Logamatic MC10",boiler,72,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"Logano GB1*5, Logamatic MC10",boiler,72,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"Logano GB1*5, Logamatic MC10",boiler,72,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
"Logano GB1*5, Logamatic MC10",boiler,72,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1
"Logano GB1*5, Logamatic MC10",boiler,72,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1
-"Logano GB1*5, Logamatic MC10",boiler,72,flamecurr,flame current,uint16 (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
+"Logano GB1*5, Logamatic MC10",boiler,72,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
"Logano GB1*5, Logamatic MC10",boiler,72,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1
"Logano GB1*5, Logamatic MC10",boiler,72,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1
"Logano GB1*5, Logamatic MC10",boiler,72,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1
-"Logano GB1*5, Logamatic MC10",boiler,72,burnminpower,burner min power,uint8 (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
+"Logano GB1*5, Logamatic MC10",boiler,72,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
"Logano GB1*5, Logamatic MC10",boiler,72,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1
"Logano GB1*5, Logamatic MC10",boiler,72,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1
-"Logano GB1*5, Logamatic MC10",boiler,72,absburnpow,burner current power (absolute),uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
-"Logano GB1*5, Logamatic MC10",boiler,72,heatblock,heating block,uint16 (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
+"Logano GB1*5, Logamatic MC10",boiler,72,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
+"Logano GB1*5, Logamatic MC10",boiler,72,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
"Logano GB1*5, Logamatic MC10",boiler,72,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1
"Logano GB1*5, Logamatic MC10",boiler,72,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1
"Logano GB1*5, Logamatic MC10",boiler,72,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1
"Logano GB1*5, Logamatic MC10",boiler,72,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1
-"Logano GB1*5, Logamatic MC10",boiler,72,curveon,heatingcurve on,boolean, ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
+"Logano GB1*5, Logamatic MC10",boiler,72,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
"Logano GB1*5, Logamatic MC10",boiler,72,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1
"Logano GB1*5, Logamatic MC10",boiler,72,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1
"Logano GB1*5, Logamatic MC10",boiler,72,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1
-"Logano GB1*5, Logamatic MC10",boiler,72,nofrostmode,nofrost mode,boolean, ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
+"Logano GB1*5, Logamatic MC10",boiler,72,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
"Logano GB1*5, Logamatic MC10",boiler,72,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1
-"Logano GB1*5, Logamatic MC10",boiler,72,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"Logano GB1*5, Logamatic MC10",boiler,72,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"Logano GB1*5, Logamatic MC10",boiler,72,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"Logano GB1*5, Logamatic MC10",boiler,72,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"Logano GB1*5, Logamatic MC10",boiler,72,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"Logano GB1*5, Logamatic MC10",boiler,72,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,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], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,0,1,19,1
-"Logano GB1*5, Logamatic MC10",boiler,72,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,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,5,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,5,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,5,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,5,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,5,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,5,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,5,0,1,23,1
-"Logano GB1*5, Logamatic MC10",boiler,72,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"Logano GB1*5, Logamatic MC10",boiler,72,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"Logano GB1*5, Logamatic MC10",boiler,72,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"Logano GB1*5, Logamatic MC10",boiler,72,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"Logano GB1*5, Logamatic MC10",boiler,72,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"Logano GB1*5, Logamatic MC10",boiler,72,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"Logano GB1*5, Logamatic MC10",boiler,72,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"Logano GB1*5, Logamatic MC10",boiler,72,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
+"Logano GB1*5, Logamatic MC10",boiler,72,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,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,5,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,5,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,5,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,5,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,5,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,5,0,1,37,28
"Logano GB1*5, Logamatic MC10",boiler,72,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,5,0,1,65,2
-"Logano GB1*5, Logamatic MC10",boiler,72,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"Logano GB1*5, Logamatic MC10",boiler,72,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
"Logano GB1*5, Logamatic MC10",boiler,72,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,5,0,1,68,2
-"Logano GB1*5, Logamatic MC10",boiler,72,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"Logano GB1*5, Logamatic MC10",boiler,72,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"Logano GB1*5, Logamatic MC10",boiler,72,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"Logano GB1*5, Logamatic MC10",boiler,72,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"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,5,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,5,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,5,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,5,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,5,0,1,79,1
-"Logano GB1*5, Logamatic MC10",boiler,72,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"Logano GB1*5, Logamatic MC10",boiler,72,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"Logano GB1*5, Logamatic MC10",boiler,72,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"Logano GB1*5, Logamatic MC10",boiler,72,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"Logano GB1*5, Logamatic MC10",boiler,72,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"Logano GB1*5, Logamatic MC10",boiler,72,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"Logano GB1*5, Logamatic MC10",boiler,72,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"Logano GB1*5, Logamatic MC10",boiler,72,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"Logano GB1*5, Logamatic MC10",boiler,72,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"Logano GB1*5, Logamatic MC10",boiler,72,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"Logano GB1*5, Logamatic MC10",boiler,72,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"Logano GB1*5, Logamatic MC10",boiler,72,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"Logano GB1*5, Logamatic MC10",boiler,72,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"Logano GB1*5, Logamatic MC10",boiler,72,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"Logano GB1*5, Logamatic MC10",boiler,72,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"Logano GB1*5, Logamatic MC10",boiler,72,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"Logano GB1*5, Logamatic MC10",boiler,72,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"Logano GB1*5, Logamatic MC10",boiler,72,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,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,5,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,5,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,5,9,1,39,1
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,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,5,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,5,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,5,9,1,42,1
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,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,5,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,5,9,1,44,1
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,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,5,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,5,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,5,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], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,63,1
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"Logano GB1*5, Logamatic MC10",boiler,72,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"Logano GB1*5, Logamatic MC10",boiler,72,nompower,nominal Power,uint8 (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
-"Logano GB1*5, Logamatic MC10",boiler,72,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"Logano GB1*5, Logamatic MC10",boiler,72,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"Logano GB1*5, Logamatic MC10",boiler,72,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"Logano GB1*5, Logamatic MC10",boiler,72,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"Logano GB1*5, Logamatic MC10",boiler,72,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
+"Logano GB1*5, Logamatic MC10",boiler,72,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
"Logano GB1*5, Logamatic MC10",boiler,72,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2
"Logano GB1*5, Logamatic MC10",boiler,72,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
-"Cascade CM10",boiler,81,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"Cascade CM10",boiler,81,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"Cascade CM10",boiler,81,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"Cascade CM10",boiler,81,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"Cascade CM10",boiler,81,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"Cascade CM10",boiler,81,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"Cascade CM10",boiler,81,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"Cascade CM10",boiler,81,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,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,5,0,1,5,1
-"Cascade CM10",boiler,81,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"Cascade CM10",boiler,81,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"Cascade CM10",boiler,81,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"Cascade CM10",boiler,81,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"Cascade CM10",boiler,81,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"Cascade CM10",boiler,81,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"Cascade CM10",boiler,81,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"Cascade CM10",boiler,81,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"Cascade CM10",boiler,81,exhausttemp,exhaust temperature,uint16 (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
+"Cascade CM10",boiler,81,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
+"Cascade CM10",boiler,81,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
+"Cascade CM10",boiler,81,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
+"Cascade CM10",boiler,81,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
+"Cascade CM10",boiler,81,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
+"Cascade CM10",boiler,81,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
+"Cascade CM10",boiler,81,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"Cascade CM10",boiler,81,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"Cascade CM10",boiler,81,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
"Cascade CM10",boiler,81,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1
"Cascade CM10",boiler,81,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1
-"Cascade CM10",boiler,81,flamecurr,flame current,uint16 (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
+"Cascade CM10",boiler,81,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
"Cascade CM10",boiler,81,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1
"Cascade CM10",boiler,81,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1
"Cascade CM10",boiler,81,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1
-"Cascade CM10",boiler,81,burnminpower,burner min power,uint8 (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
+"Cascade CM10",boiler,81,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
"Cascade CM10",boiler,81,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1
"Cascade CM10",boiler,81,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1
-"Cascade CM10",boiler,81,absburnpow,burner current power (absolute),uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
-"Cascade CM10",boiler,81,heatblock,heating block,uint16 (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
+"Cascade CM10",boiler,81,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
+"Cascade CM10",boiler,81,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
"Cascade CM10",boiler,81,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1
"Cascade CM10",boiler,81,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1
"Cascade CM10",boiler,81,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1
"Cascade CM10",boiler,81,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1
-"Cascade CM10",boiler,81,curveon,heatingcurve on,boolean, ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
+"Cascade CM10",boiler,81,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
"Cascade CM10",boiler,81,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1
"Cascade CM10",boiler,81,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1
"Cascade CM10",boiler,81,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1
-"Cascade CM10",boiler,81,nofrostmode,nofrost mode,boolean, ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
+"Cascade CM10",boiler,81,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
"Cascade CM10",boiler,81,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1
-"Cascade CM10",boiler,81,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"Cascade CM10",boiler,81,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"Cascade CM10",boiler,81,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"Cascade CM10",boiler,81,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"Cascade CM10",boiler,81,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"Cascade CM10",boiler,81,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,0,1,18,1
-"Cascade CM10",boiler,81,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,0,1,19,1
-"Cascade CM10",boiler,81,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,1
+"Cascade CM10",boiler,81,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,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,5,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,5,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,5,0,1,20,1
"Cascade CM10",boiler,81,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,5,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,5,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,5,0,1,23,1
-"Cascade CM10",boiler,81,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"Cascade CM10",boiler,81,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"Cascade CM10",boiler,81,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"Cascade CM10",boiler,81,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"Cascade CM10",boiler,81,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"Cascade CM10",boiler,81,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"Cascade CM10",boiler,81,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"Cascade CM10",boiler,81,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
+"Cascade CM10",boiler,81,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,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,5,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,5,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,5,0,1,31,2
+"Cascade CM10",boiler,81,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,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,5,0,1,35,2
"Cascade CM10",boiler,81,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,5,0,1,37,28
"Cascade CM10",boiler,81,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,5,0,1,65,2
-"Cascade CM10",boiler,81,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"Cascade CM10",boiler,81,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
"Cascade CM10",boiler,81,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,5,0,1,68,2
-"Cascade CM10",boiler,81,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"Cascade CM10",boiler,81,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"Cascade CM10",boiler,81,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"Cascade CM10",boiler,81,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"Cascade CM10",boiler,81,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,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,5,0,1,71,1
+"Cascade CM10",boiler,81,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
+"Cascade CM10",boiler,81,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
"Cascade CM10",boiler,81,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,5,0,1,79,1
-"Cascade CM10",boiler,81,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"Cascade CM10",boiler,81,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"Cascade CM10",boiler,81,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"Cascade CM10",boiler,81,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"Cascade CM10",boiler,81,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"Cascade CM10",boiler,81,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"Cascade CM10",boiler,81,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"Cascade CM10",boiler,81,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"Cascade CM10",boiler,81,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"Cascade CM10",boiler,81,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"Cascade CM10",boiler,81,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"Cascade CM10",boiler,81,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"Cascade CM10",boiler,81,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"Cascade CM10",boiler,81,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"Cascade CM10",boiler,81,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"Cascade CM10",boiler,81,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"Cascade CM10",boiler,81,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"Cascade CM10",boiler,81,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"Cascade CM10",boiler,81,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"Cascade CM10",boiler,81,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"Cascade CM10",boiler,81,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"Cascade CM10",boiler,81,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"Cascade CM10",boiler,81,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"Cascade CM10",boiler,81,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"Cascade CM10",boiler,81,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"Cascade CM10",boiler,81,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"Cascade CM10",boiler,81,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"Cascade CM10",boiler,81,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"Cascade CM10",boiler,81,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"Cascade CM10",boiler,81,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"Cascade CM10",boiler,81,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"Cascade CM10",boiler,81,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,1
+"Cascade CM10",boiler,81,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,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,5,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,5,9,1,39,1
-"Cascade CM10",boiler,81,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,1
+"Cascade CM10",boiler,81,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,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,5,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,5,9,1,42,1
-"Cascade CM10",boiler,81,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,1
+"Cascade CM10",boiler,81,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,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,5,9,1,44,1
-"Cascade CM10",boiler,81,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"Cascade CM10",boiler,81,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,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,5,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,5,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,5,9,1,47,1
-"Cascade CM10",boiler,81,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"Cascade CM10",boiler,81,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"Cascade CM10",boiler,81,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"Cascade CM10",boiler,81,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"Cascade CM10",boiler,81,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"Cascade CM10",boiler,81,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"Cascade CM10",boiler,81,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"Cascade CM10",boiler,81,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"Cascade CM10",boiler,81,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"Cascade CM10",boiler,81,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1/10,54,1
+"Cascade CM10",boiler,81,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,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,5,9,1,56,1
+"Cascade CM10",boiler,81,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,1
"Cascade CM10",boiler,81,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,5,9,1,58,1
"Cascade CM10",boiler,81,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,5,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,5,9,1,60,1
"Cascade CM10",boiler,81,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,5,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,5,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,5,9,1,63,1
-"Cascade CM10",boiler,81,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"Cascade CM10",boiler,81,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"Cascade CM10",boiler,81,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"Cascade CM10",boiler,81,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"Cascade CM10",boiler,81,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"Cascade CM10",boiler,81,nompower,nominal Power,uint8 (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
-"Cascade CM10",boiler,81,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"Cascade CM10",boiler,81,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"Cascade CM10",boiler,81,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"Cascade CM10",boiler,81,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"Cascade CM10",boiler,81,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
+"Cascade CM10",boiler,81,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
"Cascade CM10",boiler,81,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2
"Cascade CM10",boiler,81,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
-"Logamax Plus GB022",boiler,84,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"Logamax Plus GB022",boiler,84,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"Logamax Plus GB022",boiler,84,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"Logamax Plus GB022",boiler,84,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"Logamax Plus GB022",boiler,84,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"Logamax Plus GB022",boiler,84,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"Logamax Plus GB022",boiler,84,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"Logamax Plus GB022",boiler,84,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,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,5,0,1,5,1
-"Logamax Plus GB022",boiler,84,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"Logamax Plus GB022",boiler,84,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"Logamax Plus GB022",boiler,84,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"Logamax Plus GB022",boiler,84,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"Logamax Plus GB022",boiler,84,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"Logamax Plus GB022",boiler,84,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"Logamax Plus GB022",boiler,84,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"Logamax Plus GB022",boiler,84,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"Logamax Plus GB022",boiler,84,exhausttemp,exhaust temperature,uint16 (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
+"Logamax Plus GB022",boiler,84,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
+"Logamax Plus GB022",boiler,84,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,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,5,0,1/10,8,1
+"Logamax Plus GB022",boiler,84,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,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,5,0,1/10,10,1
+"Logamax Plus GB022",boiler,84,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
+"Logamax Plus GB022",boiler,84,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"Logamax Plus GB022",boiler,84,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"Logamax Plus GB022",boiler,84,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
"Logamax Plus GB022",boiler,84,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1
"Logamax Plus GB022",boiler,84,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1
-"Logamax Plus GB022",boiler,84,flamecurr,flame current,uint16 (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
+"Logamax Plus GB022",boiler,84,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
"Logamax Plus GB022",boiler,84,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1
"Logamax Plus GB022",boiler,84,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1
"Logamax Plus GB022",boiler,84,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1
-"Logamax Plus GB022",boiler,84,burnminpower,burner min power,uint8 (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
+"Logamax Plus GB022",boiler,84,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
"Logamax Plus GB022",boiler,84,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1
"Logamax Plus GB022",boiler,84,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1
-"Logamax Plus GB022",boiler,84,absburnpow,burner current power (absolute),uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
-"Logamax Plus GB022",boiler,84,heatblock,heating block,uint16 (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
+"Logamax Plus GB022",boiler,84,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
+"Logamax Plus GB022",boiler,84,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
"Logamax Plus GB022",boiler,84,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1
"Logamax Plus GB022",boiler,84,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1
"Logamax Plus GB022",boiler,84,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1
"Logamax Plus GB022",boiler,84,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1
-"Logamax Plus GB022",boiler,84,curveon,heatingcurve on,boolean, ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
+"Logamax Plus GB022",boiler,84,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
"Logamax Plus GB022",boiler,84,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1
"Logamax Plus GB022",boiler,84,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1
"Logamax Plus GB022",boiler,84,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1
-"Logamax Plus GB022",boiler,84,nofrostmode,nofrost mode,boolean, ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
+"Logamax Plus GB022",boiler,84,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
"Logamax Plus GB022",boiler,84,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1
-"Logamax Plus GB022",boiler,84,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"Logamax Plus GB022",boiler,84,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"Logamax Plus GB022",boiler,84,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"Logamax Plus GB022",boiler,84,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"Logamax Plus GB022",boiler,84,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"Logamax Plus GB022",boiler,84,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,0,1,18,1
-"Logamax Plus GB022",boiler,84,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,0,1,19,1
-"Logamax Plus GB022",boiler,84,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,1
+"Logamax Plus GB022",boiler,84,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,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,5,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,5,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,5,0,1,20,1
"Logamax Plus GB022",boiler,84,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,5,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,5,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,5,0,1,23,1
-"Logamax Plus GB022",boiler,84,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"Logamax Plus GB022",boiler,84,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"Logamax Plus GB022",boiler,84,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"Logamax Plus GB022",boiler,84,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"Logamax Plus GB022",boiler,84,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"Logamax Plus GB022",boiler,84,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"Logamax Plus GB022",boiler,84,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"Logamax Plus GB022",boiler,84,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
+"Logamax Plus GB022",boiler,84,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,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,5,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,5,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,5,0,1,31,2
+"Logamax Plus GB022",boiler,84,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,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,5,0,1,35,2
"Logamax Plus GB022",boiler,84,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,5,0,1,37,28
"Logamax Plus GB022",boiler,84,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,5,0,1,65,2
-"Logamax Plus GB022",boiler,84,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"Logamax Plus GB022",boiler,84,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
"Logamax Plus GB022",boiler,84,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,5,0,1,68,2
-"Logamax Plus GB022",boiler,84,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"Logamax Plus GB022",boiler,84,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"Logamax Plus GB022",boiler,84,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"Logamax Plus GB022",boiler,84,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"Logamax Plus GB022",boiler,84,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,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,5,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,5,0,1,72,6
+"Logamax Plus GB022",boiler,84,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
"Logamax Plus GB022",boiler,84,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,5,0,1,79,1
-"Logamax Plus GB022",boiler,84,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"Logamax Plus GB022",boiler,84,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"Logamax Plus GB022",boiler,84,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"Logamax Plus GB022",boiler,84,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"Logamax Plus GB022",boiler,84,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"Logamax Plus GB022",boiler,84,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"Logamax Plus GB022",boiler,84,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"Logamax Plus GB022",boiler,84,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"Logamax Plus GB022",boiler,84,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"Logamax Plus GB022",boiler,84,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"Logamax Plus GB022",boiler,84,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"Logamax Plus GB022",boiler,84,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"Logamax Plus GB022",boiler,84,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"Logamax Plus GB022",boiler,84,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"Logamax Plus GB022",boiler,84,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"Logamax Plus GB022",boiler,84,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"Logamax Plus GB022",boiler,84,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"Logamax Plus GB022",boiler,84,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"Logamax Plus GB022",boiler,84,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"Logamax Plus GB022",boiler,84,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"Logamax Plus GB022",boiler,84,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"Logamax Plus GB022",boiler,84,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"Logamax Plus GB022",boiler,84,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"Logamax Plus GB022",boiler,84,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"Logamax Plus GB022",boiler,84,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"Logamax Plus GB022",boiler,84,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"Logamax Plus GB022",boiler,84,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"Logamax Plus GB022",boiler,84,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"Logamax Plus GB022",boiler,84,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"Logamax Plus GB022",boiler,84,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"Logamax Plus GB022",boiler,84,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"Logamax Plus GB022",boiler,84,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,1
+"Logamax Plus GB022",boiler,84,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,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,5,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,5,9,1,39,1
-"Logamax Plus GB022",boiler,84,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,1
+"Logamax Plus GB022",boiler,84,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,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,5,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,5,9,1,42,1
-"Logamax Plus GB022",boiler,84,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,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,5,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,5,9,1,44,1
-"Logamax Plus GB022",boiler,84,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"Logamax Plus GB022",boiler,84,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,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,5,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,5,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,5,9,1,47,1
-"Logamax Plus GB022",boiler,84,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"Logamax Plus GB022",boiler,84,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"Logamax Plus GB022",boiler,84,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"Logamax Plus GB022",boiler,84,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"Logamax Plus GB022",boiler,84,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"Logamax Plus GB022",boiler,84,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"Logamax Plus GB022",boiler,84,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"Logamax Plus GB022",boiler,84,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"Logamax Plus GB022",boiler,84,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"Logamax Plus GB022",boiler,84,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,56,1
+"Logamax Plus GB022",boiler,84,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,1
"Logamax Plus GB022",boiler,84,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,5,9,1,58,1
"Logamax Plus GB022",boiler,84,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,5,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,5,9,1,60,1
"Logamax Plus GB022",boiler,84,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,5,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,5,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,5,9,1,63,1
-"Logamax Plus GB022",boiler,84,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"Logamax Plus GB022",boiler,84,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"Logamax Plus GB022",boiler,84,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"Logamax Plus GB022",boiler,84,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"Logamax Plus GB022",boiler,84,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"Logamax Plus GB022",boiler,84,nompower,nominal Power,uint8 (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
-"Logamax Plus GB022",boiler,84,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"Logamax Plus GB022",boiler,84,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"Logamax Plus GB022",boiler,84,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"Logamax Plus GB022",boiler,84,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"Logamax Plus GB022",boiler,84,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
+"Logamax Plus GB022",boiler,84,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
"Logamax Plus GB022",boiler,84,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2
"Logamax Plus GB022",boiler,84,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,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,5,0,1,5,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,exhausttemp,exhaust temperature,uint16 (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,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,5,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,5,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,5,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,5,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,5,0,1/10,11,1
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1
"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,flamecurr,flame current,uint16 (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1
"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1
"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burnminpower,burner min power,uint8 (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1
"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,absburnpow,burner current power (absolute),uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatblock,heating block,uint16 (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1
"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1
"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1
"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,curveon,heatingcurve on,boolean, ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1
"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1
"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nofrostmode,nofrost mode,boolean, ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,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], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,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], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,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,5,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,5,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,5,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,5,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,5,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,5,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,5,0,1,23,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,0,1,65,2
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,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,5,0,1,68,2
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"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,5,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,5,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,5,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,5,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,5,0,1,79,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,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,5,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,5,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,5,9,1,39,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,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,5,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,5,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,5,9,1,42,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,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,5,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,5,9,1,44,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,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,5,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,5,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,5,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], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,63,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nompower,nominal Power,uint8 (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
-"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
+"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2
"Condens, Logamax/Logomatic, Cerapur Top, Greenstar, Generic HT3",boiler,95,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
-"Topline, GB162",boiler,115,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"Topline, GB162",boiler,115,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"Topline, GB162",boiler,115,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"Topline, GB162",boiler,115,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"Topline, GB162",boiler,115,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"Topline, GB162",boiler,115,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"Topline, GB162",boiler,115,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"Topline, GB162",boiler,115,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,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,5,0,1,5,1
-"Topline, GB162",boiler,115,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"Topline, GB162",boiler,115,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"Topline, GB162",boiler,115,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"Topline, GB162",boiler,115,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"Topline, GB162",boiler,115,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"Topline, GB162",boiler,115,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"Topline, GB162",boiler,115,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"Topline, GB162",boiler,115,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"Topline, GB162",boiler,115,exhausttemp,exhaust temperature,uint16 (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
+"Topline, GB162",boiler,115,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
+"Topline, GB162",boiler,115,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
+"Topline, GB162",boiler,115,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
+"Topline, GB162",boiler,115,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
+"Topline, GB162",boiler,115,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
+"Topline, GB162",boiler,115,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
+"Topline, GB162",boiler,115,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"Topline, GB162",boiler,115,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"Topline, GB162",boiler,115,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
"Topline, GB162",boiler,115,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1
"Topline, GB162",boiler,115,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1
-"Topline, GB162",boiler,115,flamecurr,flame current,uint16 (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
+"Topline, GB162",boiler,115,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
"Topline, GB162",boiler,115,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1
"Topline, GB162",boiler,115,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1
"Topline, GB162",boiler,115,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1
-"Topline, GB162",boiler,115,burnminpower,burner min power,uint8 (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
+"Topline, GB162",boiler,115,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
"Topline, GB162",boiler,115,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1
"Topline, GB162",boiler,115,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1
-"Topline, GB162",boiler,115,absburnpow,burner current power (absolute),uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
-"Topline, GB162",boiler,115,heatblock,heating block,uint16 (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
+"Topline, GB162",boiler,115,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
+"Topline, GB162",boiler,115,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
"Topline, GB162",boiler,115,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1
"Topline, GB162",boiler,115,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1
"Topline, GB162",boiler,115,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1
"Topline, GB162",boiler,115,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1
-"Topline, GB162",boiler,115,curveon,heatingcurve on,boolean, ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
+"Topline, GB162",boiler,115,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
"Topline, GB162",boiler,115,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1
"Topline, GB162",boiler,115,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1
"Topline, GB162",boiler,115,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1
-"Topline, GB162",boiler,115,nofrostmode,nofrost mode,boolean, ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
+"Topline, GB162",boiler,115,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
"Topline, GB162",boiler,115,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1
-"Topline, GB162",boiler,115,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"Topline, GB162",boiler,115,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"Topline, GB162",boiler,115,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"Topline, GB162",boiler,115,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"Topline, GB162",boiler,115,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"Topline, GB162",boiler,115,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,0,1,18,1
-"Topline, GB162",boiler,115,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,0,1,19,1
-"Topline, GB162",boiler,115,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,1
+"Topline, GB162",boiler,115,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,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,5,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,5,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,5,0,1,20,1
"Topline, GB162",boiler,115,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,5,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,5,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,5,0,1,23,1
-"Topline, GB162",boiler,115,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"Topline, GB162",boiler,115,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"Topline, GB162",boiler,115,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"Topline, GB162",boiler,115,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"Topline, GB162",boiler,115,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"Topline, GB162",boiler,115,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"Topline, GB162",boiler,115,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"Topline, GB162",boiler,115,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
+"Topline, GB162",boiler,115,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,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,5,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,5,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,5,0,1,31,2
+"Topline, GB162",boiler,115,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,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,5,0,1,35,2
"Topline, GB162",boiler,115,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,5,0,1,37,28
"Topline, GB162",boiler,115,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,5,0,1,65,2
-"Topline, GB162",boiler,115,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"Topline, GB162",boiler,115,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
"Topline, GB162",boiler,115,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,5,0,1,68,2
-"Topline, GB162",boiler,115,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"Topline, GB162",boiler,115,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"Topline, GB162",boiler,115,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"Topline, GB162",boiler,115,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"Topline, GB162",boiler,115,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,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,5,0,1,71,1
+"Topline, GB162",boiler,115,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
+"Topline, GB162",boiler,115,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
"Topline, GB162",boiler,115,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,5,0,1,79,1
-"Topline, GB162",boiler,115,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"Topline, GB162",boiler,115,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"Topline, GB162",boiler,115,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"Topline, GB162",boiler,115,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"Topline, GB162",boiler,115,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"Topline, GB162",boiler,115,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"Topline, GB162",boiler,115,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"Topline, GB162",boiler,115,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"Topline, GB162",boiler,115,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"Topline, GB162",boiler,115,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"Topline, GB162",boiler,115,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"Topline, GB162",boiler,115,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"Topline, GB162",boiler,115,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"Topline, GB162",boiler,115,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"Topline, GB162",boiler,115,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"Topline, GB162",boiler,115,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"Topline, GB162",boiler,115,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"Topline, GB162",boiler,115,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"Topline, GB162",boiler,115,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"Topline, GB162",boiler,115,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"Topline, GB162",boiler,115,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"Topline, GB162",boiler,115,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"Topline, GB162",boiler,115,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"Topline, GB162",boiler,115,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"Topline, GB162",boiler,115,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"Topline, GB162",boiler,115,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"Topline, GB162",boiler,115,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"Topline, GB162",boiler,115,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"Topline, GB162",boiler,115,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"Topline, GB162",boiler,115,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"Topline, GB162",boiler,115,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"Topline, GB162",boiler,115,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,1
+"Topline, GB162",boiler,115,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,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,5,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,5,9,1,39,1
-"Topline, GB162",boiler,115,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,1
+"Topline, GB162",boiler,115,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,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,5,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,5,9,1,42,1
-"Topline, GB162",boiler,115,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,1
+"Topline, GB162",boiler,115,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,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,5,9,1,44,1
-"Topline, GB162",boiler,115,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"Topline, GB162",boiler,115,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,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,5,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,5,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,5,9,1,47,1
-"Topline, GB162",boiler,115,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"Topline, GB162",boiler,115,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"Topline, GB162",boiler,115,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"Topline, GB162",boiler,115,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"Topline, GB162",boiler,115,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"Topline, GB162",boiler,115,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"Topline, GB162",boiler,115,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"Topline, GB162",boiler,115,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"Topline, GB162",boiler,115,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"Topline, GB162",boiler,115,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1/10,54,1
+"Topline, GB162",boiler,115,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,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,5,9,1,56,1
+"Topline, GB162",boiler,115,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,1
"Topline, GB162",boiler,115,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,5,9,1,58,1
"Topline, GB162",boiler,115,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,5,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,5,9,1,60,1
"Topline, GB162",boiler,115,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,5,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,5,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,5,9,1,63,1
-"Topline, GB162",boiler,115,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"Topline, GB162",boiler,115,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"Topline, GB162",boiler,115,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"Topline, GB162",boiler,115,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"Topline, GB162",boiler,115,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"Topline, GB162",boiler,115,nompower,nominal Power,uint8 (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
-"Topline, GB162",boiler,115,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"Topline, GB162",boiler,115,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"Topline, GB162",boiler,115,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"Topline, GB162",boiler,115,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"Topline, GB162",boiler,115,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
+"Topline, GB162",boiler,115,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
"Topline, GB162",boiler,115,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2
"Topline, GB162",boiler,115,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
-"Cascade MCM10",boiler,121,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"Cascade MCM10",boiler,121,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"Cascade MCM10",boiler,121,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"Cascade MCM10",boiler,121,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"Cascade MCM10",boiler,121,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"Cascade MCM10",boiler,121,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"Cascade MCM10",boiler,121,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"Cascade MCM10",boiler,121,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,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,5,0,1,5,1
-"Cascade MCM10",boiler,121,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"Cascade MCM10",boiler,121,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"Cascade MCM10",boiler,121,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"Cascade MCM10",boiler,121,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"Cascade MCM10",boiler,121,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"Cascade MCM10",boiler,121,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"Cascade MCM10",boiler,121,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"Cascade MCM10",boiler,121,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"Cascade MCM10",boiler,121,exhausttemp,exhaust temperature,uint16 (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
+"Cascade MCM10",boiler,121,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
+"Cascade MCM10",boiler,121,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
+"Cascade MCM10",boiler,121,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
+"Cascade MCM10",boiler,121,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
+"Cascade MCM10",boiler,121,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
+"Cascade MCM10",boiler,121,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
+"Cascade MCM10",boiler,121,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"Cascade MCM10",boiler,121,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"Cascade MCM10",boiler,121,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
"Cascade MCM10",boiler,121,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1
"Cascade MCM10",boiler,121,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1
-"Cascade MCM10",boiler,121,flamecurr,flame current,uint16 (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
+"Cascade MCM10",boiler,121,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
"Cascade MCM10",boiler,121,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1
"Cascade MCM10",boiler,121,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1
"Cascade MCM10",boiler,121,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1
-"Cascade MCM10",boiler,121,burnminpower,burner min power,uint8 (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
+"Cascade MCM10",boiler,121,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
"Cascade MCM10",boiler,121,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1
"Cascade MCM10",boiler,121,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1
-"Cascade MCM10",boiler,121,absburnpow,burner current power (absolute),uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
-"Cascade MCM10",boiler,121,heatblock,heating block,uint16 (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
+"Cascade MCM10",boiler,121,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
+"Cascade MCM10",boiler,121,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
"Cascade MCM10",boiler,121,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1
"Cascade MCM10",boiler,121,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1
"Cascade MCM10",boiler,121,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1
"Cascade MCM10",boiler,121,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1
-"Cascade MCM10",boiler,121,curveon,heatingcurve on,boolean, ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
+"Cascade MCM10",boiler,121,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
"Cascade MCM10",boiler,121,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1
"Cascade MCM10",boiler,121,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1
"Cascade MCM10",boiler,121,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1
-"Cascade MCM10",boiler,121,nofrostmode,nofrost mode,boolean, ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
+"Cascade MCM10",boiler,121,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
"Cascade MCM10",boiler,121,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1
-"Cascade MCM10",boiler,121,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"Cascade MCM10",boiler,121,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"Cascade MCM10",boiler,121,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"Cascade MCM10",boiler,121,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"Cascade MCM10",boiler,121,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"Cascade MCM10",boiler,121,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,0,1,18,1
-"Cascade MCM10",boiler,121,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,0,1,19,1
-"Cascade MCM10",boiler,121,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,1
+"Cascade MCM10",boiler,121,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,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,5,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,5,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,5,0,1,20,1
"Cascade MCM10",boiler,121,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,5,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,5,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,5,0,1,23,1
-"Cascade MCM10",boiler,121,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"Cascade MCM10",boiler,121,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"Cascade MCM10",boiler,121,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"Cascade MCM10",boiler,121,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"Cascade MCM10",boiler,121,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"Cascade MCM10",boiler,121,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"Cascade MCM10",boiler,121,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"Cascade MCM10",boiler,121,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
+"Cascade MCM10",boiler,121,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,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,5,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,5,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,5,0,1,31,2
+"Cascade MCM10",boiler,121,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,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,5,0,1,35,2
"Cascade MCM10",boiler,121,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,5,0,1,37,28
"Cascade MCM10",boiler,121,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,5,0,1,65,2
-"Cascade MCM10",boiler,121,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"Cascade MCM10",boiler,121,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
"Cascade MCM10",boiler,121,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,5,0,1,68,2
-"Cascade MCM10",boiler,121,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"Cascade MCM10",boiler,121,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"Cascade MCM10",boiler,121,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"Cascade MCM10",boiler,121,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"Cascade MCM10",boiler,121,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,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,5,0,1,71,1
+"Cascade MCM10",boiler,121,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
+"Cascade MCM10",boiler,121,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
"Cascade MCM10",boiler,121,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,5,0,1,79,1
-"Cascade MCM10",boiler,121,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"Cascade MCM10",boiler,121,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"Cascade MCM10",boiler,121,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"Cascade MCM10",boiler,121,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"Cascade MCM10",boiler,121,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"Cascade MCM10",boiler,121,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"Cascade MCM10",boiler,121,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"Cascade MCM10",boiler,121,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"Cascade MCM10",boiler,121,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"Cascade MCM10",boiler,121,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"Cascade MCM10",boiler,121,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"Cascade MCM10",boiler,121,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"Cascade MCM10",boiler,121,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"Cascade MCM10",boiler,121,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"Cascade MCM10",boiler,121,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"Cascade MCM10",boiler,121,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"Cascade MCM10",boiler,121,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"Cascade MCM10",boiler,121,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"Cascade MCM10",boiler,121,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"Cascade MCM10",boiler,121,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"Cascade MCM10",boiler,121,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"Cascade MCM10",boiler,121,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"Cascade MCM10",boiler,121,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"Cascade MCM10",boiler,121,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"Cascade MCM10",boiler,121,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"Cascade MCM10",boiler,121,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"Cascade MCM10",boiler,121,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"Cascade MCM10",boiler,121,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"Cascade MCM10",boiler,121,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"Cascade MCM10",boiler,121,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"Cascade MCM10",boiler,121,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"Cascade MCM10",boiler,121,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,1
+"Cascade MCM10",boiler,121,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,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,5,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,5,9,1,39,1
-"Cascade MCM10",boiler,121,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,1
+"Cascade MCM10",boiler,121,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,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,5,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,5,9,1,42,1
-"Cascade MCM10",boiler,121,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,1
+"Cascade MCM10",boiler,121,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,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,5,9,1,44,1
-"Cascade MCM10",boiler,121,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"Cascade MCM10",boiler,121,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,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,5,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,5,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,5,9,1,47,1
-"Cascade MCM10",boiler,121,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"Cascade MCM10",boiler,121,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"Cascade MCM10",boiler,121,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"Cascade MCM10",boiler,121,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"Cascade MCM10",boiler,121,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"Cascade MCM10",boiler,121,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"Cascade MCM10",boiler,121,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"Cascade MCM10",boiler,121,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"Cascade MCM10",boiler,121,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"Cascade MCM10",boiler,121,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1/10,54,1
+"Cascade MCM10",boiler,121,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,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,5,9,1,56,1
+"Cascade MCM10",boiler,121,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,1
"Cascade MCM10",boiler,121,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,5,9,1,58,1
"Cascade MCM10",boiler,121,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,5,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,5,9,1,60,1
"Cascade MCM10",boiler,121,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,5,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,5,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,5,9,1,63,1
-"Cascade MCM10",boiler,121,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"Cascade MCM10",boiler,121,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"Cascade MCM10",boiler,121,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"Cascade MCM10",boiler,121,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"Cascade MCM10",boiler,121,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"Cascade MCM10",boiler,121,nompower,nominal Power,uint8 (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
-"Cascade MCM10",boiler,121,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"Cascade MCM10",boiler,121,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"Cascade MCM10",boiler,121,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"Cascade MCM10",boiler,121,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"Cascade MCM10",boiler,121,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
+"Cascade MCM10",boiler,121,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
"Cascade MCM10",boiler,121,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2
"Cascade MCM10",boiler,121,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
-"Proline",boiler,122,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"Proline",boiler,122,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"Proline",boiler,122,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"Proline",boiler,122,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"Proline",boiler,122,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"Proline",boiler,122,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"Proline",boiler,122,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"Proline",boiler,122,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,0,1,4,1
"Proline",boiler,122,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,5,0,1,5,1
-"Proline",boiler,122,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"Proline",boiler,122,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"Proline",boiler,122,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"Proline",boiler,122,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"Proline",boiler,122,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"Proline",boiler,122,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"Proline",boiler,122,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"Proline",boiler,122,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"Proline",boiler,122,exhausttemp,exhaust temperature,uint16 (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
+"Proline",boiler,122,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
+"Proline",boiler,122,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
+"Proline",boiler,122,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
+"Proline",boiler,122,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
+"Proline",boiler,122,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
+"Proline",boiler,122,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
+"Proline",boiler,122,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"Proline",boiler,122,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"Proline",boiler,122,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
"Proline",boiler,122,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1
"Proline",boiler,122,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1
-"Proline",boiler,122,flamecurr,flame current,uint16 (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
+"Proline",boiler,122,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
"Proline",boiler,122,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1
"Proline",boiler,122,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1
"Proline",boiler,122,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1
-"Proline",boiler,122,burnminpower,burner min power,uint8 (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
+"Proline",boiler,122,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
"Proline",boiler,122,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1
"Proline",boiler,122,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1
-"Proline",boiler,122,absburnpow,burner current power (absolute),uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
-"Proline",boiler,122,heatblock,heating block,uint16 (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
+"Proline",boiler,122,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
+"Proline",boiler,122,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
"Proline",boiler,122,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1
"Proline",boiler,122,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1
"Proline",boiler,122,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1
"Proline",boiler,122,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1
-"Proline",boiler,122,curveon,heatingcurve on,boolean, ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
+"Proline",boiler,122,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
"Proline",boiler,122,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1
"Proline",boiler,122,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1
"Proline",boiler,122,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1
-"Proline",boiler,122,nofrostmode,nofrost mode,boolean, ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
+"Proline",boiler,122,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
"Proline",boiler,122,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1
-"Proline",boiler,122,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"Proline",boiler,122,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"Proline",boiler,122,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"Proline",boiler,122,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"Proline",boiler,122,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"Proline",boiler,122,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,0,1,18,1
-"Proline",boiler,122,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,0,1,19,1
-"Proline",boiler,122,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,1
+"Proline",boiler,122,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,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,5,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,5,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,5,0,1,20,1
"Proline",boiler,122,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,5,0,1,21,1
"Proline",boiler,122,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,5,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,5,0,1,23,1
-"Proline",boiler,122,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"Proline",boiler,122,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"Proline",boiler,122,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"Proline",boiler,122,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"Proline",boiler,122,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"Proline",boiler,122,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"Proline",boiler,122,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"Proline",boiler,122,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
+"Proline",boiler,122,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
+"Proline",boiler,122,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,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,5,0,1,29,2
+"Proline",boiler,122,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
+"Proline",boiler,122,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
+"Proline",boiler,122,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
"Proline",boiler,122,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,5,0,1,37,28
"Proline",boiler,122,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,5,0,1,65,2
-"Proline",boiler,122,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"Proline",boiler,122,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
"Proline",boiler,122,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,5,0,1,68,2
-"Proline",boiler,122,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"Proline",boiler,122,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"Proline",boiler,122,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"Proline",boiler,122,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"Proline",boiler,122,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,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,5,0,1,71,1
+"Proline",boiler,122,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
+"Proline",boiler,122,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
"Proline",boiler,122,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,5,0,1,79,1
-"Proline",boiler,122,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"Proline",boiler,122,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"Proline",boiler,122,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"Proline",boiler,122,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"Proline",boiler,122,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"Proline",boiler,122,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"Proline",boiler,122,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"Proline",boiler,122,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"Proline",boiler,122,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"Proline",boiler,122,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"Proline",boiler,122,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"Proline",boiler,122,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"Proline",boiler,122,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"Proline",boiler,122,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"Proline",boiler,122,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"Proline",boiler,122,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"Proline",boiler,122,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"Proline",boiler,122,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"Proline",boiler,122,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"Proline",boiler,122,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"Proline",boiler,122,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"Proline",boiler,122,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"Proline",boiler,122,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"Proline",boiler,122,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"Proline",boiler,122,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"Proline",boiler,122,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"Proline",boiler,122,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"Proline",boiler,122,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"Proline",boiler,122,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"Proline",boiler,122,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"Proline",boiler,122,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"Proline",boiler,122,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,1
+"Proline",boiler,122,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,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,5,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,5,9,1,39,1
-"Proline",boiler,122,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,1
+"Proline",boiler,122,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,1
"Proline",boiler,122,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,5,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,5,9,1,42,1
-"Proline",boiler,122,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,1
+"Proline",boiler,122,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,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,5,9,1,44,1
-"Proline",boiler,122,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"Proline",boiler,122,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,1
+"Proline",boiler,122,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,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,5,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,5,9,1,47,1
-"Proline",boiler,122,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"Proline",boiler,122,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"Proline",boiler,122,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"Proline",boiler,122,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"Proline",boiler,122,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"Proline",boiler,122,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"Proline",boiler,122,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"Proline",boiler,122,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"Proline",boiler,122,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"Proline",boiler,122,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,9,1,48,1
+"Proline",boiler,122,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,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,5,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,5,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,5,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,5,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,5,9,1/10,54,1
+"Proline",boiler,122,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,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,5,9,1,56,1
+"Proline",boiler,122,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,1
"Proline",boiler,122,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,5,9,1,58,1
"Proline",boiler,122,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,5,9,1,59,1
"Proline",boiler,122,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,5,9,1,60,1
"Proline",boiler,122,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,5,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,5,9,1,62,1
"Proline",boiler,122,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,5,9,1,63,1
-"Proline",boiler,122,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"Proline",boiler,122,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"Proline",boiler,122,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"Proline",boiler,122,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"Proline",boiler,122,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"Proline",boiler,122,nompower,nominal Power,uint8 (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
-"Proline",boiler,122,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"Proline",boiler,122,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"Proline",boiler,122,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"Proline",boiler,122,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"Proline",boiler,122,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
+"Proline",boiler,122,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
"Proline",boiler,122,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2
"Proline",boiler,122,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,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,5,0,1,5,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,exhausttemp,exhaust temperature,uint16 (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,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,5,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,5,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,5,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,5,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,5,0,1/10,11,1
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1
"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,flamecurr,flame current,uint16 (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1
"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1
"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burnminpower,burner min power,uint8 (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1
"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,absburnpow,burner current power (absolute),uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatblock,heating block,uint16 (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1
"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1
"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1
"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curveon,heatingcurve on,boolean, ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1
"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1
"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nofrostmode,nofrost mode,boolean, ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,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], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,0,1,19,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,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,5,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,5,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,5,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,5,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,5,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,5,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,5,0,1,23,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,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,5,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,5,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,5,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,5,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,5,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,5,0,1,37,28
"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,5,0,1,65,2
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,5,0,1,68,2
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"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,5,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,5,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,5,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,5,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,5,0,1,79,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,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,5,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,5,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,5,9,1,39,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,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,5,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,5,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,5,9,1,42,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,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,5,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,5,9,1,44,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,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,5,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,5,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,5,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], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,63,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nompower,nominal Power,uint8 (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
-"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
+"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2
"GB*72, Trendline, Cerapur, Greenstar Si",boiler,123,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
-"GB212",boiler,131,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"GB212",boiler,131,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"GB212",boiler,131,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"GB212",boiler,131,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"GB212",boiler,131,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"GB212",boiler,131,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"GB212",boiler,131,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"GB212",boiler,131,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,0,1,4,1
"GB212",boiler,131,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,5,0,1,5,1
-"GB212",boiler,131,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"GB212",boiler,131,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"GB212",boiler,131,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"GB212",boiler,131,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"GB212",boiler,131,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"GB212",boiler,131,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"GB212",boiler,131,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"GB212",boiler,131,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"GB212",boiler,131,exhausttemp,exhaust temperature,uint16 (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
+"GB212",boiler,131,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
+"GB212",boiler,131,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
+"GB212",boiler,131,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
+"GB212",boiler,131,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
+"GB212",boiler,131,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
+"GB212",boiler,131,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
+"GB212",boiler,131,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"GB212",boiler,131,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"GB212",boiler,131,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
"GB212",boiler,131,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1
"GB212",boiler,131,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1
-"GB212",boiler,131,flamecurr,flame current,uint16 (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
+"GB212",boiler,131,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
"GB212",boiler,131,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1
"GB212",boiler,131,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1
"GB212",boiler,131,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1
-"GB212",boiler,131,burnminpower,burner min power,uint8 (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
+"GB212",boiler,131,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
"GB212",boiler,131,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1
"GB212",boiler,131,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1
-"GB212",boiler,131,absburnpow,burner current power (absolute),uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
-"GB212",boiler,131,heatblock,heating block,uint16 (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
+"GB212",boiler,131,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
+"GB212",boiler,131,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
"GB212",boiler,131,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1
"GB212",boiler,131,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1
"GB212",boiler,131,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1
"GB212",boiler,131,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1
-"GB212",boiler,131,curveon,heatingcurve on,boolean, ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
+"GB212",boiler,131,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
"GB212",boiler,131,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1
"GB212",boiler,131,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1
"GB212",boiler,131,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1
-"GB212",boiler,131,nofrostmode,nofrost mode,boolean, ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
+"GB212",boiler,131,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
"GB212",boiler,131,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1
-"GB212",boiler,131,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"GB212",boiler,131,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"GB212",boiler,131,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"GB212",boiler,131,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"GB212",boiler,131,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"GB212",boiler,131,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,0,1,18,1
-"GB212",boiler,131,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,0,1,19,1
-"GB212",boiler,131,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,1
+"GB212",boiler,131,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,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,5,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,5,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,5,0,1,20,1
"GB212",boiler,131,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,5,0,1,21,1
"GB212",boiler,131,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,5,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,5,0,1,23,1
-"GB212",boiler,131,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"GB212",boiler,131,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"GB212",boiler,131,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"GB212",boiler,131,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"GB212",boiler,131,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"GB212",boiler,131,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"GB212",boiler,131,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"GB212",boiler,131,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
+"GB212",boiler,131,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
+"GB212",boiler,131,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,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,5,0,1,29,2
+"GB212",boiler,131,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
+"GB212",boiler,131,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
+"GB212",boiler,131,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
"GB212",boiler,131,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,5,0,1,37,28
"GB212",boiler,131,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,5,0,1,65,2
-"GB212",boiler,131,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"GB212",boiler,131,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
"GB212",boiler,131,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,5,0,1,68,2
-"GB212",boiler,131,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"GB212",boiler,131,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"GB212",boiler,131,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"GB212",boiler,131,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"GB212",boiler,131,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,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,5,0,1,71,1
+"GB212",boiler,131,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
+"GB212",boiler,131,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
"GB212",boiler,131,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,5,0,1,79,1
-"GB212",boiler,131,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"GB212",boiler,131,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"GB212",boiler,131,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"GB212",boiler,131,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"GB212",boiler,131,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"GB212",boiler,131,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"GB212",boiler,131,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"GB212",boiler,131,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"GB212",boiler,131,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"GB212",boiler,131,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"GB212",boiler,131,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"GB212",boiler,131,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"GB212",boiler,131,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"GB212",boiler,131,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"GB212",boiler,131,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"GB212",boiler,131,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"GB212",boiler,131,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"GB212",boiler,131,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"GB212",boiler,131,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"GB212",boiler,131,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"GB212",boiler,131,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"GB212",boiler,131,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"GB212",boiler,131,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"GB212",boiler,131,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"GB212",boiler,131,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"GB212",boiler,131,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"GB212",boiler,131,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"GB212",boiler,131,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"GB212",boiler,131,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"GB212",boiler,131,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"GB212",boiler,131,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"GB212",boiler,131,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,1
+"GB212",boiler,131,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,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,5,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,5,9,1,39,1
-"GB212",boiler,131,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,1
+"GB212",boiler,131,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,1
"GB212",boiler,131,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,5,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,5,9,1,42,1
-"GB212",boiler,131,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,1
+"GB212",boiler,131,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,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,5,9,1,44,1
-"GB212",boiler,131,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"GB212",boiler,131,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,1
+"GB212",boiler,131,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,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,5,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,5,9,1,47,1
-"GB212",boiler,131,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"GB212",boiler,131,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"GB212",boiler,131,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"GB212",boiler,131,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"GB212",boiler,131,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"GB212",boiler,131,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"GB212",boiler,131,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"GB212",boiler,131,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"GB212",boiler,131,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"GB212",boiler,131,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,9,1,48,1
+"GB212",boiler,131,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,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,5,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,5,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,5,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,5,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,5,9,1/10,54,1
+"GB212",boiler,131,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,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,5,9,1,56,1
+"GB212",boiler,131,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,1
"GB212",boiler,131,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,5,9,1,58,1
"GB212",boiler,131,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,5,9,1,59,1
"GB212",boiler,131,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,5,9,1,60,1
"GB212",boiler,131,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,5,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,5,9,1,62,1
"GB212",boiler,131,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,5,9,1,63,1
-"GB212",boiler,131,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"GB212",boiler,131,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"GB212",boiler,131,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"GB212",boiler,131,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"GB212",boiler,131,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"GB212",boiler,131,nompower,nominal Power,uint8 (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
-"GB212",boiler,131,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"GB212",boiler,131,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"GB212",boiler,131,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"GB212",boiler,131,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"GB212",boiler,131,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
+"GB212",boiler,131,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
"GB212",boiler,131,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2
"GB212",boiler,131,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
-"GC7000F",boiler,132,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"GC7000F",boiler,132,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"GC7000F",boiler,132,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"GC7000F",boiler,132,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"GC7000F",boiler,132,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"GC7000F",boiler,132,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"GC7000F",boiler,132,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"GC7000F",boiler,132,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,0,1,4,1
"GC7000F",boiler,132,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,5,0,1,5,1
-"GC7000F",boiler,132,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"GC7000F",boiler,132,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"GC7000F",boiler,132,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"GC7000F",boiler,132,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"GC7000F",boiler,132,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"GC7000F",boiler,132,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"GC7000F",boiler,132,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"GC7000F",boiler,132,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"GC7000F",boiler,132,exhausttemp,exhaust temperature,uint16 (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
+"GC7000F",boiler,132,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
+"GC7000F",boiler,132,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
+"GC7000F",boiler,132,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
+"GC7000F",boiler,132,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
+"GC7000F",boiler,132,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
+"GC7000F",boiler,132,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
+"GC7000F",boiler,132,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"GC7000F",boiler,132,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"GC7000F",boiler,132,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
"GC7000F",boiler,132,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1
"GC7000F",boiler,132,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1
-"GC7000F",boiler,132,flamecurr,flame current,uint16 (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
+"GC7000F",boiler,132,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
"GC7000F",boiler,132,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1
"GC7000F",boiler,132,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1
"GC7000F",boiler,132,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1
-"GC7000F",boiler,132,burnminpower,burner min power,uint8 (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
+"GC7000F",boiler,132,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
"GC7000F",boiler,132,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1
"GC7000F",boiler,132,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1
-"GC7000F",boiler,132,absburnpow,burner current power (absolute),uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
-"GC7000F",boiler,132,heatblock,heating block,uint16 (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
+"GC7000F",boiler,132,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
+"GC7000F",boiler,132,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
"GC7000F",boiler,132,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1
"GC7000F",boiler,132,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1
"GC7000F",boiler,132,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1
"GC7000F",boiler,132,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1
-"GC7000F",boiler,132,curveon,heatingcurve on,boolean, ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
+"GC7000F",boiler,132,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
"GC7000F",boiler,132,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1
"GC7000F",boiler,132,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1
"GC7000F",boiler,132,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1
-"GC7000F",boiler,132,nofrostmode,nofrost mode,boolean, ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
+"GC7000F",boiler,132,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
"GC7000F",boiler,132,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1
-"GC7000F",boiler,132,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"GC7000F",boiler,132,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"GC7000F",boiler,132,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"GC7000F",boiler,132,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"GC7000F",boiler,132,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"GC7000F",boiler,132,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,0,1,18,1
-"GC7000F",boiler,132,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,0,1,19,1
-"GC7000F",boiler,132,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,1
+"GC7000F",boiler,132,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,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,5,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,5,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,5,0,1,20,1
"GC7000F",boiler,132,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,5,0,1,21,1
"GC7000F",boiler,132,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,5,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,5,0,1,23,1
-"GC7000F",boiler,132,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"GC7000F",boiler,132,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"GC7000F",boiler,132,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"GC7000F",boiler,132,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"GC7000F",boiler,132,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"GC7000F",boiler,132,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"GC7000F",boiler,132,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"GC7000F",boiler,132,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
+"GC7000F",boiler,132,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
+"GC7000F",boiler,132,burnworkmin,total burner operating time,time,minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,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,5,0,1,29,2
+"GC7000F",boiler,132,heatworkmin,total heat operating time,time,minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
+"GC7000F",boiler,132,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
+"GC7000F",boiler,132,ubauptime,total UBA operating time,time,minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
"GC7000F",boiler,132,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,5,0,1,37,28
"GC7000F",boiler,132,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,5,0,1,65,2
-"GC7000F",boiler,132,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"GC7000F",boiler,132,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
"GC7000F",boiler,132,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,5,0,1,68,2
-"GC7000F",boiler,132,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"GC7000F",boiler,132,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"GC7000F",boiler,132,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"GC7000F",boiler,132,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"GC7000F",boiler,132,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,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,5,0,1,71,1
+"GC7000F",boiler,132,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
+"GC7000F",boiler,132,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
"GC7000F",boiler,132,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,5,0,1,79,1
-"GC7000F",boiler,132,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"GC7000F",boiler,132,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"GC7000F",boiler,132,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"GC7000F",boiler,132,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"GC7000F",boiler,132,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"GC7000F",boiler,132,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"GC7000F",boiler,132,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"GC7000F",boiler,132,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"GC7000F",boiler,132,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"GC7000F",boiler,132,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"GC7000F",boiler,132,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"GC7000F",boiler,132,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"GC7000F",boiler,132,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"GC7000F",boiler,132,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"GC7000F",boiler,132,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"GC7000F",boiler,132,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"GC7000F",boiler,132,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"GC7000F",boiler,132,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"GC7000F",boiler,132,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"GC7000F",boiler,132,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"GC7000F",boiler,132,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"GC7000F",boiler,132,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"GC7000F",boiler,132,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"GC7000F",boiler,132,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"GC7000F",boiler,132,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"GC7000F",boiler,132,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"GC7000F",boiler,132,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"GC7000F",boiler,132,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"GC7000F",boiler,132,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"GC7000F",boiler,132,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"GC7000F",boiler,132,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"GC7000F",boiler,132,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,1
+"GC7000F",boiler,132,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,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,5,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,5,9,1,39,1
-"GC7000F",boiler,132,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,1
+"GC7000F",boiler,132,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,1
"GC7000F",boiler,132,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,5,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,5,9,1,42,1
-"GC7000F",boiler,132,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,1
+"GC7000F",boiler,132,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,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,5,9,1,44,1
-"GC7000F",boiler,132,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"GC7000F",boiler,132,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,1
+"GC7000F",boiler,132,dhw.hyston,hysteresis on temperature,int8 (>=0<=0),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,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,5,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,5,9,1,47,1
-"GC7000F",boiler,132,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"GC7000F",boiler,132,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"GC7000F",boiler,132,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"GC7000F",boiler,132,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"GC7000F",boiler,132,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"GC7000F",boiler,132,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"GC7000F",boiler,132,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"GC7000F",boiler,132,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"GC7000F",boiler,132,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"GC7000F",boiler,132,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,9,1,48,1
+"GC7000F",boiler,132,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,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,5,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,5,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,5,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,5,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,5,9,1/10,54,1
+"GC7000F",boiler,132,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,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,5,9,1,56,1
+"GC7000F",boiler,132,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,1
"GC7000F",boiler,132,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,5,9,1,58,1
"GC7000F",boiler,132,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,5,9,1,59,1
"GC7000F",boiler,132,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,5,9,1,60,1
"GC7000F",boiler,132,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,5,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,5,9,1,62,1
"GC7000F",boiler,132,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,5,9,1,63,1
-"GC7000F",boiler,132,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"GC7000F",boiler,132,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"GC7000F",boiler,132,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"GC7000F",boiler,132,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"GC7000F",boiler,132,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"GC7000F",boiler,132,nompower,nominal Power,uint8 (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
-"GC7000F",boiler,132,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"GC7000F",boiler,132,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"GC7000F",boiler,132,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"GC7000F",boiler,132,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"GC7000F",boiler,132,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
+"GC7000F",boiler,132,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
"GC7000F",boiler,132,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2
"GC7000F",boiler,132,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"Logano GB125/KB195i, Logamatic MC110",boiler,133,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"Logano GB125/KB195i, Logamatic MC110",boiler,133,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,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,5,0,1,5,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,exhausttemp,exhaust temperature,uint16 (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,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,5,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,5,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,5,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,5,0,1/10,11,1
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
"Logano GB125/KB195i, Logamatic MC110",boiler,133,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1
"Logano GB125/KB195i, Logamatic MC110",boiler,133,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,flamecurr,flame current,uint16 (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
"Logano GB125/KB195i, Logamatic MC110",boiler,133,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1
"Logano GB125/KB195i, Logamatic MC110",boiler,133,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1
"Logano GB125/KB195i, Logamatic MC110",boiler,133,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnminpower,burner min power,uint8 (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1
"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,absburnpow,burner current power (absolute),uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,heatblock,heating block,uint16 (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
"Logano GB125/KB195i, Logamatic MC110",boiler,133,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1
"Logano GB125/KB195i, Logamatic MC110",boiler,133,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1
"Logano GB125/KB195i, Logamatic MC110",boiler,133,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1
"Logano GB125/KB195i, Logamatic MC110",boiler,133,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,curveon,heatingcurve on,boolean, ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
"Logano GB125/KB195i, Logamatic MC110",boiler,133,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1
"Logano GB125/KB195i, Logamatic MC110",boiler,133,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1
"Logano GB125/KB195i, Logamatic MC110",boiler,133,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,nofrostmode,nofrost mode,boolean, ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
"Logano GB125/KB195i, Logamatic MC110",boiler,133,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"Logano GB125/KB195i, Logamatic MC110",boiler,133,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"Logano GB125/KB195i, Logamatic MC110",boiler,133,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,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], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,0,1,19,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,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,5,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,5,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,5,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,5,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,5,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,5,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,5,0,1,23,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,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,5,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,5,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,5,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,5,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,5,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,5,0,1,37,28
"Logano GB125/KB195i, Logamatic MC110",boiler,133,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,5,0,1,65,2
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
"Logano GB125/KB195i, Logamatic MC110",boiler,133,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,5,0,1,68,2
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"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,5,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,5,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,5,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,5,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,5,0,1,79,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"Logano GB125/KB195i, Logamatic MC110",boiler,133,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,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,5,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,5,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,5,9,1,39,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,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,5,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,5,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,5,9,1,42,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,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,5,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,5,9,1,44,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,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,5,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,5,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,5,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], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,63,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,nompower,nominal Power,uint8 (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
-"Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
+"Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
"Logano GB125/KB195i, Logamatic MC110",boiler,133,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2
"Logano GB125/KB195i, Logamatic MC110",boiler,133,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
-"Greenstar 30Ri Compact",boiler,154,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"Greenstar 30Ri Compact",boiler,154,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"Greenstar 30Ri Compact",boiler,154,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"Greenstar 30Ri Compact",boiler,154,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"Greenstar 30Ri Compact",boiler,154,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"Greenstar 30Ri Compact",boiler,154,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"Greenstar 30Ri Compact",boiler,154,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"Greenstar 30Ri Compact",boiler,154,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,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,5,0,1,5,1
-"Greenstar 30Ri Compact",boiler,154,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"Greenstar 30Ri Compact",boiler,154,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"Greenstar 30Ri Compact",boiler,154,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"Greenstar 30Ri Compact",boiler,154,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"Greenstar 30Ri Compact",boiler,154,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"Greenstar 30Ri Compact",boiler,154,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"Greenstar 30Ri Compact",boiler,154,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"Greenstar 30Ri Compact",boiler,154,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"Greenstar 30Ri Compact",boiler,154,exhausttemp,exhaust temperature,uint16 (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
+"Greenstar 30Ri Compact",boiler,154,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
+"Greenstar 30Ri Compact",boiler,154,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,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,5,0,1/10,8,1
+"Greenstar 30Ri Compact",boiler,154,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,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,5,0,1/10,10,1
+"Greenstar 30Ri Compact",boiler,154,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
+"Greenstar 30Ri Compact",boiler,154,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"Greenstar 30Ri Compact",boiler,154,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"Greenstar 30Ri Compact",boiler,154,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
"Greenstar 30Ri Compact",boiler,154,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1
"Greenstar 30Ri Compact",boiler,154,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1
-"Greenstar 30Ri Compact",boiler,154,flamecurr,flame current,uint16 (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
+"Greenstar 30Ri Compact",boiler,154,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
"Greenstar 30Ri Compact",boiler,154,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1
"Greenstar 30Ri Compact",boiler,154,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1
"Greenstar 30Ri Compact",boiler,154,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1
-"Greenstar 30Ri Compact",boiler,154,burnminpower,burner min power,uint8 (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
+"Greenstar 30Ri Compact",boiler,154,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
"Greenstar 30Ri Compact",boiler,154,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1
"Greenstar 30Ri Compact",boiler,154,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1
-"Greenstar 30Ri Compact",boiler,154,absburnpow,burner current power (absolute),uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
-"Greenstar 30Ri Compact",boiler,154,heatblock,heating block,uint16 (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
+"Greenstar 30Ri Compact",boiler,154,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
+"Greenstar 30Ri Compact",boiler,154,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
"Greenstar 30Ri Compact",boiler,154,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1
"Greenstar 30Ri Compact",boiler,154,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1
"Greenstar 30Ri Compact",boiler,154,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1
"Greenstar 30Ri Compact",boiler,154,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1
-"Greenstar 30Ri Compact",boiler,154,curveon,heatingcurve on,boolean, ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
+"Greenstar 30Ri Compact",boiler,154,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
"Greenstar 30Ri Compact",boiler,154,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1
"Greenstar 30Ri Compact",boiler,154,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1
"Greenstar 30Ri Compact",boiler,154,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1
-"Greenstar 30Ri Compact",boiler,154,nofrostmode,nofrost mode,boolean, ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
+"Greenstar 30Ri Compact",boiler,154,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
"Greenstar 30Ri Compact",boiler,154,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1
-"Greenstar 30Ri Compact",boiler,154,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"Greenstar 30Ri Compact",boiler,154,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"Greenstar 30Ri Compact",boiler,154,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"Greenstar 30Ri Compact",boiler,154,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"Greenstar 30Ri Compact",boiler,154,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"Greenstar 30Ri Compact",boiler,154,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,0,1,18,1
-"Greenstar 30Ri Compact",boiler,154,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,0,1,19,1
-"Greenstar 30Ri Compact",boiler,154,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,1
+"Greenstar 30Ri Compact",boiler,154,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,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,5,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,5,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,5,0,1,20,1
"Greenstar 30Ri Compact",boiler,154,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,5,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,5,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,5,0,1,23,1
-"Greenstar 30Ri Compact",boiler,154,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"Greenstar 30Ri Compact",boiler,154,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"Greenstar 30Ri Compact",boiler,154,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"Greenstar 30Ri Compact",boiler,154,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"Greenstar 30Ri Compact",boiler,154,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"Greenstar 30Ri Compact",boiler,154,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"Greenstar 30Ri Compact",boiler,154,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"Greenstar 30Ri Compact",boiler,154,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
+"Greenstar 30Ri Compact",boiler,154,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,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,5,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,5,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,5,0,1,31,2
+"Greenstar 30Ri Compact",boiler,154,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,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,5,0,1,35,2
"Greenstar 30Ri Compact",boiler,154,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,5,0,1,37,28
"Greenstar 30Ri Compact",boiler,154,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,5,0,1,65,2
-"Greenstar 30Ri Compact",boiler,154,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"Greenstar 30Ri Compact",boiler,154,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
"Greenstar 30Ri Compact",boiler,154,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,5,0,1,68,2
-"Greenstar 30Ri Compact",boiler,154,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"Greenstar 30Ri Compact",boiler,154,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"Greenstar 30Ri Compact",boiler,154,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"Greenstar 30Ri Compact",boiler,154,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"Greenstar 30Ri Compact",boiler,154,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,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,5,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,5,0,1,72,6
+"Greenstar 30Ri Compact",boiler,154,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
"Greenstar 30Ri Compact",boiler,154,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,5,0,1,79,1
-"Greenstar 30Ri Compact",boiler,154,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"Greenstar 30Ri Compact",boiler,154,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"Greenstar 30Ri Compact",boiler,154,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"Greenstar 30Ri Compact",boiler,154,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"Greenstar 30Ri Compact",boiler,154,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"Greenstar 30Ri Compact",boiler,154,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"Greenstar 30Ri Compact",boiler,154,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"Greenstar 30Ri Compact",boiler,154,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"Greenstar 30Ri Compact",boiler,154,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"Greenstar 30Ri Compact",boiler,154,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"Greenstar 30Ri Compact",boiler,154,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"Greenstar 30Ri Compact",boiler,154,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"Greenstar 30Ri Compact",boiler,154,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"Greenstar 30Ri Compact",boiler,154,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"Greenstar 30Ri Compact",boiler,154,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"Greenstar 30Ri Compact",boiler,154,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"Greenstar 30Ri Compact",boiler,154,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"Greenstar 30Ri Compact",boiler,154,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"Greenstar 30Ri Compact",boiler,154,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"Greenstar 30Ri Compact",boiler,154,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"Greenstar 30Ri Compact",boiler,154,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"Greenstar 30Ri Compact",boiler,154,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"Greenstar 30Ri Compact",boiler,154,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"Greenstar 30Ri Compact",boiler,154,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"Greenstar 30Ri Compact",boiler,154,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"Greenstar 30Ri Compact",boiler,154,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"Greenstar 30Ri Compact",boiler,154,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"Greenstar 30Ri Compact",boiler,154,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"Greenstar 30Ri Compact",boiler,154,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"Greenstar 30Ri Compact",boiler,154,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"Greenstar 30Ri Compact",boiler,154,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"Greenstar 30Ri Compact",boiler,154,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,1
+"Greenstar 30Ri Compact",boiler,154,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,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,5,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,5,9,1,39,1
-"Greenstar 30Ri Compact",boiler,154,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,1
+"Greenstar 30Ri Compact",boiler,154,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,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,5,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,5,9,1,42,1
-"Greenstar 30Ri Compact",boiler,154,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,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,5,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,5,9,1,44,1
-"Greenstar 30Ri Compact",boiler,154,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"Greenstar 30Ri Compact",boiler,154,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,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,5,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,5,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,5,9,1,47,1
-"Greenstar 30Ri Compact",boiler,154,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"Greenstar 30Ri Compact",boiler,154,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"Greenstar 30Ri Compact",boiler,154,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"Greenstar 30Ri Compact",boiler,154,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"Greenstar 30Ri Compact",boiler,154,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"Greenstar 30Ri Compact",boiler,154,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"Greenstar 30Ri Compact",boiler,154,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"Greenstar 30Ri Compact",boiler,154,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"Greenstar 30Ri Compact",boiler,154,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"Greenstar 30Ri Compact",boiler,154,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,56,1
+"Greenstar 30Ri Compact",boiler,154,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,1
"Greenstar 30Ri Compact",boiler,154,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,5,9,1,58,1
"Greenstar 30Ri Compact",boiler,154,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,5,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,5,9,1,60,1
"Greenstar 30Ri Compact",boiler,154,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,5,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,5,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,5,9,1,63,1
-"Greenstar 30Ri Compact",boiler,154,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"Greenstar 30Ri Compact",boiler,154,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"Greenstar 30Ri Compact",boiler,154,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"Greenstar 30Ri Compact",boiler,154,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"Greenstar 30Ri Compact",boiler,154,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"Greenstar 30Ri Compact",boiler,154,nompower,nominal Power,uint8 (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
-"Greenstar 30Ri Compact",boiler,154,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"Greenstar 30Ri Compact",boiler,154,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"Greenstar 30Ri Compact",boiler,154,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"Greenstar 30Ri Compact",boiler,154,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"Greenstar 30Ri Compact",boiler,154,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
+"Greenstar 30Ri Compact",boiler,154,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
"Greenstar 30Ri Compact",boiler,154,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2
"Greenstar 30Ri Compact",boiler,154,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
-"Suprapur-o",boiler,155,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"Suprapur-o",boiler,155,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"Suprapur-o",boiler,155,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"Suprapur-o",boiler,155,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"Suprapur-o",boiler,155,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"Suprapur-o",boiler,155,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"Suprapur-o",boiler,155,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"Suprapur-o",boiler,155,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,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,5,0,1,5,1
-"Suprapur-o",boiler,155,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"Suprapur-o",boiler,155,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"Suprapur-o",boiler,155,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"Suprapur-o",boiler,155,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"Suprapur-o",boiler,155,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"Suprapur-o",boiler,155,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"Suprapur-o",boiler,155,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"Suprapur-o",boiler,155,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"Suprapur-o",boiler,155,exhausttemp,exhaust temperature,uint16 (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
+"Suprapur-o",boiler,155,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
+"Suprapur-o",boiler,155,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
+"Suprapur-o",boiler,155,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
+"Suprapur-o",boiler,155,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
+"Suprapur-o",boiler,155,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
+"Suprapur-o",boiler,155,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
+"Suprapur-o",boiler,155,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"Suprapur-o",boiler,155,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"Suprapur-o",boiler,155,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
"Suprapur-o",boiler,155,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1
"Suprapur-o",boiler,155,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1
-"Suprapur-o",boiler,155,flamecurr,flame current,uint16 (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
+"Suprapur-o",boiler,155,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
"Suprapur-o",boiler,155,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1
"Suprapur-o",boiler,155,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1
"Suprapur-o",boiler,155,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1
-"Suprapur-o",boiler,155,burnminpower,burner min power,uint8 (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
+"Suprapur-o",boiler,155,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
"Suprapur-o",boiler,155,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1
"Suprapur-o",boiler,155,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1
-"Suprapur-o",boiler,155,absburnpow,burner current power (absolute),uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
-"Suprapur-o",boiler,155,heatblock,heating block,uint16 (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
+"Suprapur-o",boiler,155,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
+"Suprapur-o",boiler,155,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
"Suprapur-o",boiler,155,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1
"Suprapur-o",boiler,155,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1
"Suprapur-o",boiler,155,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1
"Suprapur-o",boiler,155,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1
-"Suprapur-o",boiler,155,curveon,heatingcurve on,boolean, ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
+"Suprapur-o",boiler,155,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
"Suprapur-o",boiler,155,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1
"Suprapur-o",boiler,155,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1
"Suprapur-o",boiler,155,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1
-"Suprapur-o",boiler,155,nofrostmode,nofrost mode,boolean, ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
+"Suprapur-o",boiler,155,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
"Suprapur-o",boiler,155,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1
-"Suprapur-o",boiler,155,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"Suprapur-o",boiler,155,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"Suprapur-o",boiler,155,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"Suprapur-o",boiler,155,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"Suprapur-o",boiler,155,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"Suprapur-o",boiler,155,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,0,1,18,1
-"Suprapur-o",boiler,155,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,0,1,19,1
-"Suprapur-o",boiler,155,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,1
+"Suprapur-o",boiler,155,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,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,5,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,5,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,5,0,1,20,1
"Suprapur-o",boiler,155,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,5,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,5,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,5,0,1,23,1
-"Suprapur-o",boiler,155,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"Suprapur-o",boiler,155,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"Suprapur-o",boiler,155,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"Suprapur-o",boiler,155,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"Suprapur-o",boiler,155,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"Suprapur-o",boiler,155,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"Suprapur-o",boiler,155,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"Suprapur-o",boiler,155,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
+"Suprapur-o",boiler,155,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,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,5,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,5,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,5,0,1,31,2
+"Suprapur-o",boiler,155,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,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,5,0,1,35,2
"Suprapur-o",boiler,155,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,5,0,1,37,28
"Suprapur-o",boiler,155,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,5,0,1,65,2
-"Suprapur-o",boiler,155,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"Suprapur-o",boiler,155,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
"Suprapur-o",boiler,155,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,5,0,1,68,2
-"Suprapur-o",boiler,155,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"Suprapur-o",boiler,155,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"Suprapur-o",boiler,155,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"Suprapur-o",boiler,155,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"Suprapur-o",boiler,155,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,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,5,0,1,71,1
+"Suprapur-o",boiler,155,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
+"Suprapur-o",boiler,155,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
"Suprapur-o",boiler,155,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,5,0,1,79,1
-"Suprapur-o",boiler,155,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"Suprapur-o",boiler,155,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"Suprapur-o",boiler,155,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"Suprapur-o",boiler,155,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"Suprapur-o",boiler,155,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"Suprapur-o",boiler,155,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"Suprapur-o",boiler,155,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"Suprapur-o",boiler,155,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"Suprapur-o",boiler,155,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"Suprapur-o",boiler,155,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"Suprapur-o",boiler,155,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"Suprapur-o",boiler,155,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"Suprapur-o",boiler,155,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"Suprapur-o",boiler,155,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"Suprapur-o",boiler,155,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"Suprapur-o",boiler,155,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"Suprapur-o",boiler,155,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"Suprapur-o",boiler,155,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"Suprapur-o",boiler,155,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"Suprapur-o",boiler,155,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"Suprapur-o",boiler,155,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"Suprapur-o",boiler,155,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"Suprapur-o",boiler,155,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"Suprapur-o",boiler,155,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"Suprapur-o",boiler,155,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"Suprapur-o",boiler,155,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"Suprapur-o",boiler,155,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"Suprapur-o",boiler,155,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"Suprapur-o",boiler,155,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"Suprapur-o",boiler,155,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"Suprapur-o",boiler,155,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"Suprapur-o",boiler,155,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,1
+"Suprapur-o",boiler,155,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,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,5,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,5,9,1,39,1
-"Suprapur-o",boiler,155,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,1
+"Suprapur-o",boiler,155,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,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,5,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,5,9,1,42,1
-"Suprapur-o",boiler,155,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,1
+"Suprapur-o",boiler,155,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,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,5,9,1,44,1
-"Suprapur-o",boiler,155,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"Suprapur-o",boiler,155,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,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,5,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,5,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,5,9,1,47,1
-"Suprapur-o",boiler,155,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"Suprapur-o",boiler,155,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"Suprapur-o",boiler,155,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"Suprapur-o",boiler,155,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"Suprapur-o",boiler,155,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"Suprapur-o",boiler,155,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"Suprapur-o",boiler,155,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"Suprapur-o",boiler,155,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"Suprapur-o",boiler,155,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"Suprapur-o",boiler,155,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1/10,54,1
+"Suprapur-o",boiler,155,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,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,5,9,1,56,1
+"Suprapur-o",boiler,155,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,1
"Suprapur-o",boiler,155,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,5,9,1,58,1
"Suprapur-o",boiler,155,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,5,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,5,9,1,60,1
"Suprapur-o",boiler,155,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,5,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,5,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,5,9,1,63,1
-"Suprapur-o",boiler,155,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"Suprapur-o",boiler,155,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"Suprapur-o",boiler,155,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"Suprapur-o",boiler,155,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"Suprapur-o",boiler,155,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"Suprapur-o",boiler,155,nompower,nominal Power,uint8 (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
-"Suprapur-o",boiler,155,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"Suprapur-o",boiler,155,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"Suprapur-o",boiler,155,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"Suprapur-o",boiler,155,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"Suprapur-o",boiler,155,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
+"Suprapur-o",boiler,155,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
"Suprapur-o",boiler,155,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2
"Suprapur-o",boiler,155,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
-"Cerapur Aero",boiler,167,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"Cerapur Aero",boiler,167,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"Cerapur Aero",boiler,167,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"Cerapur Aero",boiler,167,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"Cerapur Aero",boiler,167,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"Cerapur Aero",boiler,167,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"Cerapur Aero",boiler,167,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"Cerapur Aero",boiler,167,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,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,5,0,1,5,1
-"Cerapur Aero",boiler,167,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"Cerapur Aero",boiler,167,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"Cerapur Aero",boiler,167,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"Cerapur Aero",boiler,167,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"Cerapur Aero",boiler,167,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"Cerapur Aero",boiler,167,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"Cerapur Aero",boiler,167,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"Cerapur Aero",boiler,167,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"Cerapur Aero",boiler,167,exhausttemp,exhaust temperature,uint16 (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
+"Cerapur Aero",boiler,167,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
+"Cerapur Aero",boiler,167,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
+"Cerapur Aero",boiler,167,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
+"Cerapur Aero",boiler,167,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
+"Cerapur Aero",boiler,167,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
+"Cerapur Aero",boiler,167,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
+"Cerapur Aero",boiler,167,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"Cerapur Aero",boiler,167,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"Cerapur Aero",boiler,167,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
"Cerapur Aero",boiler,167,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1
"Cerapur Aero",boiler,167,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1
-"Cerapur Aero",boiler,167,flamecurr,flame current,uint16 (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
+"Cerapur Aero",boiler,167,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
"Cerapur Aero",boiler,167,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1
"Cerapur Aero",boiler,167,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1
"Cerapur Aero",boiler,167,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1
-"Cerapur Aero",boiler,167,burnminpower,burner min power,uint8 (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
+"Cerapur Aero",boiler,167,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
"Cerapur Aero",boiler,167,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1
"Cerapur Aero",boiler,167,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1
-"Cerapur Aero",boiler,167,absburnpow,burner current power (absolute),uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
-"Cerapur Aero",boiler,167,heatblock,heating block,uint16 (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
+"Cerapur Aero",boiler,167,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
+"Cerapur Aero",boiler,167,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
"Cerapur Aero",boiler,167,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1
"Cerapur Aero",boiler,167,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1
"Cerapur Aero",boiler,167,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1
"Cerapur Aero",boiler,167,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1
-"Cerapur Aero",boiler,167,curveon,heatingcurve on,boolean, ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
+"Cerapur Aero",boiler,167,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
"Cerapur Aero",boiler,167,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1
"Cerapur Aero",boiler,167,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1
"Cerapur Aero",boiler,167,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1
-"Cerapur Aero",boiler,167,nofrostmode,nofrost mode,boolean, ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
+"Cerapur Aero",boiler,167,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
"Cerapur Aero",boiler,167,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1
-"Cerapur Aero",boiler,167,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"Cerapur Aero",boiler,167,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"Cerapur Aero",boiler,167,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"Cerapur Aero",boiler,167,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"Cerapur Aero",boiler,167,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"Cerapur Aero",boiler,167,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,0,1,18,1
-"Cerapur Aero",boiler,167,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,0,1,19,1
-"Cerapur Aero",boiler,167,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,1
+"Cerapur Aero",boiler,167,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,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,5,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,5,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,5,0,1,20,1
"Cerapur Aero",boiler,167,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,5,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,5,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,5,0,1,23,1
-"Cerapur Aero",boiler,167,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"Cerapur Aero",boiler,167,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"Cerapur Aero",boiler,167,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"Cerapur Aero",boiler,167,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"Cerapur Aero",boiler,167,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"Cerapur Aero",boiler,167,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"Cerapur Aero",boiler,167,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"Cerapur Aero",boiler,167,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
+"Cerapur Aero",boiler,167,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,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,5,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,5,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,5,0,1,31,2
+"Cerapur Aero",boiler,167,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,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,5,0,1,35,2
"Cerapur Aero",boiler,167,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,5,0,1,37,28
"Cerapur Aero",boiler,167,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,5,0,1,65,2
-"Cerapur Aero",boiler,167,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"Cerapur Aero",boiler,167,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
"Cerapur Aero",boiler,167,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,5,0,1,68,2
-"Cerapur Aero",boiler,167,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"Cerapur Aero",boiler,167,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"Cerapur Aero",boiler,167,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"Cerapur Aero",boiler,167,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"Cerapur Aero",boiler,167,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,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,5,0,1,71,1
+"Cerapur Aero",boiler,167,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
+"Cerapur Aero",boiler,167,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
"Cerapur Aero",boiler,167,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,5,0,1,79,1
-"Cerapur Aero",boiler,167,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"Cerapur Aero",boiler,167,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"Cerapur Aero",boiler,167,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"Cerapur Aero",boiler,167,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"Cerapur Aero",boiler,167,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"Cerapur Aero",boiler,167,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"Cerapur Aero",boiler,167,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"Cerapur Aero",boiler,167,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"Cerapur Aero",boiler,167,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"Cerapur Aero",boiler,167,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"Cerapur Aero",boiler,167,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"Cerapur Aero",boiler,167,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"Cerapur Aero",boiler,167,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"Cerapur Aero",boiler,167,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"Cerapur Aero",boiler,167,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"Cerapur Aero",boiler,167,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"Cerapur Aero",boiler,167,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"Cerapur Aero",boiler,167,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"Cerapur Aero",boiler,167,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"Cerapur Aero",boiler,167,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"Cerapur Aero",boiler,167,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"Cerapur Aero",boiler,167,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"Cerapur Aero",boiler,167,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"Cerapur Aero",boiler,167,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"Cerapur Aero",boiler,167,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"Cerapur Aero",boiler,167,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"Cerapur Aero",boiler,167,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"Cerapur Aero",boiler,167,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"Cerapur Aero",boiler,167,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"Cerapur Aero",boiler,167,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"Cerapur Aero",boiler,167,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"Cerapur Aero",boiler,167,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,1
+"Cerapur Aero",boiler,167,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,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,5,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,5,9,1,39,1
-"Cerapur Aero",boiler,167,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,1
+"Cerapur Aero",boiler,167,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,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,5,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,5,9,1,42,1
-"Cerapur Aero",boiler,167,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,1
+"Cerapur Aero",boiler,167,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,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,5,9,1,44,1
-"Cerapur Aero",boiler,167,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"Cerapur Aero",boiler,167,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,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,5,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,5,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,5,9,1,47,1
-"Cerapur Aero",boiler,167,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"Cerapur Aero",boiler,167,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"Cerapur Aero",boiler,167,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"Cerapur Aero",boiler,167,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"Cerapur Aero",boiler,167,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"Cerapur Aero",boiler,167,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"Cerapur Aero",boiler,167,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"Cerapur Aero",boiler,167,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"Cerapur Aero",boiler,167,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"Cerapur Aero",boiler,167,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1/10,54,1
+"Cerapur Aero",boiler,167,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,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,5,9,1,56,1
+"Cerapur Aero",boiler,167,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,1
"Cerapur Aero",boiler,167,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,5,9,1,58,1
"Cerapur Aero",boiler,167,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,5,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,5,9,1,60,1
"Cerapur Aero",boiler,167,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,5,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,5,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,5,9,1,63,1
-"Cerapur Aero",boiler,167,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"Cerapur Aero",boiler,167,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"Cerapur Aero",boiler,167,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"Cerapur Aero",boiler,167,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"Cerapur Aero",boiler,167,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"Cerapur Aero",boiler,167,nompower,nominal Power,uint8 (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
-"Cerapur Aero",boiler,167,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"Cerapur Aero",boiler,167,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"Cerapur Aero",boiler,167,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"Cerapur Aero",boiler,167,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"Cerapur Aero",boiler,167,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
+"Cerapur Aero",boiler,167,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
"Cerapur Aero",boiler,167,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2
"Cerapur Aero",boiler,167,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
-"Hybrid Heatpump",boiler,168,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"Hybrid Heatpump",boiler,168,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"Hybrid Heatpump",boiler,168,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"Hybrid Heatpump",boiler,168,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"Hybrid Heatpump",boiler,168,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"Hybrid Heatpump",boiler,168,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"Hybrid Heatpump",boiler,168,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"Hybrid Heatpump",boiler,168,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,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,5,0,1,5,1
-"Hybrid Heatpump",boiler,168,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"Hybrid Heatpump",boiler,168,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"Hybrid Heatpump",boiler,168,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"Hybrid Heatpump",boiler,168,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"Hybrid Heatpump",boiler,168,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"Hybrid Heatpump",boiler,168,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"Hybrid Heatpump",boiler,168,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"Hybrid Heatpump",boiler,168,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"Hybrid Heatpump",boiler,168,exhausttemp,exhaust temperature,uint16 (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
+"Hybrid Heatpump",boiler,168,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
+"Hybrid Heatpump",boiler,168,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
+"Hybrid Heatpump",boiler,168,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
+"Hybrid Heatpump",boiler,168,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
+"Hybrid Heatpump",boiler,168,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
+"Hybrid Heatpump",boiler,168,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
+"Hybrid Heatpump",boiler,168,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"Hybrid Heatpump",boiler,168,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"Hybrid Heatpump",boiler,168,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
"Hybrid Heatpump",boiler,168,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1
"Hybrid Heatpump",boiler,168,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1
-"Hybrid Heatpump",boiler,168,flamecurr,flame current,uint16 (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
+"Hybrid Heatpump",boiler,168,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
"Hybrid Heatpump",boiler,168,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1
"Hybrid Heatpump",boiler,168,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1
"Hybrid Heatpump",boiler,168,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1
-"Hybrid Heatpump",boiler,168,burnminpower,burner min power,uint8 (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
+"Hybrid Heatpump",boiler,168,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
"Hybrid Heatpump",boiler,168,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1
"Hybrid Heatpump",boiler,168,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1
-"Hybrid Heatpump",boiler,168,absburnpow,burner current power (absolute),uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
-"Hybrid Heatpump",boiler,168,heatblock,heating block,uint16 (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
+"Hybrid Heatpump",boiler,168,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
+"Hybrid Heatpump",boiler,168,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
"Hybrid Heatpump",boiler,168,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1
"Hybrid Heatpump",boiler,168,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1
"Hybrid Heatpump",boiler,168,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1
"Hybrid Heatpump",boiler,168,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1
-"Hybrid Heatpump",boiler,168,curveon,heatingcurve on,boolean, ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
+"Hybrid Heatpump",boiler,168,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
"Hybrid Heatpump",boiler,168,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1
"Hybrid Heatpump",boiler,168,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1
"Hybrid Heatpump",boiler,168,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1
-"Hybrid Heatpump",boiler,168,nofrostmode,nofrost mode,boolean, ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
+"Hybrid Heatpump",boiler,168,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
"Hybrid Heatpump",boiler,168,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1
-"Hybrid Heatpump",boiler,168,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"Hybrid Heatpump",boiler,168,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"Hybrid Heatpump",boiler,168,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"Hybrid Heatpump",boiler,168,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"Hybrid Heatpump",boiler,168,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"Hybrid Heatpump",boiler,168,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,0,1,18,1
-"Hybrid Heatpump",boiler,168,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,0,1,19,1
-"Hybrid Heatpump",boiler,168,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,1
+"Hybrid Heatpump",boiler,168,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,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,5,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,5,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,5,0,1,20,1
"Hybrid Heatpump",boiler,168,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,5,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,5,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,5,0,1,23,1
-"Hybrid Heatpump",boiler,168,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"Hybrid Heatpump",boiler,168,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"Hybrid Heatpump",boiler,168,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"Hybrid Heatpump",boiler,168,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"Hybrid Heatpump",boiler,168,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"Hybrid Heatpump",boiler,168,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"Hybrid Heatpump",boiler,168,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"Hybrid Heatpump",boiler,168,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
+"Hybrid Heatpump",boiler,168,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,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,5,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,5,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,5,0,1,31,2
+"Hybrid Heatpump",boiler,168,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,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,5,0,1,35,2
"Hybrid Heatpump",boiler,168,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,5,0,1,37,28
"Hybrid Heatpump",boiler,168,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,5,0,1,65,2
-"Hybrid Heatpump",boiler,168,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"Hybrid Heatpump",boiler,168,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
"Hybrid Heatpump",boiler,168,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,5,0,1,68,2
-"Hybrid Heatpump",boiler,168,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"Hybrid Heatpump",boiler,168,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"Hybrid Heatpump",boiler,168,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"Hybrid Heatpump",boiler,168,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"Hybrid Heatpump",boiler,168,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,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,5,0,1,71,1
+"Hybrid Heatpump",boiler,168,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
+"Hybrid Heatpump",boiler,168,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
"Hybrid Heatpump",boiler,168,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,5,0,1,79,1
-"Hybrid Heatpump",boiler,168,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"Hybrid Heatpump",boiler,168,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"Hybrid Heatpump",boiler,168,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"Hybrid Heatpump",boiler,168,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"Hybrid Heatpump",boiler,168,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"Hybrid Heatpump",boiler,168,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"Hybrid Heatpump",boiler,168,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"Hybrid Heatpump",boiler,168,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"Hybrid Heatpump",boiler,168,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"Hybrid Heatpump",boiler,168,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"Hybrid Heatpump",boiler,168,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"Hybrid Heatpump",boiler,168,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"Hybrid Heatpump",boiler,168,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"Hybrid Heatpump",boiler,168,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"Hybrid Heatpump",boiler,168,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"Hybrid Heatpump",boiler,168,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"Hybrid Heatpump",boiler,168,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"Hybrid Heatpump",boiler,168,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"Hybrid Heatpump",boiler,168,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"Hybrid Heatpump",boiler,168,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"Hybrid Heatpump",boiler,168,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"Hybrid Heatpump",boiler,168,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"Hybrid Heatpump",boiler,168,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"Hybrid Heatpump",boiler,168,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"Hybrid Heatpump",boiler,168,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"Hybrid Heatpump",boiler,168,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"Hybrid Heatpump",boiler,168,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"Hybrid Heatpump",boiler,168,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"Hybrid Heatpump",boiler,168,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"Hybrid Heatpump",boiler,168,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"Hybrid Heatpump",boiler,168,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"Hybrid Heatpump",boiler,168,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,1
+"Hybrid Heatpump",boiler,168,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,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,5,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,5,9,1,39,1
-"Hybrid Heatpump",boiler,168,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,1
+"Hybrid Heatpump",boiler,168,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,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,5,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,5,9,1,42,1
-"Hybrid Heatpump",boiler,168,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,1
+"Hybrid Heatpump",boiler,168,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,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,5,9,1,44,1
-"Hybrid Heatpump",boiler,168,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"Hybrid Heatpump",boiler,168,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,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,5,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,5,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,5,9,1,47,1
-"Hybrid Heatpump",boiler,168,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"Hybrid Heatpump",boiler,168,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"Hybrid Heatpump",boiler,168,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"Hybrid Heatpump",boiler,168,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"Hybrid Heatpump",boiler,168,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"Hybrid Heatpump",boiler,168,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"Hybrid Heatpump",boiler,168,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"Hybrid Heatpump",boiler,168,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"Hybrid Heatpump",boiler,168,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"Hybrid Heatpump",boiler,168,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1/10,54,1
+"Hybrid Heatpump",boiler,168,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,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,5,9,1,56,1
+"Hybrid Heatpump",boiler,168,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,1
"Hybrid Heatpump",boiler,168,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,5,9,1,58,1
"Hybrid Heatpump",boiler,168,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,5,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,5,9,1,60,1
"Hybrid Heatpump",boiler,168,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,5,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,5,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,5,9,1,63,1
-"Hybrid Heatpump",boiler,168,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"Hybrid Heatpump",boiler,168,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"Hybrid Heatpump",boiler,168,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"Hybrid Heatpump",boiler,168,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"Hybrid Heatpump",boiler,168,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"Hybrid Heatpump",boiler,168,nompower,nominal Power,uint8 (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
-"Hybrid Heatpump",boiler,168,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"Hybrid Heatpump",boiler,168,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"Hybrid Heatpump",boiler,168,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"Hybrid Heatpump",boiler,168,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"Hybrid Heatpump",boiler,168,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
+"Hybrid Heatpump",boiler,168,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
"Hybrid Heatpump",boiler,168,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2
"Hybrid Heatpump",boiler,168,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
-"Logano GB212",boiler,170,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"Logano GB212",boiler,170,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"Logano GB212",boiler,170,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"Logano GB212",boiler,170,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"Logano GB212",boiler,170,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"Logano GB212",boiler,170,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"Logano GB212",boiler,170,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"Logano GB212",boiler,170,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,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,5,0,1,5,1
-"Logano GB212",boiler,170,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"Logano GB212",boiler,170,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"Logano GB212",boiler,170,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"Logano GB212",boiler,170,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"Logano GB212",boiler,170,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"Logano GB212",boiler,170,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"Logano GB212",boiler,170,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"Logano GB212",boiler,170,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"Logano GB212",boiler,170,exhausttemp,exhaust temperature,uint16 (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
+"Logano GB212",boiler,170,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
+"Logano GB212",boiler,170,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
+"Logano GB212",boiler,170,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
+"Logano GB212",boiler,170,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
+"Logano GB212",boiler,170,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
+"Logano GB212",boiler,170,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
+"Logano GB212",boiler,170,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"Logano GB212",boiler,170,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"Logano GB212",boiler,170,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
"Logano GB212",boiler,170,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1
"Logano GB212",boiler,170,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1
-"Logano GB212",boiler,170,flamecurr,flame current,uint16 (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
+"Logano GB212",boiler,170,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
"Logano GB212",boiler,170,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1
"Logano GB212",boiler,170,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1
"Logano GB212",boiler,170,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1
-"Logano GB212",boiler,170,burnminpower,burner min power,uint8 (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
+"Logano GB212",boiler,170,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
"Logano GB212",boiler,170,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1
"Logano GB212",boiler,170,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1
-"Logano GB212",boiler,170,absburnpow,burner current power (absolute),uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
-"Logano GB212",boiler,170,heatblock,heating block,uint16 (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
+"Logano GB212",boiler,170,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
+"Logano GB212",boiler,170,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
"Logano GB212",boiler,170,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1
"Logano GB212",boiler,170,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1
"Logano GB212",boiler,170,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1
"Logano GB212",boiler,170,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1
-"Logano GB212",boiler,170,curveon,heatingcurve on,boolean, ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
+"Logano GB212",boiler,170,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
"Logano GB212",boiler,170,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1
"Logano GB212",boiler,170,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1
"Logano GB212",boiler,170,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1
-"Logano GB212",boiler,170,nofrostmode,nofrost mode,boolean, ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
+"Logano GB212",boiler,170,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
"Logano GB212",boiler,170,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1
-"Logano GB212",boiler,170,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"Logano GB212",boiler,170,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"Logano GB212",boiler,170,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"Logano GB212",boiler,170,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"Logano GB212",boiler,170,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"Logano GB212",boiler,170,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,0,1,18,1
-"Logano GB212",boiler,170,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,0,1,19,1
-"Logano GB212",boiler,170,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,1
+"Logano GB212",boiler,170,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,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,5,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,5,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,5,0,1,20,1
"Logano GB212",boiler,170,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,5,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,5,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,5,0,1,23,1
-"Logano GB212",boiler,170,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"Logano GB212",boiler,170,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"Logano GB212",boiler,170,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"Logano GB212",boiler,170,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"Logano GB212",boiler,170,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"Logano GB212",boiler,170,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"Logano GB212",boiler,170,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"Logano GB212",boiler,170,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
+"Logano GB212",boiler,170,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,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,5,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,5,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,5,0,1,31,2
+"Logano GB212",boiler,170,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,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,5,0,1,35,2
"Logano GB212",boiler,170,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,5,0,1,37,28
"Logano GB212",boiler,170,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,5,0,1,65,2
-"Logano GB212",boiler,170,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"Logano GB212",boiler,170,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
"Logano GB212",boiler,170,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,5,0,1,68,2
-"Logano GB212",boiler,170,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"Logano GB212",boiler,170,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"Logano GB212",boiler,170,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"Logano GB212",boiler,170,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"Logano GB212",boiler,170,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,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,5,0,1,71,1
+"Logano GB212",boiler,170,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
+"Logano GB212",boiler,170,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
"Logano GB212",boiler,170,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,5,0,1,79,1
-"Logano GB212",boiler,170,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"Logano GB212",boiler,170,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"Logano GB212",boiler,170,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"Logano GB212",boiler,170,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"Logano GB212",boiler,170,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"Logano GB212",boiler,170,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"Logano GB212",boiler,170,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"Logano GB212",boiler,170,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"Logano GB212",boiler,170,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"Logano GB212",boiler,170,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"Logano GB212",boiler,170,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"Logano GB212",boiler,170,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"Logano GB212",boiler,170,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"Logano GB212",boiler,170,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"Logano GB212",boiler,170,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"Logano GB212",boiler,170,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"Logano GB212",boiler,170,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"Logano GB212",boiler,170,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"Logano GB212",boiler,170,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"Logano GB212",boiler,170,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"Logano GB212",boiler,170,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"Logano GB212",boiler,170,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"Logano GB212",boiler,170,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"Logano GB212",boiler,170,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"Logano GB212",boiler,170,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"Logano GB212",boiler,170,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"Logano GB212",boiler,170,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"Logano GB212",boiler,170,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"Logano GB212",boiler,170,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"Logano GB212",boiler,170,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"Logano GB212",boiler,170,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"Logano GB212",boiler,170,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,1
+"Logano GB212",boiler,170,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,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,5,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,5,9,1,39,1
-"Logano GB212",boiler,170,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,1
+"Logano GB212",boiler,170,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,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,5,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,5,9,1,42,1
-"Logano GB212",boiler,170,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,1
+"Logano GB212",boiler,170,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,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,5,9,1,44,1
-"Logano GB212",boiler,170,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"Logano GB212",boiler,170,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,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,5,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,5,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,5,9,1,47,1
-"Logano GB212",boiler,170,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"Logano GB212",boiler,170,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"Logano GB212",boiler,170,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"Logano GB212",boiler,170,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"Logano GB212",boiler,170,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"Logano GB212",boiler,170,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"Logano GB212",boiler,170,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"Logano GB212",boiler,170,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"Logano GB212",boiler,170,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"Logano GB212",boiler,170,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1/10,54,1
+"Logano GB212",boiler,170,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,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,5,9,1,56,1
+"Logano GB212",boiler,170,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,1
"Logano GB212",boiler,170,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,5,9,1,58,1
"Logano GB212",boiler,170,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,5,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,5,9,1,60,1
"Logano GB212",boiler,170,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,5,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,5,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,5,9,1,63,1
-"Logano GB212",boiler,170,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"Logano GB212",boiler,170,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"Logano GB212",boiler,170,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"Logano GB212",boiler,170,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"Logano GB212",boiler,170,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"Logano GB212",boiler,170,nompower,nominal Power,uint8 (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
-"Logano GB212",boiler,170,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"Logano GB212",boiler,170,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"Logano GB212",boiler,170,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"Logano GB212",boiler,170,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"Logano GB212",boiler,170,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
+"Logano GB212",boiler,170,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
"Logano GB212",boiler,170,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2
"Logano GB212",boiler,170,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"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,5,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,5,0,1,5,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,0,1,16,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,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], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,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], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,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,5,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,5,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,5,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,5,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,5,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,5,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,5,0,1,23,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,0,1,65,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"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,5,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,5,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], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"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,5,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,5,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,5,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,5,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,5,0,1,79,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,mandefrost,manual defrost,cmd [off\|on], ,true,sensor.boiler_manual_defrost,sensor.boiler_mandefrost,5,0,1,84,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.nrg,energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_dhw_energy,sensor.boiler_dhw_nrg,5,9,1/100,0,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgheat,energy heating,uint24 (>=0<=167772),kWh,false,sensor.boiler_energy_heating,sensor.boiler_nrgheat,5,0,1/100,87,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgcool,energy cooling,uint24 (>=0<=167772),kWh,false,sensor.boiler_energy_cooling,sensor.boiler_nrgcool,5,0,1/100,89,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,metertotal,meter total,uint24 (>=0<=167772),kWh,false,sensor.boiler_meter_total,sensor.boiler_metertotal,5,0,1/100,91,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,metercomp,meter compressor,uint24 (>=0<=167772),kWh,false,sensor.boiler_meter_compressor,sensor.boiler_metercomp,5,0,1/100,93,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,metereheat,meter e-heater,uint24 (>=0<=167772),kWh,false,sensor.boiler_meter_e-heater,sensor.boiler_metereheat,5,0,1/100,95,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,meterheat,meter heating,uint24 (>=0<=167772),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/100,97,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,metercool,meter cooling,uint24 (>=0<=167772),kWh,false,sensor.boiler_meter_cooling,sensor.boiler_metercool,5,0,1/100,99,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.meter,meter,uint24 (>=0<=167772),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/100,2,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,uptimetotal,heatpump total uptime,time (>=0<=279620),minutes,false,sensor.boiler_heatpump_total_uptime,sensor.boiler_uptimetotal,5,0,1/60,101,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,uptimecontrol,total operating time heat,time (>=0<=279620),minutes,false,sensor.boiler_total_operating_time_heat,sensor.boiler_uptimecontrol,5,0,1/60,103,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,uptimecompheating,operating time compressor heating,time (>=0<=279620),minutes,false,sensor.boiler_operating_time_compressor_heating,sensor.boiler_uptimecompheating,5,0,1/60,105,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,uptimecompcooling,operating time compressor cooling,time (>=0<=279620),minutes,false,sensor.boiler_operating_time_compressor_cooling,sensor.boiler_uptimecompcooling,5,0,1/60,107,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.uptimecomp,operating time compressor,time (>=0<=279620),minutes,false,sensor.boiler_dhw_operating_time_compressor,sensor.boiler_dhw_uptimecomp,5,9,1/60,4,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,uptimecomppool,operating time compressor pool,time (>=0<=279620),minutes,false,sensor.boiler_operating_time_compressor_pool,sensor.boiler_uptimecomppool,5,0,1/60,109,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,totalcompstarts,total compressor control starts,uint24 (>=0<=16777214), ,false,sensor.boiler_total_compressor_control_starts,sensor.boiler_totalcompstarts,5,0,1,111,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,heatingstarts,heating control starts,uint24 (>=0<=16777214), ,false,sensor.boiler_heating_control_starts,sensor.boiler_heatingstarts,5,0,1,113,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,coolingstarts,cooling control starts,uint24 (>=0<=16777214), ,false,sensor.boiler_cooling_control_starts,sensor.boiler_coolingstarts,5,0,1,115,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.startshp,starts hp,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts_hp,sensor.boiler_dhw_startshp,5,9,1,6,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,poolstarts,pool control starts,uint24 (>=0<=16777214), ,false,sensor.boiler_pool_control_starts,sensor.boiler_poolstarts,5,0,1,117,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgconstotal,total energy consumption,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_energy_consumption,sensor.boiler_nrgconstotal,5,0,1,119,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgconscomptotal,total energy consumption compressor,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_energy_consumption_compressor,sensor.boiler_nrgconscomptotal,5,0,1,121,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgconscompheating,energy consumption compressor heating,uint24 (>=0<=16777214),kWh,false,sensor.boiler_energy_consumption_compressor_heating,sensor.boiler_nrgconscompheating,5,0,1,123,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.nrgconscomp,energy consumption compressor,uint24 (>=0<=16777214),kWh,false,sensor.boiler_dhw_energy_consumption_compressor,sensor.boiler_dhw_nrgconscomp,5,9,1,8,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgconscompcooling,energy consumption compressor cooling,uint24 (>=0<=16777214),kWh,false,sensor.boiler_energy_consumption_compressor_cooling,sensor.boiler_nrgconscompcooling,5,0,1,125,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgconscomppool,energy consumption compressor pool,uint24 (>=0<=16777214),kWh,false,sensor.boiler_energy_consumption_compressor_pool,sensor.boiler_nrgconscomppool,5,0,1,127,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxelecheatnrgconstotal,total aux elec. heater energy consumption,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_aux_elec._heater_energy_consumption,sensor.boiler_auxelecheatnrgconstotal,5,0,1,129,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxelecheatnrgconsheating,aux elec. heater energy consumption heating,uint24 (>=0<=16777214),kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_heating,sensor.boiler_auxelecheatnrgconsheating,5,0,1,131,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.auxelecheatnrgcons,aux elec. heater energy consumption,uint24 (>=0<=16777214),kWh,false,sensor.boiler_dhw_aux_elec._heater_energy_consumption,sensor.boiler_dhw_auxelecheatnrgcons,5,9,1,10,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxelecheatnrgconspool,aux elec. heater energy consumption pool,uint24 (>=0<=16777214),kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_pool,sensor.boiler_auxelecheatnrgconspool,5,0,1,133,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgsupptotal,total energy supplied,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_energy_supplied,sensor.boiler_nrgsupptotal,5,0,1,135,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgsuppheating,total energy supplied heating,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_energy_supplied_heating,sensor.boiler_nrgsuppheating,5,0,1,137,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.nrgsupp,total energy warm supplied,uint24 (>=0<=16777214),kWh,false,sensor.boiler_dhw_total_energy_warm_supplied,sensor.boiler_dhw_nrgsupp,5,9,1,12,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgsuppcooling,total energy supplied cooling,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_energy_supplied_cooling,sensor.boiler_nrgsuppcooling,5,0,1,139,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgsupppool,total energy supplied pool,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_energy_supplied_pool,sensor.boiler_nrgsupppool,5,0,1,141,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hppower,compressor power output,uint16 (>=0<=3199),kW,false,sensor.boiler_compressor_power_output,sensor.boiler_hppower,5,0,1/10,143,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpmaxpower,compressor max power,uint8 (>=0<=100),%,true,number.boiler_compressor_max_power,number.boiler_hpmaxpower,5,0,1,144,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pvmaxcomp,pv compressor max power,uint8 (>=0<=25),kW,true,number.boiler_pv_compressor_max_power,number.boiler_pvmaxcomp,5,0,1/10,145,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,mandefrost,manual defrost,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_manual_defrost,sensor.boiler_mandefrost,5,0,1,84,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.nrg,energy,uint24,kWh,false,sensor.boiler_dhw_energy,sensor.boiler_dhw_nrg,5,9,1/100,0,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgheat,energy heating,uint24,kWh,false,sensor.boiler_energy_heating,sensor.boiler_nrgheat,5,0,1/100,87,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgcool,energy cooling,uint24,kWh,false,sensor.boiler_energy_cooling,sensor.boiler_nrgcool,5,0,1/100,89,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,metertotal,meter total,uint24,kWh,false,sensor.boiler_meter_total,sensor.boiler_metertotal,5,0,1/100,91,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,metercomp,meter compressor,uint24,kWh,false,sensor.boiler_meter_compressor,sensor.boiler_metercomp,5,0,1/100,93,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,metereheat,meter e-heater,uint24,kWh,false,sensor.boiler_meter_e-heater,sensor.boiler_metereheat,5,0,1/100,95,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/100,97,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,metercool,meter cooling,uint24,kWh,false,sensor.boiler_meter_cooling,sensor.boiler_metercool,5,0,1/100,99,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/100,2,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,uptimetotal,heatpump total uptime,time,minutes,false,sensor.boiler_heatpump_total_uptime,sensor.boiler_uptimetotal,5,0,1/60,101,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,uptimecontrol,total operating time heat,time,minutes,false,sensor.boiler_total_operating_time_heat,sensor.boiler_uptimecontrol,5,0,1/60,103,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,uptimecompheating,operating time compressor heating,time,minutes,false,sensor.boiler_operating_time_compressor_heating,sensor.boiler_uptimecompheating,5,0,1/60,105,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,uptimecompcooling,operating time compressor cooling,time,minutes,false,sensor.boiler_operating_time_compressor_cooling,sensor.boiler_uptimecompcooling,5,0,1/60,107,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.uptimecomp,operating time compressor,time,minutes,false,sensor.boiler_dhw_operating_time_compressor,sensor.boiler_dhw_uptimecomp,5,9,1/60,4,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,uptimecomppool,operating time compressor pool,time,minutes,false,sensor.boiler_operating_time_compressor_pool,sensor.boiler_uptimecomppool,5,0,1/60,109,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,totalcompstarts,total compressor control starts,uint24, ,false,sensor.boiler_total_compressor_control_starts,sensor.boiler_totalcompstarts,5,0,1,111,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,heatingstarts,heating control starts,uint24, ,false,sensor.boiler_heating_control_starts,sensor.boiler_heatingstarts,5,0,1,113,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,coolingstarts,cooling control starts,uint24, ,false,sensor.boiler_cooling_control_starts,sensor.boiler_coolingstarts,5,0,1,115,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.startshp,starts hp,uint24, ,false,sensor.boiler_dhw_starts_hp,sensor.boiler_dhw_startshp,5,9,1,6,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,poolstarts,pool control starts,uint24, ,false,sensor.boiler_pool_control_starts,sensor.boiler_poolstarts,5,0,1,117,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgconstotal,total energy consumption,uint24,kWh,false,sensor.boiler_total_energy_consumption,sensor.boiler_nrgconstotal,5,0,1,119,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgconscomptotal,total energy consumption compressor,uint24,kWh,false,sensor.boiler_total_energy_consumption_compressor,sensor.boiler_nrgconscomptotal,5,0,1,121,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgconscompheating,energy consumption compressor heating,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_heating,sensor.boiler_nrgconscompheating,5,0,1,123,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.nrgconscomp,energy consumption compressor,uint24,kWh,false,sensor.boiler_dhw_energy_consumption_compressor,sensor.boiler_dhw_nrgconscomp,5,9,1,8,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgconscompcooling,energy consumption compressor cooling,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_cooling,sensor.boiler_nrgconscompcooling,5,0,1,125,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgconscomppool,energy consumption compressor pool,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_pool,sensor.boiler_nrgconscomppool,5,0,1,127,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxelecheatnrgconstotal,total aux elec. heater energy consumption,uint24,kWh,false,sensor.boiler_total_aux_elec._heater_energy_consumption,sensor.boiler_auxelecheatnrgconstotal,5,0,1,129,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxelecheatnrgconsheating,aux elec. heater energy consumption heating,uint24,kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_heating,sensor.boiler_auxelecheatnrgconsheating,5,0,1,131,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.auxelecheatnrgcons,aux elec. heater energy consumption,uint24,kWh,false,sensor.boiler_dhw_aux_elec._heater_energy_consumption,sensor.boiler_dhw_auxelecheatnrgcons,5,9,1,10,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxelecheatnrgconspool,aux elec. heater energy consumption pool,uint24,kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_pool,sensor.boiler_auxelecheatnrgconspool,5,0,1,133,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgsupptotal,total energy supplied,uint24,kWh,false,sensor.boiler_total_energy_supplied,sensor.boiler_nrgsupptotal,5,0,1,135,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgsuppheating,total energy supplied heating,uint24,kWh,false,sensor.boiler_total_energy_supplied_heating,sensor.boiler_nrgsuppheating,5,0,1,137,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.nrgsupp,total energy warm supplied,uint24,kWh,false,sensor.boiler_dhw_total_energy_warm_supplied,sensor.boiler_dhw_nrgsupp,5,9,1,12,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgsuppcooling,total energy supplied cooling,uint24,kWh,false,sensor.boiler_total_energy_supplied_cooling,sensor.boiler_nrgsuppcooling,5,0,1,139,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,nrgsupppool,total energy supplied pool,uint24,kWh,false,sensor.boiler_total_energy_supplied_pool,sensor.boiler_nrgsupppool,5,0,1,141,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hppower,compressor power output,uint16,kW,false,sensor.boiler_compressor_power_output,sensor.boiler_hppower,5,0,1/10,143,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpmaxpower,compressor max power,uint8 (>=0<=0),%,true,number.boiler_compressor_max_power,number.boiler_hpmaxpower,5,0,1,144,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pvmaxcomp,pv compressor max power,uint8 (>=0<=0),kW,true,number.boiler_pv_compressor_max_power,number.boiler_pvmaxcomp,5,0,1/10,145,1
"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,powerreduction,power reduction,uint8 (>=30<=60),%,true,number.boiler_power_reduction,number.boiler_powerreduction,5,0,10,146,1
"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpsetdiffpress,set differential pressure,uint8 (>=150<=750),mbar,true,number.boiler_set_differential_pressure,number.boiler_hpsetdiffpress,5,0,50,147,1
"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpcompon,hp compressor,boolean, ,false,binary_sensor.boiler_hp_compressor,binary_sensor.boiler_hpcompon,5,0,1,148,1
"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpactivity,compressor activity,enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm], ,false,sensor.boiler_compressor_activity,sensor.boiler_hpactivity,5,0,1,149,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpbrinepumpspd,brine pump speed,uint8 (>=0<=100),%,false,sensor.boiler_brine_pump_speed,sensor.boiler_hpbrinepumpspd,5,0,1,150,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpbrinepumpspd,brine pump speed,uint8,%,false,sensor.boiler_brine_pump_speed,sensor.boiler_hpbrinepumpspd,5,0,1,150,1
"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpswitchvalve,switch valve,boolean, ,false,binary_sensor.boiler_switch_valve,binary_sensor.boiler_hpswitchvalve,5,0,1,151,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpcompspd,compressor speed,uint8 (>=0<=100),%,false,sensor.boiler_compressor_speed,sensor.boiler_hpcompspd,5,0,1,152,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptargetspd,compressor target speed,uint8 (>=0<=100),%,false,sensor.boiler_compressor_target_speed,sensor.boiler_hptargetspd,5,0,1,153,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpcircspd,circulation pump speed,uint8 (>=0<=100),%,false,sensor.boiler_circulation_pump_speed,sensor.boiler_hpcircspd,5,0,1,154,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,recvalve,receiver valve VR0,uint8 (>=0<=100),%,false,sensor.boiler_receiver_valve_VR0,sensor.boiler_recvalve,5,0,1,155,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,expvalve,expansion valve VR1,uint8 (>=0<=100),%,false,sensor.boiler_expansion_valve_VR1,sensor.boiler_expvalve,5,0,1,156,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpbrinein,brine in/evaporator,int16 (>=-3199<=3199),C,false,sensor.boiler_brine_in/evaporator,sensor.boiler_hpbrinein,5,0,1/10,157,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpbrineout,brine out/condenser,int16 (>=-3199<=3199),C,false,sensor.boiler_brine_out/condenser,sensor.boiler_hpbrineout,5,0,1/10,158,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptc0,heat carrier return (TC0),int16 (>=-3199<=3199),C,false,sensor.boiler_heat_carrier_return_(TC0),sensor.boiler_hptc0,5,0,1/10,159,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptc1,heat carrier forward (TC1),int16 (>=-3199<=3199),C,false,sensor.boiler_heat_carrier_forward_(TC1),sensor.boiler_hptc1,5,0,1/10,160,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptc3,condenser temperature (TC3),int16 (>=-3199<=3199),C,false,sensor.boiler_condenser_temperature_(TC3),sensor.boiler_hptc3,5,0,1/10,161,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptr1,compressor temperature (TR1),int16 (>=-3199<=3199),C,false,sensor.boiler_compressor_temperature_(TR1),sensor.boiler_hptr1,5,0,1/10,162,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptr3,refrigerant temperature liquid side (condenser output) (TR3),int16 (>=-3199<=3199),C,false,sensor.boiler_refrigerant_temperature_liquid_side_(condenser_output)_(TR3),sensor.boiler_hptr3,5,0,1/10,163,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptr4,evaporator inlet temperature (TR4),int16 (>=-3199<=3199),C,false,sensor.boiler_evaporator_inlet_temperature_(TR4),sensor.boiler_hptr4,5,0,1/10,164,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptr5,compressor inlet temperature (TR5),int16 (>=-3199<=3199),C,false,sensor.boiler_compressor_inlet_temperature_(TR5),sensor.boiler_hptr5,5,0,1/10,165,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptr6,compressor outlet temperature (TR6),int16 (>=-3199<=3199),C,false,sensor.boiler_compressor_outlet_temperature_(TR6),sensor.boiler_hptr6,5,0,1/10,166,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptr7,refrigerant temperature gas side (condenser input) (TR7),int16 (>=-3199<=3199),C,false,sensor.boiler_refrigerant_temperature_gas_side_(condenser_input)_(TR7),sensor.boiler_hptr7,5,0,1/10,167,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptl2,air inlet temperature (TL2),int16 (>=-3199<=3199),C,false,sensor.boiler_air_inlet_temperature_(TL2),sensor.boiler_hptl2,5,0,1/10,168,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hppl1,low pressure side temperature (PL1),int16 (>=-3199<=3199),C,false,sensor.boiler_low_pressure_side_temperature_(PL1),sensor.boiler_hppl1,5,0,1/10,169,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpph1,high pressure side temperature (PH1),int16 (>=-3199<=3199),C,false,sensor.boiler_high_pressure_side_temperature_(PH1),sensor.boiler_hpph1,5,0,1/10,170,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpta4,drain pan temp (TA4),int16 (>=-3199<=3199),C,false,sensor.boiler_drain_pan_temp_(TA4),sensor.boiler_hpta4,5,0,1/10,171,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptw1,reservoir temp (TW1),int16 (>=-3199<=3199),C,false,sensor.boiler_reservoir_temp_(TW1),sensor.boiler_hptw1,5,0,1/10,172,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,poolsettemp,pool set temperature,uint8 (>=0<=127),C,true,number.boiler_pool_set_temperature,number.boiler_poolsettemp,5,0,1/2,173,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpcompspd,compressor speed,uint8,%,false,sensor.boiler_compressor_speed,sensor.boiler_hpcompspd,5,0,1,152,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptargetspd,compressor target speed,uint8,%,false,sensor.boiler_compressor_target_speed,sensor.boiler_hptargetspd,5,0,1,153,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpcircspd,circulation pump speed,uint8,%,false,sensor.boiler_circulation_pump_speed,sensor.boiler_hpcircspd,5,0,1,154,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,recvalve,receiver valve VR0,uint8,%,false,sensor.boiler_receiver_valve_VR0,sensor.boiler_recvalve,5,0,1,155,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,expvalve,expansion valve VR1,uint8,%,false,sensor.boiler_expansion_valve_VR1,sensor.boiler_expvalve,5,0,1,156,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpbrinein,brine in/evaporator,int16,C,false,sensor.boiler_brine_in/evaporator,sensor.boiler_hpbrinein,5,0,1/10,157,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpbrineout,brine out/condenser,int16,C,false,sensor.boiler_brine_out/condenser,sensor.boiler_hpbrineout,5,0,1/10,158,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptc0,heat carrier return (TC0),int16,C,false,sensor.boiler_heat_carrier_return_(TC0),sensor.boiler_hptc0,5,0,1/10,159,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptc1,heat carrier forward (TC1),int16,C,false,sensor.boiler_heat_carrier_forward_(TC1),sensor.boiler_hptc1,5,0,1/10,160,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptc3,condenser temperature (TC3),int16,C,false,sensor.boiler_condenser_temperature_(TC3),sensor.boiler_hptc3,5,0,1/10,161,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptr1,compressor temperature (TR1),int16,C,false,sensor.boiler_compressor_temperature_(TR1),sensor.boiler_hptr1,5,0,1/10,162,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptr3,refrigerant temperature liquid side (condenser output) (TR3),int16,C,false,sensor.boiler_refrigerant_temperature_liquid_side_(condenser_output)_(TR3),sensor.boiler_hptr3,5,0,1/10,163,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptr4,evaporator inlet temperature (TR4),int16,C,false,sensor.boiler_evaporator_inlet_temperature_(TR4),sensor.boiler_hptr4,5,0,1/10,164,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptr5,compressor inlet temperature (TR5),int16,C,false,sensor.boiler_compressor_inlet_temperature_(TR5),sensor.boiler_hptr5,5,0,1/10,165,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptr6,compressor outlet temperature (TR6),int16,C,false,sensor.boiler_compressor_outlet_temperature_(TR6),sensor.boiler_hptr6,5,0,1/10,166,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptr7,refrigerant temperature gas side (condenser input) (TR7),int16,C,false,sensor.boiler_refrigerant_temperature_gas_side_(condenser_input)_(TR7),sensor.boiler_hptr7,5,0,1/10,167,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptl2,air inlet temperature (TL2),int16,C,false,sensor.boiler_air_inlet_temperature_(TL2),sensor.boiler_hptl2,5,0,1/10,168,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hppl1,low pressure side temperature (PL1),int16,C,false,sensor.boiler_low_pressure_side_temperature_(PL1),sensor.boiler_hppl1,5,0,1/10,169,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpph1,high pressure side temperature (PH1),int16,C,false,sensor.boiler_high_pressure_side_temperature_(PH1),sensor.boiler_hpph1,5,0,1/10,170,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpta4,drain pan temp (TA4),int16,C,false,sensor.boiler_drain_pan_temp_(TA4),sensor.boiler_hpta4,5,0,1/10,171,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hptw1,reservoir temp (TW1),int16,C,false,sensor.boiler_reservoir_temp_(TW1),sensor.boiler_hptw1,5,0,1/10,172,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,poolsettemp,pool set temperature,uint8 (>=0<=0),C,true,number.boiler_pool_set_temperature,number.boiler_poolsettemp,5,0,1/2,173,1
"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin1,input 1 state,boolean, ,false,binary_sensor.boiler_input_1_state,binary_sensor.boiler_hpin1,5,0,1,174,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin1opt,input 1 options,string, ,true,sensor.boiler_input_1_options,sensor.boiler_hpin1opt,5,0,1,175,8
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin1opt,input 1 options,string (>=0<=0), ,true,sensor.boiler_input_1_options,sensor.boiler_hpin1opt,5,0,1,175,8
"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin2,input 2 state,boolean, ,false,binary_sensor.boiler_input_2_state,binary_sensor.boiler_hpin2,5,0,1,183,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin2opt,input 2 options,string, ,true,sensor.boiler_input_2_options,sensor.boiler_hpin2opt,5,0,1,184,8
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin2opt,input 2 options,string (>=0<=0), ,true,sensor.boiler_input_2_options,sensor.boiler_hpin2opt,5,0,1,184,8
"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin3,input 3 state,boolean, ,false,binary_sensor.boiler_input_3_state,binary_sensor.boiler_hpin3,5,0,1,192,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin3opt,input 3 options,string, ,true,sensor.boiler_input_3_options,sensor.boiler_hpin3opt,5,0,1,193,8
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin3opt,input 3 options,string (>=0<=0), ,true,sensor.boiler_input_3_options,sensor.boiler_hpin3opt,5,0,1,193,8
"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin4,input 4 state,boolean, ,false,binary_sensor.boiler_input_4_state,binary_sensor.boiler_hpin4,5,0,1,201,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin4opt,input 4 options,string, ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt,5,0,1,202,8
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,maxheatcomp,heat limit compressor,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW], ,true,select.boiler_heat_limit_compressor,select.boiler_maxheatcomp,5,0,1,210,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,maxheatheat,heat limit heating,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW], ,true,select.boiler_heat_limit_heating,select.boiler_maxheatheat,5,0,1,211,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.maxheat,heat limit,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW], ,true,select.boiler_dhw_heat_limit,select.boiler_dhw_maxheat,5,9,1,14,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheatersource,aux heater source,enum [not installed\|electric heater\|exclusive\|parallel\|hybrid], ,true,select.boiler_aux_heater_source,select.boiler_auxheatersource,5,0,1,212,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pvcooling,cooling only with PV,boolean, ,true,switch.boiler_cooling_only_with_PV,switch.boiler_pvcooling,5,0,1,213,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheateronly,aux heater only,boolean, ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly,5,0,1,214,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheateroff,disable aux heater,boolean, ,true,switch.boiler_disable_aux_heater,switch.boiler_auxheateroff,5,0,1,215,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpin4opt,input 4 options,string (>=0<=0), ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt,5,0,1,202,8
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,maxheatcomp,heat limit compressor,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_compressor,select.boiler_maxheatcomp,5,0,1,210,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,maxheatheat,heat limit heating,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_heating,select.boiler_maxheatheat,5,0,1,211,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.maxheat,heat limit,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_dhw_heat_limit,select.boiler_dhw_maxheat,5,9,1,14,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheatersource,aux heater source,enum [not installed\|electric heater\|exclusive\|parallel\|hybrid] (>=0<=0), ,true,select.boiler_aux_heater_source,select.boiler_auxheatersource,5,0,1,212,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,pvcooling,cooling only with PV,boolean (>=0<=0), ,true,switch.boiler_cooling_only_with_PV,switch.boiler_pvcooling,5,0,1,213,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheateronly,aux heater only,boolean (>=0<=0), ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly,5,0,1,214,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheateroff,disable aux heater,boolean (>=0<=0), ,true,switch.boiler_disable_aux_heater,switch.boiler_auxheateroff,5,0,1,215,1
"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheaterstatus,aux heater status,enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm], ,false,sensor.boiler_aux_heater_status,sensor.boiler_auxheaterstatus,5,0,1,216,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheaterlevel,aux heater level,uint8 (>=0<=100),%,false,sensor.boiler_aux_heater_level,sensor.boiler_auxheaterlevel,5,0,1,217,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheaterlevel,aux heater level,uint8,%,false,sensor.boiler_aux_heater_level,sensor.boiler_auxheaterlevel,5,0,1,217,1
"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheaterdelay,aux heater on delay,uint16 (>=10<=1000),K*min,true,number.boiler_aux_heater_on_delay,number.boiler_auxheaterdelay,5,0,10,218,1
"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxmaxlimit,aux heater max limit,uint8 (>=0<=10),K,true,number.boiler_aux_heater_max_limit,number.boiler_auxmaxlimit,5,0,1/10,219,1
"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxlimitstart,aux heater limit start,uint8 (>=0<=10),K,true,number.boiler_aux_heater_limit_start,number.boiler_auxlimitstart,5,0,1/10,220,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheatrmode,aux heater mode,enum [eco\|comfort], ,true,select.boiler_aux_heater_mode,select.boiler_auxheatrmode,5,0,1,221,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheatrmode,aux heater mode,enum [eco\|comfort] (>=0<=0), ,true,select.boiler_aux_heater_mode,select.boiler_auxheatrmode,5,0,1,221,1
"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hphystheat,on/off hyst heat,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_heat,number.boiler_hphystheat,5,0,5,222,1
"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hphystcool,on/off hyst cool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_cool,number.boiler_hphystcool,5,0,5,223,1
"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hphystpool,on/off hyst pool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_pool,number.boiler_hphystpool,5,0,5,224,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,silentmode,silent mode,enum [off\|auto\|on], ,true,select.boiler_silent_mode,select.boiler_silentmode,5,0,1,225,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,silentfrom,silent mode from,uint8 (>=0<=3810),minutes,true,number.boiler_silent_mode_from,number.boiler_silentfrom,5,0,15,226,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,silentto,silent mode to,uint8 (>=0<=3810),minutes,true,number.boiler_silent_mode_to,number.boiler_silentto,5,0,15,227,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,mintempsilent,min outside temp for silent mode,int8 (>=-126<=126),C,true,number.boiler_min_outside_temp_for_silent_mode,number.boiler_mintempsilent,5,0,1,228,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,tempparmode,outside temp parallel mode,int8 (>=-126<=126),C,true,number.boiler_outside_temp_parallel_mode,number.boiler_tempparmode,5,0,1,229,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheatmix,aux heater mixing valve,int8 (>=-100<=100),%,false,sensor.boiler_aux_heater_mixing_valve,sensor.boiler_auxheatmix,5,0,1,230,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,silentmode,silent mode,enum [off\|auto\|on] (>=0<=0), ,true,select.boiler_silent_mode,select.boiler_silentmode,5,0,1,225,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,silentfrom,silent mode from,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_from,number.boiler_silentfrom,5,0,15,226,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,silentto,silent mode to,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_to,number.boiler_silentto,5,0,15,227,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,mintempsilent,min outside temp for silent mode,int8 (>=0<=0),C,true,number.boiler_min_outside_temp_for_silent_mode,number.boiler_mintempsilent,5,0,1,228,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,tempparmode,outside temp parallel mode,int8 (>=0<=0),C,true,number.boiler_outside_temp_parallel_mode,number.boiler_tempparmode,5,0,1,229,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,auxheatmix,aux heater mixing valve,int8,%,false,sensor.boiler_aux_heater_mixing_valve,sensor.boiler_auxheatmix,5,0,1,230,1
"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,tempdiffheat,temp diff TC3/TC0 heat,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_heat,number.boiler_tempdiffheat,5,0,1/10,231,1
"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,tempdiffcool,temp diff TC3/TC0 cool,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_cool,number.boiler_tempdiffcool,5,0,1/10,232,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,vpcooling,valve/pump cooling,boolean, ,true,switch.boiler_valve/pump_cooling,switch.boiler_vpcooling,5,0,1,233,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,heatcable,heating cable,boolean, ,true,switch.boiler_heating_cable,switch.boiler_heatcable,5,0,1,234,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,vc0valve,VC0 valve,boolean, ,true,switch.boiler_VC0_valve,switch.boiler_vc0valve,5,0,1,235,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,primepump,primary heatpump,boolean, ,true,switch.boiler_primary_heatpump,switch.boiler_primepump,5,0,1,236,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,primepumpmod,primary heatpump modulation,uint8 (>=0<=100),%,true,number.boiler_primary_heatpump_modulation,number.boiler_primepumpmod,5,0,1,237,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hp3way,3-way valve,boolean, ,true,switch.boiler_3-way_valve,switch.boiler_hp3way,5,0,1,238,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,elheatstep1,el. heater step 1,boolean, ,true,switch.boiler_el._heater_step_1,switch.boiler_elheatstep1,5,0,1,239,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,elheatstep2,el. heater step 2,boolean, ,true,switch.boiler_el._heater_step_2,switch.boiler_elheatstep2,5,0,1,240,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,elheatstep3,el. heater step 3,boolean, ,true,switch.boiler_el._heater_step_3,switch.boiler_elheatstep3,5,0,1,241,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,vpcooling,valve/pump cooling,boolean (>=0<=0), ,true,switch.boiler_valve/pump_cooling,switch.boiler_vpcooling,5,0,1,233,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,heatcable,heating cable,boolean (>=0<=0), ,true,switch.boiler_heating_cable,switch.boiler_heatcable,5,0,1,234,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,vc0valve,VC0 valve,boolean (>=0<=0), ,true,switch.boiler_VC0_valve,switch.boiler_vc0valve,5,0,1,235,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,primepump,primary heatpump,boolean (>=0<=0), ,true,switch.boiler_primary_heatpump,switch.boiler_primepump,5,0,1,236,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,primepumpmod,primary heatpump modulation,uint8 (>=0<=0),%,true,number.boiler_primary_heatpump_modulation,number.boiler_primepumpmod,5,0,1,237,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hp3way,3-way valve,boolean (>=0<=0), ,true,switch.boiler_3-way_valve,switch.boiler_hp3way,5,0,1,238,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,elheatstep1,el. heater step 1,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_1,switch.boiler_elheatstep1,5,0,1,239,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,elheatstep2,el. heater step 2,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_2,switch.boiler_elheatstep2,5,0,1,240,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,elheatstep3,el. heater step 3,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_3,switch.boiler_elheatstep3,5,0,1,241,1
"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpea0,condensate reservoir heating (EA0),boolean, ,false,binary_sensor.boiler_condensate_reservoir_heating_(EA0),binary_sensor.boiler_hpea0,5,0,1,242,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hppumpmode,primary heatpump mode,enum [auto\|continuous], ,true,select.boiler_primary_heatpump_mode,select.boiler_hppumpmode,5,0,1,243,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hppumpmode,primary heatpump mode,enum [auto\|continuous] (>=0<=0), ,true,select.boiler_primary_heatpump_mode,select.boiler_hppumpmode,5,0,1,243,1
"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,fan,fan,uint8 (>=20<=100),%,true,number.boiler_fan,number.boiler_fan,5,0,1,244,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,fanspd,fan speed,uint8 (>=0<=100),%,false,sensor.boiler_fan_speed,sensor.boiler_fanspd,5,0,1,245,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,shutdown,shutdown,cmd [off\|on], ,true,sensor.boiler_shutdown,sensor.boiler_shutdown,5,0,1,246,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpcurrpower,compressor current power,uint16 (>=0<=31999),W,false,sensor.boiler_compressor_current_power,sensor.boiler_hpcurrpower,5,0,1,247,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hppowerlimit,power limit,uint16 (>=0<=31999),W,true,number.boiler_power_limit,number.boiler_hppowerlimit,5,0,1,248,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.alternatingop,alternating operation,boolean, ,true,switch.boiler_dhw_alternating_operation,switch.boiler_dhw_alternatingop,5,9,1,15,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,fanspd,fan speed,uint8,%,false,sensor.boiler_fan_speed,sensor.boiler_fanspd,5,0,1,245,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,shutdown,shutdown,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_shutdown,sensor.boiler_shutdown,5,0,1,246,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hpcurrpower,compressor current power,uint16,W,false,sensor.boiler_compressor_current_power,sensor.boiler_hpcurrpower,5,0,1,247,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,hppowerlimit,power limit,uint16 (>=0<=0),W,true,number.boiler_power_limit,number.boiler_hppowerlimit,5,0,1,248,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.alternatingop,alternating operation,boolean (>=0<=0), ,true,switch.boiler_dhw_alternating_operation,switch.boiler_dhw_alternatingop,5,9,1,15,1
"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.altopprioheat,prioritise heating during dhw,uint8 (>=20<=120),minutes,true,number.boiler_dhw_prioritise_heating_during_dhw,number.boiler_dhw_altopprioheat,5,9,1,16,1
"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.altopprio,prioritise dhw during heating,uint8 (>=30<=120),minutes,true,number.boiler_dhw_prioritise_dhw_during_heating,number.boiler_dhw_altopprio,5,9,1,17,1
"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,5,9,1,18,1
@@ -2722,212 +2722,212 @@ 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.comfdiff,comfort diff,uint8 (>=4<=15),K,true,number.boiler_dhw_comfort_diff,number.boiler_dhw_comfdiff,5,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,5,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,5,9,1,23,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.comfstop,comfort stop temp,uint8 (>=0<=254),C,true,number.boiler_dhw_comfort_stop_temp,number.boiler_dhw_comfstop,5,9,1,24,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.ecostop,eco stop temp,uint8 (>=0<=254),C,true,number.boiler_dhw_eco_stop_temp,number.boiler_dhw_ecostop,5,9,1,25,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.ecoplusstop,eco+ stop temp,uint8 (>=0<=254),C,true,number.boiler_dhw_eco+_stop_temp,number.boiler_dhw_ecoplusstop,5,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, ,true,switch.boiler_dhw_circulation_pump_available_during_dhw,switch.boiler_dhw_hpcircpump,5,9,1,27,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,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], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,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,5,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,5,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,5,9,1,39,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,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,5,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,5,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,5,9,1,42,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,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,5,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,5,9,1,44,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,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,5,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,5,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,5,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], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,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 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,63,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"Geo 5xx",boiler,173,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"Geo 5xx",boiler,173,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"Geo 5xx",boiler,173,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"Enviline, Compress 6000AW, Hybrid 3000-7000iAW, SupraEco/Geo 5xx, WLW196i/WSW196i",boiler,172,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"Geo 5xx",boiler,173,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"Geo 5xx",boiler,173,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"Geo 5xx",boiler,173,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"Geo 5xx",boiler,173,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"Geo 5xx",boiler,173,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,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,5,0,1,5,1
-"Geo 5xx",boiler,173,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"Geo 5xx",boiler,173,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"Geo 5xx",boiler,173,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"Geo 5xx",boiler,173,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"Geo 5xx",boiler,173,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"Geo 5xx",boiler,173,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"Geo 5xx",boiler,173,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"Geo 5xx",boiler,173,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"Geo 5xx",boiler,173,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"Geo 5xx",boiler,173,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
+"Geo 5xx",boiler,173,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
+"Geo 5xx",boiler,173,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
+"Geo 5xx",boiler,173,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
+"Geo 5xx",boiler,173,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
+"Geo 5xx",boiler,173,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
+"Geo 5xx",boiler,173,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"Geo 5xx",boiler,173,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"Geo 5xx",boiler,173,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"Geo 5xx",boiler,173,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"Geo 5xx",boiler,173,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"Geo 5xx",boiler,173,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"Geo 5xx",boiler,173,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,0,1,18,1
-"Geo 5xx",boiler,173,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,0,1,19,1
-"Geo 5xx",boiler,173,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,1
+"Geo 5xx",boiler,173,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,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,5,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,5,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,5,0,1,20,1
"Geo 5xx",boiler,173,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,5,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,5,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,5,0,1,23,1
-"Geo 5xx",boiler,173,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"Geo 5xx",boiler,173,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"Geo 5xx",boiler,173,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"Geo 5xx",boiler,173,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"Geo 5xx",boiler,173,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"Geo 5xx",boiler,173,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"Geo 5xx",boiler,173,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"Geo 5xx",boiler,173,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
+"Geo 5xx",boiler,173,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,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,5,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,5,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,5,0,1,31,2
+"Geo 5xx",boiler,173,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,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,5,0,1,35,2
"Geo 5xx",boiler,173,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,5,0,1,37,28
"Geo 5xx",boiler,173,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,5,0,1,65,2
-"Geo 5xx",boiler,173,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"Geo 5xx",boiler,173,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
"Geo 5xx",boiler,173,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,5,0,1,68,2
-"Geo 5xx",boiler,173,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"Geo 5xx",boiler,173,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"Geo 5xx",boiler,173,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"Geo 5xx",boiler,173,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"Geo 5xx",boiler,173,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,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,5,0,1,71,1
+"Geo 5xx",boiler,173,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
+"Geo 5xx",boiler,173,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
"Geo 5xx",boiler,173,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,5,0,1,79,1
-"Geo 5xx",boiler,173,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"Geo 5xx",boiler,173,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"Geo 5xx",boiler,173,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"Geo 5xx",boiler,173,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"Geo 5xx",boiler,173,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"Geo 5xx",boiler,173,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"Geo 5xx",boiler,173,mandefrost,manual defrost,cmd [off\|on], ,true,sensor.boiler_manual_defrost,sensor.boiler_mandefrost,5,0,1,84,1
-"Geo 5xx",boiler,173,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
-"Geo 5xx",boiler,173,dhw.nrg,energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_dhw_energy,sensor.boiler_dhw_nrg,5,9,1/100,0,2
-"Geo 5xx",boiler,173,nrgheat,energy heating,uint24 (>=0<=167772),kWh,false,sensor.boiler_energy_heating,sensor.boiler_nrgheat,5,0,1/100,87,2
-"Geo 5xx",boiler,173,nrgcool,energy cooling,uint24 (>=0<=167772),kWh,false,sensor.boiler_energy_cooling,sensor.boiler_nrgcool,5,0,1/100,89,2
-"Geo 5xx",boiler,173,metertotal,meter total,uint24 (>=0<=167772),kWh,false,sensor.boiler_meter_total,sensor.boiler_metertotal,5,0,1/100,91,2
-"Geo 5xx",boiler,173,metercomp,meter compressor,uint24 (>=0<=167772),kWh,false,sensor.boiler_meter_compressor,sensor.boiler_metercomp,5,0,1/100,93,2
-"Geo 5xx",boiler,173,metereheat,meter e-heater,uint24 (>=0<=167772),kWh,false,sensor.boiler_meter_e-heater,sensor.boiler_metereheat,5,0,1/100,95,2
-"Geo 5xx",boiler,173,meterheat,meter heating,uint24 (>=0<=167772),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/100,97,2
-"Geo 5xx",boiler,173,metercool,meter cooling,uint24 (>=0<=167772),kWh,false,sensor.boiler_meter_cooling,sensor.boiler_metercool,5,0,1/100,99,2
-"Geo 5xx",boiler,173,dhw.meter,meter,uint24 (>=0<=167772),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/100,2,2
-"Geo 5xx",boiler,173,uptimetotal,heatpump total uptime,time (>=0<=279620),minutes,false,sensor.boiler_heatpump_total_uptime,sensor.boiler_uptimetotal,5,0,1/60,101,2
-"Geo 5xx",boiler,173,uptimecontrol,total operating time heat,time (>=0<=279620),minutes,false,sensor.boiler_total_operating_time_heat,sensor.boiler_uptimecontrol,5,0,1/60,103,2
-"Geo 5xx",boiler,173,uptimecompheating,operating time compressor heating,time (>=0<=279620),minutes,false,sensor.boiler_operating_time_compressor_heating,sensor.boiler_uptimecompheating,5,0,1/60,105,2
-"Geo 5xx",boiler,173,uptimecompcooling,operating time compressor cooling,time (>=0<=279620),minutes,false,sensor.boiler_operating_time_compressor_cooling,sensor.boiler_uptimecompcooling,5,0,1/60,107,2
-"Geo 5xx",boiler,173,dhw.uptimecomp,operating time compressor,time (>=0<=279620),minutes,false,sensor.boiler_dhw_operating_time_compressor,sensor.boiler_dhw_uptimecomp,5,9,1/60,4,2
-"Geo 5xx",boiler,173,uptimecomppool,operating time compressor pool,time (>=0<=279620),minutes,false,sensor.boiler_operating_time_compressor_pool,sensor.boiler_uptimecomppool,5,0,1/60,109,2
-"Geo 5xx",boiler,173,totalcompstarts,total compressor control starts,uint24 (>=0<=16777214), ,false,sensor.boiler_total_compressor_control_starts,sensor.boiler_totalcompstarts,5,0,1,111,2
-"Geo 5xx",boiler,173,heatingstarts,heating control starts,uint24 (>=0<=16777214), ,false,sensor.boiler_heating_control_starts,sensor.boiler_heatingstarts,5,0,1,113,2
-"Geo 5xx",boiler,173,coolingstarts,cooling control starts,uint24 (>=0<=16777214), ,false,sensor.boiler_cooling_control_starts,sensor.boiler_coolingstarts,5,0,1,115,2
-"Geo 5xx",boiler,173,dhw.startshp,starts hp,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts_hp,sensor.boiler_dhw_startshp,5,9,1,6,2
-"Geo 5xx",boiler,173,poolstarts,pool control starts,uint24 (>=0<=16777214), ,false,sensor.boiler_pool_control_starts,sensor.boiler_poolstarts,5,0,1,117,2
-"Geo 5xx",boiler,173,nrgconstotal,total energy consumption,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_energy_consumption,sensor.boiler_nrgconstotal,5,0,1,119,2
-"Geo 5xx",boiler,173,nrgconscomptotal,total energy consumption compressor,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_energy_consumption_compressor,sensor.boiler_nrgconscomptotal,5,0,1,121,2
-"Geo 5xx",boiler,173,nrgconscompheating,energy consumption compressor heating,uint24 (>=0<=16777214),kWh,false,sensor.boiler_energy_consumption_compressor_heating,sensor.boiler_nrgconscompheating,5,0,1,123,2
-"Geo 5xx",boiler,173,dhw.nrgconscomp,energy consumption compressor,uint24 (>=0<=16777214),kWh,false,sensor.boiler_dhw_energy_consumption_compressor,sensor.boiler_dhw_nrgconscomp,5,9,1,8,2
-"Geo 5xx",boiler,173,nrgconscompcooling,energy consumption compressor cooling,uint24 (>=0<=16777214),kWh,false,sensor.boiler_energy_consumption_compressor_cooling,sensor.boiler_nrgconscompcooling,5,0,1,125,2
-"Geo 5xx",boiler,173,nrgconscomppool,energy consumption compressor pool,uint24 (>=0<=16777214),kWh,false,sensor.boiler_energy_consumption_compressor_pool,sensor.boiler_nrgconscomppool,5,0,1,127,2
-"Geo 5xx",boiler,173,auxelecheatnrgconstotal,total aux elec. heater energy consumption,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_aux_elec._heater_energy_consumption,sensor.boiler_auxelecheatnrgconstotal,5,0,1,129,2
-"Geo 5xx",boiler,173,auxelecheatnrgconsheating,aux elec. heater energy consumption heating,uint24 (>=0<=16777214),kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_heating,sensor.boiler_auxelecheatnrgconsheating,5,0,1,131,2
-"Geo 5xx",boiler,173,dhw.auxelecheatnrgcons,aux elec. heater energy consumption,uint24 (>=0<=16777214),kWh,false,sensor.boiler_dhw_aux_elec._heater_energy_consumption,sensor.boiler_dhw_auxelecheatnrgcons,5,9,1,10,2
-"Geo 5xx",boiler,173,auxelecheatnrgconspool,aux elec. heater energy consumption pool,uint24 (>=0<=16777214),kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_pool,sensor.boiler_auxelecheatnrgconspool,5,0,1,133,2
-"Geo 5xx",boiler,173,nrgsupptotal,total energy supplied,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_energy_supplied,sensor.boiler_nrgsupptotal,5,0,1,135,2
-"Geo 5xx",boiler,173,nrgsuppheating,total energy supplied heating,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_energy_supplied_heating,sensor.boiler_nrgsuppheating,5,0,1,137,2
-"Geo 5xx",boiler,173,dhw.nrgsupp,total energy warm supplied,uint24 (>=0<=16777214),kWh,false,sensor.boiler_dhw_total_energy_warm_supplied,sensor.boiler_dhw_nrgsupp,5,9,1,12,2
-"Geo 5xx",boiler,173,nrgsuppcooling,total energy supplied cooling,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_energy_supplied_cooling,sensor.boiler_nrgsuppcooling,5,0,1,139,2
-"Geo 5xx",boiler,173,nrgsupppool,total energy supplied pool,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_energy_supplied_pool,sensor.boiler_nrgsupppool,5,0,1,141,2
-"Geo 5xx",boiler,173,hppower,compressor power output,uint16 (>=0<=3199),kW,false,sensor.boiler_compressor_power_output,sensor.boiler_hppower,5,0,1/10,143,1
-"Geo 5xx",boiler,173,hpmaxpower,compressor max power,uint8 (>=0<=100),%,true,number.boiler_compressor_max_power,number.boiler_hpmaxpower,5,0,1,144,1
-"Geo 5xx",boiler,173,pvmaxcomp,pv compressor max power,uint8 (>=0<=25),kW,true,number.boiler_pv_compressor_max_power,number.boiler_pvmaxcomp,5,0,1/10,145,1
+"Geo 5xx",boiler,173,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"Geo 5xx",boiler,173,mandefrost,manual defrost,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_manual_defrost,sensor.boiler_mandefrost,5,0,1,84,1
+"Geo 5xx",boiler,173,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"Geo 5xx",boiler,173,dhw.nrg,energy,uint24,kWh,false,sensor.boiler_dhw_energy,sensor.boiler_dhw_nrg,5,9,1/100,0,2
+"Geo 5xx",boiler,173,nrgheat,energy heating,uint24,kWh,false,sensor.boiler_energy_heating,sensor.boiler_nrgheat,5,0,1/100,87,2
+"Geo 5xx",boiler,173,nrgcool,energy cooling,uint24,kWh,false,sensor.boiler_energy_cooling,sensor.boiler_nrgcool,5,0,1/100,89,2
+"Geo 5xx",boiler,173,metertotal,meter total,uint24,kWh,false,sensor.boiler_meter_total,sensor.boiler_metertotal,5,0,1/100,91,2
+"Geo 5xx",boiler,173,metercomp,meter compressor,uint24,kWh,false,sensor.boiler_meter_compressor,sensor.boiler_metercomp,5,0,1/100,93,2
+"Geo 5xx",boiler,173,metereheat,meter e-heater,uint24,kWh,false,sensor.boiler_meter_e-heater,sensor.boiler_metereheat,5,0,1/100,95,2
+"Geo 5xx",boiler,173,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/100,97,2
+"Geo 5xx",boiler,173,metercool,meter cooling,uint24,kWh,false,sensor.boiler_meter_cooling,sensor.boiler_metercool,5,0,1/100,99,2
+"Geo 5xx",boiler,173,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/100,2,2
+"Geo 5xx",boiler,173,uptimetotal,heatpump total uptime,time,minutes,false,sensor.boiler_heatpump_total_uptime,sensor.boiler_uptimetotal,5,0,1/60,101,2
+"Geo 5xx",boiler,173,uptimecontrol,total operating time heat,time,minutes,false,sensor.boiler_total_operating_time_heat,sensor.boiler_uptimecontrol,5,0,1/60,103,2
+"Geo 5xx",boiler,173,uptimecompheating,operating time compressor heating,time,minutes,false,sensor.boiler_operating_time_compressor_heating,sensor.boiler_uptimecompheating,5,0,1/60,105,2
+"Geo 5xx",boiler,173,uptimecompcooling,operating time compressor cooling,time,minutes,false,sensor.boiler_operating_time_compressor_cooling,sensor.boiler_uptimecompcooling,5,0,1/60,107,2
+"Geo 5xx",boiler,173,dhw.uptimecomp,operating time compressor,time,minutes,false,sensor.boiler_dhw_operating_time_compressor,sensor.boiler_dhw_uptimecomp,5,9,1/60,4,2
+"Geo 5xx",boiler,173,uptimecomppool,operating time compressor pool,time,minutes,false,sensor.boiler_operating_time_compressor_pool,sensor.boiler_uptimecomppool,5,0,1/60,109,2
+"Geo 5xx",boiler,173,totalcompstarts,total compressor control starts,uint24, ,false,sensor.boiler_total_compressor_control_starts,sensor.boiler_totalcompstarts,5,0,1,111,2
+"Geo 5xx",boiler,173,heatingstarts,heating control starts,uint24, ,false,sensor.boiler_heating_control_starts,sensor.boiler_heatingstarts,5,0,1,113,2
+"Geo 5xx",boiler,173,coolingstarts,cooling control starts,uint24, ,false,sensor.boiler_cooling_control_starts,sensor.boiler_coolingstarts,5,0,1,115,2
+"Geo 5xx",boiler,173,dhw.startshp,starts hp,uint24, ,false,sensor.boiler_dhw_starts_hp,sensor.boiler_dhw_startshp,5,9,1,6,2
+"Geo 5xx",boiler,173,poolstarts,pool control starts,uint24, ,false,sensor.boiler_pool_control_starts,sensor.boiler_poolstarts,5,0,1,117,2
+"Geo 5xx",boiler,173,nrgconstotal,total energy consumption,uint24,kWh,false,sensor.boiler_total_energy_consumption,sensor.boiler_nrgconstotal,5,0,1,119,2
+"Geo 5xx",boiler,173,nrgconscomptotal,total energy consumption compressor,uint24,kWh,false,sensor.boiler_total_energy_consumption_compressor,sensor.boiler_nrgconscomptotal,5,0,1,121,2
+"Geo 5xx",boiler,173,nrgconscompheating,energy consumption compressor heating,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_heating,sensor.boiler_nrgconscompheating,5,0,1,123,2
+"Geo 5xx",boiler,173,dhw.nrgconscomp,energy consumption compressor,uint24,kWh,false,sensor.boiler_dhw_energy_consumption_compressor,sensor.boiler_dhw_nrgconscomp,5,9,1,8,2
+"Geo 5xx",boiler,173,nrgconscompcooling,energy consumption compressor cooling,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_cooling,sensor.boiler_nrgconscompcooling,5,0,1,125,2
+"Geo 5xx",boiler,173,nrgconscomppool,energy consumption compressor pool,uint24,kWh,false,sensor.boiler_energy_consumption_compressor_pool,sensor.boiler_nrgconscomppool,5,0,1,127,2
+"Geo 5xx",boiler,173,auxelecheatnrgconstotal,total aux elec. heater energy consumption,uint24,kWh,false,sensor.boiler_total_aux_elec._heater_energy_consumption,sensor.boiler_auxelecheatnrgconstotal,5,0,1,129,2
+"Geo 5xx",boiler,173,auxelecheatnrgconsheating,aux elec. heater energy consumption heating,uint24,kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_heating,sensor.boiler_auxelecheatnrgconsheating,5,0,1,131,2
+"Geo 5xx",boiler,173,dhw.auxelecheatnrgcons,aux elec. heater energy consumption,uint24,kWh,false,sensor.boiler_dhw_aux_elec._heater_energy_consumption,sensor.boiler_dhw_auxelecheatnrgcons,5,9,1,10,2
+"Geo 5xx",boiler,173,auxelecheatnrgconspool,aux elec. heater energy consumption pool,uint24,kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_pool,sensor.boiler_auxelecheatnrgconspool,5,0,1,133,2
+"Geo 5xx",boiler,173,nrgsupptotal,total energy supplied,uint24,kWh,false,sensor.boiler_total_energy_supplied,sensor.boiler_nrgsupptotal,5,0,1,135,2
+"Geo 5xx",boiler,173,nrgsuppheating,total energy supplied heating,uint24,kWh,false,sensor.boiler_total_energy_supplied_heating,sensor.boiler_nrgsuppheating,5,0,1,137,2
+"Geo 5xx",boiler,173,dhw.nrgsupp,total energy warm supplied,uint24,kWh,false,sensor.boiler_dhw_total_energy_warm_supplied,sensor.boiler_dhw_nrgsupp,5,9,1,12,2
+"Geo 5xx",boiler,173,nrgsuppcooling,total energy supplied cooling,uint24,kWh,false,sensor.boiler_total_energy_supplied_cooling,sensor.boiler_nrgsuppcooling,5,0,1,139,2
+"Geo 5xx",boiler,173,nrgsupppool,total energy supplied pool,uint24,kWh,false,sensor.boiler_total_energy_supplied_pool,sensor.boiler_nrgsupppool,5,0,1,141,2
+"Geo 5xx",boiler,173,hppower,compressor power output,uint16,kW,false,sensor.boiler_compressor_power_output,sensor.boiler_hppower,5,0,1/10,143,1
+"Geo 5xx",boiler,173,hpmaxpower,compressor max power,uint8 (>=0<=0),%,true,number.boiler_compressor_max_power,number.boiler_hpmaxpower,5,0,1,144,1
+"Geo 5xx",boiler,173,pvmaxcomp,pv compressor max power,uint8 (>=0<=0),kW,true,number.boiler_pv_compressor_max_power,number.boiler_pvmaxcomp,5,0,1/10,145,1
"Geo 5xx",boiler,173,powerreduction,power reduction,uint8 (>=30<=60),%,true,number.boiler_power_reduction,number.boiler_powerreduction,5,0,10,146,1
"Geo 5xx",boiler,173,hpsetdiffpress,set differential pressure,uint8 (>=150<=750),mbar,true,number.boiler_set_differential_pressure,number.boiler_hpsetdiffpress,5,0,50,147,1
"Geo 5xx",boiler,173,hpcompon,hp compressor,boolean, ,false,binary_sensor.boiler_hp_compressor,binary_sensor.boiler_hpcompon,5,0,1,148,1
"Geo 5xx",boiler,173,hpactivity,compressor activity,enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm], ,false,sensor.boiler_compressor_activity,sensor.boiler_hpactivity,5,0,1,149,1
-"Geo 5xx",boiler,173,hpbrinepumpspd,brine pump speed,uint8 (>=0<=100),%,false,sensor.boiler_brine_pump_speed,sensor.boiler_hpbrinepumpspd,5,0,1,150,1
+"Geo 5xx",boiler,173,hpbrinepumpspd,brine pump speed,uint8,%,false,sensor.boiler_brine_pump_speed,sensor.boiler_hpbrinepumpspd,5,0,1,150,1
"Geo 5xx",boiler,173,hpswitchvalve,switch valve,boolean, ,false,binary_sensor.boiler_switch_valve,binary_sensor.boiler_hpswitchvalve,5,0,1,151,1
-"Geo 5xx",boiler,173,hpcompspd,compressor speed,uint8 (>=0<=100),%,false,sensor.boiler_compressor_speed,sensor.boiler_hpcompspd,5,0,1,152,1
-"Geo 5xx",boiler,173,hptargetspd,compressor target speed,uint8 (>=0<=100),%,false,sensor.boiler_compressor_target_speed,sensor.boiler_hptargetspd,5,0,1,153,1
-"Geo 5xx",boiler,173,hpcircspd,circulation pump speed,uint8 (>=0<=100),%,false,sensor.boiler_circulation_pump_speed,sensor.boiler_hpcircspd,5,0,1,154,1
-"Geo 5xx",boiler,173,recvalve,receiver valve VR0,uint8 (>=0<=100),%,false,sensor.boiler_receiver_valve_VR0,sensor.boiler_recvalve,5,0,1,155,1
-"Geo 5xx",boiler,173,expvalve,expansion valve VR1,uint8 (>=0<=100),%,false,sensor.boiler_expansion_valve_VR1,sensor.boiler_expvalve,5,0,1,156,1
-"Geo 5xx",boiler,173,hpbrinein,brine in/evaporator,int16 (>=-3199<=3199),C,false,sensor.boiler_brine_in/evaporator,sensor.boiler_hpbrinein,5,0,1/10,157,1
-"Geo 5xx",boiler,173,hpbrineout,brine out/condenser,int16 (>=-3199<=3199),C,false,sensor.boiler_brine_out/condenser,sensor.boiler_hpbrineout,5,0,1/10,158,1
-"Geo 5xx",boiler,173,hptc0,heat carrier return (TC0),int16 (>=-3199<=3199),C,false,sensor.boiler_heat_carrier_return_(TC0),sensor.boiler_hptc0,5,0,1/10,159,1
-"Geo 5xx",boiler,173,hptc1,heat carrier forward (TC1),int16 (>=-3199<=3199),C,false,sensor.boiler_heat_carrier_forward_(TC1),sensor.boiler_hptc1,5,0,1/10,160,1
-"Geo 5xx",boiler,173,hptc3,condenser temperature (TC3),int16 (>=-3199<=3199),C,false,sensor.boiler_condenser_temperature_(TC3),sensor.boiler_hptc3,5,0,1/10,161,1
-"Geo 5xx",boiler,173,hptr1,compressor temperature (TR1),int16 (>=-3199<=3199),C,false,sensor.boiler_compressor_temperature_(TR1),sensor.boiler_hptr1,5,0,1/10,162,1
-"Geo 5xx",boiler,173,hptr3,refrigerant temperature liquid side (condenser output) (TR3),int16 (>=-3199<=3199),C,false,sensor.boiler_refrigerant_temperature_liquid_side_(condenser_output)_(TR3),sensor.boiler_hptr3,5,0,1/10,163,1
-"Geo 5xx",boiler,173,hptr4,evaporator inlet temperature (TR4),int16 (>=-3199<=3199),C,false,sensor.boiler_evaporator_inlet_temperature_(TR4),sensor.boiler_hptr4,5,0,1/10,164,1
-"Geo 5xx",boiler,173,hptr5,compressor inlet temperature (TR5),int16 (>=-3199<=3199),C,false,sensor.boiler_compressor_inlet_temperature_(TR5),sensor.boiler_hptr5,5,0,1/10,165,1
-"Geo 5xx",boiler,173,hptr6,compressor outlet temperature (TR6),int16 (>=-3199<=3199),C,false,sensor.boiler_compressor_outlet_temperature_(TR6),sensor.boiler_hptr6,5,0,1/10,166,1
-"Geo 5xx",boiler,173,hptr7,refrigerant temperature gas side (condenser input) (TR7),int16 (>=-3199<=3199),C,false,sensor.boiler_refrigerant_temperature_gas_side_(condenser_input)_(TR7),sensor.boiler_hptr7,5,0,1/10,167,1
-"Geo 5xx",boiler,173,hptl2,air inlet temperature (TL2),int16 (>=-3199<=3199),C,false,sensor.boiler_air_inlet_temperature_(TL2),sensor.boiler_hptl2,5,0,1/10,168,1
-"Geo 5xx",boiler,173,hppl1,low pressure side temperature (PL1),int16 (>=-3199<=3199),C,false,sensor.boiler_low_pressure_side_temperature_(PL1),sensor.boiler_hppl1,5,0,1/10,169,1
-"Geo 5xx",boiler,173,hpph1,high pressure side temperature (PH1),int16 (>=-3199<=3199),C,false,sensor.boiler_high_pressure_side_temperature_(PH1),sensor.boiler_hpph1,5,0,1/10,170,1
-"Geo 5xx",boiler,173,hpta4,drain pan temp (TA4),int16 (>=-3199<=3199),C,false,sensor.boiler_drain_pan_temp_(TA4),sensor.boiler_hpta4,5,0,1/10,171,1
-"Geo 5xx",boiler,173,hptw1,reservoir temp (TW1),int16 (>=-3199<=3199),C,false,sensor.boiler_reservoir_temp_(TW1),sensor.boiler_hptw1,5,0,1/10,172,1
-"Geo 5xx",boiler,173,poolsettemp,pool set temperature,uint8 (>=0<=127),C,true,number.boiler_pool_set_temperature,number.boiler_poolsettemp,5,0,1/2,173,1
+"Geo 5xx",boiler,173,hpcompspd,compressor speed,uint8,%,false,sensor.boiler_compressor_speed,sensor.boiler_hpcompspd,5,0,1,152,1
+"Geo 5xx",boiler,173,hptargetspd,compressor target speed,uint8,%,false,sensor.boiler_compressor_target_speed,sensor.boiler_hptargetspd,5,0,1,153,1
+"Geo 5xx",boiler,173,hpcircspd,circulation pump speed,uint8,%,false,sensor.boiler_circulation_pump_speed,sensor.boiler_hpcircspd,5,0,1,154,1
+"Geo 5xx",boiler,173,recvalve,receiver valve VR0,uint8,%,false,sensor.boiler_receiver_valve_VR0,sensor.boiler_recvalve,5,0,1,155,1
+"Geo 5xx",boiler,173,expvalve,expansion valve VR1,uint8,%,false,sensor.boiler_expansion_valve_VR1,sensor.boiler_expvalve,5,0,1,156,1
+"Geo 5xx",boiler,173,hpbrinein,brine in/evaporator,int16,C,false,sensor.boiler_brine_in/evaporator,sensor.boiler_hpbrinein,5,0,1/10,157,1
+"Geo 5xx",boiler,173,hpbrineout,brine out/condenser,int16,C,false,sensor.boiler_brine_out/condenser,sensor.boiler_hpbrineout,5,0,1/10,158,1
+"Geo 5xx",boiler,173,hptc0,heat carrier return (TC0),int16,C,false,sensor.boiler_heat_carrier_return_(TC0),sensor.boiler_hptc0,5,0,1/10,159,1
+"Geo 5xx",boiler,173,hptc1,heat carrier forward (TC1),int16,C,false,sensor.boiler_heat_carrier_forward_(TC1),sensor.boiler_hptc1,5,0,1/10,160,1
+"Geo 5xx",boiler,173,hptc3,condenser temperature (TC3),int16,C,false,sensor.boiler_condenser_temperature_(TC3),sensor.boiler_hptc3,5,0,1/10,161,1
+"Geo 5xx",boiler,173,hptr1,compressor temperature (TR1),int16,C,false,sensor.boiler_compressor_temperature_(TR1),sensor.boiler_hptr1,5,0,1/10,162,1
+"Geo 5xx",boiler,173,hptr3,refrigerant temperature liquid side (condenser output) (TR3),int16,C,false,sensor.boiler_refrigerant_temperature_liquid_side_(condenser_output)_(TR3),sensor.boiler_hptr3,5,0,1/10,163,1
+"Geo 5xx",boiler,173,hptr4,evaporator inlet temperature (TR4),int16,C,false,sensor.boiler_evaporator_inlet_temperature_(TR4),sensor.boiler_hptr4,5,0,1/10,164,1
+"Geo 5xx",boiler,173,hptr5,compressor inlet temperature (TR5),int16,C,false,sensor.boiler_compressor_inlet_temperature_(TR5),sensor.boiler_hptr5,5,0,1/10,165,1
+"Geo 5xx",boiler,173,hptr6,compressor outlet temperature (TR6),int16,C,false,sensor.boiler_compressor_outlet_temperature_(TR6),sensor.boiler_hptr6,5,0,1/10,166,1
+"Geo 5xx",boiler,173,hptr7,refrigerant temperature gas side (condenser input) (TR7),int16,C,false,sensor.boiler_refrigerant_temperature_gas_side_(condenser_input)_(TR7),sensor.boiler_hptr7,5,0,1/10,167,1
+"Geo 5xx",boiler,173,hptl2,air inlet temperature (TL2),int16,C,false,sensor.boiler_air_inlet_temperature_(TL2),sensor.boiler_hptl2,5,0,1/10,168,1
+"Geo 5xx",boiler,173,hppl1,low pressure side temperature (PL1),int16,C,false,sensor.boiler_low_pressure_side_temperature_(PL1),sensor.boiler_hppl1,5,0,1/10,169,1
+"Geo 5xx",boiler,173,hpph1,high pressure side temperature (PH1),int16,C,false,sensor.boiler_high_pressure_side_temperature_(PH1),sensor.boiler_hpph1,5,0,1/10,170,1
+"Geo 5xx",boiler,173,hpta4,drain pan temp (TA4),int16,C,false,sensor.boiler_drain_pan_temp_(TA4),sensor.boiler_hpta4,5,0,1/10,171,1
+"Geo 5xx",boiler,173,hptw1,reservoir temp (TW1),int16,C,false,sensor.boiler_reservoir_temp_(TW1),sensor.boiler_hptw1,5,0,1/10,172,1
+"Geo 5xx",boiler,173,poolsettemp,pool set temperature,uint8 (>=0<=0),C,true,number.boiler_pool_set_temperature,number.boiler_poolsettemp,5,0,1/2,173,1
"Geo 5xx",boiler,173,hpin1,input 1 state,boolean, ,false,binary_sensor.boiler_input_1_state,binary_sensor.boiler_hpin1,5,0,1,174,1
-"Geo 5xx",boiler,173,hpin1opt,input 1 options,string, ,true,sensor.boiler_input_1_options,sensor.boiler_hpin1opt,5,0,1,175,8
+"Geo 5xx",boiler,173,hpin1opt,input 1 options,string (>=0<=0), ,true,sensor.boiler_input_1_options,sensor.boiler_hpin1opt,5,0,1,175,8
"Geo 5xx",boiler,173,hpin2,input 2 state,boolean, ,false,binary_sensor.boiler_input_2_state,binary_sensor.boiler_hpin2,5,0,1,183,1
-"Geo 5xx",boiler,173,hpin2opt,input 2 options,string, ,true,sensor.boiler_input_2_options,sensor.boiler_hpin2opt,5,0,1,184,8
+"Geo 5xx",boiler,173,hpin2opt,input 2 options,string (>=0<=0), ,true,sensor.boiler_input_2_options,sensor.boiler_hpin2opt,5,0,1,184,8
"Geo 5xx",boiler,173,hpin3,input 3 state,boolean, ,false,binary_sensor.boiler_input_3_state,binary_sensor.boiler_hpin3,5,0,1,192,1
-"Geo 5xx",boiler,173,hpin3opt,input 3 options,string, ,true,sensor.boiler_input_3_options,sensor.boiler_hpin3opt,5,0,1,193,8
+"Geo 5xx",boiler,173,hpin3opt,input 3 options,string (>=0<=0), ,true,sensor.boiler_input_3_options,sensor.boiler_hpin3opt,5,0,1,193,8
"Geo 5xx",boiler,173,hpin4,input 4 state,boolean, ,false,binary_sensor.boiler_input_4_state,binary_sensor.boiler_hpin4,5,0,1,201,1
-"Geo 5xx",boiler,173,hpin4opt,input 4 options,string, ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt,5,0,1,202,8
-"Geo 5xx",boiler,173,maxheatcomp,heat limit compressor,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW], ,true,select.boiler_heat_limit_compressor,select.boiler_maxheatcomp,5,0,1,210,1
-"Geo 5xx",boiler,173,maxheatheat,heat limit heating,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW], ,true,select.boiler_heat_limit_heating,select.boiler_maxheatheat,5,0,1,211,1
-"Geo 5xx",boiler,173,dhw.maxheat,heat limit,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW], ,true,select.boiler_dhw_heat_limit,select.boiler_dhw_maxheat,5,9,1,14,1
-"Geo 5xx",boiler,173,auxheatersource,aux heater source,enum [not installed\|electric heater\|exclusive\|parallel\|hybrid], ,true,select.boiler_aux_heater_source,select.boiler_auxheatersource,5,0,1,212,1
-"Geo 5xx",boiler,173,pvcooling,cooling only with PV,boolean, ,true,switch.boiler_cooling_only_with_PV,switch.boiler_pvcooling,5,0,1,213,1
-"Geo 5xx",boiler,173,auxheateronly,aux heater only,boolean, ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly,5,0,1,214,1
-"Geo 5xx",boiler,173,auxheateroff,disable aux heater,boolean, ,true,switch.boiler_disable_aux_heater,switch.boiler_auxheateroff,5,0,1,215,1
+"Geo 5xx",boiler,173,hpin4opt,input 4 options,string (>=0<=0), ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt,5,0,1,202,8
+"Geo 5xx",boiler,173,maxheatcomp,heat limit compressor,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_compressor,select.boiler_maxheatcomp,5,0,1,210,1
+"Geo 5xx",boiler,173,maxheatheat,heat limit heating,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_heat_limit_heating,select.boiler_maxheatheat,5,0,1,211,1
+"Geo 5xx",boiler,173,dhw.maxheat,heat limit,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW] (>=0<=0), ,true,select.boiler_dhw_heat_limit,select.boiler_dhw_maxheat,5,9,1,14,1
+"Geo 5xx",boiler,173,auxheatersource,aux heater source,enum [not installed\|electric heater\|exclusive\|parallel\|hybrid] (>=0<=0), ,true,select.boiler_aux_heater_source,select.boiler_auxheatersource,5,0,1,212,1
+"Geo 5xx",boiler,173,pvcooling,cooling only with PV,boolean (>=0<=0), ,true,switch.boiler_cooling_only_with_PV,switch.boiler_pvcooling,5,0,1,213,1
+"Geo 5xx",boiler,173,auxheateronly,aux heater only,boolean (>=0<=0), ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly,5,0,1,214,1
+"Geo 5xx",boiler,173,auxheateroff,disable aux heater,boolean (>=0<=0), ,true,switch.boiler_disable_aux_heater,switch.boiler_auxheateroff,5,0,1,215,1
"Geo 5xx",boiler,173,auxheaterstatus,aux heater status,enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm], ,false,sensor.boiler_aux_heater_status,sensor.boiler_auxheaterstatus,5,0,1,216,1
-"Geo 5xx",boiler,173,auxheaterlevel,aux heater level,uint8 (>=0<=100),%,false,sensor.boiler_aux_heater_level,sensor.boiler_auxheaterlevel,5,0,1,217,1
+"Geo 5xx",boiler,173,auxheaterlevel,aux heater level,uint8,%,false,sensor.boiler_aux_heater_level,sensor.boiler_auxheaterlevel,5,0,1,217,1
"Geo 5xx",boiler,173,auxheaterdelay,aux heater on delay,uint16 (>=10<=1000),K*min,true,number.boiler_aux_heater_on_delay,number.boiler_auxheaterdelay,5,0,10,218,1
"Geo 5xx",boiler,173,auxmaxlimit,aux heater max limit,uint8 (>=0<=10),K,true,number.boiler_aux_heater_max_limit,number.boiler_auxmaxlimit,5,0,1/10,219,1
"Geo 5xx",boiler,173,auxlimitstart,aux heater limit start,uint8 (>=0<=10),K,true,number.boiler_aux_heater_limit_start,number.boiler_auxlimitstart,5,0,1/10,220,1
-"Geo 5xx",boiler,173,auxheatrmode,aux heater mode,enum [eco\|comfort], ,true,select.boiler_aux_heater_mode,select.boiler_auxheatrmode,5,0,1,221,1
+"Geo 5xx",boiler,173,auxheatrmode,aux heater mode,enum [eco\|comfort] (>=0<=0), ,true,select.boiler_aux_heater_mode,select.boiler_auxheatrmode,5,0,1,221,1
"Geo 5xx",boiler,173,hphystheat,on/off hyst heat,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_heat,number.boiler_hphystheat,5,0,5,222,1
"Geo 5xx",boiler,173,hphystcool,on/off hyst cool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_cool,number.boiler_hphystcool,5,0,5,223,1
"Geo 5xx",boiler,173,hphystpool,on/off hyst pool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_pool,number.boiler_hphystpool,5,0,5,224,1
-"Geo 5xx",boiler,173,silentmode,silent mode,enum [off\|auto\|on], ,true,select.boiler_silent_mode,select.boiler_silentmode,5,0,1,225,1
-"Geo 5xx",boiler,173,silentfrom,silent mode from,uint8 (>=0<=3810),minutes,true,number.boiler_silent_mode_from,number.boiler_silentfrom,5,0,15,226,1
-"Geo 5xx",boiler,173,silentto,silent mode to,uint8 (>=0<=3810),minutes,true,number.boiler_silent_mode_to,number.boiler_silentto,5,0,15,227,1
-"Geo 5xx",boiler,173,mintempsilent,min outside temp for silent mode,int8 (>=-126<=126),C,true,number.boiler_min_outside_temp_for_silent_mode,number.boiler_mintempsilent,5,0,1,228,1
-"Geo 5xx",boiler,173,tempparmode,outside temp parallel mode,int8 (>=-126<=126),C,true,number.boiler_outside_temp_parallel_mode,number.boiler_tempparmode,5,0,1,229,1
-"Geo 5xx",boiler,173,auxheatmix,aux heater mixing valve,int8 (>=-100<=100),%,false,sensor.boiler_aux_heater_mixing_valve,sensor.boiler_auxheatmix,5,0,1,230,1
+"Geo 5xx",boiler,173,silentmode,silent mode,enum [off\|auto\|on] (>=0<=0), ,true,select.boiler_silent_mode,select.boiler_silentmode,5,0,1,225,1
+"Geo 5xx",boiler,173,silentfrom,silent mode from,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_from,number.boiler_silentfrom,5,0,15,226,1
+"Geo 5xx",boiler,173,silentto,silent mode to,uint8 (>=0<=0),minutes,true,number.boiler_silent_mode_to,number.boiler_silentto,5,0,15,227,1
+"Geo 5xx",boiler,173,mintempsilent,min outside temp for silent mode,int8 (>=0<=0),C,true,number.boiler_min_outside_temp_for_silent_mode,number.boiler_mintempsilent,5,0,1,228,1
+"Geo 5xx",boiler,173,tempparmode,outside temp parallel mode,int8 (>=0<=0),C,true,number.boiler_outside_temp_parallel_mode,number.boiler_tempparmode,5,0,1,229,1
+"Geo 5xx",boiler,173,auxheatmix,aux heater mixing valve,int8,%,false,sensor.boiler_aux_heater_mixing_valve,sensor.boiler_auxheatmix,5,0,1,230,1
"Geo 5xx",boiler,173,tempdiffheat,temp diff TC3/TC0 heat,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_heat,number.boiler_tempdiffheat,5,0,1/10,231,1
"Geo 5xx",boiler,173,tempdiffcool,temp diff TC3/TC0 cool,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_cool,number.boiler_tempdiffcool,5,0,1/10,232,1
-"Geo 5xx",boiler,173,vpcooling,valve/pump cooling,boolean, ,true,switch.boiler_valve/pump_cooling,switch.boiler_vpcooling,5,0,1,233,1
-"Geo 5xx",boiler,173,heatcable,heating cable,boolean, ,true,switch.boiler_heating_cable,switch.boiler_heatcable,5,0,1,234,1
-"Geo 5xx",boiler,173,vc0valve,VC0 valve,boolean, ,true,switch.boiler_VC0_valve,switch.boiler_vc0valve,5,0,1,235,1
-"Geo 5xx",boiler,173,primepump,primary heatpump,boolean, ,true,switch.boiler_primary_heatpump,switch.boiler_primepump,5,0,1,236,1
-"Geo 5xx",boiler,173,primepumpmod,primary heatpump modulation,uint8 (>=0<=100),%,true,number.boiler_primary_heatpump_modulation,number.boiler_primepumpmod,5,0,1,237,1
-"Geo 5xx",boiler,173,hp3way,3-way valve,boolean, ,true,switch.boiler_3-way_valve,switch.boiler_hp3way,5,0,1,238,1
-"Geo 5xx",boiler,173,elheatstep1,el. heater step 1,boolean, ,true,switch.boiler_el._heater_step_1,switch.boiler_elheatstep1,5,0,1,239,1
-"Geo 5xx",boiler,173,elheatstep2,el. heater step 2,boolean, ,true,switch.boiler_el._heater_step_2,switch.boiler_elheatstep2,5,0,1,240,1
-"Geo 5xx",boiler,173,elheatstep3,el. heater step 3,boolean, ,true,switch.boiler_el._heater_step_3,switch.boiler_elheatstep3,5,0,1,241,1
+"Geo 5xx",boiler,173,vpcooling,valve/pump cooling,boolean (>=0<=0), ,true,switch.boiler_valve/pump_cooling,switch.boiler_vpcooling,5,0,1,233,1
+"Geo 5xx",boiler,173,heatcable,heating cable,boolean (>=0<=0), ,true,switch.boiler_heating_cable,switch.boiler_heatcable,5,0,1,234,1
+"Geo 5xx",boiler,173,vc0valve,VC0 valve,boolean (>=0<=0), ,true,switch.boiler_VC0_valve,switch.boiler_vc0valve,5,0,1,235,1
+"Geo 5xx",boiler,173,primepump,primary heatpump,boolean (>=0<=0), ,true,switch.boiler_primary_heatpump,switch.boiler_primepump,5,0,1,236,1
+"Geo 5xx",boiler,173,primepumpmod,primary heatpump modulation,uint8 (>=0<=0),%,true,number.boiler_primary_heatpump_modulation,number.boiler_primepumpmod,5,0,1,237,1
+"Geo 5xx",boiler,173,hp3way,3-way valve,boolean (>=0<=0), ,true,switch.boiler_3-way_valve,switch.boiler_hp3way,5,0,1,238,1
+"Geo 5xx",boiler,173,elheatstep1,el. heater step 1,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_1,switch.boiler_elheatstep1,5,0,1,239,1
+"Geo 5xx",boiler,173,elheatstep2,el. heater step 2,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_2,switch.boiler_elheatstep2,5,0,1,240,1
+"Geo 5xx",boiler,173,elheatstep3,el. heater step 3,boolean (>=0<=0), ,true,switch.boiler_el._heater_step_3,switch.boiler_elheatstep3,5,0,1,241,1
"Geo 5xx",boiler,173,hpea0,condensate reservoir heating (EA0),boolean, ,false,binary_sensor.boiler_condensate_reservoir_heating_(EA0),binary_sensor.boiler_hpea0,5,0,1,242,1
-"Geo 5xx",boiler,173,hppumpmode,primary heatpump mode,enum [auto\|continuous], ,true,select.boiler_primary_heatpump_mode,select.boiler_hppumpmode,5,0,1,243,1
+"Geo 5xx",boiler,173,hppumpmode,primary heatpump mode,enum [auto\|continuous] (>=0<=0), ,true,select.boiler_primary_heatpump_mode,select.boiler_hppumpmode,5,0,1,243,1
"Geo 5xx",boiler,173,fan,fan,uint8 (>=20<=100),%,true,number.boiler_fan,number.boiler_fan,5,0,1,244,1
-"Geo 5xx",boiler,173,fanspd,fan speed,uint8 (>=0<=100),%,false,sensor.boiler_fan_speed,sensor.boiler_fanspd,5,0,1,245,1
-"Geo 5xx",boiler,173,shutdown,shutdown,cmd [off\|on], ,true,sensor.boiler_shutdown,sensor.boiler_shutdown,5,0,1,246,1
-"Geo 5xx",boiler,173,hpcurrpower,compressor current power,uint16 (>=0<=31999),W,false,sensor.boiler_compressor_current_power,sensor.boiler_hpcurrpower,5,0,1,247,1
-"Geo 5xx",boiler,173,hppowerlimit,power limit,uint16 (>=0<=31999),W,true,number.boiler_power_limit,number.boiler_hppowerlimit,5,0,1,248,1
-"Geo 5xx",boiler,173,dhw.alternatingop,alternating operation,boolean, ,true,switch.boiler_dhw_alternating_operation,switch.boiler_dhw_alternatingop,5,9,1,15,1
+"Geo 5xx",boiler,173,fanspd,fan speed,uint8,%,false,sensor.boiler_fan_speed,sensor.boiler_fanspd,5,0,1,245,1
+"Geo 5xx",boiler,173,shutdown,shutdown,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_shutdown,sensor.boiler_shutdown,5,0,1,246,1
+"Geo 5xx",boiler,173,hpcurrpower,compressor current power,uint16,W,false,sensor.boiler_compressor_current_power,sensor.boiler_hpcurrpower,5,0,1,247,1
+"Geo 5xx",boiler,173,hppowerlimit,power limit,uint16 (>=0<=0),W,true,number.boiler_power_limit,number.boiler_hppowerlimit,5,0,1,248,1
+"Geo 5xx",boiler,173,dhw.alternatingop,alternating operation,boolean (>=0<=0), ,true,switch.boiler_dhw_alternating_operation,switch.boiler_dhw_alternatingop,5,9,1,15,1
"Geo 5xx",boiler,173,dhw.altopprioheat,prioritise heating during dhw,uint8 (>=20<=120),minutes,true,number.boiler_dhw_prioritise_heating_during_dhw,number.boiler_dhw_altopprioheat,5,9,1,16,1
"Geo 5xx",boiler,173,dhw.altopprio,prioritise dhw during heating,uint8 (>=30<=120),minutes,true,number.boiler_dhw_prioritise_dhw_during_heating,number.boiler_dhw_altopprio,5,9,1,17,1
"Geo 5xx",boiler,173,dhw.comfoff,comfort switch off,uint8 (>=15<=65),C,true,number.boiler_dhw_comfort_switch_off,number.boiler_dhw_comfoff,5,9,1,18,1
@@ -2936,1951 +2936,1951 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/
"Geo 5xx",boiler,173,dhw.comfdiff,comfort diff,uint8 (>=4<=15),K,true,number.boiler_dhw_comfort_diff,number.boiler_dhw_comfdiff,5,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,5,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,5,9,1,23,1
-"Geo 5xx",boiler,173,dhw.comfstop,comfort stop temp,uint8 (>=0<=254),C,true,number.boiler_dhw_comfort_stop_temp,number.boiler_dhw_comfstop,5,9,1,24,1
-"Geo 5xx",boiler,173,dhw.ecostop,eco stop temp,uint8 (>=0<=254),C,true,number.boiler_dhw_eco_stop_temp,number.boiler_dhw_ecostop,5,9,1,25,1
-"Geo 5xx",boiler,173,dhw.ecoplusstop,eco+ stop temp,uint8 (>=0<=254),C,true,number.boiler_dhw_eco+_stop_temp,number.boiler_dhw_ecoplusstop,5,9,1,26,1
-"Geo 5xx",boiler,173,dhw.hpcircpump,circulation pump available during dhw,boolean, ,true,switch.boiler_dhw_circulation_pump_available_during_dhw,switch.boiler_dhw_hpcircpump,5,9,1,27,1
-"Geo 5xx",boiler,173,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"Geo 5xx",boiler,173,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"Geo 5xx",boiler,173,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"Geo 5xx",boiler,173,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"Geo 5xx",boiler,173,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"Geo 5xx",boiler,173,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"Geo 5xx",boiler,173,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"Geo 5xx",boiler,173,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,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,5,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,5,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,5,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,5,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,5,9,1,28,1
+"Geo 5xx",boiler,173,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"Geo 5xx",boiler,173,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"Geo 5xx",boiler,173,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,1
+"Geo 5xx",boiler,173,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,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,5,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,5,9,1,39,1
-"Geo 5xx",boiler,173,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,1
+"Geo 5xx",boiler,173,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,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,5,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,5,9,1,42,1
-"Geo 5xx",boiler,173,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,1
+"Geo 5xx",boiler,173,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,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,5,9,1,44,1
-"Geo 5xx",boiler,173,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"Geo 5xx",boiler,173,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,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,5,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,5,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,5,9,1,47,1
-"Geo 5xx",boiler,173,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"Geo 5xx",boiler,173,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"Geo 5xx",boiler,173,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"Geo 5xx",boiler,173,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"Geo 5xx",boiler,173,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"Geo 5xx",boiler,173,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"Geo 5xx",boiler,173,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"Geo 5xx",boiler,173,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"Geo 5xx",boiler,173,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"Geo 5xx",boiler,173,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1/10,54,1
+"Geo 5xx",boiler,173,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,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,5,9,1,56,1
+"Geo 5xx",boiler,173,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,1
"Geo 5xx",boiler,173,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,5,9,1,58,1
"Geo 5xx",boiler,173,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,5,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,5,9,1,60,1
"Geo 5xx",boiler,173,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,5,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,5,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,5,9,1,63,1
-"Geo 5xx",boiler,173,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"Geo 5xx",boiler,173,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"Geo 5xx",boiler,173,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"Geo 5xx",boiler,173,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"Geo 5xx",boiler,173,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"Geo 5xx",boiler,173,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"Geo 5xx",boiler,173,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"Geo 5xx",boiler,173,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,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,5,0,1,5,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,exhausttemp,exhaust temperature,uint16 (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,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,5,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,5,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,5,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,5,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,5,0,1/10,11,1
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1
"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,flamecurr,flame current,uint16 (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1
"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1
"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burnminpower,burner min power,uint8 (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1
"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,absburnpow,burner current power (absolute),uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatblock,heating block,uint16 (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1
"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1
"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1
"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curveon,heatingcurve on,boolean, ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1
"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1
"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nofrostmode,nofrost mode,boolean, ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,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], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,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], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,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,5,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,5,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,5,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,5,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,5,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,5,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,5,0,1,23,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,0,1,65,2
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,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,5,0,1,68,2
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"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,5,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,5,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,5,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,5,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,5,0,1,79,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,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,5,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,5,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,5,9,1,39,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,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,5,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,5,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,5,9,1,42,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,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,5,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,5,9,1,44,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,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,5,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,5,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,5,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], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,63,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nompower,nominal Power,uint8 (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
-"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"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,5,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,5,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,5,9,1,66,1
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
+"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2
"Condens 5000i, Greenstar 8000/GC9800IW, GB192i*2",boiler,195,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
-"Logamax U122, Cerapur",boiler,203,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"Logamax U122, Cerapur",boiler,203,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"Logamax U122, Cerapur",boiler,203,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"Logamax U122, Cerapur",boiler,203,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"Logamax U122, Cerapur",boiler,203,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"Logamax U122, Cerapur",boiler,203,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"Logamax U122, Cerapur",boiler,203,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"Logamax U122, Cerapur",boiler,203,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,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,5,0,1,5,1
-"Logamax U122, Cerapur",boiler,203,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"Logamax U122, Cerapur",boiler,203,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"Logamax U122, Cerapur",boiler,203,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"Logamax U122, Cerapur",boiler,203,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"Logamax U122, Cerapur",boiler,203,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"Logamax U122, Cerapur",boiler,203,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"Logamax U122, Cerapur",boiler,203,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"Logamax U122, Cerapur",boiler,203,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"Logamax U122, Cerapur",boiler,203,exhausttemp,exhaust temperature,uint16 (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
+"Logamax U122, Cerapur",boiler,203,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
+"Logamax U122, Cerapur",boiler,203,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,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,5,0,1/10,8,1
+"Logamax U122, Cerapur",boiler,203,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,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,5,0,1/10,10,1
+"Logamax U122, Cerapur",boiler,203,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
+"Logamax U122, Cerapur",boiler,203,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"Logamax U122, Cerapur",boiler,203,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"Logamax U122, Cerapur",boiler,203,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
"Logamax U122, Cerapur",boiler,203,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1
"Logamax U122, Cerapur",boiler,203,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1
-"Logamax U122, Cerapur",boiler,203,flamecurr,flame current,uint16 (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
+"Logamax U122, Cerapur",boiler,203,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
"Logamax U122, Cerapur",boiler,203,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1
"Logamax U122, Cerapur",boiler,203,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1
"Logamax U122, Cerapur",boiler,203,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1
-"Logamax U122, Cerapur",boiler,203,burnminpower,burner min power,uint8 (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
+"Logamax U122, Cerapur",boiler,203,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
"Logamax U122, Cerapur",boiler,203,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1
"Logamax U122, Cerapur",boiler,203,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1
-"Logamax U122, Cerapur",boiler,203,absburnpow,burner current power (absolute),uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
-"Logamax U122, Cerapur",boiler,203,heatblock,heating block,uint16 (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
+"Logamax U122, Cerapur",boiler,203,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
+"Logamax U122, Cerapur",boiler,203,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
"Logamax U122, Cerapur",boiler,203,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1
"Logamax U122, Cerapur",boiler,203,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1
"Logamax U122, Cerapur",boiler,203,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1
"Logamax U122, Cerapur",boiler,203,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1
-"Logamax U122, Cerapur",boiler,203,curveon,heatingcurve on,boolean, ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
+"Logamax U122, Cerapur",boiler,203,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
"Logamax U122, Cerapur",boiler,203,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1
"Logamax U122, Cerapur",boiler,203,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1
"Logamax U122, Cerapur",boiler,203,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1
-"Logamax U122, Cerapur",boiler,203,nofrostmode,nofrost mode,boolean, ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
+"Logamax U122, Cerapur",boiler,203,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
"Logamax U122, Cerapur",boiler,203,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1
-"Logamax U122, Cerapur",boiler,203,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"Logamax U122, Cerapur",boiler,203,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"Logamax U122, Cerapur",boiler,203,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"Logamax U122, Cerapur",boiler,203,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"Logamax U122, Cerapur",boiler,203,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"Logamax U122, Cerapur",boiler,203,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,0,1,18,1
-"Logamax U122, Cerapur",boiler,203,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,0,1,19,1
-"Logamax U122, Cerapur",boiler,203,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,1
+"Logamax U122, Cerapur",boiler,203,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,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,5,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,5,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,5,0,1,20,1
"Logamax U122, Cerapur",boiler,203,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,5,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,5,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,5,0,1,23,1
-"Logamax U122, Cerapur",boiler,203,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"Logamax U122, Cerapur",boiler,203,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"Logamax U122, Cerapur",boiler,203,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"Logamax U122, Cerapur",boiler,203,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"Logamax U122, Cerapur",boiler,203,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"Logamax U122, Cerapur",boiler,203,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"Logamax U122, Cerapur",boiler,203,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"Logamax U122, Cerapur",boiler,203,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
+"Logamax U122, Cerapur",boiler,203,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,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,5,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,5,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,5,0,1,31,2
+"Logamax U122, Cerapur",boiler,203,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,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,5,0,1,35,2
"Logamax U122, Cerapur",boiler,203,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,5,0,1,37,28
"Logamax U122, Cerapur",boiler,203,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,5,0,1,65,2
-"Logamax U122, Cerapur",boiler,203,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"Logamax U122, Cerapur",boiler,203,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
"Logamax U122, Cerapur",boiler,203,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,5,0,1,68,2
-"Logamax U122, Cerapur",boiler,203,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"Logamax U122, Cerapur",boiler,203,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"Logamax U122, Cerapur",boiler,203,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"Logamax U122, Cerapur",boiler,203,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"Logamax U122, Cerapur",boiler,203,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,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,5,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,5,0,1,72,6
+"Logamax U122, Cerapur",boiler,203,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
"Logamax U122, Cerapur",boiler,203,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,5,0,1,79,1
-"Logamax U122, Cerapur",boiler,203,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"Logamax U122, Cerapur",boiler,203,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"Logamax U122, Cerapur",boiler,203,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"Logamax U122, Cerapur",boiler,203,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"Logamax U122, Cerapur",boiler,203,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"Logamax U122, Cerapur",boiler,203,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"Logamax U122, Cerapur",boiler,203,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"Logamax U122, Cerapur",boiler,203,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"Logamax U122, Cerapur",boiler,203,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"Logamax U122, Cerapur",boiler,203,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"Logamax U122, Cerapur",boiler,203,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"Logamax U122, Cerapur",boiler,203,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"Logamax U122, Cerapur",boiler,203,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"Logamax U122, Cerapur",boiler,203,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"Logamax U122, Cerapur",boiler,203,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"Logamax U122, Cerapur",boiler,203,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"Logamax U122, Cerapur",boiler,203,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"Logamax U122, Cerapur",boiler,203,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"Logamax U122, Cerapur",boiler,203,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"Logamax U122, Cerapur",boiler,203,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"Logamax U122, Cerapur",boiler,203,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"Logamax U122, Cerapur",boiler,203,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"Logamax U122, Cerapur",boiler,203,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"Logamax U122, Cerapur",boiler,203,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"Logamax U122, Cerapur",boiler,203,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"Logamax U122, Cerapur",boiler,203,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"Logamax U122, Cerapur",boiler,203,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"Logamax U122, Cerapur",boiler,203,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"Logamax U122, Cerapur",boiler,203,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"Logamax U122, Cerapur",boiler,203,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"Logamax U122, Cerapur",boiler,203,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"Logamax U122, Cerapur",boiler,203,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,1
+"Logamax U122, Cerapur",boiler,203,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,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,5,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,5,9,1,39,1
-"Logamax U122, Cerapur",boiler,203,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,1
+"Logamax U122, Cerapur",boiler,203,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,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,5,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,5,9,1,42,1
-"Logamax U122, Cerapur",boiler,203,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,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,5,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,5,9,1,44,1
-"Logamax U122, Cerapur",boiler,203,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"Logamax U122, Cerapur",boiler,203,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,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,5,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,5,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,5,9,1,47,1
-"Logamax U122, Cerapur",boiler,203,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"Logamax U122, Cerapur",boiler,203,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"Logamax U122, Cerapur",boiler,203,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"Logamax U122, Cerapur",boiler,203,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"Logamax U122, Cerapur",boiler,203,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"Logamax U122, Cerapur",boiler,203,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"Logamax U122, Cerapur",boiler,203,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"Logamax U122, Cerapur",boiler,203,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"Logamax U122, Cerapur",boiler,203,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"Logamax U122, Cerapur",boiler,203,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,56,1
+"Logamax U122, Cerapur",boiler,203,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,1
"Logamax U122, Cerapur",boiler,203,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,5,9,1,58,1
"Logamax U122, Cerapur",boiler,203,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,5,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,5,9,1,60,1
"Logamax U122, Cerapur",boiler,203,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,5,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,5,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,5,9,1,63,1
-"Logamax U122, Cerapur",boiler,203,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"Logamax U122, Cerapur",boiler,203,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"Logamax U122, Cerapur",boiler,203,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"Logamax U122, Cerapur",boiler,203,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"Logamax U122, Cerapur",boiler,203,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"Logamax U122, Cerapur",boiler,203,nompower,nominal Power,uint8 (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
-"Logamax U122, Cerapur",boiler,203,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"Logamax U122, Cerapur",boiler,203,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"Logamax U122, Cerapur",boiler,203,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"Logamax U122, Cerapur",boiler,203,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"Logamax U122, Cerapur",boiler,203,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
+"Logamax U122, Cerapur",boiler,203,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
"Logamax U122, Cerapur",boiler,203,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2
"Logamax U122, Cerapur",boiler,203,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
-"Ecomline Excellent",boiler,206,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"Ecomline Excellent",boiler,206,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"Ecomline Excellent",boiler,206,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"Ecomline Excellent",boiler,206,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"Ecomline Excellent",boiler,206,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"Ecomline Excellent",boiler,206,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"Ecomline Excellent",boiler,206,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"Ecomline Excellent",boiler,206,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,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,5,0,1,5,1
-"Ecomline Excellent",boiler,206,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"Ecomline Excellent",boiler,206,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"Ecomline Excellent",boiler,206,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"Ecomline Excellent",boiler,206,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"Ecomline Excellent",boiler,206,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"Ecomline Excellent",boiler,206,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"Ecomline Excellent",boiler,206,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"Ecomline Excellent",boiler,206,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"Ecomline Excellent",boiler,206,exhausttemp,exhaust temperature,uint16 (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
+"Ecomline Excellent",boiler,206,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
+"Ecomline Excellent",boiler,206,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
+"Ecomline Excellent",boiler,206,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
+"Ecomline Excellent",boiler,206,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
+"Ecomline Excellent",boiler,206,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
+"Ecomline Excellent",boiler,206,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
+"Ecomline Excellent",boiler,206,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"Ecomline Excellent",boiler,206,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"Ecomline Excellent",boiler,206,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
"Ecomline Excellent",boiler,206,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1
"Ecomline Excellent",boiler,206,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1
-"Ecomline Excellent",boiler,206,flamecurr,flame current,uint16 (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
+"Ecomline Excellent",boiler,206,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
"Ecomline Excellent",boiler,206,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1
"Ecomline Excellent",boiler,206,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1
"Ecomline Excellent",boiler,206,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1
-"Ecomline Excellent",boiler,206,burnminpower,burner min power,uint8 (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
+"Ecomline Excellent",boiler,206,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
"Ecomline Excellent",boiler,206,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1
"Ecomline Excellent",boiler,206,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1
-"Ecomline Excellent",boiler,206,absburnpow,burner current power (absolute),uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
-"Ecomline Excellent",boiler,206,heatblock,heating block,uint16 (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
+"Ecomline Excellent",boiler,206,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
+"Ecomline Excellent",boiler,206,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
"Ecomline Excellent",boiler,206,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1
"Ecomline Excellent",boiler,206,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1
"Ecomline Excellent",boiler,206,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1
"Ecomline Excellent",boiler,206,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1
-"Ecomline Excellent",boiler,206,curveon,heatingcurve on,boolean, ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
+"Ecomline Excellent",boiler,206,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
"Ecomline Excellent",boiler,206,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1
"Ecomline Excellent",boiler,206,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1
"Ecomline Excellent",boiler,206,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1
-"Ecomline Excellent",boiler,206,nofrostmode,nofrost mode,boolean, ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
+"Ecomline Excellent",boiler,206,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
"Ecomline Excellent",boiler,206,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1
-"Ecomline Excellent",boiler,206,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"Ecomline Excellent",boiler,206,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"Ecomline Excellent",boiler,206,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"Ecomline Excellent",boiler,206,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"Ecomline Excellent",boiler,206,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"Ecomline Excellent",boiler,206,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,0,1,18,1
-"Ecomline Excellent",boiler,206,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,0,1,19,1
-"Ecomline Excellent",boiler,206,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,1
+"Ecomline Excellent",boiler,206,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,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,5,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,5,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,5,0,1,20,1
"Ecomline Excellent",boiler,206,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,5,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,5,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,5,0,1,23,1
-"Ecomline Excellent",boiler,206,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"Ecomline Excellent",boiler,206,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"Ecomline Excellent",boiler,206,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"Ecomline Excellent",boiler,206,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"Ecomline Excellent",boiler,206,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"Ecomline Excellent",boiler,206,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"Ecomline Excellent",boiler,206,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"Ecomline Excellent",boiler,206,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
+"Ecomline Excellent",boiler,206,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,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,5,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,5,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,5,0,1,31,2
+"Ecomline Excellent",boiler,206,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,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,5,0,1,35,2
"Ecomline Excellent",boiler,206,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,5,0,1,37,28
"Ecomline Excellent",boiler,206,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,5,0,1,65,2
-"Ecomline Excellent",boiler,206,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"Ecomline Excellent",boiler,206,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
"Ecomline Excellent",boiler,206,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,5,0,1,68,2
-"Ecomline Excellent",boiler,206,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"Ecomline Excellent",boiler,206,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"Ecomline Excellent",boiler,206,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"Ecomline Excellent",boiler,206,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"Ecomline Excellent",boiler,206,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,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,5,0,1,71,1
+"Ecomline Excellent",boiler,206,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
+"Ecomline Excellent",boiler,206,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
"Ecomline Excellent",boiler,206,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,5,0,1,79,1
-"Ecomline Excellent",boiler,206,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"Ecomline Excellent",boiler,206,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"Ecomline Excellent",boiler,206,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"Ecomline Excellent",boiler,206,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"Ecomline Excellent",boiler,206,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"Ecomline Excellent",boiler,206,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"Ecomline Excellent",boiler,206,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"Ecomline Excellent",boiler,206,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"Ecomline Excellent",boiler,206,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"Ecomline Excellent",boiler,206,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"Ecomline Excellent",boiler,206,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"Ecomline Excellent",boiler,206,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"Ecomline Excellent",boiler,206,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"Ecomline Excellent",boiler,206,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"Ecomline Excellent",boiler,206,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"Ecomline Excellent",boiler,206,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"Ecomline Excellent",boiler,206,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"Ecomline Excellent",boiler,206,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"Ecomline Excellent",boiler,206,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"Ecomline Excellent",boiler,206,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"Ecomline Excellent",boiler,206,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"Ecomline Excellent",boiler,206,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"Ecomline Excellent",boiler,206,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"Ecomline Excellent",boiler,206,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"Ecomline Excellent",boiler,206,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"Ecomline Excellent",boiler,206,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"Ecomline Excellent",boiler,206,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"Ecomline Excellent",boiler,206,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"Ecomline Excellent",boiler,206,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"Ecomline Excellent",boiler,206,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"Ecomline Excellent",boiler,206,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"Ecomline Excellent",boiler,206,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,1
+"Ecomline Excellent",boiler,206,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,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,5,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,5,9,1,39,1
-"Ecomline Excellent",boiler,206,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,1
+"Ecomline Excellent",boiler,206,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,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,5,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,5,9,1,42,1
-"Ecomline Excellent",boiler,206,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,1
+"Ecomline Excellent",boiler,206,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,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,5,9,1,44,1
-"Ecomline Excellent",boiler,206,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"Ecomline Excellent",boiler,206,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,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,5,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,5,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,5,9,1,47,1
-"Ecomline Excellent",boiler,206,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"Ecomline Excellent",boiler,206,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"Ecomline Excellent",boiler,206,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"Ecomline Excellent",boiler,206,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"Ecomline Excellent",boiler,206,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"Ecomline Excellent",boiler,206,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"Ecomline Excellent",boiler,206,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"Ecomline Excellent",boiler,206,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"Ecomline Excellent",boiler,206,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"Ecomline Excellent",boiler,206,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1/10,54,1
+"Ecomline Excellent",boiler,206,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,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,5,9,1,56,1
+"Ecomline Excellent",boiler,206,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,1
"Ecomline Excellent",boiler,206,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,5,9,1,58,1
"Ecomline Excellent",boiler,206,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,5,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,5,9,1,60,1
"Ecomline Excellent",boiler,206,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,5,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,5,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,5,9,1,63,1
-"Ecomline Excellent",boiler,206,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"Ecomline Excellent",boiler,206,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"Ecomline Excellent",boiler,206,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"Ecomline Excellent",boiler,206,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"Ecomline Excellent",boiler,206,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"Ecomline Excellent",boiler,206,nompower,nominal Power,uint8 (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
-"Ecomline Excellent",boiler,206,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"Ecomline Excellent",boiler,206,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"Ecomline Excellent",boiler,206,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"Ecomline Excellent",boiler,206,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"Ecomline Excellent",boiler,206,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
+"Ecomline Excellent",boiler,206,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
"Ecomline Excellent",boiler,206,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2
"Ecomline Excellent",boiler,206,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,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,5,0,1,5,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,exhausttemp,exhaust temperature,uint16 (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,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,5,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,5,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,5,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,5,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,5,0,1/10,11,1
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1
"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,flamecurr,flame current,uint16 (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1
"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1
"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burnminpower,burner min power,uint8 (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1
"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,absburnpow,burner current power (absolute),uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatblock,heating block,uint16 (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1
"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1
"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1
"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curveon,heatingcurve on,boolean, ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1
"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1
"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nofrostmode,nofrost mode,boolean, ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,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], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,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], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,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,5,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,5,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,5,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,5,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,5,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,5,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,5,0,1,23,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,0,1,65,2
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,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,5,0,1,68,2
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"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,5,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,5,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,5,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,5,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,5,0,1,79,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,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,5,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,5,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,5,9,1,39,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,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,5,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,5,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,5,9,1,42,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,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,5,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,5,9,1,44,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,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,5,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,5,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,5,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], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,63,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nompower,nominal Power,uint8 (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
-"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"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,5,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,5,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,5,9,1,66,1
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
+"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2
"Logamax Plus, GB192, Condens GC9000, Greenstar ErP",boiler,208,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
-"Cascade MC400",boiler,210,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"Cascade MC400",boiler,210,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"Cascade MC400",boiler,210,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"Cascade MC400",boiler,210,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"Cascade MC400",boiler,210,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"Cascade MC400",boiler,210,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"Cascade MC400",boiler,210,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"Cascade MC400",boiler,210,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,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,5,0,1,5,1
-"Cascade MC400",boiler,210,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"Cascade MC400",boiler,210,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"Cascade MC400",boiler,210,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"Cascade MC400",boiler,210,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"Cascade MC400",boiler,210,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"Cascade MC400",boiler,210,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"Cascade MC400",boiler,210,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"Cascade MC400",boiler,210,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"Cascade MC400",boiler,210,exhausttemp,exhaust temperature,uint16 (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
+"Cascade MC400",boiler,210,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
+"Cascade MC400",boiler,210,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
+"Cascade MC400",boiler,210,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
+"Cascade MC400",boiler,210,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
+"Cascade MC400",boiler,210,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
+"Cascade MC400",boiler,210,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
+"Cascade MC400",boiler,210,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"Cascade MC400",boiler,210,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"Cascade MC400",boiler,210,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
"Cascade MC400",boiler,210,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1
"Cascade MC400",boiler,210,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1
-"Cascade MC400",boiler,210,flamecurr,flame current,uint16 (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
+"Cascade MC400",boiler,210,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
"Cascade MC400",boiler,210,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1
"Cascade MC400",boiler,210,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1
"Cascade MC400",boiler,210,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1
-"Cascade MC400",boiler,210,burnminpower,burner min power,uint8 (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
+"Cascade MC400",boiler,210,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
"Cascade MC400",boiler,210,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1
"Cascade MC400",boiler,210,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1
-"Cascade MC400",boiler,210,absburnpow,burner current power (absolute),uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
-"Cascade MC400",boiler,210,heatblock,heating block,uint16 (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
+"Cascade MC400",boiler,210,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
+"Cascade MC400",boiler,210,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
"Cascade MC400",boiler,210,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1
"Cascade MC400",boiler,210,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1
"Cascade MC400",boiler,210,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1
"Cascade MC400",boiler,210,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1
-"Cascade MC400",boiler,210,curveon,heatingcurve on,boolean, ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
+"Cascade MC400",boiler,210,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
"Cascade MC400",boiler,210,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1
"Cascade MC400",boiler,210,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1
"Cascade MC400",boiler,210,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1
-"Cascade MC400",boiler,210,nofrostmode,nofrost mode,boolean, ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
+"Cascade MC400",boiler,210,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
"Cascade MC400",boiler,210,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1
-"Cascade MC400",boiler,210,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"Cascade MC400",boiler,210,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"Cascade MC400",boiler,210,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"Cascade MC400",boiler,210,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"Cascade MC400",boiler,210,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"Cascade MC400",boiler,210,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,0,1,18,1
-"Cascade MC400",boiler,210,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,0,1,19,1
-"Cascade MC400",boiler,210,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,1
+"Cascade MC400",boiler,210,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,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,5,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,5,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,5,0,1,20,1
"Cascade MC400",boiler,210,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,5,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,5,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,5,0,1,23,1
-"Cascade MC400",boiler,210,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"Cascade MC400",boiler,210,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"Cascade MC400",boiler,210,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"Cascade MC400",boiler,210,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"Cascade MC400",boiler,210,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"Cascade MC400",boiler,210,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"Cascade MC400",boiler,210,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"Cascade MC400",boiler,210,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
+"Cascade MC400",boiler,210,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,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,5,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,5,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,5,0,1,31,2
+"Cascade MC400",boiler,210,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,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,5,0,1,35,2
"Cascade MC400",boiler,210,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,5,0,1,37,28
"Cascade MC400",boiler,210,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,5,0,1,65,2
-"Cascade MC400",boiler,210,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"Cascade MC400",boiler,210,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
"Cascade MC400",boiler,210,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,5,0,1,68,2
-"Cascade MC400",boiler,210,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"Cascade MC400",boiler,210,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"Cascade MC400",boiler,210,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"Cascade MC400",boiler,210,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"Cascade MC400",boiler,210,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,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,5,0,1,71,1
+"Cascade MC400",boiler,210,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
+"Cascade MC400",boiler,210,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
"Cascade MC400",boiler,210,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,5,0,1,79,1
-"Cascade MC400",boiler,210,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"Cascade MC400",boiler,210,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"Cascade MC400",boiler,210,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"Cascade MC400",boiler,210,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"Cascade MC400",boiler,210,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"Cascade MC400",boiler,210,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"Cascade MC400",boiler,210,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"Cascade MC400",boiler,210,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"Cascade MC400",boiler,210,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"Cascade MC400",boiler,210,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"Cascade MC400",boiler,210,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"Cascade MC400",boiler,210,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"Cascade MC400",boiler,210,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"Cascade MC400",boiler,210,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"Cascade MC400",boiler,210,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"Cascade MC400",boiler,210,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"Cascade MC400",boiler,210,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"Cascade MC400",boiler,210,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"Cascade MC400",boiler,210,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"Cascade MC400",boiler,210,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"Cascade MC400",boiler,210,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"Cascade MC400",boiler,210,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"Cascade MC400",boiler,210,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"Cascade MC400",boiler,210,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"Cascade MC400",boiler,210,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"Cascade MC400",boiler,210,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"Cascade MC400",boiler,210,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"Cascade MC400",boiler,210,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"Cascade MC400",boiler,210,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"Cascade MC400",boiler,210,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"Cascade MC400",boiler,210,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"Cascade MC400",boiler,210,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,1
+"Cascade MC400",boiler,210,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,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,5,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,5,9,1,39,1
-"Cascade MC400",boiler,210,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,1
+"Cascade MC400",boiler,210,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,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,5,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,5,9,1,42,1
-"Cascade MC400",boiler,210,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,1
+"Cascade MC400",boiler,210,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,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,5,9,1,44,1
-"Cascade MC400",boiler,210,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"Cascade MC400",boiler,210,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,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,5,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,5,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,5,9,1,47,1
-"Cascade MC400",boiler,210,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"Cascade MC400",boiler,210,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"Cascade MC400",boiler,210,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"Cascade MC400",boiler,210,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"Cascade MC400",boiler,210,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"Cascade MC400",boiler,210,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"Cascade MC400",boiler,210,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"Cascade MC400",boiler,210,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"Cascade MC400",boiler,210,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"Cascade MC400",boiler,210,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1/10,54,1
+"Cascade MC400",boiler,210,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,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,5,9,1,56,1
+"Cascade MC400",boiler,210,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,1
"Cascade MC400",boiler,210,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,5,9,1,58,1
"Cascade MC400",boiler,210,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,5,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,5,9,1,60,1
"Cascade MC400",boiler,210,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,5,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,5,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,5,9,1,63,1
-"Cascade MC400",boiler,210,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"Cascade MC400",boiler,210,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"Cascade MC400",boiler,210,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"Cascade MC400",boiler,210,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"Cascade MC400",boiler,210,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"Cascade MC400",boiler,210,nompower,nominal Power,uint8 (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
-"Cascade MC400",boiler,210,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"Cascade MC400",boiler,210,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"Cascade MC400",boiler,210,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"Cascade MC400",boiler,210,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"Cascade MC400",boiler,210,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
+"Cascade MC400",boiler,210,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
"Cascade MC400",boiler,210,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2
"Cascade MC400",boiler,210,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
-"EasyControl Adapter",boiler,211,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"EasyControl Adapter",boiler,211,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"EasyControl Adapter",boiler,211,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"EasyControl Adapter",boiler,211,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"EasyControl Adapter",boiler,211,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"EasyControl Adapter",boiler,211,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"EasyControl Adapter",boiler,211,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"EasyControl Adapter",boiler,211,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,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,5,0,1,5,1
-"EasyControl Adapter",boiler,211,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"EasyControl Adapter",boiler,211,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"EasyControl Adapter",boiler,211,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"EasyControl Adapter",boiler,211,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"EasyControl Adapter",boiler,211,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"EasyControl Adapter",boiler,211,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"EasyControl Adapter",boiler,211,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"EasyControl Adapter",boiler,211,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"EasyControl Adapter",boiler,211,exhausttemp,exhaust temperature,uint16 (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
+"EasyControl Adapter",boiler,211,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
+"EasyControl Adapter",boiler,211,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
+"EasyControl Adapter",boiler,211,curflowtemp,current flow temperature,uint16,C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
+"EasyControl Adapter",boiler,211,rettemp,return temperature,uint16,C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
+"EasyControl Adapter",boiler,211,switchtemp,mixing switch temperature,uint16,C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
+"EasyControl Adapter",boiler,211,syspress,system pressure,uint8,bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
+"EasyControl Adapter",boiler,211,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"EasyControl Adapter",boiler,211,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"EasyControl Adapter",boiler,211,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
"EasyControl Adapter",boiler,211,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1
"EasyControl Adapter",boiler,211,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1
-"EasyControl Adapter",boiler,211,flamecurr,flame current,uint16 (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
+"EasyControl Adapter",boiler,211,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
"EasyControl Adapter",boiler,211,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1
"EasyControl Adapter",boiler,211,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1
"EasyControl Adapter",boiler,211,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1
-"EasyControl Adapter",boiler,211,burnminpower,burner min power,uint8 (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
+"EasyControl Adapter",boiler,211,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
"EasyControl Adapter",boiler,211,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1
"EasyControl Adapter",boiler,211,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1
-"EasyControl Adapter",boiler,211,absburnpow,burner current power (absolute),uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
-"EasyControl Adapter",boiler,211,heatblock,heating block,uint16 (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
+"EasyControl Adapter",boiler,211,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
+"EasyControl Adapter",boiler,211,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
"EasyControl Adapter",boiler,211,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1
"EasyControl Adapter",boiler,211,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1
"EasyControl Adapter",boiler,211,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1
"EasyControl Adapter",boiler,211,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1
-"EasyControl Adapter",boiler,211,curveon,heatingcurve on,boolean, ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
+"EasyControl Adapter",boiler,211,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
"EasyControl Adapter",boiler,211,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1
"EasyControl Adapter",boiler,211,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1
"EasyControl Adapter",boiler,211,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1
-"EasyControl Adapter",boiler,211,nofrostmode,nofrost mode,boolean, ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
+"EasyControl Adapter",boiler,211,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
"EasyControl Adapter",boiler,211,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1
-"EasyControl Adapter",boiler,211,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"EasyControl Adapter",boiler,211,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"EasyControl Adapter",boiler,211,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"EasyControl Adapter",boiler,211,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"EasyControl Adapter",boiler,211,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"EasyControl Adapter",boiler,211,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,0,1,18,1
-"EasyControl Adapter",boiler,211,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,0,1,19,1
-"EasyControl Adapter",boiler,211,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,1
+"EasyControl Adapter",boiler,211,pumpmodmax,boiler pump max power,uint8 (>=0<=0),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,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,5,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,5,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,5,0,1,20,1
"EasyControl Adapter",boiler,211,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,5,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,5,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,5,0,1,23,1
-"EasyControl Adapter",boiler,211,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"EasyControl Adapter",boiler,211,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"EasyControl Adapter",boiler,211,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"EasyControl Adapter",boiler,211,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"EasyControl Adapter",boiler,211,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"EasyControl Adapter",boiler,211,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"EasyControl Adapter",boiler,211,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"EasyControl Adapter",boiler,211,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
+"EasyControl Adapter",boiler,211,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,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,5,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,5,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,5,0,1,31,2
+"EasyControl Adapter",boiler,211,heatstarts,burner starts heating,uint24, ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,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,5,0,1,35,2
"EasyControl Adapter",boiler,211,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,5,0,1,37,28
"EasyControl Adapter",boiler,211,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,5,0,1,65,2
-"EasyControl Adapter",boiler,211,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"EasyControl Adapter",boiler,211,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
"EasyControl Adapter",boiler,211,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,5,0,1,68,2
-"EasyControl Adapter",boiler,211,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"EasyControl Adapter",boiler,211,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"EasyControl Adapter",boiler,211,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"EasyControl Adapter",boiler,211,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"EasyControl Adapter",boiler,211,maintenance,maintenance scheduled,enum [off\|time\|date\|manual] (>=0<=0), ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,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,5,0,1,71,1
+"EasyControl Adapter",boiler,211,maintenancedate,next maintenance date,string (>=0<=0), ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
+"EasyControl Adapter",boiler,211,emergencyops,emergency operation,boolean (>=0<=0), ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
"EasyControl Adapter",boiler,211,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,5,0,1,79,1
-"EasyControl Adapter",boiler,211,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"EasyControl Adapter",boiler,211,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"EasyControl Adapter",boiler,211,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"EasyControl Adapter",boiler,211,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"EasyControl Adapter",boiler,211,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"EasyControl Adapter",boiler,211,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"EasyControl Adapter",boiler,211,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"EasyControl Adapter",boiler,211,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"EasyControl Adapter",boiler,211,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"EasyControl Adapter",boiler,211,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"EasyControl Adapter",boiler,211,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"EasyControl Adapter",boiler,211,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"EasyControl Adapter",boiler,211,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"EasyControl Adapter",boiler,211,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"EasyControl Adapter",boiler,211,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"EasyControl Adapter",boiler,211,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"EasyControl Adapter",boiler,211,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"EasyControl Adapter",boiler,211,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"EasyControl Adapter",boiler,211,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"EasyControl Adapter",boiler,211,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"EasyControl Adapter",boiler,211,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"EasyControl Adapter",boiler,211,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"EasyControl Adapter",boiler,211,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"EasyControl Adapter",boiler,211,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"EasyControl Adapter",boiler,211,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"EasyControl Adapter",boiler,211,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"EasyControl Adapter",boiler,211,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"EasyControl Adapter",boiler,211,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"EasyControl Adapter",boiler,211,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"EasyControl Adapter",boiler,211,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"EasyControl Adapter",boiler,211,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"EasyControl Adapter",boiler,211,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,1
+"EasyControl Adapter",boiler,211,dhw.comfort,comfort,enum [hot\|eco\|intelligent] (>=0<=0), ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,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,5,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,5,9,1,39,1
-"EasyControl Adapter",boiler,211,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,1
+"EasyControl Adapter",boiler,211,dhw.chargeoptimization,charge optimization,boolean (>=0<=0), ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,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,5,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,5,9,1,42,1
-"EasyControl Adapter",boiler,211,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,1
+"EasyControl Adapter",boiler,211,dhw.circpump,circulation pump available,boolean (>=0<=0), ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,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,5,9,1,44,1
-"EasyControl Adapter",boiler,211,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"EasyControl Adapter",boiler,211,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,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,5,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,5,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,5,9,1,47,1
-"EasyControl Adapter",boiler,211,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"EasyControl Adapter",boiler,211,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"EasyControl Adapter",boiler,211,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"EasyControl Adapter",boiler,211,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"EasyControl Adapter",boiler,211,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"EasyControl Adapter",boiler,211,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"EasyControl Adapter",boiler,211,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"EasyControl Adapter",boiler,211,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"EasyControl Adapter",boiler,211,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"EasyControl Adapter",boiler,211,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1/10,54,1
+"EasyControl Adapter",boiler,211,dhw.activated,activated,boolean (>=0<=0), ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,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,5,9,1,56,1
+"EasyControl Adapter",boiler,211,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,1
"EasyControl Adapter",boiler,211,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,5,9,1,58,1
"EasyControl Adapter",boiler,211,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,5,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,5,9,1,60,1
"EasyControl Adapter",boiler,211,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,5,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,5,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,5,9,1,63,1
-"EasyControl Adapter",boiler,211,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"EasyControl Adapter",boiler,211,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"EasyControl Adapter",boiler,211,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"EasyControl Adapter",boiler,211,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"EasyControl Adapter",boiler,211,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"EasyControl Adapter",boiler,211,nompower,nominal Power,uint8 (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
-"EasyControl Adapter",boiler,211,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"EasyControl Adapter",boiler,211,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"EasyControl Adapter",boiler,211,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"EasyControl Adapter",boiler,211,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"EasyControl Adapter",boiler,211,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
+"EasyControl Adapter",boiler,211,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
"EasyControl Adapter",boiler,211,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2
"EasyControl Adapter",boiler,211,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,netflowtemp,heat network flow temp,uint16 (>=0<=3199),C,false,sensor.boiler_heat_network_flow_temp,sensor.boiler_netflowtemp,5,0,1/10,276,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,heatvalve,heating valve,uint8 (>=0<=100),%,false,sensor.boiler_heating_valve,sensor.boiler_heatvalve,5,0,1,277,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.dhwvalve,valve,uint8 (>=0<=100),%,false,sensor.boiler_dhw_valve,sensor.boiler_dhw_dhwvalve,5,9,1,75,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,keepwarmtemp,keep warm temperature,uint8 (>=0<=254),C,true,number.boiler_keep_warm_temperature,number.boiler_keepwarmtemp,5,0,1,278,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,setreturntemp,set temp return,uint8 (>=0<=254),C,true,number.boiler_set_temp_return,number.boiler_setreturntemp,5,0,1,279,1
+"Greenstar HIU, Logamax kompakt WS170",boiler,219,netflowtemp,heat network flow temp,uint16,C,false,sensor.boiler_heat_network_flow_temp,sensor.boiler_netflowtemp,5,0,1/10,276,1
+"Greenstar HIU, Logamax kompakt WS170",boiler,219,heatvalve,heating valve,uint8,%,false,sensor.boiler_heating_valve,sensor.boiler_heatvalve,5,0,1,277,1
+"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.dhwvalve,valve,uint8,%,false,sensor.boiler_dhw_valve,sensor.boiler_dhw_dhwvalve,5,9,1,75,1
+"Greenstar HIU, Logamax kompakt WS170",boiler,219,keepwarmtemp,keep warm temperature,uint8 (>=0<=0),C,true,number.boiler_keep_warm_temperature,number.boiler_keepwarmtemp,5,0,1,278,1
+"Greenstar HIU, Logamax kompakt WS170",boiler,219,setreturntemp,set temp return,uint8 (>=0<=0),C,true,number.boiler_set_temp_return,number.boiler_setreturntemp,5,0,1,279,1
"Greenstar HIU, Logamax kompakt WS170",boiler,219,heating,heating,boolean, ,false,binary_sensor.boiler_heating,binary_sensor.boiler_heating,5,0,1,280,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"Greenstar HIU, Logamax kompakt WS170",boiler,219,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"Greenstar HIU, Logamax kompakt WS170",boiler,219,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"Greenstar HIU, Logamax kompakt WS170",boiler,219,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"Greenstar HIU, Logamax kompakt WS170",boiler,219,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"Greenstar HIU, Logamax kompakt WS170",boiler,219,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,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,5,0,1,5,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"Greenstar HIU, Logamax kompakt WS170",boiler,219,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
+"Greenstar HIU, Logamax kompakt WS170",boiler,219,outdoortemp,outside temperature,int16,C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,0,1,16,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,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], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,0,1,19,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,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,5,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,5,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,5,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,5,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,5,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,5,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,5,0,1,23,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"Greenstar HIU, Logamax kompakt WS170",boiler,219,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
+"Greenstar HIU, Logamax kompakt WS170",boiler,219,burnstarts,burner starts,uint24, ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,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,5,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,5,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,5,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,5,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,5,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,5,0,1,37,28
"Greenstar HIU, Logamax kompakt WS170",boiler,219,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,5,0,1,65,2
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"Greenstar HIU, Logamax kompakt WS170",boiler,219,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
"Greenstar HIU, Logamax kompakt WS170",boiler,219,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,5,0,1,68,2
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"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,5,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,5,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,5,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,5,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,5,0,1,79,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"Greenstar HIU, Logamax kompakt WS170",boiler,219,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"Greenstar HIU, Logamax kompakt WS170",boiler,219,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"Greenstar HIU, Logamax kompakt WS170",boiler,219,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"Greenstar HIU, Logamax kompakt WS170",boiler,219,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"Greenstar HIU, Logamax kompakt WS170",boiler,219,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"Greenstar HIU, Logamax kompakt WS170",boiler,219,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"Greenstar HIU, Logamax kompakt WS170",boiler,219,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,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,5,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,5,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,5,9,1,39,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,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,5,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,5,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,5,9,1,42,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,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,5,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,5,9,1,44,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,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,5,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,5,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,5,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], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,63,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,chimneysweeper,chimney sweeper,cmd [off\|on], ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
+"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"Greenstar HIU, Logamax kompakt WS170",boiler,219,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,reset,reset,cmd [-\|maintenance\|error\|history\|message] (>=0<=0), ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,chimneysweeper,chimney sweeper,cmd [off\|on] (>=0<=0), ,true,sensor.boiler_chimney_sweeper,sensor.boiler_chimneysweeper,5,0,1,1,1
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatingoff,force heating off,boolean (>=0<=0), ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,2,1
"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,3,1
"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,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,5,0,1,5,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,6,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,7,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,8,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,9,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,10,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,11,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,exhausttemp,exhaust temperature,uint16 (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,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,5,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,5,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,5,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,5,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,5,0,1/10,11,1
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boiltemp,actual boiler temperature,uint16,C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,12,1
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,headertemp,low loss header,uint16,C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,13,1
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,exhausttemp,exhaust temperature,uint16,C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp,5,0,1/10,249,1
"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas,5,0,1,250,1
"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2,5,0,1,251,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,flamecurr,flame current,uint16 (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,flamecurr,flame current,uint16,µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr,5,0,1/10,252,1
"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork,5,0,1,253,1
"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork,5,0,1,254,1
"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat,5,0,1,255,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burnminpower,burner min power,uint8 (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burnminpower,burner min power,uint8 (>=0<=0),%,true,number.boiler_burner_min_power,number.boiler_burnminpower,5,0,1,256,1
"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burnmaxpower,burner max power,uint8 (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower,5,0,1,257,1
"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burnminperiod,burner min period,uint8 (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod,5,0,1,258,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,absburnpow,burner current power (absolute),uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatblock,heating block,uint16 (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,absburnpow,burner current power (absolute),uint8,%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow,5,0,1,259,1
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatblock,heating block,uint16,C,false,sensor.boiler_heating_block,sensor.boiler_heatblock,5,0,1/10,260,1
"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boilhyston,hysteresis on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston,5,0,1,261,1
"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boilhystoff,hysteresis off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff,5,0,1,262,1
"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boil2hyston,hysteresis stage 2 on temperature,int8 (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston,5,0,1,263,1
"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,boil2hystoff,hysteresis stage 2 off temperature,int8 (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff,5,0,1,264,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,curveon,heatingcurve on,boolean, ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,curveon,heatingcurve on,boolean (>=0<=0), ,true,switch.boiler_heatingcurve_on,switch.boiler_curveon,5,0,1,265,1
"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,curvebase,heatingcurve base,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_base,number.boiler_curvebase,5,0,1,266,1
"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,curveend,heatingcurve end,uint8 (>=20<=90),C,true,number.boiler_heatingcurve_end,number.boiler_curveend,5,0,1,267,1
"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,summertemp,summer temperature,uint8 (>=0<=45),C,true,number.boiler_summer_temperature,number.boiler_summertemp,5,0,1,268,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nofrostmode,nofrost mode,boolean, ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nofrostmode,nofrost mode,boolean (>=0<=0), ,true,switch.boiler_nofrost_mode,switch.boiler_nofrostmode,5,0,1,269,1
"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nofrosttemp,nofrost temperature,uint8 (>=0<=10),C,true,number.boiler_nofrost_temperature,number.boiler_nofrosttemp,5,0,1,270,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatingactivated,heating activated,boolean (>=0<=0), ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,14,1
"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,15,1
"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,16,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,17,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,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], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,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], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,20,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,5,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,5,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,5,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,5,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,5,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,5,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,5,0,1,23,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,24,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,25,2
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,27,2
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,29,2
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,31,2
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,33,2
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,35,2
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,curburnpow,burner current power,uint8,%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,0,1,65,2
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,67,1
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,servicecodenumber,service code number,uint16, ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,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,5,0,1,68,2
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,70,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,71,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,72,6
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,78,1
+"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,5,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,5,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,5,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,5,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,5,0,1,79,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pc0flow,Flow PC0,int16,l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,80,1
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pc1flow,Flow PC1,int16,l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,81,1
"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,82,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,meterheat,meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.meter,meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,gasmeterheat,gas meter heating,uint24 (>=0<=1677721),kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.gasmeter,gas meter,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nrgheat2,energy heating 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.nrg2,energy 2,uint24 (>=0<=1677721),kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,pc1rate,PC1 rate,uint8,%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,83,1
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,meterheat,meter heating,uint24,kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/10,97,2
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.meter,meter,uint24,kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/10,2,2
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,gasmeterheat,gas meter heating,uint24,kWh,false,sensor.boiler_gas_meter_heating,sensor.boiler_gasmeterheat,5,0,1/10,271,2
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.gasmeter,gas meter,uint24,kWh,false,sensor.boiler_dhw_gas_meter,sensor.boiler_dhw_gasmeter,5,9,1/10,71,2
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nrgheat2,energy heating 2,uint24,kWh,false,sensor.boiler_energy_heating_2,sensor.boiler_nrgheat2,5,0,1/10,273,2
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.nrg2,energy 2,uint24,kWh,false,sensor.boiler_dhw_energy_2,sensor.boiler_dhw_nrg2,5,9,1/10,73,2
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.tapactivated,turn on/off,boolean (>=0<=0), ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.settemp,set temperature,uint8,C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
+"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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,36,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,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,5,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,5,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,5,9,1,39,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,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,5,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,5,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,5,9,1,42,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,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,5,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,5,9,1,44,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,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,5,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,5,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,5,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], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,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,5,9,1,63,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.dhwprio,dhw priority,boolean, ,true,switch.boiler_dhw_dhw_priority,switch.boiler_dhw_dhwprio,5,9,1,66,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nompower,nominal Power,uint8 (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
-"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.mixertemp,mixer temperature,uint16,C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,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,5,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,5,9,1,66,1
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.starts,starts,uint24, ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,67,2
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.workm,active time,time,minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,69,2
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nompower,nominal Power,uint8 (>=0<=0),kW,true,number.boiler_nominal_Power,number.boiler_nompower,5,0,1,275,1
+"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nrgtotal,total energy,uint24,kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,85,2
"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,87,2
"Logamax Plus GB122, Condense 2300, Junkers Cerapur GC2200W",boiler,234,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
"Logamatic TC100, Moduline Easy",thermostat,202,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"Logamatic TC100, Moduline Easy",thermostat,202,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
"Logamatic TC100, Moduline Easy",thermostat,202,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"Logamatic TC100, Moduline Easy",thermostat,202,hc1.seltemp,selected room temperature,int16 (>=-319<=319),C,false,sensor.thermostat_hc1_selected_room_temperature,sensor.thermostat_hc1_seltemp,6,1,1/100,0,1
-"Logamatic TC100, Moduline Easy",thermostat,202,hc1.currtemp,current room temperature,int16 (>=-319<=319),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/100,1,1
-"Logamatic TC100, Moduline Easy",thermostat,202,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
+"Logamatic TC100, Moduline Easy",thermostat,202,hc1.seltemp,selected room temperature,int16,C,false,sensor.thermostat_hc1_selected_room_temperature,sensor.thermostat_hc1_seltemp,6,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,6,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,6,1,1,2,1
"EasyControl, CT200",thermostat,203,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"EasyControl, CT200",thermostat,203,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
"EasyControl, CT200",thermostat,203,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"EasyControl, CT200",thermostat,203,hc1.seltemp,selected room temperature,int16 (>=-319<=319),C,false,sensor.thermostat_hc1_selected_room_temperature,sensor.thermostat_hc1_seltemp,6,1,1/100,0,1
-"EasyControl, CT200",thermostat,203,hc1.currtemp,current room temperature,int16 (>=-319<=319),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/100,1,1
-"EasyControl, CT200",thermostat,203,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
+"EasyControl, CT200",thermostat,203,hc1.seltemp,selected room temperature,int16,C,false,sensor.thermostat_hc1_selected_room_temperature,sensor.thermostat_hc1_seltemp,6,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,6,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,6,1,1,2,1
"UI800, BC400",thermostat,4,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"UI800, BC400",thermostat,4,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
-"UI800, BC400",thermostat,4,datetime,date/time,string, ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"UI800, BC400",thermostat,4,intoffset,internal temperature offset,int8 (>=-12<=12),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,6,0,1/10,46,1
+"UI800, BC400",thermostat,4,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,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,6,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,6,0,1,47,1
-"UI800, BC400",thermostat,4,dampedoutdoortemp,damped outdoor temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp,6,0,1/10,48,1
-"UI800, BC400",thermostat,4,floordrytemp,floor drying temperature,uint8 (>=0<=254),C,false,sensor.thermostat_floor_drying_temperature,sensor.thermostat_floordrytemp,6,0,1,49,1
-"UI800, BC400",thermostat,4,building,building type,enum [light\|medium\|heavy], ,true,select.thermostat_building_type,select.thermostat_building,6,0,1,50,1
-"UI800, BC400",thermostat,4,minexttemp,minimal external temperature,int8 (>=-126<=126),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,0,1,51,1
-"UI800, BC400",thermostat,4,damping,damping outdoor temperature,boolean, ,true,switch.thermostat_damping_outdoor_temperature,switch.thermostat_damping,6,0,1,52,1
-"UI800, BC400",thermostat,4,solar,solar,boolean, ,true,switch.thermostat_solar,switch.thermostat_solar,6,0,1,53,1
-"UI800, BC400",thermostat,4,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix], ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1
+"UI800, BC400",thermostat,4,dampedoutdoortemp,damped outdoor temperature,int16,C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp,6,0,1/10,48,1
+"UI800, BC400",thermostat,4,floordrytemp,floor drying temperature,uint8,C,false,sensor.thermostat_floor_drying_temperature,sensor.thermostat_floordrytemp,6,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,6,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,6,0,1,51,1
+"UI800, BC400",thermostat,4,damping,damping outdoor temperature,boolean (>=0<=0), ,true,switch.thermostat_damping_outdoor_temperature,switch.thermostat_damping,6,0,1,52,1
+"UI800, BC400",thermostat,4,solar,solar,boolean (>=0<=0), ,true,switch.thermostat_solar,switch.thermostat_solar,6,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,6,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,6,0,1,55,1
"UI800, BC400",thermostat,4,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,6,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,6,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,6,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,6,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,6,0,1,60,1
-"UI800, BC400",thermostat,4,pvenabledhw,enable raise dhw,boolean, ,true,switch.thermostat_enable_raise_dhw,switch.thermostat_pvenabledhw,6,0,1,61,1
+"UI800, BC400",thermostat,4,pvenabledhw,enable raise dhw,boolean (>=0<=0), ,true,switch.thermostat_enable_raise_dhw,switch.thermostat_pvenabledhw,6,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,6,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,6,0,1,63,1
-"UI800, BC400",thermostat,4,absent,absent,boolean, ,true,switch.thermostat_absent,switch.thermostat_absent,6,0,1,64,1
+"UI800, BC400",thermostat,4,absent,absent,boolean (>=0<=0), ,true,switch.thermostat_absent,switch.thermostat_absent,6,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,6,1,1/2,0,1
-"UI800, BC400",thermostat,4,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"UI800, BC400",thermostat,4,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"UI800, BC400",thermostat,4,hc1.mode,operating mode,enum [off\|manual\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"UI800, BC400",thermostat,4,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,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,6,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,6,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,6,1,1,4,1
-"UI800, BC400",thermostat,4,hc1.ecotemp,eco temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1
-"UI800, BC400",thermostat,4,hc1.manualtemp,manual temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp,6,1,1/2,6,1
-"UI800, BC400",thermostat,4,hc1.comforttemp,comfort temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_comfort_temperature,number.thermostat_hc1_comforttemp,6,1,1/2,7,1
+"UI800, BC400",thermostat,4,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,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,6,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,6,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,6,1,1,8,1
-"UI800, BC400",thermostat,4,hc1.designtemp,design temperature,uint8 (>=0<=254),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1
-"UI800, BC400",thermostat,4,hc1.offsettemp,offset temperature,int8 (>=-126<=126),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp,6,1,1,10,1
-"UI800, BC400",thermostat,4,hc1.minflowtemp,min flow temperature,uint8 (>=0<=254),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
-"UI800, BC400",thermostat,4,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=254),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
-"UI800, BC400",thermostat,4,hc1.roominfluence,room influence,uint8 (>=0<=254),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,13,1
-"UI800, BC400",thermostat,4,hc1.roominflfactor,room influence factor,uint8 (>=0<=25), ,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,1/10,14,1
-"UI800, BC400",thermostat,4,hc1.curroominfl,current room influence,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_influence,sensor.thermostat_hc1_curroominfl,6,1,1/10,15,1
-"UI800, BC400",thermostat,4,hc1.nofrostmode,nofrost mode,enum [room\|outdoor\|room outdoor], ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1
-"UI800, BC400",thermostat,4,hc1.nofrosttemp,nofrost temperature,int8 (>=-126<=126),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,17,1
-"UI800, BC400",thermostat,4,hc1.targetflowtemp,target flow temperature,uint8 (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
-"UI800, BC400",thermostat,4,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
-"UI800, BC400",thermostat,4,hc1.summersetmode,set summer mode,enum [summer\|auto\|winter], ,true,select.thermostat_hc1_set_summer_mode,select.thermostat_hc1_summersetmode,6,1,1,20,1
-"UI800, BC400",thermostat,4,hc1.hpoperatingmode,heatpump operating mode,enum [off\|auto\|heating\|cooling], ,true,select.thermostat_hc1_heatpump_operating_mode,select.thermostat_hc1_hpoperatingmode,6,1,1,21,1
+"UI800, BC400",thermostat,4,hc1.designtemp,design temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1
+"UI800, BC400",thermostat,4,hc1.offsettemp,offset temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp,6,1,1,10,1
+"UI800, BC400",thermostat,4,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
+"UI800, BC400",thermostat,4,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
+"UI800, BC400",thermostat,4,hc1.roominfluence,room influence,uint8 (>=0<=0),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,13,1
+"UI800, BC400",thermostat,4,hc1.roominflfactor,room influence factor,uint8 (>=0<=0), ,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,1/10,14,1
+"UI800, BC400",thermostat,4,hc1.curroominfl,current room influence,int16,C,false,sensor.thermostat_hc1_current_room_influence,sensor.thermostat_hc1_curroominfl,6,1,1/10,15,1
+"UI800, BC400",thermostat,4,hc1.nofrostmode,nofrost mode,enum [room\|outdoor\|room outdoor] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1
+"UI800, BC400",thermostat,4,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,17,1
+"UI800, BC400",thermostat,4,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
+"UI800, BC400",thermostat,4,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
+"UI800, BC400",thermostat,4,hc1.summersetmode,set summer mode,enum [summer\|auto\|winter] (>=0<=0), ,true,select.thermostat_hc1_set_summer_mode,select.thermostat_hc1_summersetmode,6,1,1,20,1
+"UI800, BC400",thermostat,4,hc1.hpoperatingmode,heatpump operating mode,enum [off\|auto\|heating\|cooling] (>=0<=0), ,true,select.thermostat_hc1_heatpump_operating_mode,select.thermostat_hc1_hpoperatingmode,6,1,1,21,1
"UI800, BC400",thermostat,4,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1
"UI800, BC400",thermostat,4,hc1.hpoperatingstate,heatpump operating state,enum [heating\|off\|cooling], ,false,sensor.thermostat_hc1_heatpump_operating_state,sensor.thermostat_hc1_hpoperatingstate,6,1,1,23,1
"UI800, BC400",thermostat,4,hc1.vacationmode,vacation mode,boolean, ,false,binary_sensor.thermostat_hc1_vacation_mode,binary_sensor.thermostat_hc1_vacationmode,6,1,1,24,1
-"UI800, BC400",thermostat,4,hc1.controlmode,control mode,enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
-"UI800, BC400",thermostat,4,hc1.program,program,enum [prog 1\|prog 2], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
+"UI800, BC400",thermostat,4,hc1.controlmode,control mode,enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
+"UI800, BC400",thermostat,4,hc1.program,program,enum [prog 1\|prog 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
"UI800, BC400",thermostat,4,hc1.tempautotemp,temporary set temperature automode,int8 (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1
"UI800, BC400",thermostat,4,hc1.cooltemp,cooling temperature,int8 (>=-1<=30),C,true,number.thermostat_hc1_cooling_temperature,number.thermostat_hc1_cooltemp,6,1,1/2,28,1
-"UI800, BC400",thermostat,4,hc1.fastheatup,fast heatup,uint8 (>=0<=100),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,29,1
-"UI800, BC400",thermostat,4,hc1.switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
-"UI800, BC400",thermostat,4,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce], ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,31,1
-"UI800, BC400",thermostat,4,hc1.noreducetemp,no reduce below temperature,int8 (>=-126<=126),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,32,1
-"UI800, BC400",thermostat,4,hc1.reducetemp,off/reduce switch temperature,int8 (>=-126<=126),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,33,1
-"UI800, BC400",thermostat,4,hc1.dhwprio,dhw priority,boolean, ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,34,1
-"UI800, BC400",thermostat,4,hc1.hpcooling,hp cooling,boolean, ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,35,1
+"UI800, BC400",thermostat,4,hc1.fastheatup,fast heatup,uint8 (>=0<=0),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,29,1
+"UI800, BC400",thermostat,4,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
+"UI800, BC400",thermostat,4,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,31,1
+"UI800, BC400",thermostat,4,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,32,1
+"UI800, BC400",thermostat,4,hc1.reducetemp,off/reduce switch temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,33,1
+"UI800, BC400",thermostat,4,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,34,1
+"UI800, BC400",thermostat,4,hc1.hpcooling,hp cooling,boolean (>=0<=0), ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,35,1
"UI800, BC400",thermostat,4,hc1.coolingon,cooling on,boolean, ,false,binary_sensor.thermostat_hc1_cooling_on,binary_sensor.thermostat_hc1_coolingon,6,1,1,36,1
-"UI800, BC400",thermostat,4,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling], ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,37,1
+"UI800, BC400",thermostat,4,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling] (>=0<=0), ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,37,1
"UI800, BC400",thermostat,4,hc1.dewoffset,dew point offset,uint8 (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset,6,1,1,38,1
-"UI800, BC400",thermostat,4,hc1.roomtempdiff,room temp difference,uint8 (>=0<=254),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,39,1
-"UI800, BC400",thermostat,4,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=254),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,40,1
-"UI800, BC400",thermostat,4,hc1.control,control device,enum [off\|-\|RC100\|RC100H\|-\|RC120RF\|RC220/RT800\|single], ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
+"UI800, BC400",thermostat,4,hc1.roomtempdiff,room temp difference,uint8 (>=0<=0),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,39,1
+"UI800, BC400",thermostat,4,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=0),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,40,1
+"UI800, BC400",thermostat,4,hc1.control,control device,enum [off\|-\|RC100\|RC100H\|-\|RC120RF\|RC220/RT800\|single] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
"UI800, BC400",thermostat,4,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1
"UI800, BC400",thermostat,4,hc1.remotehum,room humidity from remote,cmd [] (>=-1<=101),%,true,sensor.thermostat_hc1_room_humidity_from_remote,sensor.thermostat_hc1_remotehum,6,1,1,43,1
"UI800, BC400",thermostat,4,hc1.heatondelay,heat-on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-on_delay,number.thermostat_hc1_heatondelay,6,1,1,44,1
"UI800, BC400",thermostat,4,hc1.heatoffdelay,heat-off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-off_delay,number.thermostat_hc1_heatoffdelay,6,1,1,45,1
"UI800, BC400",thermostat,4,hc1.instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_hc1_instant_start,number.thermostat_hc1_instantstart,6,1,1,46,1
-"UI800, BC400",thermostat,4,hc1.boost,boost mode,boolean, ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,47,1
-"UI800, BC400",thermostat,4,hc1.boosttime,boost time,uint8 (>=0<=254),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,48,1
+"UI800, BC400",thermostat,4,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,47,1
+"UI800, BC400",thermostat,4,hc1.boosttime,boost time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,48,1
"UI800, BC400",thermostat,4,hc1.coolstart,cooling starttemp,uint8 (>=20<=35),C,true,number.thermostat_hc1_cooling_starttemp,number.thermostat_hc1_coolstart,6,1,1,49,1
"UI800, BC400",thermostat,4,hc1.coolondelay,cooling on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_on_delay,number.thermostat_hc1_coolondelay,6,1,1,50,1
"UI800, BC400",thermostat,4,hc1.cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,51,1
-"UI800, BC400",thermostat,4,hc1.switchprogmode,switch program mode,enum [level\|absolute], ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,52,1
+"UI800, BC400",thermostat,4,hc1.switchprogmode,switch program mode,enum [level\|absolute] (>=0<=0), ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,52,1
"UI800, BC400",thermostat,4,hc1.redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,53,1
"UI800, BC400",thermostat,4,hc1.solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,54,1
-"UI800, BC400",thermostat,4,hc1.currsolarinfl,current solar influence,uint8 (>=0<=25),C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,55,1
-"UI800, BC400",thermostat,4,hc1.heatingpid,heating PID,enum [fast\|medium\|slow], ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,56,1
-"UI800, BC400",thermostat,4,hc1.pumpopt,pump optimization,boolean, ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,57,1
+"UI800, BC400",thermostat,4,hc1.currsolarinfl,current solar influence,uint8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,55,1
+"UI800, BC400",thermostat,4,hc1.heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,56,1
+"UI800, BC400",thermostat,4,hc1.pumpopt,pump optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,57,1
"UI800, BC400",thermostat,4,hc1.inttimefloor,integral time floor,uint8 (>=160<=320),minutes,true,number.thermostat_hc1_integral_time_floor,number.thermostat_hc1_inttimefloor,6,1,10,58,1
"UI800, BC400",thermostat,4,hc1.inttime,integral time,uint8 (>=3<=80),minutes,true,number.thermostat_hc1_integral_time,number.thermostat_hc1_inttime,6,1,1,59,1
-"UI800, BC400",thermostat,4,dhw.mode,operating mode,enum [off\|eco+\|eco\|comfort\|auto], ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
+"UI800, BC400",thermostat,4,dhw.mode,operating mode,enum [off\|eco+\|eco\|comfort\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
"UI800, BC400",thermostat,4,dhw.modetype,mode type,enum [off\|eco\|comfort\|eco+], ,false,sensor.thermostat_dhw_mode_type,sensor.thermostat_dhw_modetype,6,9,1,1,1
-"UI800, BC400",thermostat,4,dhw.settemp,set temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,2,1
-"UI800, BC400",thermostat,4,dhw.settemplow,set low temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_low_temperature,number.thermostat_dhw_settemplow,6,9,1,3,1
-"UI800, BC400",thermostat,4,dhw.circmode,circulation pump mode,enum [off\|on\|auto\|own prog], ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,6,9,1,4,1
-"UI800, BC400",thermostat,4,dhw.chargeduration,charge duration,uint8 (>=0<=3810),minutes,true,number.thermostat_dhw_charge_duration,number.thermostat_dhw_chargeduration,6,9,15,5,1
-"UI800, BC400",thermostat,4,dhw.charge,charge,boolean, ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
+"UI800, BC400",thermostat,4,dhw.settemp,set temperature,uint8 (>=0<=0),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,2,1
+"UI800, BC400",thermostat,4,dhw.settemplow,set low temperature,uint8 (>=0<=0),C,true,number.thermostat_dhw_set_low_temperature,number.thermostat_dhw_settemplow,6,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,6,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,6,9,15,5,1
+"UI800, BC400",thermostat,4,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
"UI800, BC400",thermostat,4,dhw.extra,extra,boolean, ,false,binary_sensor.thermostat_dhw_extra,binary_sensor.thermostat_dhw_extra,6,9,1,7,1
-"UI800, BC400",thermostat,4,dhw.disinfecting,disinfecting,boolean, ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,6,9,1,8,1
-"UI800, BC400",thermostat,4,dhw.disinfectday,disinfection day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all], ,true,select.thermostat_dhw_disinfection_day,select.thermostat_dhw_disinfectday,6,9,1,9,1
+"UI800, BC400",thermostat,4,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,6,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,6,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,6,9,15,10,1
-"UI800, BC400",thermostat,4,dhw.dailyheating,daily heating,boolean, ,true,switch.thermostat_dhw_daily_heating,switch.thermostat_dhw_dailyheating,6,9,1,11,1
+"UI800, BC400",thermostat,4,dhw.dailyheating,daily heating,boolean (>=0<=0), ,true,switch.thermostat_dhw_daily_heating,switch.thermostat_dhw_dailyheating,6,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,6,9,15,12,1
"CR11",thermostat,10,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"CR11",thermostat,10,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,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,6,1,1/2,0,1
-"CR11",thermostat,10,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"CR11",thermostat,10,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"CR11",thermostat,10,hc1.mode,operating mode,enum [off\|manual], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
-"CR11",thermostat,10,hc1.targetflowtemp,target flow temperature,uint8 (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
-"CR11",thermostat,10,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
+"CR11",thermostat,10,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
+"CR11",thermostat,10,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
+"CR11",thermostat,10,hc1.mode,operating mode,enum [off\|manual] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"CR11",thermostat,10,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
+"CR11",thermostat,10,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
"RC10",thermostat,65,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"RC10",thermostat,65,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
"RC10",thermostat,65,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"RC10",thermostat,65,minexttemp,minimal external temperature,int8 (>=-126<=126),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,0,1,51,1
+"RC10",thermostat,65,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,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,6,1,1/2,0,1
-"RC10",thermostat,65,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"RC10",thermostat,65,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"RC10",thermostat,65,hc1.mode,operating mode,enum [night\|day\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"RC10",thermostat,65,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
+"RC10",thermostat,65,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
+"RC10",thermostat,65,hc1.mode,operating mode,enum [night\|day\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
"RC10",thermostat,65,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1
-"RC10",thermostat,65,hc1.daytemp,day temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1
-"RC10",thermostat,65,hc1.nighttemp,night temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1
-"RC10",thermostat,65,hc1.program,program,enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
-"RC10",thermostat,65,hc1.minflowtemp,min flow temperature,uint8 (>=0<=254),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
-"RC10",thermostat,65,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=254),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
-"RC10",thermostat,65,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=127),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1
-"RC10",thermostat,65,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
+"RC10",thermostat,65,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1
+"RC10",thermostat,65,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1
+"RC10",thermostat,65,hc1.program,program,enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
+"RC10",thermostat,65,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
+"RC10",thermostat,65,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
+"RC10",thermostat,65,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=0),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1
+"RC10",thermostat,65,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
"RC10",thermostat,65,hc1.summertemp,summer temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1,8,1
"RC10",thermostat,65,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1
"RC30",thermostat,67,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"RC30",thermostat,67,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
"RC30",thermostat,67,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"RC30",thermostat,67,display,display,enum [internal temperature\|internal setpoint\|external temperature\|burner temperature\|dhw temperature\|functioning mode\|time\|date\|smoke temperature], ,true,select.thermostat_display,select.thermostat_display,6,0,1,65,1
+"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,6,0,1,65,1
"RC30",thermostat,67,language,language,enum [german\|dutch\|french\|italian], ,false,sensor.thermostat_language,sensor.thermostat_language,6,0,1,66,1
-"RC30",thermostat,67,clockoffset,clock offset,int8 (>=-126<=126),seconds,true,number.thermostat_clock_offset,number.thermostat_clockoffset,6,0,1,67,1
-"RC30",thermostat,67,intoffset,internal temperature offset,int8 (>=-12<=12),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,6,0,1/10,46,1
-"RC30",thermostat,67,minexttemp,minimal external temperature,int8 (>=-126<=126),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,0,1,51,1
-"RC30",thermostat,67,inttemp1,temperature sensor 1,int16 (>=-3199<=3199),C,false,sensor.thermostat_temperature_sensor_1,sensor.thermostat_inttemp1,6,0,1/10,68,1
-"RC30",thermostat,67,inttemp2,temperature sensor 2,int16 (>=-3199<=3199),C,false,sensor.thermostat_temperature_sensor_2,sensor.thermostat_inttemp2,6,0,1/10,69,1
-"RC30",thermostat,67,damping,damping outdoor temperature,boolean, ,true,switch.thermostat_damping_outdoor_temperature,switch.thermostat_damping,6,0,1,52,1
-"RC30",thermostat,67,dampedoutdoortemp,damped outdoor temperature,int8 (>=-126<=126),C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp,6,0,1,48,1
-"RC30",thermostat,67,building,building type,enum [light\|medium\|heavy], ,true,select.thermostat_building_type,select.thermostat_building,6,0,1,50,1
+"RC30",thermostat,67,clockoffset,clock offset,int8 (>=0<=0),seconds,true,number.thermostat_clock_offset,number.thermostat_clockoffset,6,0,1,67,1
+"RC30",thermostat,67,intoffset,internal temperature offset,int8 (>=0<=0),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,6,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,6,0,1,51,1
+"RC30",thermostat,67,inttemp1,temperature sensor 1,int16,C,false,sensor.thermostat_temperature_sensor_1,sensor.thermostat_inttemp1,6,0,1/10,68,1
+"RC30",thermostat,67,inttemp2,temperature sensor 2,int16,C,false,sensor.thermostat_temperature_sensor_2,sensor.thermostat_inttemp2,6,0,1/10,69,1
+"RC30",thermostat,67,damping,damping outdoor temperature,boolean (>=0<=0), ,true,switch.thermostat_damping_outdoor_temperature,switch.thermostat_damping,6,0,1,52,1
+"RC30",thermostat,67,dampedoutdoortemp,damped outdoor temperature,int8,C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp,6,0,1,48,1
+"RC30",thermostat,67,building,building type,enum [light\|medium\|heavy] (>=0<=0), ,true,select.thermostat_building_type,select.thermostat_building,6,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,6,1,1/2,0,1
-"RC30",thermostat,67,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"RC30",thermostat,67,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"RC30",thermostat,67,hc1.mode,operating mode,enum [night\|day\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"RC30",thermostat,67,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,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,6,1,1,2,1
+"RC30",thermostat,67,hc1.mode,operating mode,enum [night\|day\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
"RC30",thermostat,67,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1
"RC30",thermostat,67,hc1.daytemp,day temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1
"RC30",thermostat,67,hc1.nighttemp,night temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1
"RC30",thermostat,67,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1
"RC30",thermostat,67,hc1.offsettemp,offset temperature,int8 (>=-5<=5),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp,6,1,1/2,10,1
"RC30",thermostat,67,hc1.holidaytemp,holiday temperature,uint8 (>=5<=30),C,true,number.thermostat_hc1_holiday_temperature,number.thermostat_hc1_holidaytemp,6,1,1/2,62,1
-"RC30",thermostat,67,hc1.targetflowtemp,target flow temperature,uint8 (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
+"RC30",thermostat,67,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
"RC30",thermostat,67,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1,8,1
"RC30",thermostat,67,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1
"RC30",thermostat,67,hc1.holidaymode,holiday mode,boolean, ,false,binary_sensor.thermostat_hc1_holiday_mode,binary_sensor.thermostat_hc1_holidaymode,6,1,1,63,1
"RC30",thermostat,67,hc1.nofrosttemp,nofrost temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,17,1
-"RC30",thermostat,67,hc1.nofrostmode,nofrost mode,enum [off\|outdoor\|room], ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1
+"RC30",thermostat,67,hc1.nofrostmode,nofrost mode,enum [off\|outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1
"RC30",thermostat,67,hc1.roominfluence,room influence,uint8 (>=0<=10),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,13,1
"RC30",thermostat,67,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
"RC30",thermostat,67,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
"RC30",thermostat,67,hc1.flowtempoffset,flow temperature offset for mixer,uint8 (>=0<=20),C,true,number.thermostat_hc1_flow_temperature_offset_for_mixer,number.thermostat_hc1_flowtempoffset,6,1,1,64,1
-"RC30",thermostat,67,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
-"RC30",thermostat,67,hc1.reducemode,reduce mode,enum [nofrost\|reduce\|room\|outdoor], ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,31,1
-"RC30",thermostat,67,hc1.controlmode,control mode,enum [outdoor\|room], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
-"RC30",thermostat,67,hc1.control,control device,enum [off\|RC20\|RC3x], ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
-"RC30",thermostat,67,hc1.holidays,holiday dates,string, ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,6,1,1,65,13
-"RC30",thermostat,67,hc1.vacations,vacation dates,string, ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,6,1,1,78,13
-"RC30",thermostat,67,hc1.program,program,enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
+"RC30",thermostat,67,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
+"RC30",thermostat,67,hc1.reducemode,reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,31,1
+"RC30",thermostat,67,hc1.controlmode,control mode,enum [outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
+"RC30",thermostat,67,hc1.control,control device,enum [off\|RC20\|RC3x] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
+"RC30",thermostat,67,hc1.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,6,1,1,65,13
+"RC30",thermostat,67,hc1.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,6,1,1,78,13
+"RC30",thermostat,67,hc1.program,program,enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
"RC30",thermostat,67,hc1.pause,pause time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_pause_time,number.thermostat_hc1_pause,6,1,1,91,1
"RC30",thermostat,67,hc1.party,party time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_party_time,number.thermostat_hc1_party,6,1,1,92,1
"RC30",thermostat,67,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1
"RC30",thermostat,67,hc1.noreducetemp,no reduce below temperature,int8 (>=-31<=10),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,32,1
"RC30",thermostat,67,hc1.reducetemp,off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,33,1
"RC30",thermostat,67,hc1.vacreducetemp,vacations off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_vacations_off/reduce_switch_temperature,number.thermostat_hc1_vacreducetemp,6,1,1,93,1
-"RC30",thermostat,67,hc1.vacreducemode,vacations reduce mode,enum [nofrost\|reduce\|room\|outdoor], ,true,select.thermostat_hc1_vacations_reduce_mode,select.thermostat_hc1_vacreducemode,6,1,1,94,1
+"RC30",thermostat,67,hc1.vacreducemode,vacations reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_vacations_reduce_mode,select.thermostat_hc1_vacreducemode,6,1,1,94,1
"RC30",thermostat,67,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1
-"RC30",thermostat,67,hc1.dhwprio,dhw priority,boolean, ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,34,1
-"RC30",thermostat,67,hc1.switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
-"RC30",thermostat,67,hc1.switchtime1,own1 program switchtime,string, ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,95,8
-"RC30",thermostat,67,hc1.switchtime2,own2 program switchtime,string, ,true,sensor.thermostat_hc1_own2_program_switchtime,sensor.thermostat_hc1_switchtime2,6,1,1,103,8
-"RC30",thermostat,67,dhw.mode,operating mode,enum [off\|on\|auto], ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
-"RC30",thermostat,67,dhw.circmode,circulation pump mode,enum [off\|on\|auto], ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,6,9,1,4,1
-"RC30",thermostat,67,dhw.progmode,program,enum [std prog\|own prog], ,true,select.thermostat_dhw_program,select.thermostat_dhw_progmode,6,9,1,13,1
-"RC30",thermostat,67,dhw.circprog,circulation program,enum [std prog\|own prog], ,true,select.thermostat_dhw_circulation_program,select.thermostat_dhw_circprog,6,9,1,14,1
-"RC30",thermostat,67,dhw.disinfecting,disinfecting,boolean, ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,6,9,1,8,1
-"RC30",thermostat,67,dhw.disinfectday,disinfection day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all], ,true,select.thermostat_dhw_disinfection_day,select.thermostat_dhw_disinfectday,6,9,1,9,1
+"RC30",thermostat,67,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,34,1
+"RC30",thermostat,67,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
+"RC30",thermostat,67,hc1.switchtime1,own1 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,95,8
+"RC30",thermostat,67,hc1.switchtime2,own2 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own2_program_switchtime,sensor.thermostat_hc1_switchtime2,6,1,1,103,8
+"RC30",thermostat,67,dhw.mode,operating mode,enum [off\|on\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
+"RC30",thermostat,67,dhw.circmode,circulation pump mode,enum [off\|on\|auto] (>=0<=0), ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,6,9,1,4,1
+"RC30",thermostat,67,dhw.progmode,program,enum [std prog\|own prog] (>=0<=0), ,true,select.thermostat_dhw_program,select.thermostat_dhw_progmode,6,9,1,13,1
+"RC30",thermostat,67,dhw.circprog,circulation program,enum [std prog\|own prog] (>=0<=0), ,true,select.thermostat_dhw_circulation_program,select.thermostat_dhw_circprog,6,9,1,14,1
+"RC30",thermostat,67,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,6,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,6,9,1,9,1
"RC30",thermostat,67,dhw.disinfecthour,disinfection hour,uint8 (>=0<=23), ,true,number.thermostat_dhw_disinfection_hour,number.thermostat_dhw_disinfecthour,6,9,1,15,1
-"RC30",thermostat,67,dhw.maxtemp,maximum temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_maximum_temperature,number.thermostat_dhw_maxtemp,6,9,1,16,1
-"RC30",thermostat,67,dhw.onetimekey,one time key function,boolean, ,true,switch.thermostat_dhw_one_time_key_function,switch.thermostat_dhw_onetimekey,6,9,1,17,1
-"RC30",thermostat,67,dhw.switchtime,program switchtime,string, ,true,sensor.thermostat_dhw_program_switchtime,sensor.thermostat_dhw_switchtime,6,9,1,18,8
-"RC30",thermostat,67,dhw.circswitchtime,circulation program switchtime,string, ,true,sensor.thermostat_dhw_circulation_program_switchtime,sensor.thermostat_dhw_circswitchtime,6,9,1,26,8
-"RC30",thermostat,67,dhw.holidays,holiday dates,string, ,true,sensor.thermostat_dhw_holiday_dates,sensor.thermostat_dhw_holidays,6,9,1,34,13
-"RC30",thermostat,67,dhw.vacations,vacation dates,string, ,true,sensor.thermostat_dhw_vacation_dates,sensor.thermostat_dhw_vacations,6,9,1,47,13
+"RC30",thermostat,67,dhw.maxtemp,maximum temperature,uint8 (>=0<=0),C,true,number.thermostat_dhw_maximum_temperature,number.thermostat_dhw_maxtemp,6,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,6,9,1,17,1
+"RC30",thermostat,67,dhw.switchtime,program switchtime,string (>=0<=0), ,true,sensor.thermostat_dhw_program_switchtime,sensor.thermostat_dhw_switchtime,6,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,6,9,1,26,8
+"RC30",thermostat,67,dhw.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_dhw_holiday_dates,sensor.thermostat_dhw_holidays,6,9,1,34,13
+"RC30",thermostat,67,dhw.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_dhw_vacation_dates,sensor.thermostat_dhw_vacations,6,9,1,47,13
"RC20, Moduline 300",thermostat,77,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"RC20, Moduline 300",thermostat,77,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
"RC20, Moduline 300",thermostat,77,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,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,6,1,1/2,0,1
-"RC20, Moduline 300",thermostat,77,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"RC20, Moduline 300",thermostat,77,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"RC20, Moduline 300",thermostat,77,hc1.mode,operating mode,enum [off\|manual\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
-"RC20, Moduline 300",thermostat,77,hc1.manualtemp,manual temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp,6,1,1/2,6,1
-"RC20, Moduline 300",thermostat,77,hc1.offtemp,temperature when mode is off,uint8 (>=0<=127),C,true,number.thermostat_hc1_temperature_when_mode_is_off,number.thermostat_hc1_offtemp,6,1,1/2,111,1
-"RC20, Moduline 300",thermostat,77,hc1.daytemp2,day temperature T2,uint8 (>=0<=127),C,true,number.thermostat_hc1_day_temperature_T2,number.thermostat_hc1_daytemp2,6,1,1/2,112,1
-"RC20, Moduline 300",thermostat,77,hc1.daytemp3,day temperature T3,uint8 (>=0<=127),C,true,number.thermostat_hc1_day_temperature_T3,number.thermostat_hc1_daytemp3,6,1,1/2,113,1
-"RC20, Moduline 300",thermostat,77,hc1.daytemp4,day temperature T4,uint8 (>=0<=127),C,true,number.thermostat_hc1_day_temperature_T4,number.thermostat_hc1_daytemp4,6,1,1/2,114,1
-"RC20, Moduline 300",thermostat,77,hc1.nighttemp,night temperature T1,uint8 (>=0<=127),C,true,number.thermostat_hc1_night_temperature_T1,number.thermostat_hc1_nighttemp,6,1,1/2,61,1
-"RC20, Moduline 300",thermostat,77,hc1.switchtime,program switchtime,string, ,true,sensor.thermostat_hc1_program_switchtime,sensor.thermostat_hc1_switchtime,6,1,1,115,8
+"RC20, Moduline 300",thermostat,77,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,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,6,1,1,2,1
+"RC20, Moduline 300",thermostat,77,hc1.mode,operating mode,enum [off\|manual\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"RC20, Moduline 300",thermostat,77,hc1.manualtemp,manual temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp,6,1,1/2,6,1
+"RC20, Moduline 300",thermostat,77,hc1.offtemp,temperature when mode is off,uint8 (>=0<=0),C,true,number.thermostat_hc1_temperature_when_mode_is_off,number.thermostat_hc1_offtemp,6,1,1/2,111,1
+"RC20, Moduline 300",thermostat,77,hc1.daytemp2,day temperature T2,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T2,number.thermostat_hc1_daytemp2,6,1,1/2,112,1
+"RC20, Moduline 300",thermostat,77,hc1.daytemp3,day temperature T3,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T3,number.thermostat_hc1_daytemp3,6,1,1/2,113,1
+"RC20, Moduline 300",thermostat,77,hc1.daytemp4,day temperature T4,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T4,number.thermostat_hc1_daytemp4,6,1,1/2,114,1
+"RC20, Moduline 300",thermostat,77,hc1.nighttemp,night temperature T1,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature_T1,number.thermostat_hc1_nighttemp,6,1,1/2,61,1
+"RC20, Moduline 300",thermostat,77,hc1.switchtime,program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_program_switchtime,sensor.thermostat_hc1_switchtime,6,1,1,115,8
"Moduline 400",thermostat,78,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"Moduline 400",thermostat,78,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
"Moduline 400",thermostat,78,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"Moduline 400",thermostat,78,clockoffset,clock offset,int8 (>=-126<=126),seconds,true,number.thermostat_clock_offset,number.thermostat_clockoffset,6,0,1,67,1
-"Moduline 400",thermostat,78,autodst,automatic change daylight saving time,boolean, ,true,switch.thermostat_automatic_change_daylight_saving_time,switch.thermostat_autodst,6,0,1,70,1
-"Moduline 400",thermostat,78,language,language,enum [german\|dutch], ,true,select.thermostat_language,select.thermostat_language,6,0,1,66,1
-"Moduline 400",thermostat,78,backlight,key backlight,boolean, ,true,switch.thermostat_key_backlight,switch.thermostat_backlight,6,0,1,71,1
+"Moduline 400",thermostat,78,clockoffset,clock offset,int8 (>=0<=0),seconds,true,number.thermostat_clock_offset,number.thermostat_clockoffset,6,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,6,0,1,70,1
+"Moduline 400",thermostat,78,language,language,enum [german\|dutch] (>=0<=0), ,true,select.thermostat_language,select.thermostat_language,6,0,1,66,1
+"Moduline 400",thermostat,78,backlight,key backlight,boolean (>=0<=0), ,true,switch.thermostat_key_backlight,switch.thermostat_backlight,6,0,1,71,1
"Moduline 400",thermostat,78,brightness,screen brightness,int8 (>=-15<=15), ,true,number.thermostat_screen_brightness,number.thermostat_brightness,6,0,1,72,1
"Moduline 400",thermostat,78,mixingvalves,mixing valves,uint8 (>=0<=2), ,true,number.thermostat_mixing_valves,number.thermostat_mixingvalves,6,0,1,73,1
-"Moduline 400",thermostat,78,building,building type,enum [light\|medium\|heavy], ,true,select.thermostat_building_type,select.thermostat_building,6,0,1,50,1
-"Moduline 400",thermostat,78,heatingpid,heating PID,enum [fast\|medium\|slow], ,true,select.thermostat_heating_PID,select.thermostat_heatingpid,6,0,1,74,1
-"Moduline 400",thermostat,78,preheating,preheating in the clock program,boolean, ,true,switch.thermostat_preheating_in_the_clock_program,switch.thermostat_preheating,6,0,1,75,1
-"Moduline 400",thermostat,78,intoffset,internal temperature offset,int8 (>=-12<=12),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,6,0,1/10,46,1
+"Moduline 400",thermostat,78,building,building type,enum [light\|medium\|heavy] (>=0<=0), ,true,select.thermostat_building_type,select.thermostat_building,6,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,6,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,6,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,6,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,6,1,1/2,0,1
-"Moduline 400",thermostat,78,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"Moduline 400",thermostat,78,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"Moduline 400",thermostat,78,hc1.mode,operating mode,enum [off\|manual\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
-"Moduline 400",thermostat,78,hc1.pause,pause time,uint8 (>=0<=254),hours,true,number.thermostat_hc1_pause_time,number.thermostat_hc1_pause,6,1,1,91,1
-"Moduline 400",thermostat,78,hc1.party,party time,uint8 (>=0<=254),hours,true,number.thermostat_hc1_party_time,number.thermostat_hc1_party,6,1,1,92,1
-"Moduline 400",thermostat,78,hc1.vacations1,vacation dates 1,string, ,true,sensor.thermostat_hc1_vacation_dates_1,sensor.thermostat_hc1_vacations1,6,1,1,123,11
-"Moduline 400",thermostat,78,hc1.vacations2,vacation dates 2,string, ,true,sensor.thermostat_hc1_vacation_dates_2,sensor.thermostat_hc1_vacations2,6,1,1,134,11
-"Moduline 400",thermostat,78,hc1.vacations3,vacation dates 3,string, ,true,sensor.thermostat_hc1_vacation_dates_3,sensor.thermostat_hc1_vacations3,6,1,1,145,11
-"Moduline 400",thermostat,78,hc1.vacations4,vacation dates 4,string, ,true,sensor.thermostat_hc1_vacation_dates_4,sensor.thermostat_hc1_vacations4,6,1,1,156,11
-"Moduline 400",thermostat,78,hc1.vacations5,vacation dates 5,string, ,true,sensor.thermostat_hc1_vacation_dates_5,sensor.thermostat_hc1_vacations5,6,1,1,167,11
-"Moduline 400",thermostat,78,hc1.vacations6,vacation dates 6,string, ,true,sensor.thermostat_hc1_vacation_dates_6,sensor.thermostat_hc1_vacations6,6,1,1,178,11
-"Moduline 400",thermostat,78,hc1.vacations7,vacation dates 7,string, ,true,sensor.thermostat_hc1_vacation_dates_7,sensor.thermostat_hc1_vacations7,6,1,1,189,11
-"Moduline 400",thermostat,78,hc1.program,program,enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
-"Moduline 400",thermostat,78,hc1.switchtime1,own1 program switchtime,string, ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,95,8
-"Moduline 400",thermostat,78,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
-"Moduline 400",thermostat,78,hc1.controlmode,control mode,enum [outdoor\|room], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
-"Moduline 400",thermostat,78,hc1.holidaytemp,holiday temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_holiday_temperature,number.thermostat_hc1_holidaytemp,6,1,1/2,62,1
-"Moduline 400",thermostat,78,hc1.nighttemp,night temperature T1,uint8 (>=0<=127),C,true,number.thermostat_hc1_night_temperature_T1,number.thermostat_hc1_nighttemp,6,1,1/2,61,1
-"Moduline 400",thermostat,78,hc1.daytemp2,day temperature T2,uint8 (>=0<=127),C,true,number.thermostat_hc1_day_temperature_T2,number.thermostat_hc1_daytemp2,6,1,1/2,112,1
-"Moduline 400",thermostat,78,hc1.daytemp3,day temperature T3,uint8 (>=0<=127),C,true,number.thermostat_hc1_day_temperature_T3,number.thermostat_hc1_daytemp3,6,1,1/2,113,1
-"Moduline 400",thermostat,78,hc1.daytemp4,day temperature T4,uint8 (>=0<=127),C,true,number.thermostat_hc1_day_temperature_T4,number.thermostat_hc1_daytemp4,6,1,1/2,114,1
-"Moduline 400",thermostat,78,hc1.manualtemp,manual temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp,6,1,1/2,6,1
-"Moduline 400",thermostat,78,hc1.offtemp,temperature when mode is off,uint8 (>=0<=127),C,true,number.thermostat_hc1_temperature_when_mode_is_off,number.thermostat_hc1_offtemp,6,1,1/2,111,1
-"Moduline 400",thermostat,78,dhw.mode,operating mode,enum [on\|off\|auto], ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
-"Moduline 400",thermostat,78,dhw.whenmodeoff,when thermostat mode off,boolean, ,true,switch.thermostat_dhw_when_thermostat_mode_off,switch.thermostat_dhw_whenmodeoff,6,9,1,60,1
-"Moduline 400",thermostat,78,dhw.disinfecting,disinfecting,boolean, ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,6,9,1,8,1
-"Moduline 400",thermostat,78,dhw.disinfectday,disinfection day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all], ,true,select.thermostat_dhw_disinfection_day,select.thermostat_dhw_disinfectday,6,9,1,9,1
+"Moduline 400",thermostat,78,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
+"Moduline 400",thermostat,78,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
+"Moduline 400",thermostat,78,hc1.mode,operating mode,enum [off\|manual\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"Moduline 400",thermostat,78,hc1.pause,pause time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_pause_time,number.thermostat_hc1_pause,6,1,1,91,1
+"Moduline 400",thermostat,78,hc1.party,party time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_party_time,number.thermostat_hc1_party,6,1,1,92,1
+"Moduline 400",thermostat,78,hc1.vacations1,vacation dates 1,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_1,sensor.thermostat_hc1_vacations1,6,1,1,123,11
+"Moduline 400",thermostat,78,hc1.vacations2,vacation dates 2,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_2,sensor.thermostat_hc1_vacations2,6,1,1,134,11
+"Moduline 400",thermostat,78,hc1.vacations3,vacation dates 3,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_3,sensor.thermostat_hc1_vacations3,6,1,1,145,11
+"Moduline 400",thermostat,78,hc1.vacations4,vacation dates 4,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_4,sensor.thermostat_hc1_vacations4,6,1,1,156,11
+"Moduline 400",thermostat,78,hc1.vacations5,vacation dates 5,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_5,sensor.thermostat_hc1_vacations5,6,1,1,167,11
+"Moduline 400",thermostat,78,hc1.vacations6,vacation dates 6,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_6,sensor.thermostat_hc1_vacations6,6,1,1,178,11
+"Moduline 400",thermostat,78,hc1.vacations7,vacation dates 7,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates_7,sensor.thermostat_hc1_vacations7,6,1,1,189,11
+"Moduline 400",thermostat,78,hc1.program,program,enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
+"Moduline 400",thermostat,78,hc1.switchtime1,own1 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,95,8
+"Moduline 400",thermostat,78,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
+"Moduline 400",thermostat,78,hc1.controlmode,control mode,enum [outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
+"Moduline 400",thermostat,78,hc1.holidaytemp,holiday temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_holiday_temperature,number.thermostat_hc1_holidaytemp,6,1,1/2,62,1
+"Moduline 400",thermostat,78,hc1.nighttemp,night temperature T1,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature_T1,number.thermostat_hc1_nighttemp,6,1,1/2,61,1
+"Moduline 400",thermostat,78,hc1.daytemp2,day temperature T2,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T2,number.thermostat_hc1_daytemp2,6,1,1/2,112,1
+"Moduline 400",thermostat,78,hc1.daytemp3,day temperature T3,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T3,number.thermostat_hc1_daytemp3,6,1,1/2,113,1
+"Moduline 400",thermostat,78,hc1.daytemp4,day temperature T4,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T4,number.thermostat_hc1_daytemp4,6,1,1/2,114,1
+"Moduline 400",thermostat,78,hc1.manualtemp,manual temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp,6,1,1/2,6,1
+"Moduline 400",thermostat,78,hc1.offtemp,temperature when mode is off,uint8 (>=0<=0),C,true,number.thermostat_hc1_temperature_when_mode_is_off,number.thermostat_hc1_offtemp,6,1,1/2,111,1
+"Moduline 400",thermostat,78,dhw.mode,operating mode,enum [on\|off\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
+"Moduline 400",thermostat,78,dhw.whenmodeoff,when thermostat mode off,boolean (>=0<=0), ,true,switch.thermostat_dhw_when_thermostat_mode_off,switch.thermostat_dhw_whenmodeoff,6,9,1,60,1
+"Moduline 400",thermostat,78,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,6,9,1,8,1
+"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,6,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,6,9,1,15,1
"RC10, Moduline 100",thermostat,79,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"RC10, Moduline 100",thermostat,79,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
-"RC10, Moduline 100",thermostat,79,intoffset,internal temperature offset,int8 (>=-12<=12),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,6,0,1/10,46,1
-"RC10, Moduline 100",thermostat,79,heatingpid,heating PID,enum [fast\|medium\|slow], ,true,select.thermostat_heating_PID,select.thermostat_heatingpid,6,0,1,74,1
-"RC10, Moduline 100",thermostat,79,backlight,key backlight,boolean, ,true,switch.thermostat_key_backlight,switch.thermostat_backlight,6,0,1,71,1
+"RC10, Moduline 100",thermostat,79,intoffset,internal temperature offset,int8 (>=0<=0),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,6,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,6,0,1,74,1
+"RC10, Moduline 100",thermostat,79,backlight,key backlight,boolean (>=0<=0), ,true,switch.thermostat_key_backlight,switch.thermostat_backlight,6,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,6,1,1/2,0,1
-"RC10, Moduline 100",thermostat,79,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"RC10, Moduline 100",thermostat,79,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"RC10, Moduline 100",thermostat,79,hc1.mode,operating mode,enum [nofrost\|night\|day], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
-"RC10, Moduline 100",thermostat,79,hc1.daytemp,day temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1
-"RC10, Moduline 100",thermostat,79,hc1.nighttemp,night temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1
-"RC10, Moduline 100",thermostat,79,hc1.reducehours,duration for nighttemp,uint8 (>=0<=254),hours,true,number.thermostat_hc1_duration_for_nighttemp,number.thermostat_hc1_reducehours,6,1,1,200,1
-"RC10, Moduline 100",thermostat,79,hc1.reduceminutes,remaining time for nightmode,uint16 (>=0<=31999),minutes,false,sensor.thermostat_hc1_remaining_time_for_nightmode,sensor.thermostat_hc1_reduceminutes,6,1,1,201,1
-"RC10, Moduline 100",thermostat,79,dhw.mode,operating mode,enum [on\|off\|auto], ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,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,6,1,1/10,1,1
+"RC10, Moduline 100",thermostat,79,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
+"RC10, Moduline 100",thermostat,79,hc1.mode,operating mode,enum [nofrost\|night\|day] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"RC10, Moduline 100",thermostat,79,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1
+"RC10, Moduline 100",thermostat,79,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1
+"RC10, Moduline 100",thermostat,79,hc1.reducehours,duration for nighttemp,uint8 (>=0<=0),hours,true,number.thermostat_hc1_duration_for_nighttemp,number.thermostat_hc1_reducehours,6,1,1,200,1
+"RC10, Moduline 100",thermostat,79,hc1.reduceminutes,remaining time for nightmode,uint16,minutes,false,sensor.thermostat_hc1_remaining_time_for_nightmode,sensor.thermostat_hc1_reduceminutes,6,1,1,201,1
+"RC10, Moduline 100",thermostat,79,dhw.mode,operating mode,enum [on\|off\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
"Moduline 200",thermostat,80,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"Moduline 200",thermostat,80,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
-"Moduline 200",thermostat,80,intoffset,internal temperature offset,int8 (>=-12<=12),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,6,0,1/10,46,1
-"Moduline 200",thermostat,80,heatingpid,heating PID,enum [fast\|medium\|slow], ,true,select.thermostat_heating_PID,select.thermostat_heatingpid,6,0,1,74,1
-"Moduline 200",thermostat,80,backlight,key backlight,boolean, ,true,switch.thermostat_key_backlight,switch.thermostat_backlight,6,0,1,71,1
+"Moduline 200",thermostat,80,intoffset,internal temperature offset,int8 (>=0<=0),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,6,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,6,0,1,74,1
+"Moduline 200",thermostat,80,backlight,key backlight,boolean (>=0<=0), ,true,switch.thermostat_key_backlight,switch.thermostat_backlight,6,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,6,1,1/2,0,1
-"Moduline 200",thermostat,80,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"Moduline 200",thermostat,80,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"Moduline 200",thermostat,80,hc1.mode,operating mode,enum [nofrost\|night\|day], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
-"Moduline 200",thermostat,80,hc1.daytemp,day temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1
-"Moduline 200",thermostat,80,hc1.nighttemp,night temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1
-"Moduline 200",thermostat,80,hc1.reducehours,duration for nighttemp,uint8 (>=0<=254),hours,true,number.thermostat_hc1_duration_for_nighttemp,number.thermostat_hc1_reducehours,6,1,1,200,1
-"Moduline 200",thermostat,80,hc1.reduceminutes,remaining time for nightmode,uint16 (>=0<=31999),minutes,false,sensor.thermostat_hc1_remaining_time_for_nightmode,sensor.thermostat_hc1_reduceminutes,6,1,1,201,1
-"Moduline 200",thermostat,80,dhw.mode,operating mode,enum [on\|off\|auto], ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
+"Moduline 200",thermostat,80,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
+"Moduline 200",thermostat,80,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
+"Moduline 200",thermostat,80,hc1.mode,operating mode,enum [nofrost\|night\|day] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"Moduline 200",thermostat,80,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1
+"Moduline 200",thermostat,80,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1
+"Moduline 200",thermostat,80,hc1.reducehours,duration for nighttemp,uint8 (>=0<=0),hours,true,number.thermostat_hc1_duration_for_nighttemp,number.thermostat_hc1_reducehours,6,1,1,200,1
+"Moduline 200",thermostat,80,hc1.reduceminutes,remaining time for nightmode,uint16,minutes,false,sensor.thermostat_hc1_remaining_time_for_nightmode,sensor.thermostat_hc1_reduceminutes,6,1,1,201,1
+"Moduline 200",thermostat,80,dhw.mode,operating mode,enum [on\|off\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
"RC35",thermostat,86,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"RC35",thermostat,86,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
-"RC35",thermostat,86,datetime,date/time,string, ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
+"RC35",thermostat,86,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
"RC35",thermostat,86,intoffset,internal temperature offset,int8 (>=-5<=5),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,6,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,6,0,1,51,1
-"RC35",thermostat,86,inttemp1,temperature sensor 1,int16 (>=-3199<=3199),C,false,sensor.thermostat_temperature_sensor_1,sensor.thermostat_inttemp1,6,0,1/10,68,1
-"RC35",thermostat,86,inttemp2,temperature sensor 2,int16 (>=-3199<=3199),C,false,sensor.thermostat_temperature_sensor_2,sensor.thermostat_inttemp2,6,0,1/10,69,1
-"RC35",thermostat,86,damping,damping outdoor temperature,boolean, ,true,switch.thermostat_damping_outdoor_temperature,switch.thermostat_damping,6,0,1,52,1
-"RC35",thermostat,86,dampedoutdoortemp,damped outdoor temperature,int8 (>=-126<=126),C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp,6,0,1,48,1
-"RC35",thermostat,86,building,building type,enum [light\|medium\|heavy], ,true,select.thermostat_building_type,select.thermostat_building,6,0,1,50,1
+"RC35",thermostat,86,inttemp1,temperature sensor 1,int16,C,false,sensor.thermostat_temperature_sensor_1,sensor.thermostat_inttemp1,6,0,1/10,68,1
+"RC35",thermostat,86,inttemp2,temperature sensor 2,int16,C,false,sensor.thermostat_temperature_sensor_2,sensor.thermostat_inttemp2,6,0,1/10,69,1
+"RC35",thermostat,86,damping,damping outdoor temperature,boolean (>=0<=0), ,true,switch.thermostat_damping_outdoor_temperature,switch.thermostat_damping,6,0,1,52,1
+"RC35",thermostat,86,dampedoutdoortemp,damped outdoor temperature,int8,C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp,6,0,1,48,1
+"RC35",thermostat,86,building,building type,enum [light\|medium\|heavy] (>=0<=0), ,true,select.thermostat_building_type,select.thermostat_building,6,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,6,1,1/2,0,1
-"RC35",thermostat,86,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"RC35",thermostat,86,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"RC35",thermostat,86,hc1.mode,operating mode,enum [night\|day\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"RC35",thermostat,86,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,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,6,1,1,2,1
+"RC35",thermostat,86,hc1.mode,operating mode,enum [night\|day\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
"RC35",thermostat,86,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1
"RC35",thermostat,86,hc1.daytemp,day temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1
"RC35",thermostat,86,hc1.nighttemp,night temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1
"RC35",thermostat,86,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1
"RC35",thermostat,86,hc1.offsettemp,offset temperature,int8 (>=-5<=5),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp,6,1,1/2,10,1
"RC35",thermostat,86,hc1.holidaytemp,holiday temperature,uint8 (>=5<=30),C,true,number.thermostat_hc1_holiday_temperature,number.thermostat_hc1_holidaytemp,6,1,1/2,62,1
-"RC35",thermostat,86,hc1.targetflowtemp,target flow temperature,uint8 (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
+"RC35",thermostat,86,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
"RC35",thermostat,86,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1,8,1
"RC35",thermostat,86,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1
"RC35",thermostat,86,hc1.holidaymode,holiday mode,boolean, ,false,binary_sensor.thermostat_hc1_holiday_mode,binary_sensor.thermostat_hc1_holidaymode,6,1,1,63,1
"RC35",thermostat,86,hc1.nofrosttemp,nofrost temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,17,1
-"RC35",thermostat,86,hc1.nofrostmode,nofrost mode,enum [off\|outdoor\|room], ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1
+"RC35",thermostat,86,hc1.nofrostmode,nofrost mode,enum [off\|outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1
"RC35",thermostat,86,hc1.roominfluence,room influence,uint8 (>=0<=10),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,13,1
"RC35",thermostat,86,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
"RC35",thermostat,86,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
"RC35",thermostat,86,hc1.flowtempoffset,flow temperature offset for mixer,uint8 (>=0<=20),C,true,number.thermostat_hc1_flow_temperature_offset_for_mixer,number.thermostat_hc1_flowtempoffset,6,1,1,64,1
-"RC35",thermostat,86,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
-"RC35",thermostat,86,hc1.reducemode,reduce mode,enum [nofrost\|reduce\|room\|outdoor], ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,31,1
-"RC35",thermostat,86,hc1.controlmode,control mode,enum [outdoor\|room], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
-"RC35",thermostat,86,hc1.control,control device,enum [off\|RC20\|RC3x], ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
-"RC35",thermostat,86,hc1.holidays,holiday dates,string, ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,6,1,1,65,13
-"RC35",thermostat,86,hc1.vacations,vacation dates,string, ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,6,1,1,78,13
-"RC35",thermostat,86,hc1.program,program,enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
+"RC35",thermostat,86,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
+"RC35",thermostat,86,hc1.reducemode,reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,31,1
+"RC35",thermostat,86,hc1.controlmode,control mode,enum [outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
+"RC35",thermostat,86,hc1.control,control device,enum [off\|RC20\|RC3x] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
+"RC35",thermostat,86,hc1.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,6,1,1,65,13
+"RC35",thermostat,86,hc1.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,6,1,1,78,13
+"RC35",thermostat,86,hc1.program,program,enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
"RC35",thermostat,86,hc1.pause,pause time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_pause_time,number.thermostat_hc1_pause,6,1,1,91,1
"RC35",thermostat,86,hc1.party,party time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_party_time,number.thermostat_hc1_party,6,1,1,92,1
"RC35",thermostat,86,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1
"RC35",thermostat,86,hc1.noreducetemp,no reduce below temperature,int8 (>=-31<=10),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,32,1
"RC35",thermostat,86,hc1.reducetemp,off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,33,1
"RC35",thermostat,86,hc1.vacreducetemp,vacations off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_vacations_off/reduce_switch_temperature,number.thermostat_hc1_vacreducetemp,6,1,1,93,1
-"RC35",thermostat,86,hc1.vacreducemode,vacations reduce mode,enum [nofrost\|reduce\|room\|outdoor], ,true,select.thermostat_hc1_vacations_reduce_mode,select.thermostat_hc1_vacreducemode,6,1,1,94,1
+"RC35",thermostat,86,hc1.vacreducemode,vacations reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_vacations_reduce_mode,select.thermostat_hc1_vacreducemode,6,1,1,94,1
"RC35",thermostat,86,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1
-"RC35",thermostat,86,hc1.dhwprio,dhw priority,boolean, ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,34,1
-"RC35",thermostat,86,hc1.switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
-"RC35",thermostat,86,hc1.switchtime1,own1 program switchtime,string, ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,95,8
-"RC35",thermostat,86,hc1.switchtime2,own2 program switchtime,string, ,true,sensor.thermostat_hc1_own2_program_switchtime,sensor.thermostat_hc1_switchtime2,6,1,1,103,8
-"RC35",thermostat,86,dhw.mode,operating mode,enum [off\|on\|auto], ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
-"RC35",thermostat,86,dhw.circmode,circulation pump mode,enum [off\|on\|auto], ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,6,9,1,4,1
-"RC35",thermostat,86,dhw.progmode,program,enum [std prog\|own prog], ,true,select.thermostat_dhw_program,select.thermostat_dhw_progmode,6,9,1,13,1
-"RC35",thermostat,86,dhw.circprog,circulation program,enum [std prog\|own prog], ,true,select.thermostat_dhw_circulation_program,select.thermostat_dhw_circprog,6,9,1,14,1
-"RC35",thermostat,86,dhw.disinfecting,disinfecting,boolean, ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,6,9,1,8,1
-"RC35",thermostat,86,dhw.disinfectday,disinfection day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all], ,true,select.thermostat_dhw_disinfection_day,select.thermostat_dhw_disinfectday,6,9,1,9,1
+"RC35",thermostat,86,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,34,1
+"RC35",thermostat,86,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
+"RC35",thermostat,86,hc1.switchtime1,own1 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,95,8
+"RC35",thermostat,86,hc1.switchtime2,own2 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own2_program_switchtime,sensor.thermostat_hc1_switchtime2,6,1,1,103,8
+"RC35",thermostat,86,dhw.mode,operating mode,enum [off\|on\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
+"RC35",thermostat,86,dhw.circmode,circulation pump mode,enum [off\|on\|auto] (>=0<=0), ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,6,9,1,4,1
+"RC35",thermostat,86,dhw.progmode,program,enum [std prog\|own prog] (>=0<=0), ,true,select.thermostat_dhw_program,select.thermostat_dhw_progmode,6,9,1,13,1
+"RC35",thermostat,86,dhw.circprog,circulation program,enum [std prog\|own prog] (>=0<=0), ,true,select.thermostat_dhw_circulation_program,select.thermostat_dhw_circprog,6,9,1,14,1
+"RC35",thermostat,86,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,6,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,6,9,1,9,1
"RC35",thermostat,86,dhw.disinfecthour,disinfection hour,uint8 (>=0<=23), ,true,number.thermostat_dhw_disinfection_hour,number.thermostat_dhw_disinfecthour,6,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,6,9,1,16,1
-"RC35",thermostat,86,dhw.onetimekey,one time key function,boolean, ,true,switch.thermostat_dhw_one_time_key_function,switch.thermostat_dhw_onetimekey,6,9,1,17,1
-"RC35",thermostat,86,dhw.switchtime,program switchtime,string, ,true,sensor.thermostat_dhw_program_switchtime,sensor.thermostat_dhw_switchtime,6,9,1,18,8
-"RC35",thermostat,86,dhw.circswitchtime,circulation program switchtime,string, ,true,sensor.thermostat_dhw_circulation_program_switchtime,sensor.thermostat_dhw_circswitchtime,6,9,1,26,8
-"RC35",thermostat,86,dhw.holidays,holiday dates,string, ,true,sensor.thermostat_dhw_holiday_dates,sensor.thermostat_dhw_holidays,6,9,1,34,13
-"RC35",thermostat,86,dhw.vacations,vacation dates,string, ,true,sensor.thermostat_dhw_vacation_dates,sensor.thermostat_dhw_vacations,6,9,1,47,13
+"RC35",thermostat,86,dhw.onetimekey,one time key function,boolean (>=0<=0), ,true,switch.thermostat_dhw_one_time_key_function,switch.thermostat_dhw_onetimekey,6,9,1,17,1
+"RC35",thermostat,86,dhw.switchtime,program switchtime,string (>=0<=0), ,true,sensor.thermostat_dhw_program_switchtime,sensor.thermostat_dhw_switchtime,6,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,6,9,1,26,8
+"RC35",thermostat,86,dhw.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_dhw_holiday_dates,sensor.thermostat_dhw_holidays,6,9,1,34,13
+"RC35",thermostat,86,dhw.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_dhw_vacation_dates,sensor.thermostat_dhw_vacations,6,9,1,47,13
"RC10, Moduline 100",thermostat,90,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"RC10, Moduline 100",thermostat,90,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
"RC10, Moduline 100",thermostat,90,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"RC10, Moduline 100",thermostat,90,minexttemp,minimal external temperature,int8 (>=-126<=126),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,0,1,51,1
+"RC10, Moduline 100",thermostat,90,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,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,6,1,1/2,0,1
-"RC10, Moduline 100",thermostat,90,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"RC10, Moduline 100",thermostat,90,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"RC10, Moduline 100",thermostat,90,hc1.mode,operating mode,enum [night\|day\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"RC10, Moduline 100",thermostat,90,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
+"RC10, Moduline 100",thermostat,90,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
+"RC10, Moduline 100",thermostat,90,hc1.mode,operating mode,enum [night\|day\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
"RC10, Moduline 100",thermostat,90,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1
-"RC10, Moduline 100",thermostat,90,hc1.daytemp,day temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1
-"RC10, Moduline 100",thermostat,90,hc1.nighttemp,night temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1
-"RC10, Moduline 100",thermostat,90,hc1.program,program,enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
-"RC10, Moduline 100",thermostat,90,hc1.minflowtemp,min flow temperature,uint8 (>=0<=254),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
-"RC10, Moduline 100",thermostat,90,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=254),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
-"RC10, Moduline 100",thermostat,90,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=127),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1
-"RC10, Moduline 100",thermostat,90,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
+"RC10, Moduline 100",thermostat,90,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1
+"RC10, Moduline 100",thermostat,90,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1
+"RC10, Moduline 100",thermostat,90,hc1.program,program,enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
+"RC10, Moduline 100",thermostat,90,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
+"RC10, Moduline 100",thermostat,90,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
+"RC10, Moduline 100",thermostat,90,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=0),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1
+"RC10, Moduline 100",thermostat,90,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
"RC10, Moduline 100",thermostat,90,hc1.summertemp,summer temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1,8,1
"RC10, Moduline 100",thermostat,90,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1
"RC20RF",thermostat,93,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"RC20RF",thermostat,93,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
"RC20RF",thermostat,93,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
"RC20RF",thermostat,93,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,6,1,1/2,0,1
-"RC20RF",thermostat,93,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"RC20RF",thermostat,93,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"RC20RF",thermostat,93,hc1.mode,operating mode,enum [off\|manual\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
-"RC20RF",thermostat,93,hc1.manualtemp,manual temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp,6,1,1/2,6,1
-"RC20RF",thermostat,93,hc1.offtemp,temperature when mode is off,uint8 (>=0<=127),C,true,number.thermostat_hc1_temperature_when_mode_is_off,number.thermostat_hc1_offtemp,6,1,1/2,111,1
-"RC20RF",thermostat,93,hc1.daytemp2,day temperature T2,uint8 (>=0<=127),C,true,number.thermostat_hc1_day_temperature_T2,number.thermostat_hc1_daytemp2,6,1,1/2,112,1
-"RC20RF",thermostat,93,hc1.daytemp3,day temperature T3,uint8 (>=0<=127),C,true,number.thermostat_hc1_day_temperature_T3,number.thermostat_hc1_daytemp3,6,1,1/2,113,1
-"RC20RF",thermostat,93,hc1.daytemp4,day temperature T4,uint8 (>=0<=127),C,true,number.thermostat_hc1_day_temperature_T4,number.thermostat_hc1_daytemp4,6,1,1/2,114,1
-"RC20RF",thermostat,93,hc1.nighttemp,night temperature T1,uint8 (>=0<=127),C,true,number.thermostat_hc1_night_temperature_T1,number.thermostat_hc1_nighttemp,6,1,1/2,61,1
-"RC20RF",thermostat,93,hc1.switchtime,program switchtime,string, ,true,sensor.thermostat_hc1_program_switchtime,sensor.thermostat_hc1_switchtime,6,1,1,115,8
+"RC20RF",thermostat,93,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,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,6,1,1,2,1
+"RC20RF",thermostat,93,hc1.mode,operating mode,enum [off\|manual\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"RC20RF",thermostat,93,hc1.manualtemp,manual temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp,6,1,1/2,6,1
+"RC20RF",thermostat,93,hc1.offtemp,temperature when mode is off,uint8 (>=0<=0),C,true,number.thermostat_hc1_temperature_when_mode_is_off,number.thermostat_hc1_offtemp,6,1,1/2,111,1
+"RC20RF",thermostat,93,hc1.daytemp2,day temperature T2,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T2,number.thermostat_hc1_daytemp2,6,1,1/2,112,1
+"RC20RF",thermostat,93,hc1.daytemp3,day temperature T3,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T3,number.thermostat_hc1_daytemp3,6,1,1/2,113,1
+"RC20RF",thermostat,93,hc1.daytemp4,day temperature T4,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature_T4,number.thermostat_hc1_daytemp4,6,1,1/2,114,1
+"RC20RF",thermostat,93,hc1.nighttemp,night temperature T1,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature_T1,number.thermostat_hc1_nighttemp,6,1,1/2,61,1
+"RC20RF",thermostat,93,hc1.switchtime,program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_program_switchtime,sensor.thermostat_hc1_switchtime,6,1,1,115,8
"RFM20 Remote",thermostat,94,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"RFM20 Remote",thermostat,94,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
"RFM20 Remote",thermostat,94,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
"RFM20 Remote",thermostat,94,hc1.seltemp,selected room temperature,int16 (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp,6,1,1/2,0,1
-"RFM20 Remote",thermostat,94,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"RFM20 Remote",thermostat,94,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
+"RFM20 Remote",thermostat,94,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,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,6,1,1,2,1
"RC25",thermostat,151,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"RC25",thermostat,151,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
"RC25",thermostat,151,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"RC25",thermostat,151,minexttemp,minimal external temperature,int8 (>=-126<=126),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,0,1,51,1
+"RC25",thermostat,151,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,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,6,1,1/2,0,1
-"RC25",thermostat,151,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"RC25",thermostat,151,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"RC25",thermostat,151,hc1.mode,operating mode,enum [night\|day\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"RC25",thermostat,151,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,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,6,1,1,2,1
+"RC25",thermostat,151,hc1.mode,operating mode,enum [night\|day\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
"RC25",thermostat,151,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1
-"RC25",thermostat,151,hc1.daytemp,day temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1
-"RC25",thermostat,151,hc1.nighttemp,night temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1
-"RC25",thermostat,151,hc1.program,program,enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
-"RC25",thermostat,151,hc1.minflowtemp,min flow temperature,uint8 (>=0<=254),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
-"RC25",thermostat,151,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=254),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
-"RC25",thermostat,151,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=127),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1
-"RC25",thermostat,151,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
+"RC25",thermostat,151,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1
+"RC25",thermostat,151,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1
+"RC25",thermostat,151,hc1.program,program,enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
+"RC25",thermostat,151,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
+"RC25",thermostat,151,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
+"RC25",thermostat,151,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=0),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1
+"RC25",thermostat,151,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
"RC25",thermostat,151,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1,8,1
"RC25",thermostat,151,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1
"RC200, CW100, CR120, CR50",thermostat,157,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"RC200, CW100, CR120, CR50",thermostat,157,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
-"RC200, CW100, CR120, CR50",thermostat,157,datetime,date/time,string, ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"RC200, CW100, CR120, CR50",thermostat,157,intoffset,internal temperature offset,int8 (>=-12<=12),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,6,0,1/10,46,1
+"RC200, CW100, CR120, CR50",thermostat,157,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
+"RC200, CW100, CR120, CR50",thermostat,157,intoffset,internal temperature offset,int8 (>=0<=0),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,6,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,6,0,1,47,1
-"RC200, CW100, CR120, CR50",thermostat,157,dampedoutdoortemp,damped outdoor temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp,6,0,1/10,48,1
-"RC200, CW100, CR120, CR50",thermostat,157,floordrytemp,floor drying temperature,uint8 (>=0<=254),C,false,sensor.thermostat_floor_drying_temperature,sensor.thermostat_floordrytemp,6,0,1,49,1
-"RC200, CW100, CR120, CR50",thermostat,157,building,building type,enum [light\|medium\|heavy], ,true,select.thermostat_building_type,select.thermostat_building,6,0,1,50,1
-"RC200, CW100, CR120, CR50",thermostat,157,minexttemp,minimal external temperature,int8 (>=-126<=126),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,0,1,51,1
-"RC200, CW100, CR120, CR50",thermostat,157,damping,damping outdoor temperature,boolean, ,true,switch.thermostat_damping_outdoor_temperature,switch.thermostat_damping,6,0,1,52,1
-"RC200, CW100, CR120, CR50",thermostat,157,solar,solar,boolean, ,true,switch.thermostat_solar,switch.thermostat_solar,6,0,1,53,1
-"RC200, CW100, CR120, CR50",thermostat,157,vacations,vacation dates,string, ,true,sensor.thermostat_vacation_dates,sensor.thermostat_vacations,6,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], ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1
+"RC200, CW100, CR120, CR50",thermostat,157,dampedoutdoortemp,damped outdoor temperature,int16,C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp,6,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,6,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,6,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,6,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,6,0,1,52,1
+"RC200, CW100, CR120, CR50",thermostat,157,solar,solar,boolean (>=0<=0), ,true,switch.thermostat_solar,switch.thermostat_solar,6,0,1,53,1
+"RC200, CW100, CR120, CR50",thermostat,157,vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_vacation_dates,sensor.thermostat_vacations,6,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,6,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,6,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,6,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,6,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,6,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,6,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,6,0,1,60,1
-"RC200, CW100, CR120, CR50",thermostat,157,pvenabledhw,enable raise dhw,boolean, ,true,switch.thermostat_enable_raise_dhw,switch.thermostat_pvenabledhw,6,0,1,61,1
+"RC200, CW100, CR120, CR50",thermostat,157,pvenabledhw,enable raise dhw,boolean (>=0<=0), ,true,switch.thermostat_enable_raise_dhw,switch.thermostat_pvenabledhw,6,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,6,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,6,0,1,63,1
-"RC200, CW100, CR120, CR50",thermostat,157,absent,absent,boolean, ,true,switch.thermostat_absent,switch.thermostat_absent,6,0,1,64,1
+"RC200, CW100, CR120, CR50",thermostat,157,absent,absent,boolean (>=0<=0), ,true,switch.thermostat_absent,switch.thermostat_absent,6,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,6,1,1/2,0,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.mode,operating mode,enum [manual\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,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,6,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,6,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,6,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,6,1,1,4,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.ecotemp,eco temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.manualtemp,manual temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp,6,1,1/2,6,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.comforttemp,comfort temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_comfort_temperature,number.thermostat_hc1_comforttemp,6,1,1/2,7,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,6,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,6,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,6,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,6,1,1,8,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.designtemp,design temperature,uint8 (>=0<=254),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.offsettemp,offset temperature,int8 (>=-126<=126),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp,6,1,1,10,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.minflowtemp,min flow temperature,uint8 (>=0<=254),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=254),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.roominfluence,room influence,uint8 (>=0<=254),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,13,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.roominflfactor,room influence factor,uint8 (>=0<=25), ,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,1/10,14,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.curroominfl,current room influence,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_influence,sensor.thermostat_hc1_curroominfl,6,1,1/10,15,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.nofrostmode,nofrost mode,enum [room\|outdoor\|room outdoor], ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.nofrosttemp,nofrost temperature,int8 (>=-126<=126),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,17,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.targetflowtemp,target flow temperature,uint8 (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.summersetmode,set summer mode,enum [summer\|auto\|winter], ,true,select.thermostat_hc1_set_summer_mode,select.thermostat_hc1_summersetmode,6,1,1,20,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.hpoperatingmode,heatpump operating mode,enum [off\|auto\|heating\|cooling], ,true,select.thermostat_hc1_heatpump_operating_mode,select.thermostat_hc1_hpoperatingmode,6,1,1,21,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.designtemp,design temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.offsettemp,offset temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp,6,1,1,10,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.roominfluence,room influence,uint8 (>=0<=0),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,13,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.roominflfactor,room influence factor,uint8 (>=0<=0), ,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,1/10,14,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.curroominfl,current room influence,int16,C,false,sensor.thermostat_hc1_current_room_influence,sensor.thermostat_hc1_curroominfl,6,1,1/10,15,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.nofrostmode,nofrost mode,enum [room\|outdoor\|room outdoor] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,17,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.summersetmode,set summer mode,enum [summer\|auto\|winter] (>=0<=0), ,true,select.thermostat_hc1_set_summer_mode,select.thermostat_hc1_summersetmode,6,1,1,20,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.hpoperatingmode,heatpump operating mode,enum [off\|auto\|heating\|cooling] (>=0<=0), ,true,select.thermostat_hc1_heatpump_operating_mode,select.thermostat_hc1_hpoperatingmode,6,1,1,21,1
"RC200, CW100, CR120, CR50",thermostat,157,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1
"RC200, CW100, CR120, CR50",thermostat,157,hc1.hpoperatingstate,heatpump operating state,enum [heating\|off\|cooling], ,false,sensor.thermostat_hc1_heatpump_operating_state,sensor.thermostat_hc1_hpoperatingstate,6,1,1,23,1
"RC200, CW100, CR120, CR50",thermostat,157,hc1.vacationmode,vacation mode,boolean, ,false,binary_sensor.thermostat_hc1_vacation_mode,binary_sensor.thermostat_hc1_vacationmode,6,1,1,24,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.controlmode,control mode,enum [optimized\|simple\|n/a\|room\|power], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.program,program,enum [prog 1\|prog 2], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.controlmode,control mode,enum [optimized\|simple\|n/a\|room\|power] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.program,program,enum [prog 1\|prog 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
"RC200, CW100, CR120, CR50",thermostat,157,hc1.tempautotemp,temporary set temperature automode,int8 (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1
"RC200, CW100, CR120, CR50",thermostat,157,hc1.cooltemp,cooling temperature,int8 (>=-1<=30),C,true,number.thermostat_hc1_cooling_temperature,number.thermostat_hc1_cooltemp,6,1,1/2,28,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.fastheatup,fast heatup,uint8 (>=0<=100),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,29,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce], ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,31,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.noreducetemp,no reduce below temperature,int8 (>=-126<=126),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,32,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.reducetemp,off/reduce switch temperature,int8 (>=-126<=126),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,33,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.dhwprio,dhw priority,boolean, ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,34,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.hpcooling,hp cooling,boolean, ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,35,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.fastheatup,fast heatup,uint8 (>=0<=0),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,29,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,31,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,32,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.reducetemp,off/reduce switch temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,33,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,34,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.hpcooling,hp cooling,boolean (>=0<=0), ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,35,1
"RC200, CW100, CR120, CR50",thermostat,157,hc1.coolingon,cooling on,boolean, ,false,binary_sensor.thermostat_hc1_cooling_on,binary_sensor.thermostat_hc1_coolingon,6,1,1,36,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling], ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,37,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling] (>=0<=0), ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,37,1
"RC200, CW100, CR120, CR50",thermostat,157,hc1.dewoffset,dew point offset,uint8 (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset,6,1,1,38,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.roomtempdiff,room temp difference,uint8 (>=0<=254),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,39,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=254),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,40,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.control,control device,enum [RC310\|RC200\|RC100\|RC100H\|TC100], ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.roomtempdiff,room temp difference,uint8 (>=0<=0),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,39,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=0),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,40,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.control,control device,enum [RC310\|RC200\|RC100\|RC100H\|TC100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
"RC200, CW100, CR120, CR50",thermostat,157,hc1.heatondelay,heat-on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-on_delay,number.thermostat_hc1_heatondelay,6,1,1,44,1
"RC200, CW100, CR120, CR50",thermostat,157,hc1.heatoffdelay,heat-off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-off_delay,number.thermostat_hc1_heatoffdelay,6,1,1,45,1
"RC200, CW100, CR120, CR50",thermostat,157,hc1.instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_hc1_instant_start,number.thermostat_hc1_instantstart,6,1,1,46,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.boost,boost mode,boolean, ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,47,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.boosttime,boost time,uint8 (>=0<=254),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,48,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,47,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.boosttime,boost time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,48,1
"RC200, CW100, CR120, CR50",thermostat,157,hc1.coolstart,cooling starttemp,uint8 (>=20<=35),C,true,number.thermostat_hc1_cooling_starttemp,number.thermostat_hc1_coolstart,6,1,1,49,1
"RC200, CW100, CR120, CR50",thermostat,157,hc1.coolondelay,cooling on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_on_delay,number.thermostat_hc1_coolondelay,6,1,1,50,1
"RC200, CW100, CR120, CR50",thermostat,157,hc1.cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,51,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.switchprogmode,switch program mode,enum [level\|absolute], ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,52,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.switchprogmode,switch program mode,enum [level\|absolute] (>=0<=0), ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,52,1
"RC200, CW100, CR120, CR50",thermostat,157,hc1.redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,53,1
"RC200, CW100, CR120, CR50",thermostat,157,hc1.solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,54,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.currsolarinfl,current solar influence,uint8 (>=0<=25),C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,55,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.heatingpid,heating PID,enum [fast\|medium\|slow], ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,56,1
-"RC200, CW100, CR120, CR50",thermostat,157,hc1.pumpopt,pump optimization,boolean, ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,57,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.currsolarinfl,current solar influence,uint8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,55,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,56,1
+"RC200, CW100, CR120, CR50",thermostat,157,hc1.pumpopt,pump optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,57,1
"RC200, CW100, CR120, CR50",thermostat,157,hc1.inttimefloor,integral time floor,uint8 (>=160<=320),minutes,true,number.thermostat_hc1_integral_time_floor,number.thermostat_hc1_inttimefloor,6,1,10,58,1
"RC200, CW100, CR120, CR50",thermostat,157,hc1.inttime,integral time,uint8 (>=3<=80),minutes,true,number.thermostat_hc1_integral_time,number.thermostat_hc1_inttime,6,1,1,59,1
-"RC200, CW100, CR120, CR50",thermostat,157,dhw.mode,operating mode,enum [off\|on\|auto], ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
+"RC200, CW100, CR120, CR50",thermostat,157,dhw.mode,operating mode,enum [off\|on\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
"RC200, CW100, CR120, CR50",thermostat,157,dhw.modetype,mode type,enum [off\|eco\|comfort\|eco+], ,false,sensor.thermostat_dhw_mode_type,sensor.thermostat_dhw_modetype,6,9,1,1,1
-"RC200, CW100, CR120, CR50",thermostat,157,dhw.settemp,set temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,2,1
-"RC200, CW100, CR120, CR50",thermostat,157,dhw.settemplow,set low temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_low_temperature,number.thermostat_dhw_settemplow,6,9,1,3,1
-"RC200, CW100, CR120, CR50",thermostat,157,dhw.circmode,circulation pump mode,enum [off\|on\|auto\|own prog], ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,6,9,1,4,1
-"RC200, CW100, CR120, CR50",thermostat,157,dhw.chargeduration,charge duration,uint8 (>=0<=3810),minutes,true,number.thermostat_dhw_charge_duration,number.thermostat_dhw_chargeduration,6,9,15,5,1
-"RC200, CW100, CR120, CR50",thermostat,157,dhw.charge,charge,boolean, ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
+"RC200, CW100, CR120, CR50",thermostat,157,dhw.settemp,set temperature,uint8 (>=0<=0),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,2,1
+"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,6,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,6,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,6,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,6,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,6,9,1,7,1
-"RC200, CW100, CR120, CR50",thermostat,157,dhw.disinfecting,disinfecting,boolean, ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,6,9,1,8,1
-"RC200, CW100, CR120, CR50",thermostat,157,dhw.disinfectday,disinfection day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all], ,true,select.thermostat_dhw_disinfection_day,select.thermostat_dhw_disinfectday,6,9,1,9,1
+"RC200, CW100, CR120, CR50",thermostat,157,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,6,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,6,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,6,9,15,10,1
-"RC200, CW100, CR120, CR50",thermostat,157,dhw.dailyheating,daily heating,boolean, ,true,switch.thermostat_dhw_daily_heating,switch.thermostat_dhw_dailyheating,6,9,1,11,1
+"RC200, CW100, CR120, CR50",thermostat,157,dhw.dailyheating,daily heating,boolean (>=0<=0), ,true,switch.thermostat_dhw_daily_heating,switch.thermostat_dhw_dailyheating,6,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,6,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,6,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,6,0,1,8,25
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,datetime,date/time,string, ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,intoffset,internal temperature offset,int8 (>=-12<=12),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,6,0,1/10,46,1
+"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,6,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,6,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,6,0,1,47,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dampedoutdoortemp,damped outdoor temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp,6,0,1/10,48,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,floordrytemp,floor drying temperature,uint8 (>=0<=254),C,false,sensor.thermostat_floor_drying_temperature,sensor.thermostat_floordrytemp,6,0,1,49,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,building,building type,enum [light\|medium\|heavy], ,true,select.thermostat_building_type,select.thermostat_building,6,0,1,50,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,minexttemp,minimal external temperature,int8 (>=-126<=126),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,0,1,51,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,damping,damping outdoor temperature,boolean, ,true,switch.thermostat_damping_outdoor_temperature,switch.thermostat_damping,6,0,1,52,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,solar,solar,boolean, ,true,switch.thermostat_solar,switch.thermostat_solar,6,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], ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,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,6,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,6,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,6,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,6,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,6,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,6,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,6,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,6,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,6,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,6,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,6,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,6,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,6,0,1,60,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,pvenabledhw,enable raise dhw,boolean, ,true,switch.thermostat_enable_raise_dhw,switch.thermostat_pvenabledhw,6,0,1,61,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,6,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,6,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,6,0,1,63,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,absent,absent,boolean, ,true,switch.thermostat_absent,switch.thermostat_absent,6,0,1,64,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,absent,absent,boolean (>=0<=0), ,true,switch.thermostat_absent,switch.thermostat_absent,6,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,6,1,1/2,0,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,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] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.mode,operating mode,enum [manual\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,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,6,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,6,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,6,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,6,1,1,4,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.ecotemp,eco temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.manualtemp,manual temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp,6,1,1/2,6,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.comforttemp,comfort temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_comfort_temperature,number.thermostat_hc1_comforttemp,6,1,1/2,7,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,6,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,6,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,6,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,6,1,1,8,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.designtemp,design temperature,uint8 (>=0<=254),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.offsettemp,offset temperature,int8 (>=-126<=126),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp,6,1,1,10,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.minflowtemp,min flow temperature,uint8 (>=0<=254),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=254),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.roominfluence,room influence,uint8 (>=0<=254),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,13,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.roominflfactor,room influence factor,uint8 (>=0<=25), ,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,1/10,14,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.curroominfl,current room influence,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_influence,sensor.thermostat_hc1_curroominfl,6,1,1/10,15,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.nofrostmode,nofrost mode,enum [room\|outdoor\|room outdoor], ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.nofrosttemp,nofrost temperature,int8 (>=-126<=126),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,17,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.targetflowtemp,target flow temperature,uint8 (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.summersetmode,set summer mode,enum [summer\|auto\|winter], ,true,select.thermostat_hc1_set_summer_mode,select.thermostat_hc1_summersetmode,6,1,1,20,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.hpoperatingmode,heatpump operating mode,enum [off\|auto\|heating\|cooling], ,true,select.thermostat_hc1_heatpump_operating_mode,select.thermostat_hc1_hpoperatingmode,6,1,1,21,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.designtemp,design temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.offsettemp,offset temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp,6,1,1,10,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.roominfluence,room influence,uint8 (>=0<=0),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,13,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.roominflfactor,room influence factor,uint8 (>=0<=0), ,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,1/10,14,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.curroominfl,current room influence,int16,C,false,sensor.thermostat_hc1_current_room_influence,sensor.thermostat_hc1_curroominfl,6,1,1/10,15,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.nofrostmode,nofrost mode,enum [room\|outdoor\|room outdoor] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,17,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.summersetmode,set summer mode,enum [summer\|auto\|winter] (>=0<=0), ,true,select.thermostat_hc1_set_summer_mode,select.thermostat_hc1_summersetmode,6,1,1,20,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.hpoperatingmode,heatpump operating mode,enum [off\|auto\|heating\|cooling] (>=0<=0), ,true,select.thermostat_hc1_heatpump_operating_mode,select.thermostat_hc1_hpoperatingmode,6,1,1,21,1
"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1
"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.hpoperatingstate,heatpump operating state,enum [heating\|off\|cooling], ,false,sensor.thermostat_hc1_heatpump_operating_state,sensor.thermostat_hc1_hpoperatingstate,6,1,1,23,1
"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.vacationmode,vacation mode,boolean, ,false,binary_sensor.thermostat_hc1_vacation_mode,binary_sensor.thermostat_hc1_vacationmode,6,1,1,24,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.controlmode,control mode,enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.program,program,enum [prog 1\|prog 2], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.controlmode,control mode,enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.program,program,enum [prog 1\|prog 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.tempautotemp,temporary set temperature automode,int8 (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1
"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.cooltemp,cooling temperature,int8 (>=-1<=30),C,true,number.thermostat_hc1_cooling_temperature,number.thermostat_hc1_cooltemp,6,1,1/2,28,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.fastheatup,fast heatup,uint8 (>=0<=100),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,29,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce], ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,31,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.noreducetemp,no reduce below temperature,int8 (>=-126<=126),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,32,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.reducetemp,off/reduce switch temperature,int8 (>=-126<=126),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,33,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.dhwprio,dhw priority,boolean, ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,34,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.hpcooling,hp cooling,boolean, ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,35,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.fastheatup,fast heatup,uint8 (>=0<=0),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,29,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,31,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,32,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.reducetemp,off/reduce switch temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,33,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,34,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.hpcooling,hp cooling,boolean (>=0<=0), ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,35,1
"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.coolingon,cooling on,boolean, ,false,binary_sensor.thermostat_hc1_cooling_on,binary_sensor.thermostat_hc1_coolingon,6,1,1,36,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling], ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,37,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling] (>=0<=0), ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,37,1
"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.dewoffset,dew point offset,uint8 (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset,6,1,1,38,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.roomtempdiff,room temp difference,uint8 (>=0<=254),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,39,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=254),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,40,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.control,control device,enum [RC310\|RC200\|RC100\|RC100H\|TC100], ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.roomtempdiff,room temp difference,uint8 (>=0<=0),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,39,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=0),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,40,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.control,control device,enum [RC310\|RC200\|RC100\|RC100H\|TC100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1
"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.remotehum,room humidity from remote,cmd [] (>=-1<=101),%,true,sensor.thermostat_hc1_room_humidity_from_remote,sensor.thermostat_hc1_remotehum,6,1,1,43,1
"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.heatondelay,heat-on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-on_delay,number.thermostat_hc1_heatondelay,6,1,1,44,1
"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.heatoffdelay,heat-off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-off_delay,number.thermostat_hc1_heatoffdelay,6,1,1,45,1
"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_hc1_instant_start,number.thermostat_hc1_instantstart,6,1,1,46,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.boost,boost mode,boolean, ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,47,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.boosttime,boost time,uint8 (>=0<=254),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,48,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,47,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.boosttime,boost time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,48,1
"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.coolstart,cooling starttemp,uint8 (>=20<=35),C,true,number.thermostat_hc1_cooling_starttemp,number.thermostat_hc1_coolstart,6,1,1,49,1
"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.coolondelay,cooling on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_on_delay,number.thermostat_hc1_coolondelay,6,1,1,50,1
"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,51,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.switchprogmode,switch program mode,enum [level\|absolute], ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,52,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.switchprogmode,switch program mode,enum [level\|absolute] (>=0<=0), ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,52,1
"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,53,1
"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,54,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.currsolarinfl,current solar influence,uint8 (>=0<=25),C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,55,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.heatingpid,heating PID,enum [fast\|medium\|slow], ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,56,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.pumpopt,pump optimization,boolean, ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,57,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.currsolarinfl,current solar influence,uint8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,55,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,56,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.pumpopt,pump optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,57,1
"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.inttimefloor,integral time floor,uint8 (>=160<=320),minutes,true,number.thermostat_hc1_integral_time_floor,number.thermostat_hc1_inttimefloor,6,1,10,58,1
"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,hc1.inttime,integral time,uint8 (>=3<=80),minutes,true,number.thermostat_hc1_integral_time,number.thermostat_hc1_inttime,6,1,1,59,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dhw.mode,operating mode,enum [off\|normal\|comfort\|auto\|own prog], ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dhw.mode,operating mode,enum [off\|normal\|comfort\|auto\|own prog] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dhw.modetype,mode type,enum [off\|eco\|comfort\|eco+], ,false,sensor.thermostat_dhw_mode_type,sensor.thermostat_dhw_modetype,6,9,1,1,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dhw.settemp,set temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,2,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dhw.settemplow,set low temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_low_temperature,number.thermostat_dhw_settemplow,6,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], ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,6,9,1,4,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dhw.chargeduration,charge duration,uint8 (>=0<=3810),minutes,true,number.thermostat_dhw_charge_duration,number.thermostat_dhw_chargeduration,6,9,15,5,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dhw.charge,charge,boolean, ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dhw.settemp,set temperature,uint8 (>=0<=0),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,2,1
+"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,6,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,6,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,6,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,6,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,6,9,1,7,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dhw.disinfecting,disinfecting,boolean, ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,6,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], ,true,select.thermostat_dhw_disinfection_day,select.thermostat_dhw_disinfectday,6,9,1,9,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,6,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,6,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,6,9,15,10,1
-"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,dhw.dailyheating,daily heating,boolean, ,true,switch.thermostat_dhw_daily_heating,switch.thermostat_dhw_dailyheating,6,9,1,11,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,6,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,6,9,15,12,1
"RC100, CR10, Moduline 1000/1010",thermostat,165,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,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,6,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,6,1,1/2,0,1
-"RC100, CR10, Moduline 1000/1010",thermostat,165,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"RC100, CR10, Moduline 1000/1010",thermostat,165,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"RC100, CR10, Moduline 1000/1010",thermostat,165,hc1.mode,operating mode,enum [off\|manual], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
-"RC100, CR10, Moduline 1000/1010",thermostat,165,hc1.targetflowtemp,target flow temperature,uint8 (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
-"RC100, CR10, Moduline 1000/1010",thermostat,165,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,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,6,1,1/10,1,1
+"RC100, CR10, Moduline 1000/1010",thermostat,165,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp], ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
+"RC100, CR10, Moduline 1000/1010",thermostat,165,hc1.mode,operating mode,enum [off\|manual] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"RC100, CR10, Moduline 1000/1010",thermostat,165,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
+"RC100, CR10, Moduline 1000/1010",thermostat,165,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
"Rego 2000/3000",thermostat,172,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"Rego 2000/3000",thermostat,172,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
-"Rego 2000/3000",thermostat,172,datetime,date/time,string, ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"Rego 2000/3000",thermostat,172,intoffset,internal temperature offset,int8 (>=-12<=12),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,6,0,1/10,46,1
+"Rego 2000/3000",thermostat,172,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,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,6,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,6,0,1,47,1
-"Rego 2000/3000",thermostat,172,dampedoutdoortemp,damped outdoor temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp,6,0,1/10,48,1
-"Rego 2000/3000",thermostat,172,floordrytemp,floor drying temperature,uint8 (>=0<=254),C,false,sensor.thermostat_floor_drying_temperature,sensor.thermostat_floordrytemp,6,0,1,49,1
-"Rego 2000/3000",thermostat,172,building,building type,enum [light\|medium\|heavy], ,true,select.thermostat_building_type,select.thermostat_building,6,0,1,50,1
-"Rego 2000/3000",thermostat,172,minexttemp,minimal external temperature,int8 (>=-126<=126),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,0,1,51,1
-"Rego 2000/3000",thermostat,172,damping,damping outdoor temperature,boolean, ,true,switch.thermostat_damping_outdoor_temperature,switch.thermostat_damping,6,0,1,52,1
-"Rego 2000/3000",thermostat,172,solar,solar,boolean, ,true,switch.thermostat_solar,switch.thermostat_solar,6,0,1,53,1
-"Rego 2000/3000",thermostat,172,vacations,vacation dates,string, ,true,sensor.thermostat_vacation_dates,sensor.thermostat_vacations,6,0,1,76,13
-"Rego 2000/3000",thermostat,172,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix], ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1
+"Rego 2000/3000",thermostat,172,dampedoutdoortemp,damped outdoor temperature,int16,C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp,6,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,6,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,6,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,6,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,6,0,1,52,1
+"Rego 2000/3000",thermostat,172,solar,solar,boolean (>=0<=0), ,true,switch.thermostat_solar,switch.thermostat_solar,6,0,1,53,1
+"Rego 2000/3000",thermostat,172,vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_vacation_dates,sensor.thermostat_vacations,6,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,6,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,6,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,6,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,6,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,6,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,6,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,6,0,1,60,1
-"Rego 2000/3000",thermostat,172,pvenabledhw,enable raise dhw,boolean, ,true,switch.thermostat_enable_raise_dhw,switch.thermostat_pvenabledhw,6,0,1,61,1
+"Rego 2000/3000",thermostat,172,pvenabledhw,enable raise dhw,boolean (>=0<=0), ,true,switch.thermostat_enable_raise_dhw,switch.thermostat_pvenabledhw,6,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,6,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,6,0,1,63,1
-"Rego 2000/3000",thermostat,172,absent,absent,boolean, ,true,switch.thermostat_absent,switch.thermostat_absent,6,0,1,64,1
+"Rego 2000/3000",thermostat,172,absent,absent,boolean (>=0<=0), ,true,switch.thermostat_absent,switch.thermostat_absent,6,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,6,1,1/2,0,1
-"Rego 2000/3000",thermostat,172,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"Rego 2000/3000",thermostat,172,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"Rego 2000/3000",thermostat,172,hc1.mode,operating mode,enum [manual\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"Rego 2000/3000",thermostat,172,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,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,6,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,6,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,6,1,1,4,1
-"Rego 2000/3000",thermostat,172,hc1.ecotemp,eco temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1
-"Rego 2000/3000",thermostat,172,hc1.manualtemp,manual temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp,6,1,1/2,6,1
-"Rego 2000/3000",thermostat,172,hc1.comforttemp,comfort temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_comfort_temperature,number.thermostat_hc1_comforttemp,6,1,1/2,7,1
+"Rego 2000/3000",thermostat,172,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,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,6,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,6,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,6,1,1,8,1
-"Rego 2000/3000",thermostat,172,hc1.designtemp,design temperature,uint8 (>=0<=254),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1
-"Rego 2000/3000",thermostat,172,hc1.offsettemp,offset temperature,int8 (>=-126<=126),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp,6,1,1,10,1
-"Rego 2000/3000",thermostat,172,hc1.minflowtemp,min flow temperature,uint8 (>=0<=254),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
-"Rego 2000/3000",thermostat,172,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=254),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
-"Rego 2000/3000",thermostat,172,hc1.roominfluence,room influence,uint8 (>=0<=254),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,13,1
-"Rego 2000/3000",thermostat,172,hc1.roominflfactor,room influence factor,uint8 (>=0<=25), ,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,1/10,14,1
-"Rego 2000/3000",thermostat,172,hc1.curroominfl,current room influence,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_influence,sensor.thermostat_hc1_curroominfl,6,1,1/10,15,1
-"Rego 2000/3000",thermostat,172,hc1.nofrostmode,nofrost mode,enum [room\|outdoor\|room outdoor], ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1
-"Rego 2000/3000",thermostat,172,hc1.nofrosttemp,nofrost temperature,int8 (>=-126<=126),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,17,1
-"Rego 2000/3000",thermostat,172,hc1.targetflowtemp,target flow temperature,uint8 (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
-"Rego 2000/3000",thermostat,172,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
-"Rego 2000/3000",thermostat,172,hc1.summersetmode,set summer mode,enum [summer\|auto\|winter], ,true,select.thermostat_hc1_set_summer_mode,select.thermostat_hc1_summersetmode,6,1,1,20,1
-"Rego 2000/3000",thermostat,172,hc1.hpoperatingmode,heatpump operating mode,enum [off\|auto\|heating\|cooling], ,true,select.thermostat_hc1_heatpump_operating_mode,select.thermostat_hc1_hpoperatingmode,6,1,1,21,1
+"Rego 2000/3000",thermostat,172,hc1.designtemp,design temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1
+"Rego 2000/3000",thermostat,172,hc1.offsettemp,offset temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp,6,1,1,10,1
+"Rego 2000/3000",thermostat,172,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
+"Rego 2000/3000",thermostat,172,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
+"Rego 2000/3000",thermostat,172,hc1.roominfluence,room influence,uint8 (>=0<=0),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,13,1
+"Rego 2000/3000",thermostat,172,hc1.roominflfactor,room influence factor,uint8 (>=0<=0), ,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,1/10,14,1
+"Rego 2000/3000",thermostat,172,hc1.curroominfl,current room influence,int16,C,false,sensor.thermostat_hc1_current_room_influence,sensor.thermostat_hc1_curroominfl,6,1,1/10,15,1
+"Rego 2000/3000",thermostat,172,hc1.nofrostmode,nofrost mode,enum [room\|outdoor\|room outdoor] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1
+"Rego 2000/3000",thermostat,172,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,17,1
+"Rego 2000/3000",thermostat,172,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
+"Rego 2000/3000",thermostat,172,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
+"Rego 2000/3000",thermostat,172,hc1.summersetmode,set summer mode,enum [summer\|auto\|winter] (>=0<=0), ,true,select.thermostat_hc1_set_summer_mode,select.thermostat_hc1_summersetmode,6,1,1,20,1
+"Rego 2000/3000",thermostat,172,hc1.hpoperatingmode,heatpump operating mode,enum [off\|auto\|heating\|cooling] (>=0<=0), ,true,select.thermostat_hc1_heatpump_operating_mode,select.thermostat_hc1_hpoperatingmode,6,1,1,21,1
"Rego 2000/3000",thermostat,172,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1
"Rego 2000/3000",thermostat,172,hc1.hpoperatingstate,heatpump operating state,enum [heating\|off\|cooling], ,false,sensor.thermostat_hc1_heatpump_operating_state,sensor.thermostat_hc1_hpoperatingstate,6,1,1,23,1
"Rego 2000/3000",thermostat,172,hc1.vacationmode,vacation mode,boolean, ,false,binary_sensor.thermostat_hc1_vacation_mode,binary_sensor.thermostat_hc1_vacationmode,6,1,1,24,1
-"Rego 2000/3000",thermostat,172,hc1.controlmode,control mode,enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
-"Rego 2000/3000",thermostat,172,hc1.program,program,enum [prog 1\|prog 2], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
+"Rego 2000/3000",thermostat,172,hc1.controlmode,control mode,enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
+"Rego 2000/3000",thermostat,172,hc1.program,program,enum [prog 1\|prog 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
"Rego 2000/3000",thermostat,172,hc1.tempautotemp,temporary set temperature automode,int8 (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1
"Rego 2000/3000",thermostat,172,hc1.cooltemp,cooling temperature,int8 (>=-1<=30),C,true,number.thermostat_hc1_cooling_temperature,number.thermostat_hc1_cooltemp,6,1,1/2,28,1
-"Rego 2000/3000",thermostat,172,hc1.fastheatup,fast heatup,uint8 (>=0<=100),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,29,1
-"Rego 2000/3000",thermostat,172,hc1.switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
-"Rego 2000/3000",thermostat,172,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce], ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,31,1
-"Rego 2000/3000",thermostat,172,hc1.noreducetemp,no reduce below temperature,int8 (>=-126<=126),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,32,1
-"Rego 2000/3000",thermostat,172,hc1.reducetemp,off/reduce switch temperature,int8 (>=-126<=126),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,33,1
-"Rego 2000/3000",thermostat,172,hc1.dhwprio,dhw priority,boolean, ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,34,1
-"Rego 2000/3000",thermostat,172,hc1.hpcooling,hp cooling,boolean, ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,35,1
+"Rego 2000/3000",thermostat,172,hc1.fastheatup,fast heatup,uint8 (>=0<=0),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,29,1
+"Rego 2000/3000",thermostat,172,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
+"Rego 2000/3000",thermostat,172,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,31,1
+"Rego 2000/3000",thermostat,172,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,32,1
+"Rego 2000/3000",thermostat,172,hc1.reducetemp,off/reduce switch temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,33,1
+"Rego 2000/3000",thermostat,172,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,34,1
+"Rego 2000/3000",thermostat,172,hc1.hpcooling,hp cooling,boolean (>=0<=0), ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,35,1
"Rego 2000/3000",thermostat,172,hc1.coolingon,cooling on,boolean, ,false,binary_sensor.thermostat_hc1_cooling_on,binary_sensor.thermostat_hc1_coolingon,6,1,1,36,1
-"Rego 2000/3000",thermostat,172,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling], ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,37,1
+"Rego 2000/3000",thermostat,172,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling] (>=0<=0), ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,37,1
"Rego 2000/3000",thermostat,172,hc1.dewoffset,dew point offset,uint8 (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset,6,1,1,38,1
-"Rego 2000/3000",thermostat,172,hc1.roomtempdiff,room temp difference,uint8 (>=0<=254),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,39,1
-"Rego 2000/3000",thermostat,172,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=254),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,40,1
-"Rego 2000/3000",thermostat,172,hc1.control,control device,enum [RC310\|RC200\|RC100\|RC100H\|TC100], ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
+"Rego 2000/3000",thermostat,172,hc1.roomtempdiff,room temp difference,uint8 (>=0<=0),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,39,1
+"Rego 2000/3000",thermostat,172,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=0),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,40,1
+"Rego 2000/3000",thermostat,172,hc1.control,control device,enum [RC310\|RC200\|RC100\|RC100H\|TC100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
"Rego 2000/3000",thermostat,172,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1
"Rego 2000/3000",thermostat,172,hc1.remotehum,room humidity from remote,cmd [] (>=-1<=101),%,true,sensor.thermostat_hc1_room_humidity_from_remote,sensor.thermostat_hc1_remotehum,6,1,1,43,1
"Rego 2000/3000",thermostat,172,hc1.heatondelay,heat-on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-on_delay,number.thermostat_hc1_heatondelay,6,1,1,44,1
"Rego 2000/3000",thermostat,172,hc1.heatoffdelay,heat-off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-off_delay,number.thermostat_hc1_heatoffdelay,6,1,1,45,1
"Rego 2000/3000",thermostat,172,hc1.instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_hc1_instant_start,number.thermostat_hc1_instantstart,6,1,1,46,1
-"Rego 2000/3000",thermostat,172,hc1.boost,boost mode,boolean, ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,47,1
-"Rego 2000/3000",thermostat,172,hc1.boosttime,boost time,uint8 (>=0<=254),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,48,1
+"Rego 2000/3000",thermostat,172,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,47,1
+"Rego 2000/3000",thermostat,172,hc1.boosttime,boost time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,48,1
"Rego 2000/3000",thermostat,172,hc1.coolstart,cooling starttemp,uint8 (>=20<=35),C,true,number.thermostat_hc1_cooling_starttemp,number.thermostat_hc1_coolstart,6,1,1,49,1
"Rego 2000/3000",thermostat,172,hc1.coolondelay,cooling on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_on_delay,number.thermostat_hc1_coolondelay,6,1,1,50,1
"Rego 2000/3000",thermostat,172,hc1.cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,51,1
-"Rego 2000/3000",thermostat,172,hc1.switchprogmode,switch program mode,enum [level\|absolute], ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,52,1
+"Rego 2000/3000",thermostat,172,hc1.switchprogmode,switch program mode,enum [level\|absolute] (>=0<=0), ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,52,1
"Rego 2000/3000",thermostat,172,hc1.redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,53,1
"Rego 2000/3000",thermostat,172,hc1.solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,54,1
-"Rego 2000/3000",thermostat,172,hc1.currsolarinfl,current solar influence,uint8 (>=0<=25),C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,55,1
-"Rego 2000/3000",thermostat,172,hc1.heatingpid,heating PID,enum [fast\|medium\|slow], ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,56,1
-"Rego 2000/3000",thermostat,172,hc1.pumpopt,pump optimization,boolean, ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,57,1
+"Rego 2000/3000",thermostat,172,hc1.currsolarinfl,current solar influence,uint8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,55,1
+"Rego 2000/3000",thermostat,172,hc1.heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,56,1
+"Rego 2000/3000",thermostat,172,hc1.pumpopt,pump optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,57,1
"Rego 2000/3000",thermostat,172,hc1.inttimefloor,integral time floor,uint8 (>=160<=320),minutes,true,number.thermostat_hc1_integral_time_floor,number.thermostat_hc1_inttimefloor,6,1,10,58,1
"Rego 2000/3000",thermostat,172,hc1.inttime,integral time,uint8 (>=3<=80),minutes,true,number.thermostat_hc1_integral_time,number.thermostat_hc1_inttime,6,1,1,59,1
-"Rego 2000/3000",thermostat,172,dhw.mode,operating mode,enum [normal\|comfort\|eco+], ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
+"Rego 2000/3000",thermostat,172,dhw.mode,operating mode,enum [normal\|comfort\|eco+] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
"Rego 2000/3000",thermostat,172,dhw.modetype,mode type,enum [off\|eco\|comfort\|eco+], ,false,sensor.thermostat_dhw_mode_type,sensor.thermostat_dhw_modetype,6,9,1,1,1
-"Rego 2000/3000",thermostat,172,dhw.settemp,set temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,2,1
-"Rego 2000/3000",thermostat,172,dhw.settemplow,set low temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_low_temperature,number.thermostat_dhw_settemplow,6,9,1,3,1
-"Rego 2000/3000",thermostat,172,dhw.circmode,circulation pump mode,enum [off\|on\|auto\|own prog], ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,6,9,1,4,1
-"Rego 2000/3000",thermostat,172,dhw.chargeduration,charge duration,uint8 (>=0<=3810),minutes,true,number.thermostat_dhw_charge_duration,number.thermostat_dhw_chargeduration,6,9,15,5,1
-"Rego 2000/3000",thermostat,172,dhw.charge,charge,boolean, ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
+"Rego 2000/3000",thermostat,172,dhw.settemp,set temperature,uint8 (>=0<=0),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,2,1
+"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,6,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,6,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,6,9,15,5,1
+"Rego 2000/3000",thermostat,172,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
"Rego 2000/3000",thermostat,172,dhw.extra,extra,boolean, ,false,binary_sensor.thermostat_dhw_extra,binary_sensor.thermostat_dhw_extra,6,9,1,7,1
-"Rego 2000/3000",thermostat,172,dhw.disinfecting,disinfecting,boolean, ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,6,9,1,8,1
-"Rego 2000/3000",thermostat,172,dhw.disinfectday,disinfection day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all], ,true,select.thermostat_dhw_disinfection_day,select.thermostat_dhw_disinfectday,6,9,1,9,1
+"Rego 2000/3000",thermostat,172,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,6,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,6,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,6,9,15,10,1
-"Rego 2000/3000",thermostat,172,dhw.dailyheating,daily heating,boolean, ,true,switch.thermostat_dhw_daily_heating,switch.thermostat_dhw_dailyheating,6,9,1,11,1
+"Rego 2000/3000",thermostat,172,dhw.dailyheating,daily heating,boolean (>=0<=0), ,true,switch.thermostat_dhw_daily_heating,switch.thermostat_dhw_dailyheating,6,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,6,9,15,12,1
"Comfort RF",thermostat,215,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"Comfort RF",thermostat,215,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
"Comfort RF",thermostat,215,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"Comfort RF",thermostat,215,hc1.seltemp,selected room temperature,int16 (>=-15999<=15999),C,false,sensor.thermostat_hc1_selected_room_temperature,sensor.thermostat_hc1_seltemp,6,1,1/2,0,1
-"Comfort RF",thermostat,215,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"Comfort RF",thermostat,215,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
+"Comfort RF",thermostat,215,hc1.seltemp,selected room temperature,int16,C,false,sensor.thermostat_hc1_selected_room_temperature,sensor.thermostat_hc1_seltemp,6,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,6,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,6,1,1,2,1
"Comfort RF",thermostat,215,hc1.mode,operating mode,enum [auto\|off], ,false,sensor.thermostat_hc1_operating_mode,sensor.thermostat_hc1_mode,6,1,1,3,1
"Comfort RF",thermostat,215,hc1.modetype,mode type,enum [off\|on], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1
-"Comfort RF",thermostat,215,hc1.targetflowtemp,target flow temperature,uint8 (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
+"Comfort RF",thermostat,215,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
"CRF200S",thermostat,216,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"CRF200S",thermostat,216,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
"CRF200S",thermostat,216,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"CRF200S",thermostat,216,hc1.seltemp,selected room temperature,int16 (>=-15999<=15999),C,false,sensor.thermostat_hc1_selected_room_temperature,sensor.thermostat_hc1_seltemp,6,1,1/2,0,1
-"CRF200S",thermostat,216,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"CRF200S",thermostat,216,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
+"CRF200S",thermostat,216,hc1.seltemp,selected room temperature,int16,C,false,sensor.thermostat_hc1_selected_room_temperature,sensor.thermostat_hc1_seltemp,6,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,6,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,6,1,1,2,1
"CRF200S",thermostat,216,hc1.mode,operating mode,enum [auto\|off], ,false,sensor.thermostat_hc1_operating_mode,sensor.thermostat_hc1_mode,6,1,1,3,1
"CRF200S",thermostat,216,hc1.modetype,mode type,enum [off\|on], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1
-"CRF200S",thermostat,216,hc1.targetflowtemp,target flow temperature,uint8 (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
+"CRF200S",thermostat,216,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
"Comfort+2RF",thermostat,246,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"Comfort+2RF",thermostat,246,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
"Comfort+2RF",thermostat,246,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"Comfort+2RF",thermostat,246,hc1.seltemp,selected room temperature,int16 (>=-15999<=15999),C,false,sensor.thermostat_hc1_selected_room_temperature,sensor.thermostat_hc1_seltemp,6,1,1/2,0,1
-"Comfort+2RF",thermostat,246,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"Comfort+2RF",thermostat,246,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
+"Comfort+2RF",thermostat,246,hc1.seltemp,selected room temperature,int16,C,false,sensor.thermostat_hc1_selected_room_temperature,sensor.thermostat_hc1_seltemp,6,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,6,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,6,1,1,2,1
"Comfort+2RF",thermostat,246,hc1.mode,operating mode,enum [auto\|off], ,false,sensor.thermostat_hc1_operating_mode,sensor.thermostat_hc1_mode,6,1,1,3,1
"Comfort+2RF",thermostat,246,hc1.modetype,mode type,enum [off\|on], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1
-"Comfort+2RF",thermostat,246,hc1.targetflowtemp,target flow temperature,uint8 (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
+"Comfort+2RF",thermostat,246,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
"Rego 3000, UI800, Logamatic BC400",thermostat,253,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"Rego 3000, UI800, Logamatic BC400",thermostat,253,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,datetime,date/time,string, ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,intoffset,internal temperature offset,int8 (>=-12<=12),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,6,0,1/10,46,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,intoffset,internal temperature offset,int8 (>=0<=0),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,6,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,6,0,1,47,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,dampedoutdoortemp,damped outdoor temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp,6,0,1/10,48,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,floordrytemp,floor drying temperature,uint8 (>=0<=254),C,false,sensor.thermostat_floor_drying_temperature,sensor.thermostat_floordrytemp,6,0,1,49,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,building,building type,enum [light\|medium\|heavy], ,true,select.thermostat_building_type,select.thermostat_building,6,0,1,50,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,minexttemp,minimal external temperature,int8 (>=-126<=126),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,0,1,51,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,damping,damping outdoor temperature,boolean, ,true,switch.thermostat_damping_outdoor_temperature,switch.thermostat_damping,6,0,1,52,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,solar,solar,boolean, ,true,switch.thermostat_solar,switch.thermostat_solar,6,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], ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,dampedoutdoortemp,damped outdoor temperature,int16,C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp,6,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,6,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,6,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,6,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,6,0,1,52,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,solar,solar,boolean (>=0<=0), ,true,switch.thermostat_solar,switch.thermostat_solar,6,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,6,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,6,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,6,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,6,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,6,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,6,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,6,0,1,60,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,pvenabledhw,enable raise dhw,boolean, ,true,switch.thermostat_enable_raise_dhw,switch.thermostat_pvenabledhw,6,0,1,61,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,pvenabledhw,enable raise dhw,boolean (>=0<=0), ,true,switch.thermostat_enable_raise_dhw,switch.thermostat_pvenabledhw,6,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,6,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,6,0,1,63,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,absent,absent,boolean, ,true,switch.thermostat_absent,switch.thermostat_absent,6,0,1,64,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,absent,absent,boolean (>=0<=0), ,true,switch.thermostat_absent,switch.thermostat_absent,6,0,1,64,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,6,1,1/2,0,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.mode,operating mode,enum [off\|manual\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,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,6,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,6,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,6,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,6,1,1,4,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.ecotemp,eco temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.manualtemp,manual temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp,6,1,1/2,6,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.comforttemp,comfort temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_comfort_temperature,number.thermostat_hc1_comforttemp,6,1,1/2,7,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,6,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,6,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,6,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,6,1,1,8,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.designtemp,design temperature,uint8 (>=0<=254),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.offsettemp,offset temperature,int8 (>=-126<=126),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp,6,1,1,10,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.minflowtemp,min flow temperature,uint8 (>=0<=254),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=254),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.roominfluence,room influence,uint8 (>=0<=254),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,13,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.roominflfactor,room influence factor,uint8 (>=0<=25), ,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,1/10,14,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.curroominfl,current room influence,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_influence,sensor.thermostat_hc1_curroominfl,6,1,1/10,15,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.nofrostmode,nofrost mode,enum [room\|outdoor\|room outdoor], ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.nofrosttemp,nofrost temperature,int8 (>=-126<=126),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,17,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.targetflowtemp,target flow temperature,uint8 (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.summersetmode,set summer mode,enum [summer\|auto\|winter], ,true,select.thermostat_hc1_set_summer_mode,select.thermostat_hc1_summersetmode,6,1,1,20,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.hpoperatingmode,heatpump operating mode,enum [off\|auto\|heating\|cooling], ,true,select.thermostat_hc1_heatpump_operating_mode,select.thermostat_hc1_hpoperatingmode,6,1,1,21,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.designtemp,design temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.offsettemp,offset temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp,6,1,1,10,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.roominfluence,room influence,uint8 (>=0<=0),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,13,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.roominflfactor,room influence factor,uint8 (>=0<=0), ,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,1/10,14,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.curroominfl,current room influence,int16,C,false,sensor.thermostat_hc1_current_room_influence,sensor.thermostat_hc1_curroominfl,6,1,1/10,15,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.nofrostmode,nofrost mode,enum [room\|outdoor\|room outdoor] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,17,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.summersetmode,set summer mode,enum [summer\|auto\|winter] (>=0<=0), ,true,select.thermostat_hc1_set_summer_mode,select.thermostat_hc1_summersetmode,6,1,1,20,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.hpoperatingmode,heatpump operating mode,enum [off\|auto\|heating\|cooling] (>=0<=0), ,true,select.thermostat_hc1_heatpump_operating_mode,select.thermostat_hc1_hpoperatingmode,6,1,1,21,1
"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1
"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.hpoperatingstate,heatpump operating state,enum [heating\|off\|cooling], ,false,sensor.thermostat_hc1_heatpump_operating_state,sensor.thermostat_hc1_hpoperatingstate,6,1,1,23,1
"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.vacationmode,vacation mode,boolean, ,false,binary_sensor.thermostat_hc1_vacation_mode,binary_sensor.thermostat_hc1_vacationmode,6,1,1,24,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.controlmode,control mode,enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.program,program,enum [prog 1\|prog 2], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.controlmode,control mode,enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.program,program,enum [prog 1\|prog 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.tempautotemp,temporary set temperature automode,int8 (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1
"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.cooltemp,cooling temperature,int8 (>=-1<=30),C,true,number.thermostat_hc1_cooling_temperature,number.thermostat_hc1_cooltemp,6,1,1/2,28,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.fastheatup,fast heatup,uint8 (>=0<=100),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,29,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce], ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,31,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.noreducetemp,no reduce below temperature,int8 (>=-126<=126),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,32,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.reducetemp,off/reduce switch temperature,int8 (>=-126<=126),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,33,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.dhwprio,dhw priority,boolean, ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,34,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.hpcooling,hp cooling,boolean, ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,35,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.fastheatup,fast heatup,uint8 (>=0<=0),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup,6,1,1,29,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.reducemode,reduce mode,enum [outdoor\|room\|reduce] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,31,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.noreducetemp,no reduce below temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,32,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.reducetemp,off/reduce switch temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,33,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,34,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.hpcooling,hp cooling,boolean (>=0<=0), ,true,switch.thermostat_hc1_hp_cooling,switch.thermostat_hc1_hpcooling,6,1,1,35,1
"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.coolingon,cooling on,boolean, ,false,binary_sensor.thermostat_hc1_cooling_on,binary_sensor.thermostat_hc1_coolingon,6,1,1,36,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling], ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,37,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.hpmode,HP Mode,enum [heating\|cooling\|heating & cooling] (>=0<=0), ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode,6,1,1,37,1
"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.dewoffset,dew point offset,uint8 (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset,6,1,1,38,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.roomtempdiff,room temp difference,uint8 (>=0<=254),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,39,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=254),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,40,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.control,control device,enum [off\|-\|RC100\|RC100H\|-\|RC120RF\|RC220/RT800\|single], ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.roomtempdiff,room temp difference,uint8 (>=0<=0),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff,6,1,1,39,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.hpminflowtemp,HP min. flow temp.,uint8 (>=0<=0),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp,6,1,1,40,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.control,control device,enum [off\|-\|RC100\|RC100H\|-\|RC120RF\|RC220/RT800\|single] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1
"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.remotehum,room humidity from remote,cmd [] (>=-1<=101),%,true,sensor.thermostat_hc1_room_humidity_from_remote,sensor.thermostat_hc1_remotehum,6,1,1,43,1
"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.heatondelay,heat-on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-on_delay,number.thermostat_hc1_heatondelay,6,1,1,44,1
"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.heatoffdelay,heat-off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_heat-off_delay,number.thermostat_hc1_heatoffdelay,6,1,1,45,1
"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.instantstart,instant start,uint8 (>=1<=10),K,true,number.thermostat_hc1_instant_start,number.thermostat_hc1_instantstart,6,1,1,46,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.boost,boost mode,boolean, ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,47,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.boosttime,boost time,uint8 (>=0<=254),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,48,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.boost,boost mode,boolean (>=0<=0), ,true,switch.thermostat_hc1_boost_mode,switch.thermostat_hc1_boost,6,1,1,47,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.boosttime,boost time,uint8 (>=0<=0),hours,true,number.thermostat_hc1_boost_time,number.thermostat_hc1_boosttime,6,1,1,48,1
"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.coolstart,cooling starttemp,uint8 (>=20<=35),C,true,number.thermostat_hc1_cooling_starttemp,number.thermostat_hc1_coolstart,6,1,1,49,1
"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.coolondelay,cooling on delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_on_delay,number.thermostat_hc1_coolondelay,6,1,1,50,1
"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,51,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.switchprogmode,switch program mode,enum [level\|absolute], ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,52,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.switchprogmode,switch program mode,enum [level\|absolute] (>=0<=0), ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,52,1
"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,53,1
"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,54,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.currsolarinfl,current solar influence,uint8 (>=0<=25),C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,55,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.heatingpid,heating PID,enum [fast\|medium\|slow], ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,56,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.pumpopt,pump optimization,boolean, ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,57,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.currsolarinfl,current solar influence,uint8,C,false,sensor.thermostat_hc1_current_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,55,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.heatingpid,heating PID,enum [fast\|medium\|slow] (>=0<=0), ,true,select.thermostat_hc1_heating_PID,select.thermostat_hc1_heatingpid,6,1,1,56,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.pumpopt,pump optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_pump_optimization,switch.thermostat_hc1_pumpopt,6,1,1,57,1
"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.inttimefloor,integral time floor,uint8 (>=160<=320),minutes,true,number.thermostat_hc1_integral_time_floor,number.thermostat_hc1_inttimefloor,6,1,10,58,1
"Rego 3000, UI800, Logamatic BC400",thermostat,253,hc1.inttime,integral time,uint8 (>=3<=80),minutes,true,number.thermostat_hc1_integral_time,number.thermostat_hc1_inttime,6,1,1,59,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.mode,operating mode,enum [off\|eco+\|eco\|comfort\|auto], ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.mode,operating mode,enum [off\|eco+\|eco\|comfort\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
"Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.modetype,mode type,enum [off\|eco\|comfort\|eco+], ,false,sensor.thermostat_dhw_mode_type,sensor.thermostat_dhw_modetype,6,9,1,1,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.settemp,set temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,2,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.settemplow,set low temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_low_temperature,number.thermostat_dhw_settemplow,6,9,1,3,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.circmode,circulation pump mode,enum [off\|on\|auto\|own prog], ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,6,9,1,4,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.chargeduration,charge duration,uint8 (>=0<=3810),minutes,true,number.thermostat_dhw_charge_duration,number.thermostat_dhw_chargeduration,6,9,15,5,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.charge,charge,boolean, ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.settemp,set temperature,uint8 (>=0<=0),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,2,1
+"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,6,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,6,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,6,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,6,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,6,9,1,7,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.disinfecting,disinfecting,boolean, ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,6,9,1,8,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.disinfectday,disinfection day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all], ,true,select.thermostat_dhw_disinfection_day,select.thermostat_dhw_disinfectday,6,9,1,9,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,6,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,6,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,6,9,15,10,1
-"Rego 3000, UI800, Logamatic BC400",thermostat,253,dhw.dailyheating,daily heating,boolean, ,true,switch.thermostat_dhw_daily_heating,switch.thermostat_dhw_dailyheating,6,9,1,11,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,6,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,6,9,15,12,1
"ES72, RC20",thermostat,66,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"ES72, RC20",thermostat,66,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
"ES72, RC20",thermostat,66,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"ES72, RC20",thermostat,66,minexttemp,minimal external temperature,int8 (>=-126<=126),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,0,1,51,1
+"ES72, RC20",thermostat,66,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,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,6,1,1/2,0,1
-"ES72, RC20",thermostat,66,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"ES72, RC20",thermostat,66,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"ES72, RC20",thermostat,66,hc1.mode,operating mode,enum [night\|day\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"ES72, RC20",thermostat,66,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,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,6,1,1,2,1
+"ES72, RC20",thermostat,66,hc1.mode,operating mode,enum [night\|day\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
"ES72, RC20",thermostat,66,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1
-"ES72, RC20",thermostat,66,hc1.daytemp,day temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1
-"ES72, RC20",thermostat,66,hc1.nighttemp,night temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1
-"ES72, RC20",thermostat,66,hc1.program,program,enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
-"ES72, RC20",thermostat,66,hc1.minflowtemp,min flow temperature,uint8 (>=0<=254),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
-"ES72, RC20",thermostat,66,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=254),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
-"ES72, RC20",thermostat,66,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=127),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1
-"ES72, RC20",thermostat,66,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
+"ES72, RC20",thermostat,66,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1
+"ES72, RC20",thermostat,66,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1
+"ES72, RC20",thermostat,66,hc1.program,program,enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
+"ES72, RC20",thermostat,66,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
+"ES72, RC20",thermostat,66,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
+"ES72, RC20",thermostat,66,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=0),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1
+"ES72, RC20",thermostat,66,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
"ES72, RC20",thermostat,66,hc1.summertemp,summer temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1,8,1
"ES72, RC20",thermostat,66,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1
"ES73",thermostat,76,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"ES73",thermostat,76,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
"ES73",thermostat,76,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"ES73",thermostat,76,display,display,enum [internal temperature\|internal setpoint\|external temperature\|burner temperature\|dhw temperature\|functioning mode\|time\|date\|smoke temperature], ,true,select.thermostat_display,select.thermostat_display,6,0,1,65,1
+"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,6,0,1,65,1
"ES73",thermostat,76,language,language,enum [german\|dutch\|french\|italian], ,false,sensor.thermostat_language,sensor.thermostat_language,6,0,1,66,1
-"ES73",thermostat,76,clockoffset,clock offset,int8 (>=-126<=126),seconds,true,number.thermostat_clock_offset,number.thermostat_clockoffset,6,0,1,67,1
-"ES73",thermostat,76,intoffset,internal temperature offset,int8 (>=-12<=12),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,6,0,1/10,46,1
-"ES73",thermostat,76,minexttemp,minimal external temperature,int8 (>=-126<=126),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,0,1,51,1
-"ES73",thermostat,76,inttemp1,temperature sensor 1,int16 (>=-3199<=3199),C,false,sensor.thermostat_temperature_sensor_1,sensor.thermostat_inttemp1,6,0,1/10,68,1
-"ES73",thermostat,76,inttemp2,temperature sensor 2,int16 (>=-3199<=3199),C,false,sensor.thermostat_temperature_sensor_2,sensor.thermostat_inttemp2,6,0,1/10,69,1
-"ES73",thermostat,76,damping,damping outdoor temperature,boolean, ,true,switch.thermostat_damping_outdoor_temperature,switch.thermostat_damping,6,0,1,52,1
-"ES73",thermostat,76,dampedoutdoortemp,damped outdoor temperature,int8 (>=-126<=126),C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp,6,0,1,48,1
-"ES73",thermostat,76,building,building type,enum [light\|medium\|heavy], ,true,select.thermostat_building_type,select.thermostat_building,6,0,1,50,1
+"ES73",thermostat,76,clockoffset,clock offset,int8 (>=0<=0),seconds,true,number.thermostat_clock_offset,number.thermostat_clockoffset,6,0,1,67,1
+"ES73",thermostat,76,intoffset,internal temperature offset,int8 (>=0<=0),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,6,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,6,0,1,51,1
+"ES73",thermostat,76,inttemp1,temperature sensor 1,int16,C,false,sensor.thermostat_temperature_sensor_1,sensor.thermostat_inttemp1,6,0,1/10,68,1
+"ES73",thermostat,76,inttemp2,temperature sensor 2,int16,C,false,sensor.thermostat_temperature_sensor_2,sensor.thermostat_inttemp2,6,0,1/10,69,1
+"ES73",thermostat,76,damping,damping outdoor temperature,boolean (>=0<=0), ,true,switch.thermostat_damping_outdoor_temperature,switch.thermostat_damping,6,0,1,52,1
+"ES73",thermostat,76,dampedoutdoortemp,damped outdoor temperature,int8,C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp,6,0,1,48,1
+"ES73",thermostat,76,building,building type,enum [light\|medium\|heavy] (>=0<=0), ,true,select.thermostat_building_type,select.thermostat_building,6,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,6,1,1/2,0,1
-"ES73",thermostat,76,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"ES73",thermostat,76,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"ES73",thermostat,76,hc1.mode,operating mode,enum [night\|day\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"ES73",thermostat,76,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,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,6,1,1,2,1
+"ES73",thermostat,76,hc1.mode,operating mode,enum [night\|day\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
"ES73",thermostat,76,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1
"ES73",thermostat,76,hc1.daytemp,day temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1
"ES73",thermostat,76,hc1.nighttemp,night temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1
"ES73",thermostat,76,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1
"ES73",thermostat,76,hc1.offsettemp,offset temperature,int8 (>=-5<=5),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp,6,1,1/2,10,1
"ES73",thermostat,76,hc1.holidaytemp,holiday temperature,uint8 (>=5<=30),C,true,number.thermostat_hc1_holiday_temperature,number.thermostat_hc1_holidaytemp,6,1,1/2,62,1
-"ES73",thermostat,76,hc1.targetflowtemp,target flow temperature,uint8 (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
+"ES73",thermostat,76,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
"ES73",thermostat,76,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1,8,1
"ES73",thermostat,76,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1
"ES73",thermostat,76,hc1.holidaymode,holiday mode,boolean, ,false,binary_sensor.thermostat_hc1_holiday_mode,binary_sensor.thermostat_hc1_holidaymode,6,1,1,63,1
"ES73",thermostat,76,hc1.nofrosttemp,nofrost temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,17,1
-"ES73",thermostat,76,hc1.nofrostmode,nofrost mode,enum [off\|outdoor\|room], ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1
+"ES73",thermostat,76,hc1.nofrostmode,nofrost mode,enum [off\|outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1
"ES73",thermostat,76,hc1.roominfluence,room influence,uint8 (>=0<=10),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,13,1
"ES73",thermostat,76,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
"ES73",thermostat,76,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
"ES73",thermostat,76,hc1.flowtempoffset,flow temperature offset for mixer,uint8 (>=0<=20),C,true,number.thermostat_hc1_flow_temperature_offset_for_mixer,number.thermostat_hc1_flowtempoffset,6,1,1,64,1
-"ES73",thermostat,76,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
-"ES73",thermostat,76,hc1.reducemode,reduce mode,enum [nofrost\|reduce\|room\|outdoor], ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,31,1
-"ES73",thermostat,76,hc1.controlmode,control mode,enum [outdoor\|room], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
-"ES73",thermostat,76,hc1.control,control device,enum [off\|RC20\|RC3x], ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
-"ES73",thermostat,76,hc1.holidays,holiday dates,string, ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,6,1,1,65,13
-"ES73",thermostat,76,hc1.vacations,vacation dates,string, ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,6,1,1,78,13
-"ES73",thermostat,76,hc1.program,program,enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
+"ES73",thermostat,76,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
+"ES73",thermostat,76,hc1.reducemode,reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,31,1
+"ES73",thermostat,76,hc1.controlmode,control mode,enum [outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
+"ES73",thermostat,76,hc1.control,control device,enum [off\|RC20\|RC3x] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
+"ES73",thermostat,76,hc1.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,6,1,1,65,13
+"ES73",thermostat,76,hc1.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,6,1,1,78,13
+"ES73",thermostat,76,hc1.program,program,enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
"ES73",thermostat,76,hc1.pause,pause time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_pause_time,number.thermostat_hc1_pause,6,1,1,91,1
"ES73",thermostat,76,hc1.party,party time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_party_time,number.thermostat_hc1_party,6,1,1,92,1
"ES73",thermostat,76,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1
"ES73",thermostat,76,hc1.noreducetemp,no reduce below temperature,int8 (>=-31<=10),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,32,1
"ES73",thermostat,76,hc1.reducetemp,off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,33,1
"ES73",thermostat,76,hc1.vacreducetemp,vacations off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_vacations_off/reduce_switch_temperature,number.thermostat_hc1_vacreducetemp,6,1,1,93,1
-"ES73",thermostat,76,hc1.vacreducemode,vacations reduce mode,enum [nofrost\|reduce\|room\|outdoor], ,true,select.thermostat_hc1_vacations_reduce_mode,select.thermostat_hc1_vacreducemode,6,1,1,94,1
+"ES73",thermostat,76,hc1.vacreducemode,vacations reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_vacations_reduce_mode,select.thermostat_hc1_vacreducemode,6,1,1,94,1
"ES73",thermostat,76,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1
-"ES73",thermostat,76,hc1.dhwprio,dhw priority,boolean, ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,34,1
-"ES73",thermostat,76,hc1.switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
-"ES73",thermostat,76,hc1.switchtime1,own1 program switchtime,string, ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,95,8
-"ES73",thermostat,76,hc1.switchtime2,own2 program switchtime,string, ,true,sensor.thermostat_hc1_own2_program_switchtime,sensor.thermostat_hc1_switchtime2,6,1,1,103,8
-"ES73",thermostat,76,dhw.mode,operating mode,enum [off\|on\|auto], ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
-"ES73",thermostat,76,dhw.circmode,circulation pump mode,enum [off\|on\|auto], ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,6,9,1,4,1
-"ES73",thermostat,76,dhw.progmode,program,enum [std prog\|own prog], ,true,select.thermostat_dhw_program,select.thermostat_dhw_progmode,6,9,1,13,1
-"ES73",thermostat,76,dhw.circprog,circulation program,enum [std prog\|own prog], ,true,select.thermostat_dhw_circulation_program,select.thermostat_dhw_circprog,6,9,1,14,1
-"ES73",thermostat,76,dhw.disinfecting,disinfecting,boolean, ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,6,9,1,8,1
-"ES73",thermostat,76,dhw.disinfectday,disinfection day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all], ,true,select.thermostat_dhw_disinfection_day,select.thermostat_dhw_disinfectday,6,9,1,9,1
+"ES73",thermostat,76,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,34,1
+"ES73",thermostat,76,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
+"ES73",thermostat,76,hc1.switchtime1,own1 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,95,8
+"ES73",thermostat,76,hc1.switchtime2,own2 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own2_program_switchtime,sensor.thermostat_hc1_switchtime2,6,1,1,103,8
+"ES73",thermostat,76,dhw.mode,operating mode,enum [off\|on\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
+"ES73",thermostat,76,dhw.circmode,circulation pump mode,enum [off\|on\|auto] (>=0<=0), ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,6,9,1,4,1
+"ES73",thermostat,76,dhw.progmode,program,enum [std prog\|own prog] (>=0<=0), ,true,select.thermostat_dhw_program,select.thermostat_dhw_progmode,6,9,1,13,1
+"ES73",thermostat,76,dhw.circprog,circulation program,enum [std prog\|own prog] (>=0<=0), ,true,select.thermostat_dhw_circulation_program,select.thermostat_dhw_circprog,6,9,1,14,1
+"ES73",thermostat,76,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,6,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,6,9,1,9,1
"ES73",thermostat,76,dhw.disinfecthour,disinfection hour,uint8 (>=0<=23), ,true,number.thermostat_dhw_disinfection_hour,number.thermostat_dhw_disinfecthour,6,9,1,15,1
-"ES73",thermostat,76,dhw.maxtemp,maximum temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_maximum_temperature,number.thermostat_dhw_maxtemp,6,9,1,16,1
-"ES73",thermostat,76,dhw.onetimekey,one time key function,boolean, ,true,switch.thermostat_dhw_one_time_key_function,switch.thermostat_dhw_onetimekey,6,9,1,17,1
-"ES73",thermostat,76,dhw.switchtime,program switchtime,string, ,true,sensor.thermostat_dhw_program_switchtime,sensor.thermostat_dhw_switchtime,6,9,1,18,8
-"ES73",thermostat,76,dhw.circswitchtime,circulation program switchtime,string, ,true,sensor.thermostat_dhw_circulation_program_switchtime,sensor.thermostat_dhw_circswitchtime,6,9,1,26,8
-"ES73",thermostat,76,dhw.holidays,holiday dates,string, ,true,sensor.thermostat_dhw_holiday_dates,sensor.thermostat_dhw_holidays,6,9,1,34,13
-"ES73",thermostat,76,dhw.vacations,vacation dates,string, ,true,sensor.thermostat_dhw_vacation_dates,sensor.thermostat_dhw_vacations,6,9,1,47,13
+"ES73",thermostat,76,dhw.maxtemp,maximum temperature,uint8 (>=0<=0),C,true,number.thermostat_dhw_maximum_temperature,number.thermostat_dhw_maxtemp,6,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,6,9,1,17,1
+"ES73",thermostat,76,dhw.switchtime,program switchtime,string (>=0<=0), ,true,sensor.thermostat_dhw_program_switchtime,sensor.thermostat_dhw_switchtime,6,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,6,9,1,26,8
+"ES73",thermostat,76,dhw.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_dhw_holiday_dates,sensor.thermostat_dhw_holidays,6,9,1,34,13
+"ES73",thermostat,76,dhw.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_dhw_vacation_dates,sensor.thermostat_dhw_vacations,6,9,1,47,13
"ES72, RC20",thermostat,113,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"ES72, RC20",thermostat,113,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
"ES72, RC20",thermostat,113,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"ES72, RC20",thermostat,113,minexttemp,minimal external temperature,int8 (>=-126<=126),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,0,1,51,1
+"ES72, RC20",thermostat,113,minexttemp,minimal external temperature,int8 (>=0<=0),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp,6,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,6,1,1/2,0,1
-"ES72, RC20",thermostat,113,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"ES72, RC20",thermostat,113,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"ES72, RC20",thermostat,113,hc1.mode,operating mode,enum [night\|day\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"ES72, RC20",thermostat,113,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,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,6,1,1,2,1
+"ES72, RC20",thermostat,113,hc1.mode,operating mode,enum [night\|day\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
"ES72, RC20",thermostat,113,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1
-"ES72, RC20",thermostat,113,hc1.daytemp,day temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1
-"ES72, RC20",thermostat,113,hc1.nighttemp,night temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1
-"ES72, RC20",thermostat,113,hc1.program,program,enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
-"ES72, RC20",thermostat,113,hc1.minflowtemp,min flow temperature,uint8 (>=0<=254),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
-"ES72, RC20",thermostat,113,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=254),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
-"ES72, RC20",thermostat,113,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=127),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1
-"ES72, RC20",thermostat,113,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
+"ES72, RC20",thermostat,113,hc1.daytemp,day temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1
+"ES72, RC20",thermostat,113,hc1.nighttemp,night temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1
+"ES72, RC20",thermostat,113,hc1.program,program,enum [family\|morning\|evening\|am\|pm\|midday\|singles\|seniors] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
+"ES72, RC20",thermostat,113,hc1.minflowtemp,min flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
+"ES72, RC20",thermostat,113,hc1.maxflowtemp,max flow temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
+"ES72, RC20",thermostat,113,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=0),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1
+"ES72, RC20",thermostat,113,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
"ES72, RC20",thermostat,113,hc1.summertemp,summer temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1,8,1
"ES72, RC20",thermostat,113,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1
"ES79",thermostat,156,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"ES79",thermostat,156,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
-"ES79",thermostat,156,datetime,date/time,string, ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
+"ES79",thermostat,156,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
"ES79",thermostat,156,intoffset,internal temperature offset,int8 (>=-5<=5),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset,6,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,6,0,1,51,1
-"ES79",thermostat,156,inttemp1,temperature sensor 1,int16 (>=-3199<=3199),C,false,sensor.thermostat_temperature_sensor_1,sensor.thermostat_inttemp1,6,0,1/10,68,1
-"ES79",thermostat,156,inttemp2,temperature sensor 2,int16 (>=-3199<=3199),C,false,sensor.thermostat_temperature_sensor_2,sensor.thermostat_inttemp2,6,0,1/10,69,1
-"ES79",thermostat,156,damping,damping outdoor temperature,boolean, ,true,switch.thermostat_damping_outdoor_temperature,switch.thermostat_damping,6,0,1,52,1
-"ES79",thermostat,156,dampedoutdoortemp,damped outdoor temperature,int8 (>=-126<=126),C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp,6,0,1,48,1
-"ES79",thermostat,156,building,building type,enum [light\|medium\|heavy], ,true,select.thermostat_building_type,select.thermostat_building,6,0,1,50,1
+"ES79",thermostat,156,inttemp1,temperature sensor 1,int16,C,false,sensor.thermostat_temperature_sensor_1,sensor.thermostat_inttemp1,6,0,1/10,68,1
+"ES79",thermostat,156,inttemp2,temperature sensor 2,int16,C,false,sensor.thermostat_temperature_sensor_2,sensor.thermostat_inttemp2,6,0,1/10,69,1
+"ES79",thermostat,156,damping,damping outdoor temperature,boolean (>=0<=0), ,true,switch.thermostat_damping_outdoor_temperature,switch.thermostat_damping,6,0,1,52,1
+"ES79",thermostat,156,dampedoutdoortemp,damped outdoor temperature,int8,C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp,6,0,1,48,1
+"ES79",thermostat,156,building,building type,enum [light\|medium\|heavy] (>=0<=0), ,true,select.thermostat_building_type,select.thermostat_building,6,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,6,1,1/2,0,1
-"ES79",thermostat,156,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"ES79",thermostat,156,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"ES79",thermostat,156,hc1.mode,operating mode,enum [night\|day\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"ES79",thermostat,156,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,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,6,1,1,2,1
+"ES79",thermostat,156,hc1.mode,operating mode,enum [night\|day\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
"ES79",thermostat,156,hc1.modetype,mode type,enum [night\|day], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1
"ES79",thermostat,156,hc1.daytemp,day temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_day_temperature,number.thermostat_hc1_daytemp,6,1,1/2,60,1
"ES79",thermostat,156,hc1.nighttemp,night temperature,uint8 (>=10<=30),C,true,number.thermostat_hc1_night_temperature,number.thermostat_hc1_nighttemp,6,1,1/2,61,1
"ES79",thermostat,156,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1
"ES79",thermostat,156,hc1.offsettemp,offset temperature,int8 (>=-5<=5),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp,6,1,1/2,10,1
"ES79",thermostat,156,hc1.holidaytemp,holiday temperature,uint8 (>=5<=30),C,true,number.thermostat_hc1_holiday_temperature,number.thermostat_hc1_holidaytemp,6,1,1/2,62,1
-"ES79",thermostat,156,hc1.targetflowtemp,target flow temperature,uint8 (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
+"ES79",thermostat,156,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
"ES79",thermostat,156,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1,8,1
"ES79",thermostat,156,hc1.summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode,6,1,1,22,1
"ES79",thermostat,156,hc1.holidaymode,holiday mode,boolean, ,false,binary_sensor.thermostat_hc1_holiday_mode,binary_sensor.thermostat_hc1_holidaymode,6,1,1,63,1
"ES79",thermostat,156,hc1.nofrosttemp,nofrost temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1,17,1
-"ES79",thermostat,156,hc1.nofrostmode,nofrost mode,enum [off\|outdoor\|room], ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1
+"ES79",thermostat,156,hc1.nofrostmode,nofrost mode,enum [off\|outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode,6,1,1,16,1
"ES79",thermostat,156,hc1.roominfluence,room influence,uint8 (>=0<=10),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence,6,1,1,13,1
"ES79",thermostat,156,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
"ES79",thermostat,156,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
"ES79",thermostat,156,hc1.flowtempoffset,flow temperature offset for mixer,uint8 (>=0<=20),C,true,number.thermostat_hc1_flow_temperature_offset_for_mixer,number.thermostat_hc1_flowtempoffset,6,1,1,64,1
-"ES79",thermostat,156,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
-"ES79",thermostat,156,hc1.reducemode,reduce mode,enum [nofrost\|reduce\|room\|outdoor], ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,31,1
-"ES79",thermostat,156,hc1.controlmode,control mode,enum [outdoor\|room], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
-"ES79",thermostat,156,hc1.control,control device,enum [off\|RC20\|RC3x], ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
-"ES79",thermostat,156,hc1.holidays,holiday dates,string, ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,6,1,1,65,13
-"ES79",thermostat,156,hc1.vacations,vacation dates,string, ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,6,1,1,78,13
-"ES79",thermostat,156,hc1.program,program,enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
+"ES79",thermostat,156,hc1.heatingtype,heating type,enum [off\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
+"ES79",thermostat,156,hc1.reducemode,reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode,6,1,1,31,1
+"ES79",thermostat,156,hc1.controlmode,control mode,enum [outdoor\|room] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
+"ES79",thermostat,156,hc1.control,control device,enum [off\|RC20\|RC3x] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
+"ES79",thermostat,156,hc1.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_hc1_holiday_dates,sensor.thermostat_hc1_holidays,6,1,1,65,13
+"ES79",thermostat,156,hc1.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_hc1_vacation_dates,sensor.thermostat_hc1_vacations,6,1,1,78,13
+"ES79",thermostat,156,hc1.program,program,enum [own 1\|family\|morning\|evening\|am\|pm\|midday\|singles\|seniors\|new\|own 2] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
"ES79",thermostat,156,hc1.pause,pause time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_pause_time,number.thermostat_hc1_pause,6,1,1,91,1
"ES79",thermostat,156,hc1.party,party time,uint8 (>=0<=99),hours,true,number.thermostat_hc1_party_time,number.thermostat_hc1_party,6,1,1,92,1
"ES79",thermostat,156,hc1.tempautotemp,temporary set temperature automode,uint8 (>=0<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp,6,1,1/2,27,1
"ES79",thermostat,156,hc1.noreducetemp,no reduce below temperature,int8 (>=-31<=10),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp,6,1,1,32,1
"ES79",thermostat,156,hc1.reducetemp,off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp,6,1,1,33,1
"ES79",thermostat,156,hc1.vacreducetemp,vacations off/reduce switch temperature,int8 (>=-20<=10),C,true,number.thermostat_hc1_vacations_off/reduce_switch_temperature,number.thermostat_hc1_vacreducetemp,6,1,1,93,1
-"ES79",thermostat,156,hc1.vacreducemode,vacations reduce mode,enum [nofrost\|reduce\|room\|outdoor], ,true,select.thermostat_hc1_vacations_reduce_mode,select.thermostat_hc1_vacreducemode,6,1,1,94,1
+"ES79",thermostat,156,hc1.vacreducemode,vacations reduce mode,enum [nofrost\|reduce\|room\|outdoor] (>=0<=0), ,true,select.thermostat_hc1_vacations_reduce_mode,select.thermostat_hc1_vacreducemode,6,1,1,94,1
"ES79",thermostat,156,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1
-"ES79",thermostat,156,hc1.dhwprio,dhw priority,boolean, ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,34,1
-"ES79",thermostat,156,hc1.switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
-"ES79",thermostat,156,hc1.switchtime1,own1 program switchtime,string, ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,95,8
-"ES79",thermostat,156,hc1.switchtime2,own2 program switchtime,string, ,true,sensor.thermostat_hc1_own2_program_switchtime,sensor.thermostat_hc1_switchtime2,6,1,1,103,8
-"ES79",thermostat,156,dhw.mode,operating mode,enum [off\|on\|auto], ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
-"ES79",thermostat,156,dhw.circmode,circulation pump mode,enum [off\|on\|auto], ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,6,9,1,4,1
-"ES79",thermostat,156,dhw.progmode,program,enum [std prog\|own prog], ,true,select.thermostat_dhw_program,select.thermostat_dhw_progmode,6,9,1,13,1
-"ES79",thermostat,156,dhw.circprog,circulation program,enum [std prog\|own prog], ,true,select.thermostat_dhw_circulation_program,select.thermostat_dhw_circprog,6,9,1,14,1
-"ES79",thermostat,156,dhw.disinfecting,disinfecting,boolean, ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,6,9,1,8,1
-"ES79",thermostat,156,dhw.disinfectday,disinfection day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all], ,true,select.thermostat_dhw_disinfection_day,select.thermostat_dhw_disinfectday,6,9,1,9,1
+"ES79",thermostat,156,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_dhwprio,6,1,1,34,1
+"ES79",thermostat,156,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
+"ES79",thermostat,156,hc1.switchtime1,own1 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1,6,1,1,95,8
+"ES79",thermostat,156,hc1.switchtime2,own2 program switchtime,string (>=0<=0), ,true,sensor.thermostat_hc1_own2_program_switchtime,sensor.thermostat_hc1_switchtime2,6,1,1,103,8
+"ES79",thermostat,156,dhw.mode,operating mode,enum [off\|on\|auto] (>=0<=0), ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
+"ES79",thermostat,156,dhw.circmode,circulation pump mode,enum [off\|on\|auto] (>=0<=0), ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,6,9,1,4,1
+"ES79",thermostat,156,dhw.progmode,program,enum [std prog\|own prog] (>=0<=0), ,true,select.thermostat_dhw_program,select.thermostat_dhw_progmode,6,9,1,13,1
+"ES79",thermostat,156,dhw.circprog,circulation program,enum [std prog\|own prog] (>=0<=0), ,true,select.thermostat_dhw_circulation_program,select.thermostat_dhw_circprog,6,9,1,14,1
+"ES79",thermostat,156,dhw.disinfecting,disinfecting,boolean (>=0<=0), ,true,switch.thermostat_dhw_disinfecting,switch.thermostat_dhw_disinfecting,6,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,6,9,1,9,1
"ES79",thermostat,156,dhw.disinfecthour,disinfection hour,uint8 (>=0<=23), ,true,number.thermostat_dhw_disinfection_hour,number.thermostat_dhw_disinfecthour,6,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,6,9,1,16,1
-"ES79",thermostat,156,dhw.onetimekey,one time key function,boolean, ,true,switch.thermostat_dhw_one_time_key_function,switch.thermostat_dhw_onetimekey,6,9,1,17,1
-"ES79",thermostat,156,dhw.switchtime,program switchtime,string, ,true,sensor.thermostat_dhw_program_switchtime,sensor.thermostat_dhw_switchtime,6,9,1,18,8
-"ES79",thermostat,156,dhw.circswitchtime,circulation program switchtime,string, ,true,sensor.thermostat_dhw_circulation_program_switchtime,sensor.thermostat_dhw_circswitchtime,6,9,1,26,8
-"ES79",thermostat,156,dhw.holidays,holiday dates,string, ,true,sensor.thermostat_dhw_holiday_dates,sensor.thermostat_dhw_holidays,6,9,1,34,13
-"ES79",thermostat,156,dhw.vacations,vacation dates,string, ,true,sensor.thermostat_dhw_vacation_dates,sensor.thermostat_dhw_vacations,6,9,1,47,13
+"ES79",thermostat,156,dhw.onetimekey,one time key function,boolean (>=0<=0), ,true,switch.thermostat_dhw_one_time_key_function,switch.thermostat_dhw_onetimekey,6,9,1,17,1
+"ES79",thermostat,156,dhw.switchtime,program switchtime,string (>=0<=0), ,true,sensor.thermostat_dhw_program_switchtime,sensor.thermostat_dhw_switchtime,6,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,6,9,1,26,8
+"ES79",thermostat,156,dhw.holidays,holiday dates,string (>=0<=0), ,true,sensor.thermostat_dhw_holiday_dates,sensor.thermostat_dhw_holidays,6,9,1,34,13
+"ES79",thermostat,156,dhw.vacations,vacation dates,string (>=0<=0), ,true,sensor.thermostat_dhw_vacation_dates,sensor.thermostat_dhw_vacations,6,9,1,47,13
"FW100",thermostat,105,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"FW100",thermostat,105,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
-"FW100",thermostat,105,datetime,date/time,string, ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"FW100",thermostat,105,display,display,enum [dhw temperature\|date\|external temperature], ,true,select.thermostat_display,select.thermostat_display,6,0,1,65,1
-"FW100",thermostat,105,language,language,enum [german\|italian\|french\|dutch], ,true,select.thermostat_language,select.thermostat_language,6,0,1,66,1
-"FW100",thermostat,105,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix], ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1
+"FW100",thermostat,105,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
+"FW100",thermostat,105,display,display,enum [dhw temperature\|date\|external temperature] (>=0<=0), ,true,select.thermostat_display,select.thermostat_display,6,0,1,65,1
+"FW100",thermostat,105,language,language,enum [german\|italian\|french\|dutch] (>=0<=0), ,true,select.thermostat_language,select.thermostat_language,6,0,1,66,1
+"FW100",thermostat,105,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] (>=0<=0), ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1
"FW100",thermostat,105,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,6,0,1,55,1
"FW100",thermostat,105,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,6,0,1/10,56,1
"FW100",thermostat,105,fossilefactor,fossile energy factor,uint8 (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor,6,0,1/10,57,1
@@ -4888,36 +4888,36 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/
"FW100",thermostat,105,delayboiler,delay boiler support,uint8 (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler,6,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,6,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,6,1,1/10,0,1
-"FW100",thermostat,105,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"FW100",thermostat,105,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"FW100",thermostat,105,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"FW100",thermostat,105,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,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,6,1,1,2,1
+"FW100",thermostat,105,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
"FW100",thermostat,105,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1
-"FW100",thermostat,105,hc1.heattemp,heat temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1
-"FW100",thermostat,105,hc1.ecotemp,eco temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1
-"FW100",thermostat,105,hc1.nofrosttemp,nofrost temperature,int8 (>=-63<=63),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1
-"FW100",thermostat,105,hc1.control,control device,enum [off\|FB10\|FB100], ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
-"FW100",thermostat,105,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
+"FW100",thermostat,105,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1
+"FW100",thermostat,105,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1
+"FW100",thermostat,105,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1
+"FW100",thermostat,105,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
+"FW100",thermostat,105,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
"FW100",thermostat,105,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1
-"FW100",thermostat,105,hc1.targetflowtemp,target flow temperature,uint8 (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
+"FW100",thermostat,105,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
"FW100",thermostat,105,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1
-"FW100",thermostat,105,hc1.roomsensor,room sensor,enum [extern\|intern\|auto], ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1
-"FW100",thermostat,105,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto], ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1
-"FW100",thermostat,105,hc1.switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
-"FW100",thermostat,105,hc1.heatup,heatup,enum [slow\|medium\|fast], ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1
+"FW100",thermostat,105,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1
+"FW100",thermostat,105,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1
+"FW100",thermostat,105,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
+"FW100",thermostat,105,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1
"FW100",thermostat,105,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
"FW100",thermostat,105,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
"FW100",thermostat,105,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1
-"FW100",thermostat,105,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto], ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1
-"FW100",thermostat,105,hc1.roominflfactor,room influence factor,uint8 (>=0<=100),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1
-"FW100",thermostat,105,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
-"FW100",thermostat,105,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
-"FW100",thermostat,105,dhw.charge,charge,boolean, ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
+"FW100",thermostat,105,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1
+"FW100",thermostat,105,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1
+"FW100",thermostat,105,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
+"FW100",thermostat,105,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
+"FW100",thermostat,105,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
"FW200",thermostat,106,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"FW200",thermostat,106,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
-"FW200",thermostat,106,datetime,date/time,string, ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"FW200",thermostat,106,display,display,enum [dhw temperature\|date\|external temperature], ,true,select.thermostat_display,select.thermostat_display,6,0,1,65,1
-"FW200",thermostat,106,language,language,enum [german\|italian\|french\|dutch], ,true,select.thermostat_language,select.thermostat_language,6,0,1,66,1
-"FW200",thermostat,106,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix], ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1
+"FW200",thermostat,106,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
+"FW200",thermostat,106,display,display,enum [dhw temperature\|date\|external temperature] (>=0<=0), ,true,select.thermostat_display,select.thermostat_display,6,0,1,65,1
+"FW200",thermostat,106,language,language,enum [german\|italian\|french\|dutch] (>=0<=0), ,true,select.thermostat_language,select.thermostat_language,6,0,1,66,1
+"FW200",thermostat,106,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] (>=0<=0), ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1
"FW200",thermostat,106,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,6,0,1,55,1
"FW200",thermostat,106,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,6,0,1/10,56,1
"FW200",thermostat,106,fossilefactor,fossile energy factor,uint8 (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor,6,0,1/10,57,1
@@ -4925,34 +4925,34 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/
"FW200",thermostat,106,delayboiler,delay boiler support,uint8 (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler,6,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,6,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,6,1,1/10,0,1
-"FW200",thermostat,106,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"FW200",thermostat,106,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"FW200",thermostat,106,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"FW200",thermostat,106,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,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,6,1,1,2,1
+"FW200",thermostat,106,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
"FW200",thermostat,106,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1
-"FW200",thermostat,106,hc1.heattemp,heat temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1
-"FW200",thermostat,106,hc1.ecotemp,eco temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1
-"FW200",thermostat,106,hc1.nofrosttemp,nofrost temperature,int8 (>=-63<=63),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1
-"FW200",thermostat,106,hc1.control,control device,enum [off\|FB10\|FB100], ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
-"FW200",thermostat,106,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
+"FW200",thermostat,106,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1
+"FW200",thermostat,106,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1
+"FW200",thermostat,106,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1
+"FW200",thermostat,106,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
+"FW200",thermostat,106,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
"FW200",thermostat,106,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1
-"FW200",thermostat,106,hc1.targetflowtemp,target flow temperature,uint8 (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
+"FW200",thermostat,106,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
"FW200",thermostat,106,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1
-"FW200",thermostat,106,hc1.roomsensor,room sensor,enum [extern\|intern\|auto], ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1
-"FW200",thermostat,106,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto], ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1
-"FW200",thermostat,106,hc1.switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
-"FW200",thermostat,106,hc1.heatup,heatup,enum [slow\|medium\|fast], ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1
+"FW200",thermostat,106,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1
+"FW200",thermostat,106,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1
+"FW200",thermostat,106,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
+"FW200",thermostat,106,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1
"FW200",thermostat,106,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
"FW200",thermostat,106,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
"FW200",thermostat,106,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1
-"FW200",thermostat,106,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto], ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1
-"FW200",thermostat,106,hc1.roominflfactor,room influence factor,uint8 (>=0<=100),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1
-"FW200",thermostat,106,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
-"FW200",thermostat,106,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
-"FW200",thermostat,106,dhw.charge,charge,boolean, ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
+"FW200",thermostat,106,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1
+"FW200",thermostat,106,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1
+"FW200",thermostat,106,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
+"FW200",thermostat,106,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
+"FW200",thermostat,106,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
"FR100",thermostat,107,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"FR100",thermostat,107,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
"FR100",thermostat,107,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"FR100",thermostat,107,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix], ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1
+"FR100",thermostat,107,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] (>=0<=0), ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1
"FR100",thermostat,107,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,6,0,1,55,1
"FR100",thermostat,107,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,6,0,1/10,56,1
"FR100",thermostat,107,fossilefactor,fossile energy factor,uint8 (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor,6,0,1/10,57,1
@@ -4960,34 +4960,34 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/
"FR100",thermostat,107,delayboiler,delay boiler support,uint8 (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler,6,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,6,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,6,1,1/10,0,1
-"FR100",thermostat,107,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"FR100",thermostat,107,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"FR100",thermostat,107,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"FR100",thermostat,107,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,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,6,1,1,2,1
+"FR100",thermostat,107,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
"FR100",thermostat,107,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1
-"FR100",thermostat,107,hc1.heattemp,heat temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1
-"FR100",thermostat,107,hc1.ecotemp,eco temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1
-"FR100",thermostat,107,hc1.nofrosttemp,nofrost temperature,int8 (>=-63<=63),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1
-"FR100",thermostat,107,hc1.control,control device,enum [off\|FB10\|FB100], ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
-"FR100",thermostat,107,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
+"FR100",thermostat,107,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1
+"FR100",thermostat,107,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1
+"FR100",thermostat,107,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1
+"FR100",thermostat,107,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
+"FR100",thermostat,107,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
"FR100",thermostat,107,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1
-"FR100",thermostat,107,hc1.targetflowtemp,target flow temperature,uint8 (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
+"FR100",thermostat,107,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
"FR100",thermostat,107,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1
-"FR100",thermostat,107,hc1.roomsensor,room sensor,enum [extern\|intern\|auto], ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1
-"FR100",thermostat,107,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto], ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1
-"FR100",thermostat,107,hc1.switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
-"FR100",thermostat,107,hc1.heatup,heatup,enum [slow\|medium\|fast], ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1
+"FR100",thermostat,107,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1
+"FR100",thermostat,107,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1
+"FR100",thermostat,107,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
+"FR100",thermostat,107,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1
"FR100",thermostat,107,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
"FR100",thermostat,107,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
"FR100",thermostat,107,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1
-"FR100",thermostat,107,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto], ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1
-"FR100",thermostat,107,hc1.roominflfactor,room influence factor,uint8 (>=0<=100),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1
-"FR100",thermostat,107,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
-"FR100",thermostat,107,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
-"FR100",thermostat,107,dhw.charge,charge,boolean, ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
+"FR100",thermostat,107,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1
+"FR100",thermostat,107,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1
+"FR100",thermostat,107,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
+"FR100",thermostat,107,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
+"FR100",thermostat,107,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
"FR110",thermostat,108,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"FR110",thermostat,108,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
"FR110",thermostat,108,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"FR110",thermostat,108,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix], ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1
+"FR110",thermostat,108,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] (>=0<=0), ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1
"FR110",thermostat,108,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,6,0,1,55,1
"FR110",thermostat,108,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,6,0,1/10,56,1
"FR110",thermostat,108,fossilefactor,fossile energy factor,uint8 (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor,6,0,1/10,57,1
@@ -4995,36 +4995,36 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/
"FR110",thermostat,108,delayboiler,delay boiler support,uint8 (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler,6,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,6,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,6,1,1/10,0,1
-"FR110",thermostat,108,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"FR110",thermostat,108,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"FR110",thermostat,108,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"FR110",thermostat,108,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,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,6,1,1,2,1
+"FR110",thermostat,108,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
"FR110",thermostat,108,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1
-"FR110",thermostat,108,hc1.heattemp,heat temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1
-"FR110",thermostat,108,hc1.ecotemp,eco temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1
-"FR110",thermostat,108,hc1.nofrosttemp,nofrost temperature,int8 (>=-63<=63),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1
-"FR110",thermostat,108,hc1.control,control device,enum [off\|FB10\|FB100], ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
-"FR110",thermostat,108,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
+"FR110",thermostat,108,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1
+"FR110",thermostat,108,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1
+"FR110",thermostat,108,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1
+"FR110",thermostat,108,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
+"FR110",thermostat,108,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
"FR110",thermostat,108,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1
-"FR110",thermostat,108,hc1.targetflowtemp,target flow temperature,uint8 (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
+"FR110",thermostat,108,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
"FR110",thermostat,108,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1
-"FR110",thermostat,108,hc1.roomsensor,room sensor,enum [extern\|intern\|auto], ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1
-"FR110",thermostat,108,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto], ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1
-"FR110",thermostat,108,hc1.switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
-"FR110",thermostat,108,hc1.heatup,heatup,enum [slow\|medium\|fast], ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1
+"FR110",thermostat,108,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1
+"FR110",thermostat,108,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1
+"FR110",thermostat,108,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
+"FR110",thermostat,108,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1
"FR110",thermostat,108,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
"FR110",thermostat,108,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
"FR110",thermostat,108,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1
-"FR110",thermostat,108,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto], ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1
-"FR110",thermostat,108,hc1.roominflfactor,room influence factor,uint8 (>=0<=100),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1
-"FR110",thermostat,108,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
-"FR110",thermostat,108,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
-"FR110",thermostat,108,dhw.charge,charge,boolean, ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
+"FR110",thermostat,108,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1
+"FR110",thermostat,108,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1
+"FR110",thermostat,108,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
+"FR110",thermostat,108,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
+"FR110",thermostat,108,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
"FB10",thermostat,109,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"FB10",thermostat,109,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
-"FB10",thermostat,109,datetime,date/time,string, ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"FB10",thermostat,109,display,display,enum [dhw temperature\|date\|external temperature], ,true,select.thermostat_display,select.thermostat_display,6,0,1,65,1
-"FB10",thermostat,109,language,language,enum [german\|italian\|french\|dutch], ,true,select.thermostat_language,select.thermostat_language,6,0,1,66,1
-"FB10",thermostat,109,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix], ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1
+"FB10",thermostat,109,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
+"FB10",thermostat,109,display,display,enum [dhw temperature\|date\|external temperature] (>=0<=0), ,true,select.thermostat_display,select.thermostat_display,6,0,1,65,1
+"FB10",thermostat,109,language,language,enum [german\|italian\|french\|dutch] (>=0<=0), ,true,select.thermostat_language,select.thermostat_language,6,0,1,66,1
+"FB10",thermostat,109,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] (>=0<=0), ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1
"FB10",thermostat,109,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,6,0,1,55,1
"FB10",thermostat,109,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,6,0,1/10,56,1
"FB10",thermostat,109,fossilefactor,fossile energy factor,uint8 (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor,6,0,1/10,57,1
@@ -5032,36 +5032,36 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/
"FB10",thermostat,109,delayboiler,delay boiler support,uint8 (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler,6,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,6,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,6,1,1/10,0,1
-"FB10",thermostat,109,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"FB10",thermostat,109,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"FB10",thermostat,109,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"FB10",thermostat,109,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,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,6,1,1,2,1
+"FB10",thermostat,109,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
"FB10",thermostat,109,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1
-"FB10",thermostat,109,hc1.heattemp,heat temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1
-"FB10",thermostat,109,hc1.ecotemp,eco temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1
-"FB10",thermostat,109,hc1.nofrosttemp,nofrost temperature,int8 (>=-63<=63),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1
-"FB10",thermostat,109,hc1.control,control device,enum [off\|FB10\|FB100], ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
-"FB10",thermostat,109,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
+"FB10",thermostat,109,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1
+"FB10",thermostat,109,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1
+"FB10",thermostat,109,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1
+"FB10",thermostat,109,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
+"FB10",thermostat,109,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
"FB10",thermostat,109,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1
-"FB10",thermostat,109,hc1.targetflowtemp,target flow temperature,uint8 (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
+"FB10",thermostat,109,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
"FB10",thermostat,109,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1
-"FB10",thermostat,109,hc1.roomsensor,room sensor,enum [extern\|intern\|auto], ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1
-"FB10",thermostat,109,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto], ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1
-"FB10",thermostat,109,hc1.switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
-"FB10",thermostat,109,hc1.heatup,heatup,enum [slow\|medium\|fast], ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1
+"FB10",thermostat,109,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1
+"FB10",thermostat,109,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1
+"FB10",thermostat,109,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
+"FB10",thermostat,109,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1
"FB10",thermostat,109,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
"FB10",thermostat,109,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
"FB10",thermostat,109,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1
-"FB10",thermostat,109,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto], ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1
-"FB10",thermostat,109,hc1.roominflfactor,room influence factor,uint8 (>=0<=100),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1
-"FB10",thermostat,109,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
-"FB10",thermostat,109,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
-"FB10",thermostat,109,dhw.charge,charge,boolean, ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
+"FB10",thermostat,109,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1
+"FB10",thermostat,109,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1
+"FB10",thermostat,109,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
+"FB10",thermostat,109,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
+"FB10",thermostat,109,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
"FB100",thermostat,110,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"FB100",thermostat,110,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
-"FB100",thermostat,110,datetime,date/time,string, ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"FB100",thermostat,110,display,display,enum [dhw temperature\|date\|external temperature], ,true,select.thermostat_display,select.thermostat_display,6,0,1,65,1
-"FB100",thermostat,110,language,language,enum [german\|italian\|french\|dutch], ,true,select.thermostat_language,select.thermostat_language,6,0,1,66,1
-"FB100",thermostat,110,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix], ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1
+"FB100",thermostat,110,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
+"FB100",thermostat,110,display,display,enum [dhw temperature\|date\|external temperature] (>=0<=0), ,true,select.thermostat_display,select.thermostat_display,6,0,1,65,1
+"FB100",thermostat,110,language,language,enum [german\|italian\|french\|dutch] (>=0<=0), ,true,select.thermostat_language,select.thermostat_language,6,0,1,66,1
+"FB100",thermostat,110,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] (>=0<=0), ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1
"FB100",thermostat,110,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,6,0,1,55,1
"FB100",thermostat,110,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,6,0,1/10,56,1
"FB100",thermostat,110,fossilefactor,fossile energy factor,uint8 (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor,6,0,1/10,57,1
@@ -5069,34 +5069,34 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/
"FB100",thermostat,110,delayboiler,delay boiler support,uint8 (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler,6,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,6,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,6,1,1/10,0,1
-"FB100",thermostat,110,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"FB100",thermostat,110,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"FB100",thermostat,110,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"FB100",thermostat,110,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,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,6,1,1,2,1
+"FB100",thermostat,110,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
"FB100",thermostat,110,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1
-"FB100",thermostat,110,hc1.heattemp,heat temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1
-"FB100",thermostat,110,hc1.ecotemp,eco temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1
-"FB100",thermostat,110,hc1.nofrosttemp,nofrost temperature,int8 (>=-63<=63),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1
-"FB100",thermostat,110,hc1.control,control device,enum [off\|FB10\|FB100], ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
-"FB100",thermostat,110,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
+"FB100",thermostat,110,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1
+"FB100",thermostat,110,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1
+"FB100",thermostat,110,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1
+"FB100",thermostat,110,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
+"FB100",thermostat,110,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
"FB100",thermostat,110,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1
-"FB100",thermostat,110,hc1.targetflowtemp,target flow temperature,uint8 (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
+"FB100",thermostat,110,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
"FB100",thermostat,110,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1
-"FB100",thermostat,110,hc1.roomsensor,room sensor,enum [extern\|intern\|auto], ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1
-"FB100",thermostat,110,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto], ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1
-"FB100",thermostat,110,hc1.switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
-"FB100",thermostat,110,hc1.heatup,heatup,enum [slow\|medium\|fast], ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1
+"FB100",thermostat,110,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1
+"FB100",thermostat,110,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1
+"FB100",thermostat,110,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
+"FB100",thermostat,110,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1
"FB100",thermostat,110,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
"FB100",thermostat,110,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
"FB100",thermostat,110,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1
-"FB100",thermostat,110,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto], ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1
-"FB100",thermostat,110,hc1.roominflfactor,room influence factor,uint8 (>=0<=100),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1
-"FB100",thermostat,110,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
-"FB100",thermostat,110,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
-"FB100",thermostat,110,dhw.charge,charge,boolean, ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
+"FB100",thermostat,110,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1
+"FB100",thermostat,110,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1
+"FB100",thermostat,110,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
+"FB100",thermostat,110,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
+"FB100",thermostat,110,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
"FR10",thermostat,111,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"FR10",thermostat,111,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
"FR10",thermostat,111,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"FR10",thermostat,111,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix], ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1
+"FR10",thermostat,111,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] (>=0<=0), ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1
"FR10",thermostat,111,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,6,0,1,55,1
"FR10",thermostat,111,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,6,0,1/10,56,1
"FR10",thermostat,111,fossilefactor,fossile energy factor,uint8 (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor,6,0,1/10,57,1
@@ -5104,36 +5104,36 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/
"FR10",thermostat,111,delayboiler,delay boiler support,uint8 (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler,6,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,6,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,6,1,1/10,0,1
-"FR10",thermostat,111,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"FR10",thermostat,111,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"FR10",thermostat,111,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"FR10",thermostat,111,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,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,6,1,1,2,1
+"FR10",thermostat,111,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
"FR10",thermostat,111,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1
-"FR10",thermostat,111,hc1.heattemp,heat temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1
-"FR10",thermostat,111,hc1.ecotemp,eco temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1
-"FR10",thermostat,111,hc1.nofrosttemp,nofrost temperature,int8 (>=-63<=63),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1
-"FR10",thermostat,111,hc1.control,control device,enum [off\|FB10\|FB100], ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
-"FR10",thermostat,111,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
+"FR10",thermostat,111,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1
+"FR10",thermostat,111,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1
+"FR10",thermostat,111,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1
+"FR10",thermostat,111,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
+"FR10",thermostat,111,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
"FR10",thermostat,111,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1
-"FR10",thermostat,111,hc1.targetflowtemp,target flow temperature,uint8 (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
+"FR10",thermostat,111,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
"FR10",thermostat,111,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1
-"FR10",thermostat,111,hc1.roomsensor,room sensor,enum [extern\|intern\|auto], ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1
-"FR10",thermostat,111,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto], ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1
-"FR10",thermostat,111,hc1.switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
-"FR10",thermostat,111,hc1.heatup,heatup,enum [slow\|medium\|fast], ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1
+"FR10",thermostat,111,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1
+"FR10",thermostat,111,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1
+"FR10",thermostat,111,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
+"FR10",thermostat,111,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1
"FR10",thermostat,111,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
"FR10",thermostat,111,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
"FR10",thermostat,111,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1
-"FR10",thermostat,111,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto], ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1
-"FR10",thermostat,111,hc1.roominflfactor,room influence factor,uint8 (>=0<=100),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1
-"FR10",thermostat,111,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
-"FR10",thermostat,111,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
-"FR10",thermostat,111,dhw.charge,charge,boolean, ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
+"FR10",thermostat,111,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1
+"FR10",thermostat,111,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1
+"FR10",thermostat,111,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
+"FR10",thermostat,111,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
+"FR10",thermostat,111,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
"FW500",thermostat,116,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"FW500",thermostat,116,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
-"FW500",thermostat,116,datetime,date/time,string, ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"FW500",thermostat,116,display,display,enum [dhw temperature\|date\|external temperature], ,true,select.thermostat_display,select.thermostat_display,6,0,1,65,1
-"FW500",thermostat,116,language,language,enum [german\|italian\|french\|dutch], ,true,select.thermostat_language,select.thermostat_language,6,0,1,66,1
-"FW500",thermostat,116,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix], ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1
+"FW500",thermostat,116,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
+"FW500",thermostat,116,display,display,enum [dhw temperature\|date\|external temperature] (>=0<=0), ,true,select.thermostat_display,select.thermostat_display,6,0,1,65,1
+"FW500",thermostat,116,language,language,enum [german\|italian\|french\|dutch] (>=0<=0), ,true,select.thermostat_language,select.thermostat_language,6,0,1,66,1
+"FW500",thermostat,116,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] (>=0<=0), ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1
"FW500",thermostat,116,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,6,0,1,55,1
"FW500",thermostat,116,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,6,0,1/10,56,1
"FW500",thermostat,116,fossilefactor,fossile energy factor,uint8 (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor,6,0,1/10,57,1
@@ -5141,34 +5141,34 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/
"FW500",thermostat,116,delayboiler,delay boiler support,uint8 (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler,6,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,6,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,6,1,1/10,0,1
-"FW500",thermostat,116,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"FW500",thermostat,116,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"FW500",thermostat,116,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"FW500",thermostat,116,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,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,6,1,1,2,1
+"FW500",thermostat,116,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
"FW500",thermostat,116,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1
-"FW500",thermostat,116,hc1.heattemp,heat temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1
-"FW500",thermostat,116,hc1.ecotemp,eco temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1
-"FW500",thermostat,116,hc1.nofrosttemp,nofrost temperature,int8 (>=-63<=63),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1
-"FW500",thermostat,116,hc1.control,control device,enum [off\|FB10\|FB100], ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
-"FW500",thermostat,116,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
+"FW500",thermostat,116,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1
+"FW500",thermostat,116,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1
+"FW500",thermostat,116,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1
+"FW500",thermostat,116,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
+"FW500",thermostat,116,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
"FW500",thermostat,116,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1
-"FW500",thermostat,116,hc1.targetflowtemp,target flow temperature,uint8 (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
+"FW500",thermostat,116,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
"FW500",thermostat,116,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1
-"FW500",thermostat,116,hc1.roomsensor,room sensor,enum [extern\|intern\|auto], ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1
-"FW500",thermostat,116,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto], ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1
-"FW500",thermostat,116,hc1.switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
-"FW500",thermostat,116,hc1.heatup,heatup,enum [slow\|medium\|fast], ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1
+"FW500",thermostat,116,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1
+"FW500",thermostat,116,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1
+"FW500",thermostat,116,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
+"FW500",thermostat,116,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1
"FW500",thermostat,116,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
"FW500",thermostat,116,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
"FW500",thermostat,116,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1
-"FW500",thermostat,116,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto], ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1
-"FW500",thermostat,116,hc1.roominflfactor,room influence factor,uint8 (>=0<=100),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1
-"FW500",thermostat,116,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
-"FW500",thermostat,116,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
-"FW500",thermostat,116,dhw.charge,charge,boolean, ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
+"FW500",thermostat,116,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1
+"FW500",thermostat,116,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1
+"FW500",thermostat,116,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
+"FW500",thermostat,116,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
+"FW500",thermostat,116,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
"FR50",thermostat,147,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"FR50",thermostat,147,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
"FR50",thermostat,147,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"FR50",thermostat,147,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix], ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1
+"FR50",thermostat,147,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] (>=0<=0), ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1
"FR50",thermostat,147,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,6,0,1,55,1
"FR50",thermostat,147,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,6,0,1/10,56,1
"FR50",thermostat,147,fossilefactor,fossile energy factor,uint8 (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor,6,0,1/10,57,1
@@ -5176,34 +5176,34 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/
"FR50",thermostat,147,delayboiler,delay boiler support,uint8 (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler,6,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,6,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,6,1,1/10,0,1
-"FR50",thermostat,147,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"FR50",thermostat,147,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"FR50",thermostat,147,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"FR50",thermostat,147,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,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,6,1,1,2,1
+"FR50",thermostat,147,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
"FR50",thermostat,147,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1
-"FR50",thermostat,147,hc1.heattemp,heat temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1
-"FR50",thermostat,147,hc1.ecotemp,eco temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1
-"FR50",thermostat,147,hc1.nofrosttemp,nofrost temperature,int8 (>=-63<=63),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1
-"FR50",thermostat,147,hc1.control,control device,enum [off\|FB10\|FB100], ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
-"FR50",thermostat,147,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
+"FR50",thermostat,147,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1
+"FR50",thermostat,147,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1
+"FR50",thermostat,147,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1
+"FR50",thermostat,147,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
+"FR50",thermostat,147,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
"FR50",thermostat,147,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1
-"FR50",thermostat,147,hc1.targetflowtemp,target flow temperature,uint8 (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
+"FR50",thermostat,147,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
"FR50",thermostat,147,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1
-"FR50",thermostat,147,hc1.roomsensor,room sensor,enum [extern\|intern\|auto], ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1
-"FR50",thermostat,147,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto], ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1
-"FR50",thermostat,147,hc1.switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
-"FR50",thermostat,147,hc1.heatup,heatup,enum [slow\|medium\|fast], ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1
+"FR50",thermostat,147,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1
+"FR50",thermostat,147,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1
+"FR50",thermostat,147,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
+"FR50",thermostat,147,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1
"FR50",thermostat,147,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
"FR50",thermostat,147,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
"FR50",thermostat,147,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1
-"FR50",thermostat,147,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto], ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1
-"FR50",thermostat,147,hc1.roominflfactor,room influence factor,uint8 (>=0<=100),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1
-"FR50",thermostat,147,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
-"FR50",thermostat,147,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
-"FR50",thermostat,147,dhw.charge,charge,boolean, ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
+"FR50",thermostat,147,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1
+"FR50",thermostat,147,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1
+"FR50",thermostat,147,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
+"FR50",thermostat,147,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
+"FR50",thermostat,147,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
"FR120",thermostat,191,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"FR120",thermostat,191,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
"FR120",thermostat,191,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"FR120",thermostat,191,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix], ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1
+"FR120",thermostat,191,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] (>=0<=0), ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1
"FR120",thermostat,191,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,6,0,1,55,1
"FR120",thermostat,191,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,6,0,1/10,56,1
"FR120",thermostat,191,fossilefactor,fossile energy factor,uint8 (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor,6,0,1/10,57,1
@@ -5211,36 +5211,36 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/
"FR120",thermostat,191,delayboiler,delay boiler support,uint8 (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler,6,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,6,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,6,1,1/10,0,1
-"FR120",thermostat,191,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"FR120",thermostat,191,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"FR120",thermostat,191,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"FR120",thermostat,191,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,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,6,1,1,2,1
+"FR120",thermostat,191,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
"FR120",thermostat,191,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1
-"FR120",thermostat,191,hc1.heattemp,heat temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1
-"FR120",thermostat,191,hc1.ecotemp,eco temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1
-"FR120",thermostat,191,hc1.nofrosttemp,nofrost temperature,int8 (>=-63<=63),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1
-"FR120",thermostat,191,hc1.control,control device,enum [off\|FB10\|FB100], ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
-"FR120",thermostat,191,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
+"FR120",thermostat,191,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1
+"FR120",thermostat,191,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1
+"FR120",thermostat,191,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1
+"FR120",thermostat,191,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
+"FR120",thermostat,191,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
"FR120",thermostat,191,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1
-"FR120",thermostat,191,hc1.targetflowtemp,target flow temperature,uint8 (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
+"FR120",thermostat,191,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
"FR120",thermostat,191,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1
-"FR120",thermostat,191,hc1.roomsensor,room sensor,enum [extern\|intern\|auto], ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1
-"FR120",thermostat,191,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto], ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1
-"FR120",thermostat,191,hc1.switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
-"FR120",thermostat,191,hc1.heatup,heatup,enum [slow\|medium\|fast], ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1
+"FR120",thermostat,191,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1
+"FR120",thermostat,191,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1
+"FR120",thermostat,191,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
+"FR120",thermostat,191,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1
"FR120",thermostat,191,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
"FR120",thermostat,191,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
"FR120",thermostat,191,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1
-"FR120",thermostat,191,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto], ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1
-"FR120",thermostat,191,hc1.roominflfactor,room influence factor,uint8 (>=0<=100),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1
-"FR120",thermostat,191,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
-"FR120",thermostat,191,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
-"FR120",thermostat,191,dhw.charge,charge,boolean, ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
+"FR120",thermostat,191,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1
+"FR120",thermostat,191,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1
+"FR120",thermostat,191,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
+"FR120",thermostat,191,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
+"FR120",thermostat,191,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
"FW120",thermostat,192,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"FW120",thermostat,192,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
-"FW120",thermostat,192,datetime,date/time,string, ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
-"FW120",thermostat,192,display,display,enum [dhw temperature\|date\|external temperature], ,true,select.thermostat_display,select.thermostat_display,6,0,1,65,1
-"FW120",thermostat,192,language,language,enum [german\|italian\|french\|dutch], ,true,select.thermostat_language,select.thermostat_language,6,0,1,66,1
-"FW120",thermostat,192,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix], ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1
+"FW120",thermostat,192,datetime,date/time,string (>=0<=0), ,true,sensor.thermostat_date/time,sensor.thermostat_datetime,6,0,1,33,13
+"FW120",thermostat,192,display,display,enum [dhw temperature\|date\|external temperature] (>=0<=0), ,true,select.thermostat_display,select.thermostat_display,6,0,1,65,1
+"FW120",thermostat,192,language,language,enum [german\|italian\|french\|dutch] (>=0<=0), ,true,select.thermostat_language,select.thermostat_language,6,0,1,66,1
+"FW120",thermostat,192,hybridstrategy,hybrid control strategy,enum [co2 optimized\|cost optimized\|outside temp switched\|co2 cost mix] (>=0<=0), ,true,select.thermostat_hybrid_control_strategy,select.thermostat_hybridstrategy,6,0,1,54,1
"FW120",thermostat,192,switchovertemp,outside switchover temperature,int8 (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp,6,0,1,55,1
"FW120",thermostat,192,energycostratio,energy cost ratio,uint8 (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio,6,0,1/10,56,1
"FW120",thermostat,192,fossilefactor,fossile energy factor,uint8 (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor,6,0,1/10,57,1
@@ -5248,656 +5248,665 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/
"FW120",thermostat,192,delayboiler,delay boiler support,uint8 (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler,6,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,6,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,6,1,1/10,0,1
-"FW120",thermostat,192,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"FW120",thermostat,192,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"FW120",thermostat,192,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto], ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
+"FW120",thermostat,192,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,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,6,1,1,2,1
+"FW120",thermostat,192,hc1.mode,operating mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_operating_mode,select.thermostat_hc1_mode,6,1,1,3,1
"FW120",thermostat,192,hc1.modetype,mode type,enum [nofrost\|eco\|heat], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype,6,1,1,4,1
-"FW120",thermostat,192,hc1.heattemp,heat temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1
-"FW120",thermostat,192,hc1.ecotemp,eco temperature,uint8 (>=0<=127),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1
-"FW120",thermostat,192,hc1.nofrosttemp,nofrost temperature,int8 (>=-63<=63),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1
-"FW120",thermostat,192,hc1.control,control device,enum [off\|FB10\|FB100], ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
-"FW120",thermostat,192,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
+"FW120",thermostat,192,hc1.heattemp,heat temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_heat_temperature,number.thermostat_hc1_heattemp,6,1,1/2,202,1
+"FW120",thermostat,192,hc1.ecotemp,eco temperature,uint8 (>=0<=0),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp,6,1,1/2,5,1
+"FW120",thermostat,192,hc1.nofrosttemp,nofrost temperature,int8 (>=0<=0),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp,6,1,1/2,17,1
+"FW120",thermostat,192,hc1.control,control device,enum [off\|FB10\|FB100] (>=0<=0), ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control,6,1,1,41,1
+"FW120",thermostat,192,hc1.program,program,enum [prog a\|prog b\|prog c\|prog d\|prog e\|prog f] (>=0<=0), ,true,select.thermostat_hc1_program,select.thermostat_hc1_program,6,1,1,26,1
"FW120",thermostat,192,hc1.remotetemp,room temperature from remote,cmd [] (>=-1<=101),C,true,sensor.thermostat_hc1_room_temperature_from_remote,sensor.thermostat_hc1_remotetemp,6,1,1/10,42,1
-"FW120",thermostat,192,hc1.targetflowtemp,target flow temperature,uint8 (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
+"FW120",thermostat,192,hc1.targetflowtemp,target flow temperature,uint8,C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp,6,1,1,18,1
"FW120",thermostat,192,hc1.summertemp,summer temperature,uint8 (>=9<=25),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp,6,1,1/2,8,1
-"FW120",thermostat,192,hc1.roomsensor,room sensor,enum [extern\|intern\|auto], ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1
-"FW120",thermostat,192,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto], ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1
-"FW120",thermostat,192,hc1.switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
-"FW120",thermostat,192,hc1.heatup,heatup,enum [slow\|medium\|fast], ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1
+"FW120",thermostat,192,hc1.roomsensor,room sensor,enum [extern\|intern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_sensor,select.thermostat_hc1_roomsensor,6,1,1,203,1
+"FW120",thermostat,192,hc1.holidaymode,holiday mode,enum [nofrost\|eco\|heat\|auto] (>=0<=0), ,true,select.thermostat_hc1_holiday_mode,select.thermostat_hc1_holidaymode,6,1,1,63,1
+"FW120",thermostat,192,hc1.switchonoptimization,switch-on optimization,boolean (>=0<=0), ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization,6,1,1,30,1
+"FW120",thermostat,192,hc1.heatup,heatup,enum [slow\|medium\|fast] (>=0<=0), ,true,select.thermostat_hc1_heatup,select.thermostat_hc1_heatup,6,1,1,204,1
"FW120",thermostat,192,hc1.minflowtemp,min flow temperature,uint8 (>=5<=70),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp,6,1,1,11,1
"FW120",thermostat,192,hc1.maxflowtemp,max flow temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp,6,1,1,12,1
"FW120",thermostat,192,hc1.designtemp,design temperature,uint8 (>=30<=90),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp,6,1,1,9,1
-"FW120",thermostat,192,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto], ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1
-"FW120",thermostat,192,hc1.roominflfactor,room influence factor,uint8 (>=0<=100),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1
-"FW120",thermostat,192,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
-"FW120",thermostat,192,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
-"FW120",thermostat,192,dhw.charge,charge,boolean, ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
+"FW120",thermostat,192,hc1.roominfluence,room influence,enum [off\|intern\|extern\|auto] (>=0<=0), ,true,select.thermostat_hc1_room_influence,select.thermostat_hc1_roominfluence,6,1,1,13,1
+"FW120",thermostat,192,hc1.roominflfactor,room influence factor,uint8 (>=0<=0),%,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor,6,1,10,14,1
+"FW120",thermostat,192,hc1.heatingtype,heating type,enum [off\|heatingcurve\|radiator\|convector\|floor] (>=0<=0), ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype,6,1,1,19,1
+"FW120",thermostat,192,hc1.controlmode,control mode,enum [off\|unmixed\|unmixed IPM\|mixed IPM] (>=0<=0), ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode,6,1,1,25,1
+"FW120",thermostat,192,dhw.charge,charge,boolean (>=0<=0), ,true,switch.thermostat_dhw_charge,switch.thermostat_dhw_charge,6,9,1,6,1
"RT800, RC220",thermostat,3,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"RT800, RC220",thermostat,3,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
"RT800, RC220",thermostat,3,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,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,6,1,1/2,0,1
-"RT800, RC220",thermostat,3,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"RT800, RC220",thermostat,3,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
+"RT800, RC220",thermostat,3,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,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,6,1,1,2,1
"RC100H, CR10H",thermostat,200,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"RC100H, CR10H",thermostat,200,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
"RC100H, CR10H",thermostat,200,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,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,6,1,1/2,0,1
-"RC100H, CR10H",thermostat,200,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"RC100H, CR10H",thermostat,200,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
+"RC100H, CR10H",thermostat,200,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,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,6,1,1,2,1
"RC120RF, TR120RF, CR20RF",thermostat,249,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode,6,0,1,0,8
"RC120RF, TR120RF, CR20RF",thermostat,249,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode,6,0,1,8,25
"RC120RF, TR120RF, CR20RF",thermostat,249,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime,6,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,6,1,1/2,0,1
-"RC120RF, TR120RF, CR20RF",thermostat,249,hc1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,1,1/10,1,1
-"RC120RF, TR120RF, CR20RF",thermostat,249,hc1.haclimate,mqtt discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_mqtt_discovery_current_room_temperature,sensor.thermostat_hc1_haclimate,6,1,1,2,1
-"XCUMixer",mixer,8,hc1.flowtemphc,flow temperature (TC1),uint16 (>=0<=3199),C,false,sensor.mixer_hc1_flow_temperature_(TC1),sensor.mixer_hc1_flowtemphc,7,1,1/10,0,1
-"XCUMixer",mixer,8,hc1.valvestatus,mixing valve actuator (VC1),uint8 (>=0<=100),%,false,sensor.mixer_hc1_mixing_valve_actuator_(VC1),sensor.mixer_hc1_valvestatus,7,1,1,1,1
-"XCUMixer",mixer,8,hc1.flowsettemp,setpoint flow temperature,uint8 (>=0<=254),C,true,number.mixer_hc1_setpoint_flow_temperature,number.mixer_hc1_flowsettemp,7,1,1,2,1
-"XCUMixer",mixer,8,hc1.pumpstatus,pump status (PC1),boolean, ,true,switch.mixer_hc1_pump_status_(PC1),switch.mixer_hc1_pumpstatus,7,1,1,3,1
-"XCUMixer",mixer,8,hc1.activated,activated,boolean, ,true,switch.mixer_hc1_activated,switch.mixer_hc1_activated,7,1,1,4,1
-"XCUMixer",mixer,8,hc1.flow,Durchfluss,uint16 (>=0<=31999),l/h,false,sensor.mixer_hc1_Durchfluss,sensor.mixer_hc1_flow,7,1,1,5,1
-"XCUMixer",mixer,8,hc1.setdiffpress,set differential pressure,uint8 (>=0<=12700),mbar,true,number.mixer_hc1_set_differential_pressure,number.mixer_hc1_setdiffpress,7,1,50,6,1
+"RC120RF, TR120RF, CR20RF",thermostat,249,hc1.currtemp,current room temperature,int16,C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp,6,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,6,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,7,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,7,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,7,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,7,1,1,3,1
+"XCUMixer",mixer,8,hc1.activated,activated,boolean (>=0<=0), ,true,switch.mixer_hc1_activated,switch.mixer_hc1_activated,7,1,1,4,1
+"XCUMixer",mixer,8,hc1.flow,Durchfluss,uint16,l/h,false,sensor.mixer_hc1_Durchfluss,sensor.mixer_hc1_flow,7,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,7,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,7,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,7,1,1,8,1
-"XCUMixer",mixer,8,hc1.dhwprio,dhw priority,boolean, ,true,switch.mixer_hc1_dhw_priority,switch.mixer_hc1_dhwprio,7,1,1,9,1
-"MM10",mixer,69,hc1.flowtemphc,flow temperature (TC1),uint16 (>=0<=3199),C,false,sensor.mixer_hc1_flow_temperature_(TC1),sensor.mixer_hc1_flowtemphc,7,1,1/10,0,1
-"MM10",mixer,69,hc1.valvestatus,mixing valve actuator (VC1),int8 (>=-100<=100),%,false,sensor.mixer_hc1_mixing_valve_actuator_(VC1),sensor.mixer_hc1_valvestatus,7,1,1,1,1
-"MM10",mixer,69,hc1.flowsettemp,setpoint flow temperature,uint8 (>=0<=254),C,true,number.mixer_hc1_setpoint_flow_temperature,number.mixer_hc1_flowsettemp,7,1,1,2,1
-"MM10",mixer,69,hc1.pumpstatus,pump status (PC1),boolean, ,true,switch.mixer_hc1_pump_status_(PC1),switch.mixer_hc1_pumpstatus,7,1,1,3,1
-"MM10",mixer,69,hc1.activated,activated,boolean, ,true,switch.mixer_hc1_activated,switch.mixer_hc1_activated,7,1,1,4,1
+"XCUMixer",mixer,8,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.mixer_hc1_dhw_priority,switch.mixer_hc1_dhwprio,7,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,7,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,7,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,7,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,7,1,1,3,1
+"MM10",mixer,69,hc1.activated,activated,boolean (>=0<=0), ,true,switch.mixer_hc1_activated,switch.mixer_hc1_activated,7,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,7,1,10,7,1
-"IPM",mixer,100,hc1.flowtemphc,flow temperature (TC1),uint16 (>=0<=3199),C,false,sensor.mixer_hc1_flow_temperature_(TC1),sensor.mixer_hc1_flowtemphc,7,1,1/10,0,1
-"IPM",mixer,100,hc1.valvestatus,mixing valve actuator (VC1),uint8 (>=0<=100),%,false,sensor.mixer_hc1_mixing_valve_actuator_(VC1),sensor.mixer_hc1_valvestatus,7,1,1,1,1
-"IPM",mixer,100,hc1.flowsettemp,setpoint flow temperature,uint8 (>=0<=254),C,true,number.mixer_hc1_setpoint_flow_temperature,number.mixer_hc1_flowsettemp,7,1,1,2,1
-"IPM",mixer,100,hc1.pumpstatus,pump status (PC1),boolean, ,true,switch.mixer_hc1_pump_status_(PC1),switch.mixer_hc1_pumpstatus,7,1,1,3,1
-"IPM",mixer,100,hc1.flowtempvf,flow temperature in header (T0/Vf),uint16 (>=0<=3199),C,false,sensor.mixer_hc1_flow_temperature_in_header_(T0/Vf),sensor.mixer_hc1_flowtempvf,7,1,1/10,10,1
-"IPM2",mixer,102,hc1.flowtemphc,flow temperature (TC1),uint16 (>=0<=3199),C,false,sensor.mixer_hc1_flow_temperature_(TC1),sensor.mixer_hc1_flowtemphc,7,1,1/10,0,1
-"IPM2",mixer,102,hc1.valvestatus,mixing valve actuator (VC1),uint8 (>=0<=100),%,false,sensor.mixer_hc1_mixing_valve_actuator_(VC1),sensor.mixer_hc1_valvestatus,7,1,1,1,1
-"IPM2",mixer,102,hc1.flowsettemp,setpoint flow temperature,uint8 (>=0<=254),C,true,number.mixer_hc1_setpoint_flow_temperature,number.mixer_hc1_flowsettemp,7,1,1,2,1
-"IPM2",mixer,102,hc1.pumpstatus,pump status (PC1),boolean, ,true,switch.mixer_hc1_pump_status_(PC1),switch.mixer_hc1_pumpstatus,7,1,1,3,1
-"IPM2",mixer,102,hc1.flowtempvf,flow temperature in header (T0/Vf),uint16 (>=0<=3199),C,false,sensor.mixer_hc1_flow_temperature_in_header_(T0/Vf),sensor.mixer_hc1_flowtempvf,7,1,1/10,10,1
-"MM50",mixer,159,hc1.flowtemphc,flow temperature (TC1),uint16 (>=0<=3199),C,false,sensor.mixer_hc1_flow_temperature_(TC1),sensor.mixer_hc1_flowtemphc,7,1,1/10,0,1
-"MM50",mixer,159,hc1.valvestatus,mixing valve actuator (VC1),uint8 (>=0<=100),%,false,sensor.mixer_hc1_mixing_valve_actuator_(VC1),sensor.mixer_hc1_valvestatus,7,1,1,1,1
-"MM50",mixer,159,hc1.flowsettemp,setpoint flow temperature,uint8 (>=0<=254),C,true,number.mixer_hc1_setpoint_flow_temperature,number.mixer_hc1_flowsettemp,7,1,1,2,1
-"MM50",mixer,159,hc1.pumpstatus,pump status (PC1),boolean, ,true,switch.mixer_hc1_pump_status_(PC1),switch.mixer_hc1_pumpstatus,7,1,1,3,1
-"MM50",mixer,159,hc1.activated,activated,boolean, ,true,switch.mixer_hc1_activated,switch.mixer_hc1_activated,7,1,1,4,1
-"MM50",mixer,159,hc1.flow,Durchfluss,uint16 (>=0<=31999),l/h,false,sensor.mixer_hc1_Durchfluss,sensor.mixer_hc1_flow,7,1,1,5,1
-"MM50",mixer,159,hc1.setdiffpress,set differential pressure,uint8 (>=0<=12700),mbar,true,number.mixer_hc1_set_differential_pressure,number.mixer_hc1_setdiffpress,7,1,50,6,1
+"IPM",mixer,100,hc1.flowtemphc,flow temperature (TC1),uint16,C,false,sensor.mixer_hc1_flow_temperature_(TC1),sensor.mixer_hc1_flowtemphc,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,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,7,1,1,3,1
+"MM50",mixer,159,hc1.activated,activated,boolean (>=0<=0), ,true,switch.mixer_hc1_activated,switch.mixer_hc1_activated,7,1,1,4,1
+"MM50",mixer,159,hc1.flow,Durchfluss,uint16,l/h,false,sensor.mixer_hc1_Durchfluss,sensor.mixer_hc1_flow,7,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,7,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,7,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,7,1,1,8,1
-"MM50",mixer,159,hc1.dhwprio,dhw priority,boolean, ,true,switch.mixer_hc1_dhw_priority,switch.mixer_hc1_dhwprio,7,1,1,9,1
-"MM100",mixer,160,hc1.flowtemphc,flow temperature (TC1),uint16 (>=0<=3199),C,false,sensor.mixer_hc1_flow_temperature_(TC1),sensor.mixer_hc1_flowtemphc,7,1,1/10,0,1
-"MM100",mixer,160,hc1.valvestatus,mixing valve actuator (VC1),uint8 (>=0<=100),%,false,sensor.mixer_hc1_mixing_valve_actuator_(VC1),sensor.mixer_hc1_valvestatus,7,1,1,1,1
-"MM100",mixer,160,hc1.flowsettemp,setpoint flow temperature,uint8 (>=0<=254),C,true,number.mixer_hc1_setpoint_flow_temperature,number.mixer_hc1_flowsettemp,7,1,1,2,1
-"MM100",mixer,160,hc1.pumpstatus,pump status (PC1),boolean, ,true,switch.mixer_hc1_pump_status_(PC1),switch.mixer_hc1_pumpstatus,7,1,1,3,1
-"MM100",mixer,160,hc1.activated,activated,boolean, ,true,switch.mixer_hc1_activated,switch.mixer_hc1_activated,7,1,1,4,1
-"MM100",mixer,160,hc1.flow,Durchfluss,uint16 (>=0<=31999),l/h,false,sensor.mixer_hc1_Durchfluss,sensor.mixer_hc1_flow,7,1,1,5,1
-"MM100",mixer,160,hc1.setdiffpress,set differential pressure,uint8 (>=0<=12700),mbar,true,number.mixer_hc1_set_differential_pressure,number.mixer_hc1_setdiffpress,7,1,50,6,1
+"MM50",mixer,159,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.mixer_hc1_dhw_priority,switch.mixer_hc1_dhwprio,7,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,7,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,7,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,7,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,7,1,1,3,1
+"MM100",mixer,160,hc1.activated,activated,boolean (>=0<=0), ,true,switch.mixer_hc1_activated,switch.mixer_hc1_activated,7,1,1,4,1
+"MM100",mixer,160,hc1.flow,Durchfluss,uint16,l/h,false,sensor.mixer_hc1_Durchfluss,sensor.mixer_hc1_flow,7,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,7,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,7,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,7,1,1,8,1
-"MM100",mixer,160,hc1.dhwprio,dhw priority,boolean, ,true,switch.mixer_hc1_dhw_priority,switch.mixer_hc1_dhwprio,7,1,1,9,1
-"MM200",mixer,161,hc1.flowtemphc,flow temperature (TC1),uint16 (>=0<=3199),C,false,sensor.mixer_hc1_flow_temperature_(TC1),sensor.mixer_hc1_flowtemphc,7,1,1/10,0,1
-"MM200",mixer,161,hc1.valvestatus,mixing valve actuator (VC1),uint8 (>=0<=100),%,false,sensor.mixer_hc1_mixing_valve_actuator_(VC1),sensor.mixer_hc1_valvestatus,7,1,1,1,1
-"MM200",mixer,161,hc1.flowsettemp,setpoint flow temperature,uint8 (>=0<=254),C,true,number.mixer_hc1_setpoint_flow_temperature,number.mixer_hc1_flowsettemp,7,1,1,2,1
-"MM200",mixer,161,hc1.pumpstatus,pump status (PC1),boolean, ,true,switch.mixer_hc1_pump_status_(PC1),switch.mixer_hc1_pumpstatus,7,1,1,3,1
-"MM200",mixer,161,hc1.activated,activated,boolean, ,true,switch.mixer_hc1_activated,switch.mixer_hc1_activated,7,1,1,4,1
-"MM200",mixer,161,hc1.flow,Durchfluss,uint16 (>=0<=31999),l/h,false,sensor.mixer_hc1_Durchfluss,sensor.mixer_hc1_flow,7,1,1,5,1
-"MM200",mixer,161,hc1.setdiffpress,set differential pressure,uint8 (>=0<=12700),mbar,true,number.mixer_hc1_set_differential_pressure,number.mixer_hc1_setdiffpress,7,1,50,6,1
+"MM100",mixer,160,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.mixer_hc1_dhw_priority,switch.mixer_hc1_dhwprio,7,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,7,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,7,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,7,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,7,1,1,3,1
+"MM200",mixer,161,hc1.activated,activated,boolean (>=0<=0), ,true,switch.mixer_hc1_activated,switch.mixer_hc1_activated,7,1,1,4,1
+"MM200",mixer,161,hc1.flow,Durchfluss,uint16,l/h,false,sensor.mixer_hc1_Durchfluss,sensor.mixer_hc1_flow,7,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,7,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,7,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,7,1,1,8,1
-"MM200",mixer,161,hc1.dhwprio,dhw priority,boolean, ,true,switch.mixer_hc1_dhw_priority,switch.mixer_hc1_dhwprio,7,1,1,9,1
-"MZ100",mixer,193,hc1.flowtemphc,flow temperature (TC1),uint16 (>=0<=3199),C,false,sensor.mixer_hc1_flow_temperature_(TC1),sensor.mixer_hc1_flowtemphc,7,1,1/10,0,1
-"MZ100",mixer,193,hc1.valvestatus,mixing valve actuator (VC1),uint8 (>=0<=100),%,false,sensor.mixer_hc1_mixing_valve_actuator_(VC1),sensor.mixer_hc1_valvestatus,7,1,1,1,1
-"MZ100",mixer,193,hc1.flowsettemp,setpoint flow temperature,uint8 (>=0<=254),C,true,number.mixer_hc1_setpoint_flow_temperature,number.mixer_hc1_flowsettemp,7,1,1,2,1
-"MZ100",mixer,193,hc1.pumpstatus,pump status (PC1),boolean, ,true,switch.mixer_hc1_pump_status_(PC1),switch.mixer_hc1_pumpstatus,7,1,1,3,1
-"MZ100",mixer,193,hc1.activated,activated,boolean, ,true,switch.mixer_hc1_activated,switch.mixer_hc1_activated,7,1,1,4,1
-"MZ100",mixer,193,hc1.flow,Durchfluss,uint16 (>=0<=31999),l/h,false,sensor.mixer_hc1_Durchfluss,sensor.mixer_hc1_flow,7,1,1,5,1
-"MZ100",mixer,193,hc1.setdiffpress,set differential pressure,uint8 (>=0<=12700),mbar,true,number.mixer_hc1_set_differential_pressure,number.mixer_hc1_setdiffpress,7,1,50,6,1
+"MM200",mixer,161,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.mixer_hc1_dhw_priority,switch.mixer_hc1_dhwprio,7,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,7,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,7,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,7,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,7,1,1,3,1
+"MZ100",mixer,193,hc1.activated,activated,boolean (>=0<=0), ,true,switch.mixer_hc1_activated,switch.mixer_hc1_activated,7,1,1,4,1
+"MZ100",mixer,193,hc1.flow,Durchfluss,uint16,l/h,false,sensor.mixer_hc1_Durchfluss,sensor.mixer_hc1_flow,7,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,7,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,7,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,7,1,1,8,1
-"MZ100",mixer,193,hc1.dhwprio,dhw priority,boolean, ,true,switch.mixer_hc1_dhw_priority,switch.mixer_hc1_dhwprio,7,1,1,9,1
-"HM210",mixer,248,hc1.flowtemphc,flow temperature (TC1),uint16 (>=0<=3199),C,false,sensor.mixer_hc1_flow_temperature_(TC1),sensor.mixer_hc1_flowtemphc,7,1,1/10,0,1
-"HM210",mixer,248,hc1.valvestatus,mixing valve actuator (VC1),uint8 (>=0<=100),%,false,sensor.mixer_hc1_mixing_valve_actuator_(VC1),sensor.mixer_hc1_valvestatus,7,1,1,1,1
-"HM210",mixer,248,hc1.flowsettemp,setpoint flow temperature,uint8 (>=0<=254),C,true,number.mixer_hc1_setpoint_flow_temperature,number.mixer_hc1_flowsettemp,7,1,1,2,1
-"HM210",mixer,248,hc1.pumpstatus,pump status (PC1),boolean, ,true,switch.mixer_hc1_pump_status_(PC1),switch.mixer_hc1_pumpstatus,7,1,1,3,1
-"HM210",mixer,248,hc1.activated,activated,boolean, ,true,switch.mixer_hc1_activated,switch.mixer_hc1_activated,7,1,1,4,1
-"HM210",mixer,248,hc1.flow,Durchfluss,uint16 (>=0<=31999),l/h,false,sensor.mixer_hc1_Durchfluss,sensor.mixer_hc1_flow,7,1,1,5,1
-"HM210",mixer,248,hc1.setdiffpress,set differential pressure,uint8 (>=0<=12700),mbar,true,number.mixer_hc1_set_differential_pressure,number.mixer_hc1_setdiffpress,7,1,50,6,1
+"MZ100",mixer,193,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.mixer_hc1_dhw_priority,switch.mixer_hc1_dhwprio,7,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,7,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,7,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,7,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,7,1,1,3,1
+"HM210",mixer,248,hc1.activated,activated,boolean (>=0<=0), ,true,switch.mixer_hc1_activated,switch.mixer_hc1_activated,7,1,1,4,1
+"HM210",mixer,248,hc1.flow,Durchfluss,uint16,l/h,false,sensor.mixer_hc1_Durchfluss,sensor.mixer_hc1_flow,7,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,7,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,7,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,7,1,1,8,1
-"HM210",mixer,248,hc1.dhwprio,dhw priority,boolean, ,true,switch.mixer_hc1_dhw_priority,switch.mixer_hc1_dhwprio,7,1,1,9,1
-"SM10",solar,73,collectortemp,collector temperature (TS1),int16 (>=-3199<=3199),C,false,sensor.solar_collector_temperature_(TS1),sensor.solar_collectortemp,8,0,1/10,0,1
-"SM10",solar,73,cylbottomtemp,cylinder bottom temperature (TS2),int16 (>=-3199<=3199),C,false,sensor.solar_cylinder_bottom_temperature_(TS2),sensor.solar_cylbottomtemp,8,0,1/10,1,1
+"HM210",mixer,248,hc1.dhwprio,dhw priority,boolean (>=0<=0), ,true,switch.mixer_hc1_dhw_priority,switch.mixer_hc1_dhwprio,7,1,1,9,1
+"SM10",solar,73,collectortemp,collector temperature (TS1),int16,C,false,sensor.solar_collector_temperature_(TS1),sensor.solar_collectortemp,8,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,8,0,1/10,1,1
"SM10",solar,73,solarpump,pump (PS1),boolean, ,false,binary_sensor.solar_pump_(PS1),binary_sensor.solar_solarpump,8,0,1,2,1
-"SM10",solar,73,pumpworktime,pump working time,time (>=0<=16777214),minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime,8,0,1,3,2
-"SM10",solar,73,cylmaxtemp,maximum cylinder temperature,uint8 (>=0<=254),C,true,number.solar_maximum_cylinder_temperature,number.solar_cylmaxtemp,8,0,1,5,1
+"SM10",solar,73,pumpworktime,pump working time,time,minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime,8,0,1,3,2
+"SM10",solar,73,cylmaxtemp,maximum cylinder temperature,uint8 (>=0<=0),C,true,number.solar_maximum_cylinder_temperature,number.solar_cylmaxtemp,8,0,1,5,1
"SM10",solar,73,collectorshutdown,collector shutdown,boolean, ,false,binary_sensor.solar_collector_shutdown,binary_sensor.solar_collectorshutdown,8,0,1,6,1
"SM10",solar,73,cylheated,cyl heated,boolean, ,false,binary_sensor.solar_cyl_heated,binary_sensor.solar_cylheated,8,0,1,7,1
-"SM10",solar,73,solarpumpmod,pump modulation (PS1),uint8 (>=0<=100),%,false,sensor.solar_pump_modulation_(PS1),sensor.solar_solarpumpmod,8,0,1,8,1
-"SM10",solar,73,pumpminmod,minimum pump modulation,uint8 (>=0<=100),%,true,number.solar_minimum_pump_modulation,number.solar_pumpminmod,8,0,1,9,1
-"SM10",solar,73,turnondiff,pump turn on difference,uint8 (>=0<=254),C,true,number.solar_pump_turn_on_difference,number.solar_turnondiff,8,0,1,10,1
-"SM10",solar,73,turnoffdiff,pump turn off difference,uint8 (>=0<=254),C,true,number.solar_pump_turn_off_difference,number.solar_turnoffdiff,8,0,1,11,1
-"SM10",solar,73,solarpower,actual solar power,int16 (>=-31999<=31999),W,false,sensor.solar_actual_solar_power,sensor.solar_solarpower,8,0,1,12,1
-"SM10",solar,73,energylasthour,energy last hour,uint24 (>=0<=1677721),Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour,8,0,1/10,13,2
-"SM10",solar,73,maxflow,maximum solar flow,uint8 (>=0<=25),l/min,true,number.solar_maximum_solar_flow,number.solar_maxflow,8,0,1/10,15,1
-"SM10",solar,73,dhw.mintemp,minimum temperature,uint8 (>=0<=254),C,true,number.solar_dhw_minimum_temperature,number.solar_dhw_mintemp,8,9,1,0,1
-"SM10",solar,73,solarenabled,solarmodule enabled,boolean, ,true,switch.solar_solarmodule_enabled,switch.solar_solarenabled,8,0,1,16,1
-"ISM1",solar,101,collectortemp,collector temperature (TS1),int16 (>=-3199<=3199),C,false,sensor.solar_collector_temperature_(TS1),sensor.solar_collectortemp,8,0,1/10,0,1
-"ISM1",solar,101,cylbottomtemp,cylinder bottom temperature (TS2),int16 (>=-3199<=3199),C,false,sensor.solar_cylinder_bottom_temperature_(TS2),sensor.solar_cylbottomtemp,8,0,1/10,1,1
+"SM10",solar,73,solarpumpmod,pump modulation (PS1),uint8,%,false,sensor.solar_pump_modulation_(PS1),sensor.solar_solarpumpmod,8,0,1,8,1
+"SM10",solar,73,pumpminmod,minimum pump modulation,uint8 (>=0<=0),%,true,number.solar_minimum_pump_modulation,number.solar_pumpminmod,8,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,8,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,8,0,1,11,1
+"SM10",solar,73,solarpower,actual solar power,int16,W,false,sensor.solar_actual_solar_power,sensor.solar_solarpower,8,0,1,12,1
+"SM10",solar,73,energylasthour,energy last hour,uint24,Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour,8,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,8,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,8,9,1,0,1
+"SM10",solar,73,solarenabled,solarmodule enabled,boolean (>=0<=0), ,true,switch.solar_solarmodule_enabled,switch.solar_solarenabled,8,0,1,16,1
+"ISM1",solar,101,collectortemp,collector temperature (TS1),int16,C,false,sensor.solar_collector_temperature_(TS1),sensor.solar_collectortemp,8,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,8,0,1/10,1,1
"ISM1",solar,101,solarpump,pump (PS1),boolean, ,false,binary_sensor.solar_pump_(PS1),binary_sensor.solar_solarpump,8,0,1,2,1
-"ISM1",solar,101,pumpworktime,pump working time,time (>=0<=16777214),minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime,8,0,1,3,2
-"ISM1",solar,101,cylmaxtemp,maximum cylinder temperature,uint8 (>=0<=254),C,true,number.solar_maximum_cylinder_temperature,number.solar_cylmaxtemp,8,0,1,5,1
+"ISM1",solar,101,pumpworktime,pump working time,time,minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime,8,0,1,3,2
+"ISM1",solar,101,cylmaxtemp,maximum cylinder temperature,uint8 (>=0<=0),C,true,number.solar_maximum_cylinder_temperature,number.solar_cylmaxtemp,8,0,1,5,1
"ISM1",solar,101,collectorshutdown,collector shutdown,boolean, ,false,binary_sensor.solar_collector_shutdown,binary_sensor.solar_collectorshutdown,8,0,1,6,1
"ISM1",solar,101,cylheated,cyl heated,boolean, ,false,binary_sensor.solar_cyl_heated,binary_sensor.solar_cylheated,8,0,1,7,1
-"ISM1",solar,101,cylmiddletemp,cylinder middle temperature (TS3),int16 (>=-3199<=3199),C,false,sensor.solar_cylinder_middle_temperature_(TS3),sensor.solar_cylmiddletemp,8,0,1/10,17,1
-"ISM1",solar,101,retheatassist,return temperature heat assistance (TS4),int16 (>=-3199<=3199),C,false,sensor.solar_return_temperature_heat_assistance_(TS4),sensor.solar_retheatassist,8,0,1/10,18,1
+"ISM1",solar,101,cylmiddletemp,cylinder middle temperature (TS3),int16,C,false,sensor.solar_cylinder_middle_temperature_(TS3),sensor.solar_cylmiddletemp,8,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,8,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,8,0,1,19,1
-"ISM1",solar,101,energylasthour,energy last hour,uint24 (>=0<=1677721),Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour,8,0,1/10,13,2
-"ISM2",solar,103,collectortemp,collector temperature (TS1),int16 (>=-3199<=3199),C,false,sensor.solar_collector_temperature_(TS1),sensor.solar_collectortemp,8,0,1/10,0,1
-"ISM2",solar,103,cylbottomtemp,cylinder bottom temperature (TS2),int16 (>=-3199<=3199),C,false,sensor.solar_cylinder_bottom_temperature_(TS2),sensor.solar_cylbottomtemp,8,0,1/10,1,1
+"ISM1",solar,101,energylasthour,energy last hour,uint24,Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour,8,0,1/10,13,2
+"ISM2",solar,103,collectortemp,collector temperature (TS1),int16,C,false,sensor.solar_collector_temperature_(TS1),sensor.solar_collectortemp,8,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,8,0,1/10,1,1
"ISM2",solar,103,solarpump,pump (PS1),boolean, ,false,binary_sensor.solar_pump_(PS1),binary_sensor.solar_solarpump,8,0,1,2,1
-"ISM2",solar,103,pumpworktime,pump working time,time (>=0<=16777214),minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime,8,0,1,3,2
-"ISM2",solar,103,cylmaxtemp,maximum cylinder temperature,uint8 (>=0<=254),C,true,number.solar_maximum_cylinder_temperature,number.solar_cylmaxtemp,8,0,1,5,1
+"ISM2",solar,103,pumpworktime,pump working time,time,minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime,8,0,1,3,2
+"ISM2",solar,103,cylmaxtemp,maximum cylinder temperature,uint8 (>=0<=0),C,true,number.solar_maximum_cylinder_temperature,number.solar_cylmaxtemp,8,0,1,5,1
"ISM2",solar,103,collectorshutdown,collector shutdown,boolean, ,false,binary_sensor.solar_collector_shutdown,binary_sensor.solar_collectorshutdown,8,0,1,6,1
"ISM2",solar,103,cylheated,cyl heated,boolean, ,false,binary_sensor.solar_cyl_heated,binary_sensor.solar_cylheated,8,0,1,7,1
-"ISM2",solar,103,cylmiddletemp,cylinder middle temperature (TS3),int16 (>=-3199<=3199),C,false,sensor.solar_cylinder_middle_temperature_(TS3),sensor.solar_cylmiddletemp,8,0,1/10,17,1
-"ISM2",solar,103,retheatassist,return temperature heat assistance (TS4),int16 (>=-3199<=3199),C,false,sensor.solar_return_temperature_heat_assistance_(TS4),sensor.solar_retheatassist,8,0,1/10,18,1
+"ISM2",solar,103,cylmiddletemp,cylinder middle temperature (TS3),int16,C,false,sensor.solar_cylinder_middle_temperature_(TS3),sensor.solar_cylmiddletemp,8,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,8,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,8,0,1,19,1
-"ISM2",solar,103,energylasthour,energy last hour,uint24 (>=0<=1677721),Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour,8,0,1/10,13,2
-"SM50",solar,162,collectortemp,collector temperature (TS1),int16 (>=-3199<=3199),C,false,sensor.solar_collector_temperature_(TS1),sensor.solar_collectortemp,8,0,1/10,0,1
-"SM50",solar,162,cylbottomtemp,cylinder bottom temperature (TS2),int16 (>=-3199<=3199),C,false,sensor.solar_cylinder_bottom_temperature_(TS2),sensor.solar_cylbottomtemp,8,0,1/10,1,1
+"ISM2",solar,103,energylasthour,energy last hour,uint24,Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour,8,0,1/10,13,2
+"SM50",solar,162,collectortemp,collector temperature (TS1),int16,C,false,sensor.solar_collector_temperature_(TS1),sensor.solar_collectortemp,8,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,8,0,1/10,1,1
"SM50",solar,162,solarpump,pump (PS1),boolean, ,false,binary_sensor.solar_pump_(PS1),binary_sensor.solar_solarpump,8,0,1,2,1
-"SM50",solar,162,pumpworktime,pump working time,time (>=0<=16777214),minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime,8,0,1,3,2
-"SM50",solar,162,cylmaxtemp,maximum cylinder temperature,uint8 (>=0<=254),C,true,number.solar_maximum_cylinder_temperature,number.solar_cylmaxtemp,8,0,1,5,1
+"SM50",solar,162,pumpworktime,pump working time,time,minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime,8,0,1,3,2
+"SM50",solar,162,cylmaxtemp,maximum cylinder temperature,uint8 (>=0<=0),C,true,number.solar_maximum_cylinder_temperature,number.solar_cylmaxtemp,8,0,1,5,1
"SM50",solar,162,collectorshutdown,collector shutdown,boolean, ,false,binary_sensor.solar_collector_shutdown,binary_sensor.solar_collectorshutdown,8,0,1,6,1
"SM50",solar,162,cylheated,cyl heated,boolean, ,false,binary_sensor.solar_cyl_heated,binary_sensor.solar_cylheated,8,0,1,7,1
-"SM50",solar,162,solarpumpmod,pump modulation (PS1),uint8 (>=0<=100),%,false,sensor.solar_pump_modulation_(PS1),sensor.solar_solarpumpmod,8,0,1,8,1
-"SM50",solar,162,pumpminmod,minimum pump modulation,uint8 (>=0<=100),%,true,number.solar_minimum_pump_modulation,number.solar_pumpminmod,8,0,5,9,1
-"SM50",solar,162,turnondiff,pump turn on difference,uint8 (>=0<=25),C,true,number.solar_pump_turn_on_difference,number.solar_turnondiff,8,0,1/10,10,1
-"SM50",solar,162,turnoffdiff,pump turn off difference,uint8 (>=0<=25),C,true,number.solar_pump_turn_off_difference,number.solar_turnoffdiff,8,0,1/10,11,1
-"SM50",solar,162,collector2temp,collector 2 temperature (TS7),int16 (>=-3199<=3199),C,false,sensor.solar_collector_2_temperature_(TS7),sensor.solar_collector2temp,8,0,1/10,20,1
-"SM50",solar,162,cylmiddletemp,cylinder middle temperature (TS3),int16 (>=-3199<=3199),C,false,sensor.solar_cylinder_middle_temperature_(TS3),sensor.solar_cylmiddletemp,8,0,1/10,17,1
-"SM50",solar,162,retheatassist,return temperature heat assistance (TS4),int16 (>=-3199<=3199),C,false,sensor.solar_return_temperature_heat_assistance_(TS4),sensor.solar_retheatassist,8,0,1/10,18,1
-"SM50",solar,162,ts8,(TS8),int16 (>=-3199<=3199),C,false,sensor.solar_(TS8),sensor.solar_ts8,8,0,1/10,21,1
-"SM50",solar,162,ts16,(TS16),int16 (>=-3199<=3199),C,false,sensor.solar_(TS16),sensor.solar_ts16,8,0,1/10,22,1
+"SM50",solar,162,solarpumpmod,pump modulation (PS1),uint8,%,false,sensor.solar_pump_modulation_(PS1),sensor.solar_solarpumpmod,8,0,1,8,1
+"SM50",solar,162,pumpminmod,minimum pump modulation,uint8 (>=0<=0),%,true,number.solar_minimum_pump_modulation,number.solar_pumpminmod,8,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,8,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,8,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,8,0,1/10,20,1
+"SM50",solar,162,cylmiddletemp,cylinder middle temperature (TS3),int16,C,false,sensor.solar_cylinder_middle_temperature_(TS3),sensor.solar_cylmiddletemp,8,0,1/10,17,1
+"SM50",solar,162,retheatassist,return temperature heat assistance (TS4),int16,C,false,sensor.solar_return_temperature_heat_assistance_(TS4),sensor.solar_retheatassist,8,0,1/10,18,1
+"SM50",solar,162,ts8,(TS8),int16,C,false,sensor.solar_(TS8),sensor.solar_ts8,8,0,1/10,21,1
+"SM50",solar,162,ts16,(TS16),int16,C,false,sensor.solar_(TS16),sensor.solar_ts16,8,0,1/10,22,1
"SM50",solar,162,heatassistvalve,heat assistance valve (M1),boolean, ,false,binary_sensor.solar_heat_assistance_valve_(M1),binary_sensor.solar_heatassistvalve,8,0,1,19,1
-"SM50",solar,162,heatassistpower,heat assistance valve power (M1),uint8 (>=0<=100),%,false,sensor.solar_heat_assistance_valve_power_(M1),sensor.solar_heatassistpower,8,0,1,23,1
+"SM50",solar,162,heatassistpower,heat assistance valve power (M1),uint8,%,false,sensor.solar_heat_assistance_valve_power_(M1),sensor.solar_heatassistpower,8,0,1,23,1
"SM50",solar,162,solarpump2,pump 2 (PS4),boolean, ,false,binary_sensor.solar_pump_2_(PS4),binary_sensor.solar_solarpump2,8,0,1,24,1
-"SM50",solar,162,solarpump2mod,pump 2 modulation (PS4),uint8 (>=0<=100),%,false,sensor.solar_pump_2_modulation_(PS4),sensor.solar_solarpump2mod,8,0,1,25,1
-"SM50",solar,162,cyl2bottomtemp,second cylinder bottom temperature (TS5),int16 (>=-3199<=3199),C,false,sensor.solar_second_cylinder_bottom_temperature_(TS5),sensor.solar_cyl2bottomtemp,8,0,1/10,26,1
-"SM50",solar,162,cyl3bottomtemp,third cylinder bottom temperature (TS11),int16 (>=-3199<=3199),C,false,sensor.solar_third_cylinder_bottom_temperature_(TS11),sensor.solar_cyl3bottomtemp,8,0,1/10,27,1
-"SM50",solar,162,cyltoptemp,cylinder top temperature (TS10),int16 (>=-3199<=3199),C,false,sensor.solar_cylinder_top_temperature_(TS10),sensor.solar_cyltoptemp,8,0,1/10,28,1
-"SM50",solar,162,heatexchangertemp,heat exchanger temperature (TS6),int16 (>=-3199<=3199),C,false,sensor.solar_heat_exchanger_temperature_(TS6),sensor.solar_heatexchangertemp,8,0,1/10,29,1
-"SM50",solar,162,cylpumpmod,cylinder pump modulation (PS5),uint8 (>=0<=100),%,false,sensor.solar_cylinder_pump_modulation_(PS5),sensor.solar_cylpumpmod,8,0,1,30,1
+"SM50",solar,162,solarpump2mod,pump 2 modulation (PS4),uint8,%,false,sensor.solar_pump_2_modulation_(PS4),sensor.solar_solarpump2mod,8,0,1,25,1
+"SM50",solar,162,cyl2bottomtemp,second cylinder bottom temperature (TS5),int16,C,false,sensor.solar_second_cylinder_bottom_temperature_(TS5),sensor.solar_cyl2bottomtemp,8,0,1/10,26,1
+"SM50",solar,162,cyl3bottomtemp,third cylinder bottom temperature (TS11),int16,C,false,sensor.solar_third_cylinder_bottom_temperature_(TS11),sensor.solar_cyl3bottomtemp,8,0,1/10,27,1
+"SM50",solar,162,cyltoptemp,cylinder top temperature (TS10),int16,C,false,sensor.solar_cylinder_top_temperature_(TS10),sensor.solar_cyltoptemp,8,0,1/10,28,1
+"SM50",solar,162,heatexchangertemp,heat exchanger temperature (TS6),int16,C,false,sensor.solar_heat_exchanger_temperature_(TS6),sensor.solar_heatexchangertemp,8,0,1/10,29,1
+"SM50",solar,162,cylpumpmod,cylinder pump modulation (PS5),uint8,%,false,sensor.solar_cylinder_pump_modulation_(PS5),sensor.solar_cylpumpmod,8,0,1,30,1
"SM50",solar,162,valvestatus,valve status,boolean, ,false,binary_sensor.solar_valve_status,binary_sensor.solar_valvestatus,8,0,1,31,1
"SM50",solar,162,vs1status,valve status VS1,boolean, ,false,binary_sensor.solar_valve_status_VS1,binary_sensor.solar_vs1status,8,0,1,32,1
"SM50",solar,162,vs3status,valve status VS3,boolean, ,false,binary_sensor.solar_valve_status_VS3,binary_sensor.solar_vs3status,8,0,1,33,1
"SM50",solar,162,transferpump,transfer pump,boolean, ,false,binary_sensor.solar_transfer_pump,binary_sensor.solar_transferpump,8,0,1,34,1
-"SM50",solar,162,transferpumpmod,transfer pump modulation,uint8 (>=0<=100),%,false,sensor.solar_transfer_pump_modulation,sensor.solar_transferpumpmod,8,0,1,35,1
-"SM50",solar,162,collectormaxtemp,maximum collector temperature,uint8 (>=0<=254),C,true,number.solar_maximum_collector_temperature,number.solar_collectormaxtemp,8,0,1,36,1
-"SM50",solar,162,collectormintemp,minimum collector temperature,uint8 (>=0<=254),C,true,number.solar_minimum_collector_temperature,number.solar_collectormintemp,8,0,1,37,1
-"SM50",solar,162,energylasthour,energy last hour,uint24 (>=0<=1677721),Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour,8,0,1/10,13,2
-"SM50",solar,162,energytoday,total energy today,uint24 (>=0<=16777214),Wh,false,sensor.solar_total_energy_today,sensor.solar_energytoday,8,0,1,38,2
-"SM50",solar,162,energytotal,total energy,uint24 (>=0<=1677721),kWh,false,sensor.solar_total_energy,sensor.solar_energytotal,8,0,1/10,40,2
-"SM50",solar,162,pump2worktime,pump 2 working time,time (>=0<=16777214),minutes,false,sensor.solar_pump_2_working_time,sensor.solar_pump2worktime,8,0,1,42,2
-"SM50",solar,162,m1worktime,differential control working time,time (>=0<=16777214),minutes,false,sensor.solar_differential_control_working_time,sensor.solar_m1worktime,8,0,1,44,2
-"SM50",solar,162,heattransfersystem,heattransfer system,boolean, ,true,switch.solar_heattransfer_system,switch.solar_heattransfersystem,8,0,1,46,1
-"SM50",solar,162,externalcyl,external cylinder,boolean, ,true,switch.solar_external_cylinder,switch.solar_externalcyl,8,0,1,47,1
-"SM50",solar,162,thermaldisinfect,thermal disinfection,boolean, ,true,switch.solar_thermal_disinfection,switch.solar_thermaldisinfect,8,0,1,48,1
-"SM50",solar,162,heatmetering,heatmetering,boolean, ,true,switch.solar_heatmetering,switch.solar_heatmetering,8,0,1,49,1
-"SM50",solar,162,activated,activated,boolean, ,true,switch.solar_activated,switch.solar_activated,8,0,1,50,1
-"SM50",solar,162,solarpumpmode,solar pump mode,enum [constant\|pwm\|analog], ,true,select.solar_solar_pump_mode,select.solar_solarpumpmode,8,0,1,51,1
-"SM50",solar,162,solarpumpkick,solar pump kick,boolean, ,true,switch.solar_solar_pump_kick,switch.solar_solarpumpkick,8,0,1,52,1
-"SM50",solar,162,plainwatermode,plain water mode,boolean, ,true,switch.solar_plain_water_mode,switch.solar_plainwatermode,8,0,1,53,1
-"SM50",solar,162,doublematchflow,doublematchflow,boolean, ,true,switch.solar_doublematchflow,switch.solar_doublematchflow,8,0,1,54,1
-"SM50",solar,162,pump2minmod,minimum pump 2 modulation,uint8 (>=0<=100),%,true,number.solar_minimum_pump_2_modulation,number.solar_pump2minmod,8,0,1,55,1
-"SM50",solar,162,turnondiff2,pump 2 turn on difference,uint8 (>=0<=25),C,true,number.solar_pump_2_turn_on_difference,number.solar_turnondiff2,8,0,1/10,56,1
-"SM50",solar,162,turnoffdiff2,pump 2 turn off difference,uint8 (>=0<=25),C,true,number.solar_pump_2_turn_off_difference,number.solar_turnoffdiff2,8,0,1/10,57,1
-"SM50",solar,162,pump2kick,pump kick 2,boolean, ,true,switch.solar_pump_kick_2,switch.solar_pump2kick,8,0,1,58,1
-"SM50",solar,162,climatezone,climate zone,uint8 (>=0<=254), ,true,number.solar_climate_zone,number.solar_climatezone,8,0,1,59,1
-"SM50",solar,162,collector1area,collector 1 area,uint16 (>=0<=3199),m²,true,number.solar_collector_1_area,number.solar_collector1area,8,0,1/10,60,1
-"SM50",solar,162,collector1type,collector 1 type,enum [flat\|vacuum], ,true,select.solar_collector_1_type,select.solar_collector1type,8,0,1,61,1
-"SM50",solar,162,collector2area,collector 2 area,uint16 (>=0<=3199),m²,true,number.solar_collector_2_area,number.solar_collector2area,8,0,1/10,62,1
-"SM50",solar,162,collector2type,collector 2 type,enum [flat\|vacuum], ,true,select.solar_collector_2_type,select.solar_collector2type,8,0,1,63,1
-"SM50",solar,162,cylpriority,cylinder priority,enum [cyl 1\|cyl 2], ,true,select.solar_cylinder_priority,select.solar_cylpriority,8,0,1,64,1
-"SM50",solar,162,heatcntflowtemp,heat counter flow temperature,uint16 (>=0<=3199),C,false,sensor.solar_heat_counter_flow_temperature,sensor.solar_heatcntflowtemp,8,0,1/10,65,1
-"SM50",solar,162,heatcntrettemp,heat counter return temperature,uint16 (>=0<=3199),C,false,sensor.solar_heat_counter_return_temperature,sensor.solar_heatcntrettemp,8,0,1/10,66,1
-"SM50",solar,162,heatcnt,heat counter impulses,uint8 (>=0<=254), ,false,sensor.solar_heat_counter_impulses,sensor.solar_heatcnt,8,0,1,67,1
-"SM50",solar,162,swapflowtemp,swap flow temperature (TS14),uint16 (>=0<=3199),C,false,sensor.solar_swap_flow_temperature_(TS14),sensor.solar_swapflowtemp,8,0,1/10,68,1
-"SM50",solar,162,swaprettemp,swap return temperature (TS15),uint16 (>=0<=3199),C,false,sensor.solar_swap_return_temperature_(TS15),sensor.solar_swaprettemp,8,0,1/10,69,1
-"SM50",solar,162,heatassiston,heat assistance on,int8 (>=-12<=12),K,true,number.solar_heat_assistance_on,number.solar_heatassiston,8,0,1/10,70,1
-"SM50",solar,162,heatassistoff,heat assistance off,int8 (>=-12<=12),K,true,number.solar_heat_assistance_off,number.solar_heatassistoff,8,0,1/10,71,1
-"SM100, MS100",solar,163,collectortemp,collector temperature (TS1),int16 (>=-3199<=3199),C,false,sensor.solar_collector_temperature_(TS1),sensor.solar_collectortemp,8,0,1/10,0,1
-"SM100, MS100",solar,163,cylbottomtemp,cylinder bottom temperature (TS2),int16 (>=-3199<=3199),C,false,sensor.solar_cylinder_bottom_temperature_(TS2),sensor.solar_cylbottomtemp,8,0,1/10,1,1
+"SM50",solar,162,transferpumpmod,transfer pump modulation,uint8,%,false,sensor.solar_transfer_pump_modulation,sensor.solar_transferpumpmod,8,0,1,35,1
+"SM50",solar,162,collectormaxtemp,maximum collector temperature,uint8 (>=0<=0),C,true,number.solar_maximum_collector_temperature,number.solar_collectormaxtemp,8,0,1,36,1
+"SM50",solar,162,collectormintemp,minimum collector temperature,uint8 (>=0<=0),C,true,number.solar_minimum_collector_temperature,number.solar_collectormintemp,8,0,1,37,1
+"SM50",solar,162,energylasthour,energy last hour,uint24,Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour,8,0,1/10,13,2
+"SM50",solar,162,energytoday,total energy today,uint24,Wh,false,sensor.solar_total_energy_today,sensor.solar_energytoday,8,0,1,38,2
+"SM50",solar,162,energytotal,total energy,uint24,kWh,false,sensor.solar_total_energy,sensor.solar_energytotal,8,0,1/10,40,2
+"SM50",solar,162,pump2worktime,pump 2 working time,time,minutes,false,sensor.solar_pump_2_working_time,sensor.solar_pump2worktime,8,0,1,42,2
+"SM50",solar,162,m1worktime,differential control working time,time,minutes,false,sensor.solar_differential_control_working_time,sensor.solar_m1worktime,8,0,1,44,2
+"SM50",solar,162,heattransfersystem,heattransfer system,boolean (>=0<=0), ,true,switch.solar_heattransfer_system,switch.solar_heattransfersystem,8,0,1,46,1
+"SM50",solar,162,externalcyl,external cylinder,boolean (>=0<=0), ,true,switch.solar_external_cylinder,switch.solar_externalcyl,8,0,1,47,1
+"SM50",solar,162,thermaldisinfect,thermal disinfection,boolean (>=0<=0), ,true,switch.solar_thermal_disinfection,switch.solar_thermaldisinfect,8,0,1,48,1
+"SM50",solar,162,heatmetering,heatmetering,boolean (>=0<=0), ,true,switch.solar_heatmetering,switch.solar_heatmetering,8,0,1,49,1
+"SM50",solar,162,activated,activated,boolean (>=0<=0), ,true,switch.solar_activated,switch.solar_activated,8,0,1,50,1
+"SM50",solar,162,solarpumpmode,solar pump mode,enum [constant\|pwm\|analog] (>=0<=0), ,true,select.solar_solar_pump_mode,select.solar_solarpumpmode,8,0,1,51,1
+"SM50",solar,162,solarpumpkick,solar pump kick,boolean (>=0<=0), ,true,switch.solar_solar_pump_kick,switch.solar_solarpumpkick,8,0,1,52,1
+"SM50",solar,162,plainwatermode,plain water mode,boolean (>=0<=0), ,true,switch.solar_plain_water_mode,switch.solar_plainwatermode,8,0,1,53,1
+"SM50",solar,162,doublematchflow,doublematchflow,boolean (>=0<=0), ,true,switch.solar_doublematchflow,switch.solar_doublematchflow,8,0,1,54,1
+"SM50",solar,162,pump2minmod,minimum pump 2 modulation,uint8 (>=0<=0),%,true,number.solar_minimum_pump_2_modulation,number.solar_pump2minmod,8,0,1,55,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,8,0,1/10,56,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,8,0,1/10,57,1
+"SM50",solar,162,pump2kick,pump kick 2,boolean (>=0<=0), ,true,switch.solar_pump_kick_2,switch.solar_pump2kick,8,0,1,58,1
+"SM50",solar,162,climatezone,climate zone,uint8 (>=0<=0), ,true,number.solar_climate_zone,number.solar_climatezone,8,0,1,59,1
+"SM50",solar,162,collector1area,collector 1 area,uint16 (>=0<=0),m²,true,number.solar_collector_1_area,number.solar_collector1area,8,0,1/10,60,1
+"SM50",solar,162,collector1type,collector 1 type,enum [flat\|vacuum] (>=0<=0), ,true,select.solar_collector_1_type,select.solar_collector1type,8,0,1,61,1
+"SM50",solar,162,collector2area,collector 2 area,uint16 (>=0<=0),m²,true,number.solar_collector_2_area,number.solar_collector2area,8,0,1/10,62,1
+"SM50",solar,162,collector2type,collector 2 type,enum [flat\|vacuum] (>=0<=0), ,true,select.solar_collector_2_type,select.solar_collector2type,8,0,1,63,1
+"SM50",solar,162,cylpriority,cylinder priority,enum [cyl 1\|cyl 2] (>=0<=0), ,true,select.solar_cylinder_priority,select.solar_cylpriority,8,0,1,64,1
+"SM50",solar,162,heatcntflowtemp,heat counter flow temperature,uint16,C,false,sensor.solar_heat_counter_flow_temperature,sensor.solar_heatcntflowtemp,8,0,1/10,65,1
+"SM50",solar,162,heatcntrettemp,heat counter return temperature,uint16,C,false,sensor.solar_heat_counter_return_temperature,sensor.solar_heatcntrettemp,8,0,1/10,66,1
+"SM50",solar,162,heatcnt,heat counter impulses,uint8, ,false,sensor.solar_heat_counter_impulses,sensor.solar_heatcnt,8,0,1,67,1
+"SM50",solar,162,swapflowtemp,swap flow temperature (TS14),uint16,C,false,sensor.solar_swap_flow_temperature_(TS14),sensor.solar_swapflowtemp,8,0,1/10,68,1
+"SM50",solar,162,swaprettemp,swap return temperature (TS15),uint16,C,false,sensor.solar_swap_return_temperature_(TS15),sensor.solar_swaprettemp,8,0,1/10,69,1
+"SM50",solar,162,heatassiston,heat assistance on,int8 (>=0<=0),K,true,number.solar_heat_assistance_on,number.solar_heatassiston,8,0,1/10,70,1
+"SM50",solar,162,heatassistoff,heat assistance off,int8 (>=0<=0),K,true,number.solar_heat_assistance_off,number.solar_heatassistoff,8,0,1/10,71,1
+"SM100, MS100",solar,163,collectortemp,collector temperature (TS1),int16,C,false,sensor.solar_collector_temperature_(TS1),sensor.solar_collectortemp,8,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,8,0,1/10,1,1
"SM100, MS100",solar,163,solarpump,pump (PS1),boolean, ,false,binary_sensor.solar_pump_(PS1),binary_sensor.solar_solarpump,8,0,1,2,1
-"SM100, MS100",solar,163,pumpworktime,pump working time,time (>=0<=16777214),minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime,8,0,1,3,2
-"SM100, MS100",solar,163,cylmaxtemp,maximum cylinder temperature,uint8 (>=0<=254),C,true,number.solar_maximum_cylinder_temperature,number.solar_cylmaxtemp,8,0,1,5,1
+"SM100, MS100",solar,163,pumpworktime,pump working time,time,minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime,8,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,8,0,1,5,1
"SM100, MS100",solar,163,collectorshutdown,collector shutdown,boolean, ,false,binary_sensor.solar_collector_shutdown,binary_sensor.solar_collectorshutdown,8,0,1,6,1
"SM100, MS100",solar,163,cylheated,cyl heated,boolean, ,false,binary_sensor.solar_cyl_heated,binary_sensor.solar_cylheated,8,0,1,7,1
-"SM100, MS100",solar,163,solarpumpmod,pump modulation (PS1),uint8 (>=0<=100),%,false,sensor.solar_pump_modulation_(PS1),sensor.solar_solarpumpmod,8,0,1,8,1
-"SM100, MS100",solar,163,pumpminmod,minimum pump modulation,uint8 (>=0<=100),%,true,number.solar_minimum_pump_modulation,number.solar_pumpminmod,8,0,5,9,1
-"SM100, MS100",solar,163,turnondiff,pump turn on difference,uint8 (>=0<=25),C,true,number.solar_pump_turn_on_difference,number.solar_turnondiff,8,0,1/10,10,1
-"SM100, MS100",solar,163,turnoffdiff,pump turn off difference,uint8 (>=0<=25),C,true,number.solar_pump_turn_off_difference,number.solar_turnoffdiff,8,0,1/10,11,1
-"SM100, MS100",solar,163,collector2temp,collector 2 temperature (TS7),int16 (>=-3199<=3199),C,false,sensor.solar_collector_2_temperature_(TS7),sensor.solar_collector2temp,8,0,1/10,20,1
-"SM100, MS100",solar,163,cylmiddletemp,cylinder middle temperature (TS3),int16 (>=-3199<=3199),C,false,sensor.solar_cylinder_middle_temperature_(TS3),sensor.solar_cylmiddletemp,8,0,1/10,17,1
-"SM100, MS100",solar,163,retheatassist,return temperature heat assistance (TS4),int16 (>=-3199<=3199),C,false,sensor.solar_return_temperature_heat_assistance_(TS4),sensor.solar_retheatassist,8,0,1/10,18,1
-"SM100, MS100",solar,163,ts8,(TS8),int16 (>=-3199<=3199),C,false,sensor.solar_(TS8),sensor.solar_ts8,8,0,1/10,21,1
-"SM100, MS100",solar,163,ts16,(TS16),int16 (>=-3199<=3199),C,false,sensor.solar_(TS16),sensor.solar_ts16,8,0,1/10,22,1
+"SM100, MS100",solar,163,solarpumpmod,pump modulation (PS1),uint8,%,false,sensor.solar_pump_modulation_(PS1),sensor.solar_solarpumpmod,8,0,1,8,1
+"SM100, MS100",solar,163,pumpminmod,minimum pump modulation,uint8 (>=0<=0),%,true,number.solar_minimum_pump_modulation,number.solar_pumpminmod,8,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,8,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,8,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,8,0,1/10,20,1
+"SM100, MS100",solar,163,cylmiddletemp,cylinder middle temperature (TS3),int16,C,false,sensor.solar_cylinder_middle_temperature_(TS3),sensor.solar_cylmiddletemp,8,0,1/10,17,1
+"SM100, MS100",solar,163,retheatassist,return temperature heat assistance (TS4),int16,C,false,sensor.solar_return_temperature_heat_assistance_(TS4),sensor.solar_retheatassist,8,0,1/10,18,1
+"SM100, MS100",solar,163,ts8,(TS8),int16,C,false,sensor.solar_(TS8),sensor.solar_ts8,8,0,1/10,21,1
+"SM100, MS100",solar,163,ts16,(TS16),int16,C,false,sensor.solar_(TS16),sensor.solar_ts16,8,0,1/10,22,1
"SM100, MS100",solar,163,heatassistvalve,heat assistance valve (M1),boolean, ,false,binary_sensor.solar_heat_assistance_valve_(M1),binary_sensor.solar_heatassistvalve,8,0,1,19,1
-"SM100, MS100",solar,163,heatassistpower,heat assistance valve power (M1),uint8 (>=0<=100),%,false,sensor.solar_heat_assistance_valve_power_(M1),sensor.solar_heatassistpower,8,0,1,23,1
+"SM100, MS100",solar,163,heatassistpower,heat assistance valve power (M1),uint8,%,false,sensor.solar_heat_assistance_valve_power_(M1),sensor.solar_heatassistpower,8,0,1,23,1
"SM100, MS100",solar,163,solarpump2,pump 2 (PS4),boolean, ,false,binary_sensor.solar_pump_2_(PS4),binary_sensor.solar_solarpump2,8,0,1,24,1
-"SM100, MS100",solar,163,solarpump2mod,pump 2 modulation (PS4),uint8 (>=0<=100),%,false,sensor.solar_pump_2_modulation_(PS4),sensor.solar_solarpump2mod,8,0,1,25,1
-"SM100, MS100",solar,163,cyl2bottomtemp,second cylinder bottom temperature (TS5),int16 (>=-3199<=3199),C,false,sensor.solar_second_cylinder_bottom_temperature_(TS5),sensor.solar_cyl2bottomtemp,8,0,1/10,26,1
-"SM100, MS100",solar,163,cyl3bottomtemp,third cylinder bottom temperature (TS11),int16 (>=-3199<=3199),C,false,sensor.solar_third_cylinder_bottom_temperature_(TS11),sensor.solar_cyl3bottomtemp,8,0,1/10,27,1
-"SM100, MS100",solar,163,cyltoptemp,cylinder top temperature (TS10),int16 (>=-3199<=3199),C,false,sensor.solar_cylinder_top_temperature_(TS10),sensor.solar_cyltoptemp,8,0,1/10,28,1
-"SM100, MS100",solar,163,heatexchangertemp,heat exchanger temperature (TS6),int16 (>=-3199<=3199),C,false,sensor.solar_heat_exchanger_temperature_(TS6),sensor.solar_heatexchangertemp,8,0,1/10,29,1
-"SM100, MS100",solar,163,cylpumpmod,cylinder pump modulation (PS5),uint8 (>=0<=100),%,false,sensor.solar_cylinder_pump_modulation_(PS5),sensor.solar_cylpumpmod,8,0,1,30,1
+"SM100, MS100",solar,163,solarpump2mod,pump 2 modulation (PS4),uint8,%,false,sensor.solar_pump_2_modulation_(PS4),sensor.solar_solarpump2mod,8,0,1,25,1
+"SM100, MS100",solar,163,cyl2bottomtemp,second cylinder bottom temperature (TS5),int16,C,false,sensor.solar_second_cylinder_bottom_temperature_(TS5),sensor.solar_cyl2bottomtemp,8,0,1/10,26,1
+"SM100, MS100",solar,163,cyl3bottomtemp,third cylinder bottom temperature (TS11),int16,C,false,sensor.solar_third_cylinder_bottom_temperature_(TS11),sensor.solar_cyl3bottomtemp,8,0,1/10,27,1
+"SM100, MS100",solar,163,cyltoptemp,cylinder top temperature (TS10),int16,C,false,sensor.solar_cylinder_top_temperature_(TS10),sensor.solar_cyltoptemp,8,0,1/10,28,1
+"SM100, MS100",solar,163,heatexchangertemp,heat exchanger temperature (TS6),int16,C,false,sensor.solar_heat_exchanger_temperature_(TS6),sensor.solar_heatexchangertemp,8,0,1/10,29,1
+"SM100, MS100",solar,163,cylpumpmod,cylinder pump modulation (PS5),uint8,%,false,sensor.solar_cylinder_pump_modulation_(PS5),sensor.solar_cylpumpmod,8,0,1,30,1
"SM100, MS100",solar,163,valvestatus,valve status,boolean, ,false,binary_sensor.solar_valve_status,binary_sensor.solar_valvestatus,8,0,1,31,1
"SM100, MS100",solar,163,vs1status,valve status VS1,boolean, ,false,binary_sensor.solar_valve_status_VS1,binary_sensor.solar_vs1status,8,0,1,32,1
"SM100, MS100",solar,163,vs3status,valve status VS3,boolean, ,false,binary_sensor.solar_valve_status_VS3,binary_sensor.solar_vs3status,8,0,1,33,1
"SM100, MS100",solar,163,transferpump,transfer pump,boolean, ,false,binary_sensor.solar_transfer_pump,binary_sensor.solar_transferpump,8,0,1,34,1
-"SM100, MS100",solar,163,transferpumpmod,transfer pump modulation,uint8 (>=0<=100),%,false,sensor.solar_transfer_pump_modulation,sensor.solar_transferpumpmod,8,0,1,35,1
-"SM100, MS100",solar,163,collectormaxtemp,maximum collector temperature,uint8 (>=0<=254),C,true,number.solar_maximum_collector_temperature,number.solar_collectormaxtemp,8,0,1,36,1
-"SM100, MS100",solar,163,collectormintemp,minimum collector temperature,uint8 (>=0<=254),C,true,number.solar_minimum_collector_temperature,number.solar_collectormintemp,8,0,1,37,1
-"SM100, MS100",solar,163,energylasthour,energy last hour,uint24 (>=0<=1677721),Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour,8,0,1/10,13,2
-"SM100, MS100",solar,163,energytoday,total energy today,uint24 (>=0<=16777214),Wh,false,sensor.solar_total_energy_today,sensor.solar_energytoday,8,0,1,38,2
-"SM100, MS100",solar,163,energytotal,total energy,uint24 (>=0<=1677721),kWh,false,sensor.solar_total_energy,sensor.solar_energytotal,8,0,1/10,40,2
-"SM100, MS100",solar,163,pump2worktime,pump 2 working time,time (>=0<=16777214),minutes,false,sensor.solar_pump_2_working_time,sensor.solar_pump2worktime,8,0,1,42,2
-"SM100, MS100",solar,163,m1worktime,differential control working time,time (>=0<=16777214),minutes,false,sensor.solar_differential_control_working_time,sensor.solar_m1worktime,8,0,1,44,2
-"SM100, MS100",solar,163,heattransfersystem,heattransfer system,boolean, ,true,switch.solar_heattransfer_system,switch.solar_heattransfersystem,8,0,1,46,1
-"SM100, MS100",solar,163,externalcyl,external cylinder,boolean, ,true,switch.solar_external_cylinder,switch.solar_externalcyl,8,0,1,47,1
-"SM100, MS100",solar,163,thermaldisinfect,thermal disinfection,boolean, ,true,switch.solar_thermal_disinfection,switch.solar_thermaldisinfect,8,0,1,48,1
-"SM100, MS100",solar,163,heatmetering,heatmetering,boolean, ,true,switch.solar_heatmetering,switch.solar_heatmetering,8,0,1,49,1
-"SM100, MS100",solar,163,activated,activated,boolean, ,true,switch.solar_activated,switch.solar_activated,8,0,1,50,1
-"SM100, MS100",solar,163,solarpumpmode,solar pump mode,enum [constant\|pwm\|analog], ,true,select.solar_solar_pump_mode,select.solar_solarpumpmode,8,0,1,51,1
-"SM100, MS100",solar,163,solarpumpkick,solar pump kick,boolean, ,true,switch.solar_solar_pump_kick,switch.solar_solarpumpkick,8,0,1,52,1
-"SM100, MS100",solar,163,plainwatermode,plain water mode,boolean, ,true,switch.solar_plain_water_mode,switch.solar_plainwatermode,8,0,1,53,1
-"SM100, MS100",solar,163,doublematchflow,doublematchflow,boolean, ,true,switch.solar_doublematchflow,switch.solar_doublematchflow,8,0,1,54,1
-"SM100, MS100",solar,163,pump2minmod,minimum pump 2 modulation,uint8 (>=0<=100),%,true,number.solar_minimum_pump_2_modulation,number.solar_pump2minmod,8,0,1,55,1
-"SM100, MS100",solar,163,turnondiff2,pump 2 turn on difference,uint8 (>=0<=25),C,true,number.solar_pump_2_turn_on_difference,number.solar_turnondiff2,8,0,1/10,56,1
-"SM100, MS100",solar,163,turnoffdiff2,pump 2 turn off difference,uint8 (>=0<=25),C,true,number.solar_pump_2_turn_off_difference,number.solar_turnoffdiff2,8,0,1/10,57,1
-"SM100, MS100",solar,163,pump2kick,pump kick 2,boolean, ,true,switch.solar_pump_kick_2,switch.solar_pump2kick,8,0,1,58,1
-"SM100, MS100",solar,163,climatezone,climate zone,uint8 (>=0<=254), ,true,number.solar_climate_zone,number.solar_climatezone,8,0,1,59,1
-"SM100, MS100",solar,163,collector1area,collector 1 area,uint16 (>=0<=3199),m²,true,number.solar_collector_1_area,number.solar_collector1area,8,0,1/10,60,1
-"SM100, MS100",solar,163,collector1type,collector 1 type,enum [flat\|vacuum], ,true,select.solar_collector_1_type,select.solar_collector1type,8,0,1,61,1
-"SM100, MS100",solar,163,collector2area,collector 2 area,uint16 (>=0<=3199),m²,true,number.solar_collector_2_area,number.solar_collector2area,8,0,1/10,62,1
-"SM100, MS100",solar,163,collector2type,collector 2 type,enum [flat\|vacuum], ,true,select.solar_collector_2_type,select.solar_collector2type,8,0,1,63,1
-"SM100, MS100",solar,163,cylpriority,cylinder priority,enum [cyl 1\|cyl 2], ,true,select.solar_cylinder_priority,select.solar_cylpriority,8,0,1,64,1
-"SM100, MS100",solar,163,heatcntflowtemp,heat counter flow temperature,uint16 (>=0<=3199),C,false,sensor.solar_heat_counter_flow_temperature,sensor.solar_heatcntflowtemp,8,0,1/10,65,1
-"SM100, MS100",solar,163,heatcntrettemp,heat counter return temperature,uint16 (>=0<=3199),C,false,sensor.solar_heat_counter_return_temperature,sensor.solar_heatcntrettemp,8,0,1/10,66,1
-"SM100, MS100",solar,163,heatcnt,heat counter impulses,uint8 (>=0<=254), ,false,sensor.solar_heat_counter_impulses,sensor.solar_heatcnt,8,0,1,67,1
-"SM100, MS100",solar,163,swapflowtemp,swap flow temperature (TS14),uint16 (>=0<=3199),C,false,sensor.solar_swap_flow_temperature_(TS14),sensor.solar_swapflowtemp,8,0,1/10,68,1
-"SM100, MS100",solar,163,swaprettemp,swap return temperature (TS15),uint16 (>=0<=3199),C,false,sensor.solar_swap_return_temperature_(TS15),sensor.solar_swaprettemp,8,0,1/10,69,1
-"SM100, MS100",solar,163,heatassiston,heat assistance on,int8 (>=-12<=12),K,true,number.solar_heat_assistance_on,number.solar_heatassiston,8,0,1/10,70,1
-"SM100, MS100",solar,163,heatassistoff,heat assistance off,int8 (>=-12<=12),K,true,number.solar_heat_assistance_off,number.solar_heatassistoff,8,0,1/10,71,1
-"SM200, MS200",solar,164,collectortemp,collector temperature (TS1),int16 (>=-3199<=3199),C,false,sensor.solar_collector_temperature_(TS1),sensor.solar_collectortemp,8,0,1/10,0,1
-"SM200, MS200",solar,164,cylbottomtemp,cylinder bottom temperature (TS2),int16 (>=-3199<=3199),C,false,sensor.solar_cylinder_bottom_temperature_(TS2),sensor.solar_cylbottomtemp,8,0,1/10,1,1
+"SM100, MS100",solar,163,transferpumpmod,transfer pump modulation,uint8,%,false,sensor.solar_transfer_pump_modulation,sensor.solar_transferpumpmod,8,0,1,35,1
+"SM100, MS100",solar,163,collectormaxtemp,maximum collector temperature,uint8 (>=0<=0),C,true,number.solar_maximum_collector_temperature,number.solar_collectormaxtemp,8,0,1,36,1
+"SM100, MS100",solar,163,collectormintemp,minimum collector temperature,uint8 (>=0<=0),C,true,number.solar_minimum_collector_temperature,number.solar_collectormintemp,8,0,1,37,1
+"SM100, MS100",solar,163,energylasthour,energy last hour,uint24,Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour,8,0,1/10,13,2
+"SM100, MS100",solar,163,energytoday,total energy today,uint24,Wh,false,sensor.solar_total_energy_today,sensor.solar_energytoday,8,0,1,38,2
+"SM100, MS100",solar,163,energytotal,total energy,uint24,kWh,false,sensor.solar_total_energy,sensor.solar_energytotal,8,0,1/10,40,2
+"SM100, MS100",solar,163,pump2worktime,pump 2 working time,time,minutes,false,sensor.solar_pump_2_working_time,sensor.solar_pump2worktime,8,0,1,42,2
+"SM100, MS100",solar,163,m1worktime,differential control working time,time,minutes,false,sensor.solar_differential_control_working_time,sensor.solar_m1worktime,8,0,1,44,2
+"SM100, MS100",solar,163,heattransfersystem,heattransfer system,boolean (>=0<=0), ,true,switch.solar_heattransfer_system,switch.solar_heattransfersystem,8,0,1,46,1
+"SM100, MS100",solar,163,externalcyl,external cylinder,boolean (>=0<=0), ,true,switch.solar_external_cylinder,switch.solar_externalcyl,8,0,1,47,1
+"SM100, MS100",solar,163,thermaldisinfect,thermal disinfection,boolean (>=0<=0), ,true,switch.solar_thermal_disinfection,switch.solar_thermaldisinfect,8,0,1,48,1
+"SM100, MS100",solar,163,heatmetering,heatmetering,boolean (>=0<=0), ,true,switch.solar_heatmetering,switch.solar_heatmetering,8,0,1,49,1
+"SM100, MS100",solar,163,activated,activated,boolean (>=0<=0), ,true,switch.solar_activated,switch.solar_activated,8,0,1,50,1
+"SM100, MS100",solar,163,solarpumpmode,solar pump mode,enum [constant\|pwm\|analog] (>=0<=0), ,true,select.solar_solar_pump_mode,select.solar_solarpumpmode,8,0,1,51,1
+"SM100, MS100",solar,163,solarpumpkick,solar pump kick,boolean (>=0<=0), ,true,switch.solar_solar_pump_kick,switch.solar_solarpumpkick,8,0,1,52,1
+"SM100, MS100",solar,163,plainwatermode,plain water mode,boolean (>=0<=0), ,true,switch.solar_plain_water_mode,switch.solar_plainwatermode,8,0,1,53,1
+"SM100, MS100",solar,163,doublematchflow,doublematchflow,boolean (>=0<=0), ,true,switch.solar_doublematchflow,switch.solar_doublematchflow,8,0,1,54,1
+"SM100, MS100",solar,163,pump2minmod,minimum pump 2 modulation,uint8 (>=0<=0),%,true,number.solar_minimum_pump_2_modulation,number.solar_pump2minmod,8,0,1,55,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,8,0,1/10,56,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,8,0,1/10,57,1
+"SM100, MS100",solar,163,pump2kick,pump kick 2,boolean (>=0<=0), ,true,switch.solar_pump_kick_2,switch.solar_pump2kick,8,0,1,58,1
+"SM100, MS100",solar,163,climatezone,climate zone,uint8 (>=0<=0), ,true,number.solar_climate_zone,number.solar_climatezone,8,0,1,59,1
+"SM100, MS100",solar,163,collector1area,collector 1 area,uint16 (>=0<=0),m²,true,number.solar_collector_1_area,number.solar_collector1area,8,0,1/10,60,1
+"SM100, MS100",solar,163,collector1type,collector 1 type,enum [flat\|vacuum] (>=0<=0), ,true,select.solar_collector_1_type,select.solar_collector1type,8,0,1,61,1
+"SM100, MS100",solar,163,collector2area,collector 2 area,uint16 (>=0<=0),m²,true,number.solar_collector_2_area,number.solar_collector2area,8,0,1/10,62,1
+"SM100, MS100",solar,163,collector2type,collector 2 type,enum [flat\|vacuum] (>=0<=0), ,true,select.solar_collector_2_type,select.solar_collector2type,8,0,1,63,1
+"SM100, MS100",solar,163,cylpriority,cylinder priority,enum [cyl 1\|cyl 2] (>=0<=0), ,true,select.solar_cylinder_priority,select.solar_cylpriority,8,0,1,64,1
+"SM100, MS100",solar,163,heatcntflowtemp,heat counter flow temperature,uint16,C,false,sensor.solar_heat_counter_flow_temperature,sensor.solar_heatcntflowtemp,8,0,1/10,65,1
+"SM100, MS100",solar,163,heatcntrettemp,heat counter return temperature,uint16,C,false,sensor.solar_heat_counter_return_temperature,sensor.solar_heatcntrettemp,8,0,1/10,66,1
+"SM100, MS100",solar,163,heatcnt,heat counter impulses,uint8, ,false,sensor.solar_heat_counter_impulses,sensor.solar_heatcnt,8,0,1,67,1
+"SM100, MS100",solar,163,swapflowtemp,swap flow temperature (TS14),uint16,C,false,sensor.solar_swap_flow_temperature_(TS14),sensor.solar_swapflowtemp,8,0,1/10,68,1
+"SM100, MS100",solar,163,swaprettemp,swap return temperature (TS15),uint16,C,false,sensor.solar_swap_return_temperature_(TS15),sensor.solar_swaprettemp,8,0,1/10,69,1
+"SM100, MS100",solar,163,heatassiston,heat assistance on,int8 (>=0<=0),K,true,number.solar_heat_assistance_on,number.solar_heatassiston,8,0,1/10,70,1
+"SM100, MS100",solar,163,heatassistoff,heat assistance off,int8 (>=0<=0),K,true,number.solar_heat_assistance_off,number.solar_heatassistoff,8,0,1/10,71,1
+"SM200, MS200",solar,164,collectortemp,collector temperature (TS1),int16,C,false,sensor.solar_collector_temperature_(TS1),sensor.solar_collectortemp,8,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,8,0,1/10,1,1
"SM200, MS200",solar,164,solarpump,pump (PS1),boolean, ,false,binary_sensor.solar_pump_(PS1),binary_sensor.solar_solarpump,8,0,1,2,1
-"SM200, MS200",solar,164,pumpworktime,pump working time,time (>=0<=16777214),minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime,8,0,1,3,2
-"SM200, MS200",solar,164,cylmaxtemp,maximum cylinder temperature,uint8 (>=0<=254),C,true,number.solar_maximum_cylinder_temperature,number.solar_cylmaxtemp,8,0,1,5,1
+"SM200, MS200",solar,164,pumpworktime,pump working time,time,minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime,8,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,8,0,1,5,1
"SM200, MS200",solar,164,collectorshutdown,collector shutdown,boolean, ,false,binary_sensor.solar_collector_shutdown,binary_sensor.solar_collectorshutdown,8,0,1,6,1
"SM200, MS200",solar,164,cylheated,cyl heated,boolean, ,false,binary_sensor.solar_cyl_heated,binary_sensor.solar_cylheated,8,0,1,7,1
-"SM200, MS200",solar,164,solarpumpmod,pump modulation (PS1),uint8 (>=0<=100),%,false,sensor.solar_pump_modulation_(PS1),sensor.solar_solarpumpmod,8,0,1,8,1
-"SM200, MS200",solar,164,pumpminmod,minimum pump modulation,uint8 (>=0<=100),%,true,number.solar_minimum_pump_modulation,number.solar_pumpminmod,8,0,5,9,1
-"SM200, MS200",solar,164,turnondiff,pump turn on difference,uint8 (>=0<=25),C,true,number.solar_pump_turn_on_difference,number.solar_turnondiff,8,0,1/10,10,1
-"SM200, MS200",solar,164,turnoffdiff,pump turn off difference,uint8 (>=0<=25),C,true,number.solar_pump_turn_off_difference,number.solar_turnoffdiff,8,0,1/10,11,1
-"SM200, MS200",solar,164,collector2temp,collector 2 temperature (TS7),int16 (>=-3199<=3199),C,false,sensor.solar_collector_2_temperature_(TS7),sensor.solar_collector2temp,8,0,1/10,20,1
-"SM200, MS200",solar,164,cylmiddletemp,cylinder middle temperature (TS3),int16 (>=-3199<=3199),C,false,sensor.solar_cylinder_middle_temperature_(TS3),sensor.solar_cylmiddletemp,8,0,1/10,17,1
-"SM200, MS200",solar,164,retheatassist,return temperature heat assistance (TS4),int16 (>=-3199<=3199),C,false,sensor.solar_return_temperature_heat_assistance_(TS4),sensor.solar_retheatassist,8,0,1/10,18,1
-"SM200, MS200",solar,164,ts8,(TS8),int16 (>=-3199<=3199),C,false,sensor.solar_(TS8),sensor.solar_ts8,8,0,1/10,21,1
-"SM200, MS200",solar,164,ts16,(TS16),int16 (>=-3199<=3199),C,false,sensor.solar_(TS16),sensor.solar_ts16,8,0,1/10,22,1
+"SM200, MS200",solar,164,solarpumpmod,pump modulation (PS1),uint8,%,false,sensor.solar_pump_modulation_(PS1),sensor.solar_solarpumpmod,8,0,1,8,1
+"SM200, MS200",solar,164,pumpminmod,minimum pump modulation,uint8 (>=0<=0),%,true,number.solar_minimum_pump_modulation,number.solar_pumpminmod,8,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,8,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,8,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,8,0,1/10,20,1
+"SM200, MS200",solar,164,cylmiddletemp,cylinder middle temperature (TS3),int16,C,false,sensor.solar_cylinder_middle_temperature_(TS3),sensor.solar_cylmiddletemp,8,0,1/10,17,1
+"SM200, MS200",solar,164,retheatassist,return temperature heat assistance (TS4),int16,C,false,sensor.solar_return_temperature_heat_assistance_(TS4),sensor.solar_retheatassist,8,0,1/10,18,1
+"SM200, MS200",solar,164,ts8,(TS8),int16,C,false,sensor.solar_(TS8),sensor.solar_ts8,8,0,1/10,21,1
+"SM200, MS200",solar,164,ts16,(TS16),int16,C,false,sensor.solar_(TS16),sensor.solar_ts16,8,0,1/10,22,1
"SM200, MS200",solar,164,heatassistvalve,heat assistance valve (M1),boolean, ,false,binary_sensor.solar_heat_assistance_valve_(M1),binary_sensor.solar_heatassistvalve,8,0,1,19,1
-"SM200, MS200",solar,164,heatassistpower,heat assistance valve power (M1),uint8 (>=0<=100),%,false,sensor.solar_heat_assistance_valve_power_(M1),sensor.solar_heatassistpower,8,0,1,23,1
+"SM200, MS200",solar,164,heatassistpower,heat assistance valve power (M1),uint8,%,false,sensor.solar_heat_assistance_valve_power_(M1),sensor.solar_heatassistpower,8,0,1,23,1
"SM200, MS200",solar,164,solarpump2,pump 2 (PS4),boolean, ,false,binary_sensor.solar_pump_2_(PS4),binary_sensor.solar_solarpump2,8,0,1,24,1
-"SM200, MS200",solar,164,solarpump2mod,pump 2 modulation (PS4),uint8 (>=0<=100),%,false,sensor.solar_pump_2_modulation_(PS4),sensor.solar_solarpump2mod,8,0,1,25,1
-"SM200, MS200",solar,164,cyl2bottomtemp,second cylinder bottom temperature (TS5),int16 (>=-3199<=3199),C,false,sensor.solar_second_cylinder_bottom_temperature_(TS5),sensor.solar_cyl2bottomtemp,8,0,1/10,26,1
-"SM200, MS200",solar,164,cyl3bottomtemp,third cylinder bottom temperature (TS11),int16 (>=-3199<=3199),C,false,sensor.solar_third_cylinder_bottom_temperature_(TS11),sensor.solar_cyl3bottomtemp,8,0,1/10,27,1
-"SM200, MS200",solar,164,cyltoptemp,cylinder top temperature (TS10),int16 (>=-3199<=3199),C,false,sensor.solar_cylinder_top_temperature_(TS10),sensor.solar_cyltoptemp,8,0,1/10,28,1
-"SM200, MS200",solar,164,heatexchangertemp,heat exchanger temperature (TS6),int16 (>=-3199<=3199),C,false,sensor.solar_heat_exchanger_temperature_(TS6),sensor.solar_heatexchangertemp,8,0,1/10,29,1
-"SM200, MS200",solar,164,cylpumpmod,cylinder pump modulation (PS5),uint8 (>=0<=100),%,false,sensor.solar_cylinder_pump_modulation_(PS5),sensor.solar_cylpumpmod,8,0,1,30,1
+"SM200, MS200",solar,164,solarpump2mod,pump 2 modulation (PS4),uint8,%,false,sensor.solar_pump_2_modulation_(PS4),sensor.solar_solarpump2mod,8,0,1,25,1
+"SM200, MS200",solar,164,cyl2bottomtemp,second cylinder bottom temperature (TS5),int16,C,false,sensor.solar_second_cylinder_bottom_temperature_(TS5),sensor.solar_cyl2bottomtemp,8,0,1/10,26,1
+"SM200, MS200",solar,164,cyl3bottomtemp,third cylinder bottom temperature (TS11),int16,C,false,sensor.solar_third_cylinder_bottom_temperature_(TS11),sensor.solar_cyl3bottomtemp,8,0,1/10,27,1
+"SM200, MS200",solar,164,cyltoptemp,cylinder top temperature (TS10),int16,C,false,sensor.solar_cylinder_top_temperature_(TS10),sensor.solar_cyltoptemp,8,0,1/10,28,1
+"SM200, MS200",solar,164,heatexchangertemp,heat exchanger temperature (TS6),int16,C,false,sensor.solar_heat_exchanger_temperature_(TS6),sensor.solar_heatexchangertemp,8,0,1/10,29,1
+"SM200, MS200",solar,164,cylpumpmod,cylinder pump modulation (PS5),uint8,%,false,sensor.solar_cylinder_pump_modulation_(PS5),sensor.solar_cylpumpmod,8,0,1,30,1
"SM200, MS200",solar,164,valvestatus,valve status,boolean, ,false,binary_sensor.solar_valve_status,binary_sensor.solar_valvestatus,8,0,1,31,1
"SM200, MS200",solar,164,vs1status,valve status VS1,boolean, ,false,binary_sensor.solar_valve_status_VS1,binary_sensor.solar_vs1status,8,0,1,32,1
"SM200, MS200",solar,164,vs3status,valve status VS3,boolean, ,false,binary_sensor.solar_valve_status_VS3,binary_sensor.solar_vs3status,8,0,1,33,1
"SM200, MS200",solar,164,transferpump,transfer pump,boolean, ,false,binary_sensor.solar_transfer_pump,binary_sensor.solar_transferpump,8,0,1,34,1
-"SM200, MS200",solar,164,transferpumpmod,transfer pump modulation,uint8 (>=0<=100),%,false,sensor.solar_transfer_pump_modulation,sensor.solar_transferpumpmod,8,0,1,35,1
-"SM200, MS200",solar,164,collectormaxtemp,maximum collector temperature,uint8 (>=0<=254),C,true,number.solar_maximum_collector_temperature,number.solar_collectormaxtemp,8,0,1,36,1
-"SM200, MS200",solar,164,collectormintemp,minimum collector temperature,uint8 (>=0<=254),C,true,number.solar_minimum_collector_temperature,number.solar_collectormintemp,8,0,1,37,1
-"SM200, MS200",solar,164,energylasthour,energy last hour,uint24 (>=0<=1677721),Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour,8,0,1/10,13,2
-"SM200, MS200",solar,164,energytoday,total energy today,uint24 (>=0<=16777214),Wh,false,sensor.solar_total_energy_today,sensor.solar_energytoday,8,0,1,38,2
-"SM200, MS200",solar,164,energytotal,total energy,uint24 (>=0<=1677721),kWh,false,sensor.solar_total_energy,sensor.solar_energytotal,8,0,1/10,40,2
-"SM200, MS200",solar,164,pump2worktime,pump 2 working time,time (>=0<=16777214),minutes,false,sensor.solar_pump_2_working_time,sensor.solar_pump2worktime,8,0,1,42,2
-"SM200, MS200",solar,164,m1worktime,differential control working time,time (>=0<=16777214),minutes,false,sensor.solar_differential_control_working_time,sensor.solar_m1worktime,8,0,1,44,2
-"SM200, MS200",solar,164,heattransfersystem,heattransfer system,boolean, ,true,switch.solar_heattransfer_system,switch.solar_heattransfersystem,8,0,1,46,1
-"SM200, MS200",solar,164,externalcyl,external cylinder,boolean, ,true,switch.solar_external_cylinder,switch.solar_externalcyl,8,0,1,47,1
-"SM200, MS200",solar,164,thermaldisinfect,thermal disinfection,boolean, ,true,switch.solar_thermal_disinfection,switch.solar_thermaldisinfect,8,0,1,48,1
-"SM200, MS200",solar,164,heatmetering,heatmetering,boolean, ,true,switch.solar_heatmetering,switch.solar_heatmetering,8,0,1,49,1
-"SM200, MS200",solar,164,activated,activated,boolean, ,true,switch.solar_activated,switch.solar_activated,8,0,1,50,1
-"SM200, MS200",solar,164,solarpumpmode,solar pump mode,enum [constant\|pwm\|analog], ,true,select.solar_solar_pump_mode,select.solar_solarpumpmode,8,0,1,51,1
-"SM200, MS200",solar,164,solarpumpkick,solar pump kick,boolean, ,true,switch.solar_solar_pump_kick,switch.solar_solarpumpkick,8,0,1,52,1
-"SM200, MS200",solar,164,plainwatermode,plain water mode,boolean, ,true,switch.solar_plain_water_mode,switch.solar_plainwatermode,8,0,1,53,1
-"SM200, MS200",solar,164,doublematchflow,doublematchflow,boolean, ,true,switch.solar_doublematchflow,switch.solar_doublematchflow,8,0,1,54,1
-"SM200, MS200",solar,164,pump2minmod,minimum pump 2 modulation,uint8 (>=0<=100),%,true,number.solar_minimum_pump_2_modulation,number.solar_pump2minmod,8,0,1,55,1
-"SM200, MS200",solar,164,turnondiff2,pump 2 turn on difference,uint8 (>=0<=25),C,true,number.solar_pump_2_turn_on_difference,number.solar_turnondiff2,8,0,1/10,56,1
-"SM200, MS200",solar,164,turnoffdiff2,pump 2 turn off difference,uint8 (>=0<=25),C,true,number.solar_pump_2_turn_off_difference,number.solar_turnoffdiff2,8,0,1/10,57,1
-"SM200, MS200",solar,164,pump2kick,pump kick 2,boolean, ,true,switch.solar_pump_kick_2,switch.solar_pump2kick,8,0,1,58,1
-"SM200, MS200",solar,164,climatezone,climate zone,uint8 (>=0<=254), ,true,number.solar_climate_zone,number.solar_climatezone,8,0,1,59,1
-"SM200, MS200",solar,164,collector1area,collector 1 area,uint16 (>=0<=3199),m²,true,number.solar_collector_1_area,number.solar_collector1area,8,0,1/10,60,1
-"SM200, MS200",solar,164,collector1type,collector 1 type,enum [flat\|vacuum], ,true,select.solar_collector_1_type,select.solar_collector1type,8,0,1,61,1
-"SM200, MS200",solar,164,collector2area,collector 2 area,uint16 (>=0<=3199),m²,true,number.solar_collector_2_area,number.solar_collector2area,8,0,1/10,62,1
-"SM200, MS200",solar,164,collector2type,collector 2 type,enum [flat\|vacuum], ,true,select.solar_collector_2_type,select.solar_collector2type,8,0,1,63,1
-"SM200, MS200",solar,164,cylpriority,cylinder priority,enum [cyl 1\|cyl 2], ,true,select.solar_cylinder_priority,select.solar_cylpriority,8,0,1,64,1
-"SM200, MS200",solar,164,heatcntflowtemp,heat counter flow temperature,uint16 (>=0<=3199),C,false,sensor.solar_heat_counter_flow_temperature,sensor.solar_heatcntflowtemp,8,0,1/10,65,1
-"SM200, MS200",solar,164,heatcntrettemp,heat counter return temperature,uint16 (>=0<=3199),C,false,sensor.solar_heat_counter_return_temperature,sensor.solar_heatcntrettemp,8,0,1/10,66,1
-"SM200, MS200",solar,164,heatcnt,heat counter impulses,uint8 (>=0<=254), ,false,sensor.solar_heat_counter_impulses,sensor.solar_heatcnt,8,0,1,67,1
-"SM200, MS200",solar,164,swapflowtemp,swap flow temperature (TS14),uint16 (>=0<=3199),C,false,sensor.solar_swap_flow_temperature_(TS14),sensor.solar_swapflowtemp,8,0,1/10,68,1
-"SM200, MS200",solar,164,swaprettemp,swap return temperature (TS15),uint16 (>=0<=3199),C,false,sensor.solar_swap_return_temperature_(TS15),sensor.solar_swaprettemp,8,0,1/10,69,1
-"SM200, MS200",solar,164,heatassiston,heat assistance on,int8 (>=-12<=12),K,true,number.solar_heat_assistance_on,number.solar_heatassiston,8,0,1/10,70,1
-"SM200, MS200",solar,164,heatassistoff,heat assistance off,int8 (>=-12<=12),K,true,number.solar_heat_assistance_off,number.solar_heatassistoff,8,0,1/10,71,1
-"HP Module",heatpump,252,airhumidity,relative air humidity,uint8 (>=0<=100),%,false,sensor.heatpump_relative_air_humidity,sensor.heatpump_airhumidity,9,0,1,0,1
-"HP Module",heatpump,252,dewtemperature,dew point temperature,uint8 (>=0<=254),C,false,sensor.heatpump_dew_point_temperature,sensor.heatpump_dewtemperature,9,0,1,1,1
-"HP Module",heatpump,252,curflowtemp,current flow temperature,int16 (>=-3199<=3199),C,false,sensor.heatpump_current_flow_temperature,sensor.heatpump_curflowtemp,9,0,1/10,2,1
-"HP Module",heatpump,252,rettemp,return temperature,int16 (>=-3199<=3199),C,false,sensor.heatpump_return_temperature,sensor.heatpump_rettemp,9,0,1/10,3,1
-"HP Module",heatpump,252,sysrettemp,system return temperature,int16 (>=-3199<=3199),C,false,sensor.heatpump_system_return_temperature,sensor.heatpump_sysrettemp,9,0,1/10,4,1
-"HP Module",heatpump,252,hpta4,drain pan temp (TA4),int16 (>=-3199<=3199),C,false,sensor.heatpump_drain_pan_temp_(TA4),sensor.heatpump_hpta4,9,0,1/10,5,1
-"HP Module",heatpump,252,hptr1,compressor temperature (TR1),int16 (>=-3199<=3199),C,false,sensor.heatpump_compressor_temperature_(TR1),sensor.heatpump_hptr1,9,0,1/10,6,1
-"HP Module",heatpump,252,hptr3,refrigerant temperature liquid side (condenser output) (TR3),int16 (>=-3199<=3199),C,false,sensor.heatpump_refrigerant_temperature_liquid_side_(condenser_output)_(TR3),sensor.heatpump_hptr3,9,0,1/10,7,1
-"HP Module",heatpump,252,hptr4,evaporator inlet temperature (TR4),int16 (>=-3199<=3199),C,false,sensor.heatpump_evaporator_inlet_temperature_(TR4),sensor.heatpump_hptr4,9,0,1/10,8,1
-"HP Module",heatpump,252,hptr5,compressor inlet temperature (TR5),int16 (>=-3199<=3199),C,false,sensor.heatpump_compressor_inlet_temperature_(TR5),sensor.heatpump_hptr5,9,0,1/10,9,1
-"HP Module",heatpump,252,hptr6,compressor outlet temperature (TR6),int16 (>=-3199<=3199),C,false,sensor.heatpump_compressor_outlet_temperature_(TR6),sensor.heatpump_hptr6,9,0,1/10,10,1
-"HP Module",heatpump,252,hptl2,air inlet temperature (TL2),int16 (>=-3199<=3199),C,false,sensor.heatpump_air_inlet_temperature_(TL2),sensor.heatpump_hptl2,9,0,1/10,11,1
-"HP Module",heatpump,252,hppl1,low pressure side temperature (PL1),int16 (>=-3199<=3199),C,false,sensor.heatpump_low_pressure_side_temperature_(PL1),sensor.heatpump_hppl1,9,0,1/10,12,1
-"HP Module",heatpump,252,hpph1,high pressure side temperature (PH1),int16 (>=-3199<=3199),C,false,sensor.heatpump_high_pressure_side_temperature_(PH1),sensor.heatpump_hpph1,9,0,1/10,13,1
-"HP Module",heatpump,252,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.heatpump_heating_pump_modulation,sensor.heatpump_heatingpumpmod,9,0,1,14,1
-"HP Module",heatpump,252,hpcompspd,compressor speed,uint8 (>=0<=100),%,false,sensor.heatpump_compressor_speed,sensor.heatpump_hpcompspd,9,0,1,15,1
-"HP Module",heatpump,252,hybridstrategy,hybrid control strategy,enum [cost optimized\|co2 optimized\|outside temperature alt.\|outside temperature parallel\|heatpump preferred\|boiler only], ,true,select.heatpump_hybrid_control_strategy,select.heatpump_hybridstrategy,9,0,1,16,1
-"HP Module",heatpump,252,lownoisemode,low noise mode,enum [off\|reduced output\|switch off hp\|perm. reduced], ,true,select.heatpump_low_noise_mode,select.heatpump_lownoisemode,9,0,1,17,1
-"HP Module",heatpump,252,lownoisestart,low noise starttime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_starttime,number.heatpump_lownoisestart,9,0,1,18,1
-"HP Module",heatpump,252,lownoisestop,low noise stoptime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_stoptime,number.heatpump_lownoisestop,9,0,1,19,1
-"HP Module",heatpump,252,dhw.hybriddhw,hybrid DHW,enum [eco\|high comfort], ,true,select.heatpump_dhw_hybrid_DHW,select.heatpump_dhw_hybriddhw,9,9,1,0,1
-"HP Module",heatpump,252,energypricegas,energy price gas,uint8 (>=0<=254),ct/kWh,true,number.heatpump_energy_price_gas,number.heatpump_energypricegas,9,0,1,20,1
-"HP Module",heatpump,252,energypriceel,energy price electric,uint8 (>=0<=254),ct/kWh,true,number.heatpump_energy_price_electric,number.heatpump_energypriceel,9,0,1,21,1
-"HP Module",heatpump,252,energyfeedpv,feed in PV,uint8 (>=0<=254),ct/kWh,true,number.heatpump_feed_in_PV,number.heatpump_energyfeedpv,9,0,1,22,1
-"HP Module",heatpump,252,switchovertemp,outside switchover temperature,int8 (>=-126<=126),C,true,number.heatpump_outside_switchover_temperature,number.heatpump_switchovertemp,9,0,1,23,1
-"HP Module",heatpump,252,airpurgemode,air purge mode,boolean, ,true,switch.heatpump_air_purge_mode,switch.heatpump_airpurgemode,9,0,1,24,1
-"HP Module",heatpump,252,heatpumpoutput,heatpump output,uint8 (>=0<=100),%,true,number.heatpump_heatpump_output,number.heatpump_heatpumpoutput,9,0,1,25,1
-"HP Module",heatpump,252,coolingcircuit,cooling circuit,boolean, ,true,switch.heatpump_cooling_circuit,switch.heatpump_coolingcircuit,9,0,1,26,1
-"HP Module",heatpump,252,compstartmod,compressor start modulation,uint8 (>=0<=100),%,true,number.heatpump_compressor_start_modulation,number.heatpump_compstartmod,9,0,1,27,1
-"HP Module",heatpump,252,heatdrainpan,heat drain pan,boolean, ,true,switch.heatpump_heat_drain_pan,switch.heatpump_heatdrainpan,9,0,1,28,1
-"HP Module",heatpump,252,heatcable,heating cable,boolean, ,true,switch.heatpump_heating_cable,switch.heatpump_heatcable,9,0,1,29,1
-"HP Module",heatpump,252,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.heatpump_total_energy,sensor.heatpump_nrgtotal,9,0,1/100,30,2
-"HP Module",heatpump,252,dhw.nrg,energy,uint24 (>=0<=167772),kWh,false,sensor.heatpump_dhw_energy,sensor.heatpump_dhw_nrg,9,9,1/100,1,2
-"HP Module",heatpump,252,nrgheat,energy heating,uint24 (>=0<=167772),kWh,false,sensor.heatpump_energy_heating,sensor.heatpump_nrgheat,9,0,1/100,32,2
-"HP Module",heatpump,252,metertotal,meter total,uint24 (>=0<=167772),kWh,false,sensor.heatpump_meter_total,sensor.heatpump_metertotal,9,0,1/100,34,2
-"HP Module",heatpump,252,metercomp,meter compressor,uint24 (>=0<=167772),kWh,false,sensor.heatpump_meter_compressor,sensor.heatpump_metercomp,9,0,1/100,36,2
-"HP Module",heatpump,252,metereheat,meter e-heater,uint24 (>=0<=167772),kWh,false,sensor.heatpump_meter_e-heater,sensor.heatpump_metereheat,9,0,1/100,38,2
-"HP Module",heatpump,252,meterheat,meter heating,uint24 (>=0<=167772),kWh,false,sensor.heatpump_meter_heating,sensor.heatpump_meterheat,9,0,1/100,40,2
-"HP Module",heatpump,252,dhw.meter,meter,uint24 (>=0<=167772),kWh,false,sensor.heatpump_dhw_meter,sensor.heatpump_dhw_meter,9,9,1/100,3,2
-"HP Module",heatpump,252,heatingstarts,heating control starts,uint24 (>=0<=16777214), ,false,sensor.heatpump_heating_control_starts,sensor.heatpump_heatingstarts,9,0,1,42,2
-"HP Module",heatpump,252,dhw.startshp,starts hp,uint24 (>=0<=16777214), ,false,sensor.heatpump_dhw_starts_hp,sensor.heatpump_dhw_startshp,9,9,1,5,2
-"HP Module",heatpump,252,fuelheat,fuel consumption heating,uint32 (>=0<=1677721),kWh,false,sensor.heatpump_fuel_consumption_heating,sensor.heatpump_fuelheat,9,0,1/10,44,2
-"HP Module",heatpump,252,dhw.fueldhw,fuel consumption,uint32 (>=0<=1677721),kWh,false,sensor.heatpump_dhw_fuel_consumption,sensor.heatpump_dhw_fueldhw,9,9,1/10,7,2
-"HP Module",heatpump,252,elheat,el. consumption heating,uint32 (>=0<=1677721),kWh,false,sensor.heatpump_el._consumption_heating,sensor.heatpump_elheat,9,0,1/10,46,2
-"HP Module",heatpump,252,dhw.eldhw,el. consumption,uint32 (>=0<=1677721),kWh,false,sensor.heatpump_dhw_el._consumption,sensor.heatpump_dhw_eldhw,9,9,1/10,9,2
-"HP Module",heatpump,252,elgenheat,el. generation heating,uint32 (>=0<=1677721),kWh,false,sensor.heatpump_el._generation_heating,sensor.heatpump_elgenheat,9,0,1/10,48,2
-"HP Module",heatpump,252,dhw.elgendhw,el generation,uint32 (>=0<=1677721),kWh,false,sensor.heatpump_dhw_el_generation,sensor.heatpump_dhw_elgendhw,9,9,1/10,11,2
-"Hybrid Manager HM200",heatpump,248,airhumidity,relative air humidity,uint8 (>=0<=100),%,false,sensor.heatpump_relative_air_humidity,sensor.heatpump_airhumidity,9,0,1,0,1
-"Hybrid Manager HM200",heatpump,248,dewtemperature,dew point temperature,uint8 (>=0<=254),C,false,sensor.heatpump_dew_point_temperature,sensor.heatpump_dewtemperature,9,0,1,1,1
-"Hybrid Manager HM200",heatpump,248,curflowtemp,current flow temperature,int16 (>=-3199<=3199),C,false,sensor.heatpump_current_flow_temperature,sensor.heatpump_curflowtemp,9,0,1/10,2,1
-"Hybrid Manager HM200",heatpump,248,rettemp,return temperature,int16 (>=-3199<=3199),C,false,sensor.heatpump_return_temperature,sensor.heatpump_rettemp,9,0,1/10,3,1
-"Hybrid Manager HM200",heatpump,248,sysrettemp,system return temperature,int16 (>=-3199<=3199),C,false,sensor.heatpump_system_return_temperature,sensor.heatpump_sysrettemp,9,0,1/10,4,1
-"Hybrid Manager HM200",heatpump,248,hpta4,drain pan temp (TA4),int16 (>=-3199<=3199),C,false,sensor.heatpump_drain_pan_temp_(TA4),sensor.heatpump_hpta4,9,0,1/10,5,1
-"Hybrid Manager HM200",heatpump,248,hptr1,compressor temperature (TR1),int16 (>=-3199<=3199),C,false,sensor.heatpump_compressor_temperature_(TR1),sensor.heatpump_hptr1,9,0,1/10,6,1
-"Hybrid Manager HM200",heatpump,248,hptr3,refrigerant temperature liquid side (condenser output) (TR3),int16 (>=-3199<=3199),C,false,sensor.heatpump_refrigerant_temperature_liquid_side_(condenser_output)_(TR3),sensor.heatpump_hptr3,9,0,1/10,7,1
-"Hybrid Manager HM200",heatpump,248,hptr4,evaporator inlet temperature (TR4),int16 (>=-3199<=3199),C,false,sensor.heatpump_evaporator_inlet_temperature_(TR4),sensor.heatpump_hptr4,9,0,1/10,8,1
-"Hybrid Manager HM200",heatpump,248,hptr5,compressor inlet temperature (TR5),int16 (>=-3199<=3199),C,false,sensor.heatpump_compressor_inlet_temperature_(TR5),sensor.heatpump_hptr5,9,0,1/10,9,1
-"Hybrid Manager HM200",heatpump,248,hptr6,compressor outlet temperature (TR6),int16 (>=-3199<=3199),C,false,sensor.heatpump_compressor_outlet_temperature_(TR6),sensor.heatpump_hptr6,9,0,1/10,10,1
-"Hybrid Manager HM200",heatpump,248,hptl2,air inlet temperature (TL2),int16 (>=-3199<=3199),C,false,sensor.heatpump_air_inlet_temperature_(TL2),sensor.heatpump_hptl2,9,0,1/10,11,1
-"Hybrid Manager HM200",heatpump,248,hppl1,low pressure side temperature (PL1),int16 (>=-3199<=3199),C,false,sensor.heatpump_low_pressure_side_temperature_(PL1),sensor.heatpump_hppl1,9,0,1/10,12,1
-"Hybrid Manager HM200",heatpump,248,hpph1,high pressure side temperature (PH1),int16 (>=-3199<=3199),C,false,sensor.heatpump_high_pressure_side_temperature_(PH1),sensor.heatpump_hpph1,9,0,1/10,13,1
-"Hybrid Manager HM200",heatpump,248,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.heatpump_heating_pump_modulation,sensor.heatpump_heatingpumpmod,9,0,1,14,1
-"Hybrid Manager HM200",heatpump,248,hpcompspd,compressor speed,uint8 (>=0<=100),%,false,sensor.heatpump_compressor_speed,sensor.heatpump_hpcompspd,9,0,1,15,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], ,true,select.heatpump_hybrid_control_strategy,select.heatpump_hybridstrategy,9,0,1,16,1
-"Hybrid Manager HM200",heatpump,248,lownoisemode,low noise mode,enum [off\|reduced output\|switch off hp\|perm. reduced], ,true,select.heatpump_low_noise_mode,select.heatpump_lownoisemode,9,0,1,17,1
-"Hybrid Manager HM200",heatpump,248,lownoisestart,low noise starttime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_starttime,number.heatpump_lownoisestart,9,0,1,18,1
-"Hybrid Manager HM200",heatpump,248,lownoisestop,low noise stoptime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_stoptime,number.heatpump_lownoisestop,9,0,1,19,1
-"Hybrid Manager HM200",heatpump,248,dhw.hybriddhw,hybrid DHW,enum [eco\|high comfort], ,true,select.heatpump_dhw_hybrid_DHW,select.heatpump_dhw_hybriddhw,9,9,1,0,1
-"Hybrid Manager HM200",heatpump,248,energypricegas,energy price gas,uint8 (>=0<=254),ct/kWh,true,number.heatpump_energy_price_gas,number.heatpump_energypricegas,9,0,1,20,1
-"Hybrid Manager HM200",heatpump,248,energypriceel,energy price electric,uint8 (>=0<=254),ct/kWh,true,number.heatpump_energy_price_electric,number.heatpump_energypriceel,9,0,1,21,1
-"Hybrid Manager HM200",heatpump,248,energyfeedpv,feed in PV,uint8 (>=0<=254),ct/kWh,true,number.heatpump_feed_in_PV,number.heatpump_energyfeedpv,9,0,1,22,1
-"Hybrid Manager HM200",heatpump,248,switchovertemp,outside switchover temperature,int8 (>=-126<=126),C,true,number.heatpump_outside_switchover_temperature,number.heatpump_switchovertemp,9,0,1,23,1
-"Hybrid Manager HM200",heatpump,248,airpurgemode,air purge mode,boolean, ,true,switch.heatpump_air_purge_mode,switch.heatpump_airpurgemode,9,0,1,24,1
-"Hybrid Manager HM200",heatpump,248,heatpumpoutput,heatpump output,uint8 (>=0<=100),%,true,number.heatpump_heatpump_output,number.heatpump_heatpumpoutput,9,0,1,25,1
-"Hybrid Manager HM200",heatpump,248,coolingcircuit,cooling circuit,boolean, ,true,switch.heatpump_cooling_circuit,switch.heatpump_coolingcircuit,9,0,1,26,1
-"Hybrid Manager HM200",heatpump,248,compstartmod,compressor start modulation,uint8 (>=0<=100),%,true,number.heatpump_compressor_start_modulation,number.heatpump_compstartmod,9,0,1,27,1
-"Hybrid Manager HM200",heatpump,248,heatdrainpan,heat drain pan,boolean, ,true,switch.heatpump_heat_drain_pan,switch.heatpump_heatdrainpan,9,0,1,28,1
-"Hybrid Manager HM200",heatpump,248,heatcable,heating cable,boolean, ,true,switch.heatpump_heating_cable,switch.heatpump_heatcable,9,0,1,29,1
-"Hybrid Manager HM200",heatpump,248,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.heatpump_total_energy,sensor.heatpump_nrgtotal,9,0,1/100,30,2
-"Hybrid Manager HM200",heatpump,248,dhw.nrg,energy,uint24 (>=0<=167772),kWh,false,sensor.heatpump_dhw_energy,sensor.heatpump_dhw_nrg,9,9,1/100,1,2
-"Hybrid Manager HM200",heatpump,248,nrgheat,energy heating,uint24 (>=0<=167772),kWh,false,sensor.heatpump_energy_heating,sensor.heatpump_nrgheat,9,0,1/100,32,2
-"Hybrid Manager HM200",heatpump,248,metertotal,meter total,uint24 (>=0<=167772),kWh,false,sensor.heatpump_meter_total,sensor.heatpump_metertotal,9,0,1/100,34,2
-"Hybrid Manager HM200",heatpump,248,metercomp,meter compressor,uint24 (>=0<=167772),kWh,false,sensor.heatpump_meter_compressor,sensor.heatpump_metercomp,9,0,1/100,36,2
-"Hybrid Manager HM200",heatpump,248,metereheat,meter e-heater,uint24 (>=0<=167772),kWh,false,sensor.heatpump_meter_e-heater,sensor.heatpump_metereheat,9,0,1/100,38,2
-"Hybrid Manager HM200",heatpump,248,meterheat,meter heating,uint24 (>=0<=167772),kWh,false,sensor.heatpump_meter_heating,sensor.heatpump_meterheat,9,0,1/100,40,2
-"Hybrid Manager HM200",heatpump,248,dhw.meter,meter,uint24 (>=0<=167772),kWh,false,sensor.heatpump_dhw_meter,sensor.heatpump_dhw_meter,9,9,1/100,3,2
-"Hybrid Manager HM200",heatpump,248,heatingstarts,heating control starts,uint24 (>=0<=16777214), ,false,sensor.heatpump_heating_control_starts,sensor.heatpump_heatingstarts,9,0,1,42,2
-"Hybrid Manager HM200",heatpump,248,dhw.startshp,starts hp,uint24 (>=0<=16777214), ,false,sensor.heatpump_dhw_starts_hp,sensor.heatpump_dhw_startshp,9,9,1,5,2
-"Hybrid Manager HM200",heatpump,248,fuelheat,fuel consumption heating,uint32 (>=0<=1677721),kWh,false,sensor.heatpump_fuel_consumption_heating,sensor.heatpump_fuelheat,9,0,1/10,44,2
-"Hybrid Manager HM200",heatpump,248,dhw.fueldhw,fuel consumption,uint32 (>=0<=1677721),kWh,false,sensor.heatpump_dhw_fuel_consumption,sensor.heatpump_dhw_fueldhw,9,9,1/10,7,2
-"Hybrid Manager HM200",heatpump,248,elheat,el. consumption heating,uint32 (>=0<=1677721),kWh,false,sensor.heatpump_el._consumption_heating,sensor.heatpump_elheat,9,0,1/10,46,2
-"Hybrid Manager HM200",heatpump,248,dhw.eldhw,el. consumption,uint32 (>=0<=1677721),kWh,false,sensor.heatpump_dhw_el._consumption,sensor.heatpump_dhw_eldhw,9,9,1/10,9,2
-"Hybrid Manager HM200",heatpump,248,elgenheat,el. generation heating,uint32 (>=0<=1677721),kWh,false,sensor.heatpump_el._generation_heating,sensor.heatpump_elgenheat,9,0,1/10,48,2
-"Hybrid Manager HM200",heatpump,248,dhw.elgendhw,el generation,uint32 (>=0<=1677721),kWh,false,sensor.heatpump_dhw_el_generation,sensor.heatpump_dhw_elgendhw,9,9,1/10,11,2
-"CSH5800iG",heatpump,16,airhumidity,relative air humidity,uint8 (>=0<=100),%,false,sensor.heatpump_relative_air_humidity,sensor.heatpump_airhumidity,9,0,1,0,1
-"CSH5800iG",heatpump,16,dewtemperature,dew point temperature,uint8 (>=0<=254),C,false,sensor.heatpump_dew_point_temperature,sensor.heatpump_dewtemperature,9,0,1,1,1
-"CSH5800iG",heatpump,16,curflowtemp,current flow temperature,int16 (>=-3199<=3199),C,false,sensor.heatpump_current_flow_temperature,sensor.heatpump_curflowtemp,9,0,1/10,2,1
-"CSH5800iG",heatpump,16,rettemp,return temperature,int16 (>=-3199<=3199),C,false,sensor.heatpump_return_temperature,sensor.heatpump_rettemp,9,0,1/10,3,1
-"CSH5800iG",heatpump,16,sysrettemp,system return temperature,int16 (>=-3199<=3199),C,false,sensor.heatpump_system_return_temperature,sensor.heatpump_sysrettemp,9,0,1/10,4,1
-"CSH5800iG",heatpump,16,hpta4,drain pan temp (TA4),int16 (>=-3199<=3199),C,false,sensor.heatpump_drain_pan_temp_(TA4),sensor.heatpump_hpta4,9,0,1/10,5,1
-"CSH5800iG",heatpump,16,hptr1,compressor temperature (TR1),int16 (>=-3199<=3199),C,false,sensor.heatpump_compressor_temperature_(TR1),sensor.heatpump_hptr1,9,0,1/10,6,1
-"CSH5800iG",heatpump,16,hptr3,refrigerant temperature liquid side (condenser output) (TR3),int16 (>=-3199<=3199),C,false,sensor.heatpump_refrigerant_temperature_liquid_side_(condenser_output)_(TR3),sensor.heatpump_hptr3,9,0,1/10,7,1
-"CSH5800iG",heatpump,16,hptr4,evaporator inlet temperature (TR4),int16 (>=-3199<=3199),C,false,sensor.heatpump_evaporator_inlet_temperature_(TR4),sensor.heatpump_hptr4,9,0,1/10,8,1
-"CSH5800iG",heatpump,16,hptr5,compressor inlet temperature (TR5),int16 (>=-3199<=3199),C,false,sensor.heatpump_compressor_inlet_temperature_(TR5),sensor.heatpump_hptr5,9,0,1/10,9,1
-"CSH5800iG",heatpump,16,hptr6,compressor outlet temperature (TR6),int16 (>=-3199<=3199),C,false,sensor.heatpump_compressor_outlet_temperature_(TR6),sensor.heatpump_hptr6,9,0,1/10,10,1
-"CSH5800iG",heatpump,16,hptl2,air inlet temperature (TL2),int16 (>=-3199<=3199),C,false,sensor.heatpump_air_inlet_temperature_(TL2),sensor.heatpump_hptl2,9,0,1/10,11,1
-"CSH5800iG",heatpump,16,hppl1,low pressure side temperature (PL1),int16 (>=-3199<=3199),C,false,sensor.heatpump_low_pressure_side_temperature_(PL1),sensor.heatpump_hppl1,9,0,1/10,12,1
-"CSH5800iG",heatpump,16,hpph1,high pressure side temperature (PH1),int16 (>=-3199<=3199),C,false,sensor.heatpump_high_pressure_side_temperature_(PH1),sensor.heatpump_hpph1,9,0,1/10,13,1
-"CSH5800iG",heatpump,16,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.heatpump_heating_pump_modulation,sensor.heatpump_heatingpumpmod,9,0,1,14,1
-"CSH5800iG",heatpump,16,hpcompspd,compressor speed,uint8 (>=0<=100),%,false,sensor.heatpump_compressor_speed,sensor.heatpump_hpcompspd,9,0,1,15,1
-"CSH5800iG",heatpump,16,hybridstrategy,hybrid control strategy,enum [cost optimized\|co2 optimized\|outside temperature alt.\|outside temperature parallel\|heatpump preferred\|boiler only], ,true,select.heatpump_hybrid_control_strategy,select.heatpump_hybridstrategy,9,0,1,16,1
-"CSH5800iG",heatpump,16,lownoisemode,low noise mode,enum [off\|reduced output\|switch off hp\|perm. reduced], ,true,select.heatpump_low_noise_mode,select.heatpump_lownoisemode,9,0,1,17,1
-"CSH5800iG",heatpump,16,lownoisestart,low noise starttime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_starttime,number.heatpump_lownoisestart,9,0,1,18,1
-"CSH5800iG",heatpump,16,lownoisestop,low noise stoptime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_stoptime,number.heatpump_lownoisestop,9,0,1,19,1
-"CSH5800iG",heatpump,16,dhw.hybriddhw,hybrid DHW,enum [eco\|high comfort], ,true,select.heatpump_dhw_hybrid_DHW,select.heatpump_dhw_hybriddhw,9,9,1,0,1
-"CSH5800iG",heatpump,16,energypricegas,energy price gas,uint8 (>=0<=254),ct/kWh,true,number.heatpump_energy_price_gas,number.heatpump_energypricegas,9,0,1,20,1
-"CSH5800iG",heatpump,16,energypriceel,energy price electric,uint8 (>=0<=254),ct/kWh,true,number.heatpump_energy_price_electric,number.heatpump_energypriceel,9,0,1,21,1
-"CSH5800iG",heatpump,16,energyfeedpv,feed in PV,uint8 (>=0<=254),ct/kWh,true,number.heatpump_feed_in_PV,number.heatpump_energyfeedpv,9,0,1,22,1
-"CSH5800iG",heatpump,16,switchovertemp,outside switchover temperature,int8 (>=-126<=126),C,true,number.heatpump_outside_switchover_temperature,number.heatpump_switchovertemp,9,0,1,23,1
-"CSH5800iG",heatpump,16,airpurgemode,air purge mode,boolean, ,true,switch.heatpump_air_purge_mode,switch.heatpump_airpurgemode,9,0,1,24,1
-"CSH5800iG",heatpump,16,heatpumpoutput,heatpump output,uint8 (>=0<=100),%,true,number.heatpump_heatpump_output,number.heatpump_heatpumpoutput,9,0,1,25,1
-"CSH5800iG",heatpump,16,coolingcircuit,cooling circuit,boolean, ,true,switch.heatpump_cooling_circuit,switch.heatpump_coolingcircuit,9,0,1,26,1
-"CSH5800iG",heatpump,16,compstartmod,compressor start modulation,uint8 (>=0<=100),%,true,number.heatpump_compressor_start_modulation,number.heatpump_compstartmod,9,0,1,27,1
-"CSH5800iG",heatpump,16,heatdrainpan,heat drain pan,boolean, ,true,switch.heatpump_heat_drain_pan,switch.heatpump_heatdrainpan,9,0,1,28,1
-"CSH5800iG",heatpump,16,heatcable,heating cable,boolean, ,true,switch.heatpump_heating_cable,switch.heatpump_heatcable,9,0,1,29,1
-"CSH5800iG",heatpump,16,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.heatpump_total_energy,sensor.heatpump_nrgtotal,9,0,1/100,30,2
-"CSH5800iG",heatpump,16,dhw.nrg,energy,uint24 (>=0<=167772),kWh,false,sensor.heatpump_dhw_energy,sensor.heatpump_dhw_nrg,9,9,1/100,1,2
-"CSH5800iG",heatpump,16,nrgheat,energy heating,uint24 (>=0<=167772),kWh,false,sensor.heatpump_energy_heating,sensor.heatpump_nrgheat,9,0,1/100,32,2
-"CSH5800iG",heatpump,16,metertotal,meter total,uint24 (>=0<=167772),kWh,false,sensor.heatpump_meter_total,sensor.heatpump_metertotal,9,0,1/100,34,2
-"CSH5800iG",heatpump,16,metercomp,meter compressor,uint24 (>=0<=167772),kWh,false,sensor.heatpump_meter_compressor,sensor.heatpump_metercomp,9,0,1/100,36,2
-"CSH5800iG",heatpump,16,metereheat,meter e-heater,uint24 (>=0<=167772),kWh,false,sensor.heatpump_meter_e-heater,sensor.heatpump_metereheat,9,0,1/100,38,2
-"CSH5800iG",heatpump,16,meterheat,meter heating,uint24 (>=0<=167772),kWh,false,sensor.heatpump_meter_heating,sensor.heatpump_meterheat,9,0,1/100,40,2
-"CSH5800iG",heatpump,16,dhw.meter,meter,uint24 (>=0<=167772),kWh,false,sensor.heatpump_dhw_meter,sensor.heatpump_dhw_meter,9,9,1/100,3,2
-"CSH5800iG",heatpump,16,heatingstarts,heating control starts,uint24 (>=0<=16777214), ,false,sensor.heatpump_heating_control_starts,sensor.heatpump_heatingstarts,9,0,1,42,2
-"CSH5800iG",heatpump,16,dhw.startshp,starts hp,uint24 (>=0<=16777214), ,false,sensor.heatpump_dhw_starts_hp,sensor.heatpump_dhw_startshp,9,9,1,5,2
-"CSH5800iG",heatpump,16,fuelheat,fuel consumption heating,uint32 (>=0<=1677721),kWh,false,sensor.heatpump_fuel_consumption_heating,sensor.heatpump_fuelheat,9,0,1/10,44,2
-"CSH5800iG",heatpump,16,dhw.fueldhw,fuel consumption,uint32 (>=0<=1677721),kWh,false,sensor.heatpump_dhw_fuel_consumption,sensor.heatpump_dhw_fueldhw,9,9,1/10,7,2
-"CSH5800iG",heatpump,16,elheat,el. consumption heating,uint32 (>=0<=1677721),kWh,false,sensor.heatpump_el._consumption_heating,sensor.heatpump_elheat,9,0,1/10,46,2
-"CSH5800iG",heatpump,16,dhw.eldhw,el. consumption,uint32 (>=0<=1677721),kWh,false,sensor.heatpump_dhw_el._consumption,sensor.heatpump_dhw_eldhw,9,9,1/10,9,2
-"CSH5800iG",heatpump,16,elgenheat,el. generation heating,uint32 (>=0<=1677721),kWh,false,sensor.heatpump_el._generation_heating,sensor.heatpump_elgenheat,9,0,1/10,48,2
-"CSH5800iG",heatpump,16,dhw.elgendhw,el generation,uint32 (>=0<=1677721),kWh,false,sensor.heatpump_dhw_el_generation,sensor.heatpump_dhw_elgendhw,9,9,1/10,11,2
+"SM200, MS200",solar,164,transferpumpmod,transfer pump modulation,uint8,%,false,sensor.solar_transfer_pump_modulation,sensor.solar_transferpumpmod,8,0,1,35,1
+"SM200, MS200",solar,164,collectormaxtemp,maximum collector temperature,uint8 (>=0<=0),C,true,number.solar_maximum_collector_temperature,number.solar_collectormaxtemp,8,0,1,36,1
+"SM200, MS200",solar,164,collectormintemp,minimum collector temperature,uint8 (>=0<=0),C,true,number.solar_minimum_collector_temperature,number.solar_collectormintemp,8,0,1,37,1
+"SM200, MS200",solar,164,energylasthour,energy last hour,uint24,Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour,8,0,1/10,13,2
+"SM200, MS200",solar,164,energytoday,total energy today,uint24,Wh,false,sensor.solar_total_energy_today,sensor.solar_energytoday,8,0,1,38,2
+"SM200, MS200",solar,164,energytotal,total energy,uint24,kWh,false,sensor.solar_total_energy,sensor.solar_energytotal,8,0,1/10,40,2
+"SM200, MS200",solar,164,pump2worktime,pump 2 working time,time,minutes,false,sensor.solar_pump_2_working_time,sensor.solar_pump2worktime,8,0,1,42,2
+"SM200, MS200",solar,164,m1worktime,differential control working time,time,minutes,false,sensor.solar_differential_control_working_time,sensor.solar_m1worktime,8,0,1,44,2
+"SM200, MS200",solar,164,heattransfersystem,heattransfer system,boolean (>=0<=0), ,true,switch.solar_heattransfer_system,switch.solar_heattransfersystem,8,0,1,46,1
+"SM200, MS200",solar,164,externalcyl,external cylinder,boolean (>=0<=0), ,true,switch.solar_external_cylinder,switch.solar_externalcyl,8,0,1,47,1
+"SM200, MS200",solar,164,thermaldisinfect,thermal disinfection,boolean (>=0<=0), ,true,switch.solar_thermal_disinfection,switch.solar_thermaldisinfect,8,0,1,48,1
+"SM200, MS200",solar,164,heatmetering,heatmetering,boolean (>=0<=0), ,true,switch.solar_heatmetering,switch.solar_heatmetering,8,0,1,49,1
+"SM200, MS200",solar,164,activated,activated,boolean (>=0<=0), ,true,switch.solar_activated,switch.solar_activated,8,0,1,50,1
+"SM200, MS200",solar,164,solarpumpmode,solar pump mode,enum [constant\|pwm\|analog] (>=0<=0), ,true,select.solar_solar_pump_mode,select.solar_solarpumpmode,8,0,1,51,1
+"SM200, MS200",solar,164,solarpumpkick,solar pump kick,boolean (>=0<=0), ,true,switch.solar_solar_pump_kick,switch.solar_solarpumpkick,8,0,1,52,1
+"SM200, MS200",solar,164,plainwatermode,plain water mode,boolean (>=0<=0), ,true,switch.solar_plain_water_mode,switch.solar_plainwatermode,8,0,1,53,1
+"SM200, MS200",solar,164,doublematchflow,doublematchflow,boolean (>=0<=0), ,true,switch.solar_doublematchflow,switch.solar_doublematchflow,8,0,1,54,1
+"SM200, MS200",solar,164,pump2minmod,minimum pump 2 modulation,uint8 (>=0<=0),%,true,number.solar_minimum_pump_2_modulation,number.solar_pump2minmod,8,0,1,55,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,8,0,1/10,56,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,8,0,1/10,57,1
+"SM200, MS200",solar,164,pump2kick,pump kick 2,boolean (>=0<=0), ,true,switch.solar_pump_kick_2,switch.solar_pump2kick,8,0,1,58,1
+"SM200, MS200",solar,164,climatezone,climate zone,uint8 (>=0<=0), ,true,number.solar_climate_zone,number.solar_climatezone,8,0,1,59,1
+"SM200, MS200",solar,164,collector1area,collector 1 area,uint16 (>=0<=0),m²,true,number.solar_collector_1_area,number.solar_collector1area,8,0,1/10,60,1
+"SM200, MS200",solar,164,collector1type,collector 1 type,enum [flat\|vacuum] (>=0<=0), ,true,select.solar_collector_1_type,select.solar_collector1type,8,0,1,61,1
+"SM200, MS200",solar,164,collector2area,collector 2 area,uint16 (>=0<=0),m²,true,number.solar_collector_2_area,number.solar_collector2area,8,0,1/10,62,1
+"SM200, MS200",solar,164,collector2type,collector 2 type,enum [flat\|vacuum] (>=0<=0), ,true,select.solar_collector_2_type,select.solar_collector2type,8,0,1,63,1
+"SM200, MS200",solar,164,cylpriority,cylinder priority,enum [cyl 1\|cyl 2] (>=0<=0), ,true,select.solar_cylinder_priority,select.solar_cylpriority,8,0,1,64,1
+"SM200, MS200",solar,164,heatcntflowtemp,heat counter flow temperature,uint16,C,false,sensor.solar_heat_counter_flow_temperature,sensor.solar_heatcntflowtemp,8,0,1/10,65,1
+"SM200, MS200",solar,164,heatcntrettemp,heat counter return temperature,uint16,C,false,sensor.solar_heat_counter_return_temperature,sensor.solar_heatcntrettemp,8,0,1/10,66,1
+"SM200, MS200",solar,164,heatcnt,heat counter impulses,uint8, ,false,sensor.solar_heat_counter_impulses,sensor.solar_heatcnt,8,0,1,67,1
+"SM200, MS200",solar,164,swapflowtemp,swap flow temperature (TS14),uint16,C,false,sensor.solar_swap_flow_temperature_(TS14),sensor.solar_swapflowtemp,8,0,1/10,68,1
+"SM200, MS200",solar,164,swaprettemp,swap return temperature (TS15),uint16,C,false,sensor.solar_swap_return_temperature_(TS15),sensor.solar_swaprettemp,8,0,1/10,69,1
+"SM200, MS200",solar,164,heatassiston,heat assistance on,int8 (>=0<=0),K,true,number.solar_heat_assistance_on,number.solar_heatassiston,8,0,1/10,70,1
+"SM200, MS200",solar,164,heatassistoff,heat assistance off,int8 (>=0<=0),K,true,number.solar_heat_assistance_off,number.solar_heatassistoff,8,0,1/10,71,1
+"HP Module",heatpump,252,airhumidity,relative air humidity,uint8,%,false,sensor.heatpump_relative_air_humidity,sensor.heatpump_airhumidity,9,0,1,0,1
+"HP Module",heatpump,252,dewtemperature,dew point temperature,uint8,C,false,sensor.heatpump_dew_point_temperature,sensor.heatpump_dewtemperature,9,0,1,1,1
+"HP Module",heatpump,252,curflowtemp,current flow temperature,int16,C,false,sensor.heatpump_current_flow_temperature,sensor.heatpump_curflowtemp,9,0,1/10,2,1
+"HP Module",heatpump,252,rettemp,return temperature,int16,C,false,sensor.heatpump_return_temperature,sensor.heatpump_rettemp,9,0,1/10,3,1
+"HP Module",heatpump,252,sysrettemp,system return temperature,int16,C,false,sensor.heatpump_system_return_temperature,sensor.heatpump_sysrettemp,9,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,9,0,1/10,5,1
+"HP Module",heatpump,252,hptr1,compressor temperature (TR1),int16,C,false,sensor.heatpump_compressor_temperature_(TR1),sensor.heatpump_hptr1,9,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,9,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,9,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,9,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,9,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,9,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,9,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,9,0,1/10,13,1
+"HP Module",heatpump,252,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.heatpump_heating_pump_modulation,sensor.heatpump_heatingpumpmod,9,0,1,14,1
+"HP Module",heatpump,252,hpcompspd,compressor speed,uint8,%,false,sensor.heatpump_compressor_speed,sensor.heatpump_hpcompspd,9,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,9,0,1,16,1
+"HP Module",heatpump,252,hppower,compressor power output,uint16,W,false,sensor.heatpump_compressor_power_output,sensor.heatpump_hppower,9,0,1,17,1
+"HP Module",heatpump,252,hpcurrpower,compressor current power,uint16,W,false,sensor.heatpump_compressor_current_power,sensor.heatpump_hpcurrpower,9,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,9,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,9,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,9,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,9,0,1,22,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,9,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,9,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,9,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,9,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,9,0,1,26,1
+"HP Module",heatpump,252,airpurgemode,air purge mode,boolean (>=0<=0), ,true,switch.heatpump_air_purge_mode,switch.heatpump_airpurgemode,9,0,1,27,1
+"HP Module",heatpump,252,heatpumpoutput,heatpump output,uint8 (>=0<=0),%,true,number.heatpump_heatpump_output,number.heatpump_heatpumpoutput,9,0,1,28,1
+"HP Module",heatpump,252,coolingcircuit,cooling circuit,boolean (>=0<=0), ,true,switch.heatpump_cooling_circuit,switch.heatpump_coolingcircuit,9,0,1,29,1
+"HP Module",heatpump,252,compstartmod,compressor start modulation,uint8 (>=0<=0),%,true,number.heatpump_compressor_start_modulation,number.heatpump_compstartmod,9,0,1,30,1
+"HP Module",heatpump,252,heatdrainpan,heat drain pan,boolean (>=0<=0), ,true,switch.heatpump_heat_drain_pan,switch.heatpump_heatdrainpan,9,0,1,31,1
+"HP Module",heatpump,252,heatcable,heating cable,boolean (>=0<=0), ,true,switch.heatpump_heating_cable,switch.heatpump_heatcable,9,0,1,32,1
+"HP Module",heatpump,252,nrgtotal,total energy,uint24,kWh,false,sensor.heatpump_total_energy,sensor.heatpump_nrgtotal,9,0,1/100,33,2
+"HP Module",heatpump,252,dhw.nrg,energy,uint24,kWh,false,sensor.heatpump_dhw_energy,sensor.heatpump_dhw_nrg,9,9,1/100,1,2
+"HP Module",heatpump,252,nrgheat,energy heating,uint24,kWh,false,sensor.heatpump_energy_heating,sensor.heatpump_nrgheat,9,0,1/100,35,2
+"HP Module",heatpump,252,metertotal,meter total,uint24,kWh,false,sensor.heatpump_meter_total,sensor.heatpump_metertotal,9,0,1/100,37,2
+"HP Module",heatpump,252,metercomp,meter compressor,uint24,kWh,false,sensor.heatpump_meter_compressor,sensor.heatpump_metercomp,9,0,1/100,39,2
+"HP Module",heatpump,252,metereheat,meter e-heater,uint24,kWh,false,sensor.heatpump_meter_e-heater,sensor.heatpump_metereheat,9,0,1/100,41,2
+"HP Module",heatpump,252,meterheat,meter heating,uint24,kWh,false,sensor.heatpump_meter_heating,sensor.heatpump_meterheat,9,0,1/100,43,2
+"HP Module",heatpump,252,dhw.meter,meter,uint24,kWh,false,sensor.heatpump_dhw_meter,sensor.heatpump_dhw_meter,9,9,1/100,3,2
+"HP Module",heatpump,252,heatingstarts,heating control starts,uint24, ,false,sensor.heatpump_heating_control_starts,sensor.heatpump_heatingstarts,9,0,1,45,2
+"HP Module",heatpump,252,dhw.startshp,starts hp,uint24, ,false,sensor.heatpump_dhw_starts_hp,sensor.heatpump_dhw_startshp,9,9,1,5,2
+"HP Module",heatpump,252,fuelheat,fuel consumption heating,uint32,kWh,false,sensor.heatpump_fuel_consumption_heating,sensor.heatpump_fuelheat,9,0,1/10,47,2
+"HP Module",heatpump,252,dhw.fueldhw,fuel consumption,uint32,kWh,false,sensor.heatpump_dhw_fuel_consumption,sensor.heatpump_dhw_fueldhw,9,9,1/10,7,2
+"HP Module",heatpump,252,elheat,el. consumption heating,uint32,kWh,false,sensor.heatpump_el._consumption_heating,sensor.heatpump_elheat,9,0,1/10,49,2
+"HP Module",heatpump,252,dhw.eldhw,el. consumption,uint32,kWh,false,sensor.heatpump_dhw_el._consumption,sensor.heatpump_dhw_eldhw,9,9,1/10,9,2
+"HP Module",heatpump,252,elgenheat,el. generation heating,uint32,kWh,false,sensor.heatpump_el._generation_heating,sensor.heatpump_elgenheat,9,0,1/10,51,2
+"HP Module",heatpump,252,dhw.elgendhw,el generation,uint32,kWh,false,sensor.heatpump_dhw_el_generation,sensor.heatpump_dhw_elgendhw,9,9,1/10,11,2
+"Hybrid Manager HM200",heatpump,248,airhumidity,relative air humidity,uint8,%,false,sensor.heatpump_relative_air_humidity,sensor.heatpump_airhumidity,9,0,1,0,1
+"Hybrid Manager HM200",heatpump,248,dewtemperature,dew point temperature,uint8,C,false,sensor.heatpump_dew_point_temperature,sensor.heatpump_dewtemperature,9,0,1,1,1
+"Hybrid Manager HM200",heatpump,248,curflowtemp,current flow temperature,int16,C,false,sensor.heatpump_current_flow_temperature,sensor.heatpump_curflowtemp,9,0,1/10,2,1
+"Hybrid Manager HM200",heatpump,248,rettemp,return temperature,int16,C,false,sensor.heatpump_return_temperature,sensor.heatpump_rettemp,9,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,9,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,9,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,9,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,9,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,9,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,9,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,9,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,9,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,9,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,9,0,1/10,13,1
+"Hybrid Manager HM200",heatpump,248,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.heatpump_heating_pump_modulation,sensor.heatpump_heatingpumpmod,9,0,1,14,1
+"Hybrid Manager HM200",heatpump,248,hpcompspd,compressor speed,uint8,%,false,sensor.heatpump_compressor_speed,sensor.heatpump_hpcompspd,9,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,9,0,1,16,1
+"Hybrid Manager HM200",heatpump,248,hppower,compressor power output,uint16,W,false,sensor.heatpump_compressor_power_output,sensor.heatpump_hppower,9,0,1,17,1
+"Hybrid Manager HM200",heatpump,248,hpcurrpower,compressor current power,uint16,W,false,sensor.heatpump_compressor_current_power,sensor.heatpump_hpcurrpower,9,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,9,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,9,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,9,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,9,0,1,22,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,9,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,9,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,9,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,9,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,9,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,9,0,1,27,1
+"Hybrid Manager HM200",heatpump,248,heatpumpoutput,heatpump output,uint8 (>=0<=0),%,true,number.heatpump_heatpump_output,number.heatpump_heatpumpoutput,9,0,1,28,1
+"Hybrid Manager HM200",heatpump,248,coolingcircuit,cooling circuit,boolean (>=0<=0), ,true,switch.heatpump_cooling_circuit,switch.heatpump_coolingcircuit,9,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,9,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,9,0,1,31,1
+"Hybrid Manager HM200",heatpump,248,heatcable,heating cable,boolean (>=0<=0), ,true,switch.heatpump_heating_cable,switch.heatpump_heatcable,9,0,1,32,1
+"Hybrid Manager HM200",heatpump,248,nrgtotal,total energy,uint24,kWh,false,sensor.heatpump_total_energy,sensor.heatpump_nrgtotal,9,0,1/100,33,2
+"Hybrid Manager HM200",heatpump,248,dhw.nrg,energy,uint24,kWh,false,sensor.heatpump_dhw_energy,sensor.heatpump_dhw_nrg,9,9,1/100,1,2
+"Hybrid Manager HM200",heatpump,248,nrgheat,energy heating,uint24,kWh,false,sensor.heatpump_energy_heating,sensor.heatpump_nrgheat,9,0,1/100,35,2
+"Hybrid Manager HM200",heatpump,248,metertotal,meter total,uint24,kWh,false,sensor.heatpump_meter_total,sensor.heatpump_metertotal,9,0,1/100,37,2
+"Hybrid Manager HM200",heatpump,248,metercomp,meter compressor,uint24,kWh,false,sensor.heatpump_meter_compressor,sensor.heatpump_metercomp,9,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,9,0,1/100,41,2
+"Hybrid Manager HM200",heatpump,248,meterheat,meter heating,uint24,kWh,false,sensor.heatpump_meter_heating,sensor.heatpump_meterheat,9,0,1/100,43,2
+"Hybrid Manager HM200",heatpump,248,dhw.meter,meter,uint24,kWh,false,sensor.heatpump_dhw_meter,sensor.heatpump_dhw_meter,9,9,1/100,3,2
+"Hybrid Manager HM200",heatpump,248,heatingstarts,heating control starts,uint24, ,false,sensor.heatpump_heating_control_starts,sensor.heatpump_heatingstarts,9,0,1,45,2
+"Hybrid Manager HM200",heatpump,248,dhw.startshp,starts hp,uint24, ,false,sensor.heatpump_dhw_starts_hp,sensor.heatpump_dhw_startshp,9,9,1,5,2
+"Hybrid Manager HM200",heatpump,248,fuelheat,fuel consumption heating,uint32,kWh,false,sensor.heatpump_fuel_consumption_heating,sensor.heatpump_fuelheat,9,0,1/10,47,2
+"Hybrid Manager HM200",heatpump,248,dhw.fueldhw,fuel consumption,uint32,kWh,false,sensor.heatpump_dhw_fuel_consumption,sensor.heatpump_dhw_fueldhw,9,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,9,0,1/10,49,2
+"Hybrid Manager HM200",heatpump,248,dhw.eldhw,el. consumption,uint32,kWh,false,sensor.heatpump_dhw_el._consumption,sensor.heatpump_dhw_eldhw,9,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,9,0,1/10,51,2
+"Hybrid Manager HM200",heatpump,248,dhw.elgendhw,el generation,uint32,kWh,false,sensor.heatpump_dhw_el_generation,sensor.heatpump_dhw_elgendhw,9,9,1/10,11,2
+"CSH5800iG",heatpump,16,airhumidity,relative air humidity,uint8,%,false,sensor.heatpump_relative_air_humidity,sensor.heatpump_airhumidity,9,0,1,0,1
+"CSH5800iG",heatpump,16,dewtemperature,dew point temperature,uint8,C,false,sensor.heatpump_dew_point_temperature,sensor.heatpump_dewtemperature,9,0,1,1,1
+"CSH5800iG",heatpump,16,curflowtemp,current flow temperature,int16,C,false,sensor.heatpump_current_flow_temperature,sensor.heatpump_curflowtemp,9,0,1/10,2,1
+"CSH5800iG",heatpump,16,rettemp,return temperature,int16,C,false,sensor.heatpump_return_temperature,sensor.heatpump_rettemp,9,0,1/10,3,1
+"CSH5800iG",heatpump,16,sysrettemp,system return temperature,int16,C,false,sensor.heatpump_system_return_temperature,sensor.heatpump_sysrettemp,9,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,9,0,1/10,5,1
+"CSH5800iG",heatpump,16,hptr1,compressor temperature (TR1),int16,C,false,sensor.heatpump_compressor_temperature_(TR1),sensor.heatpump_hptr1,9,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,9,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,9,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,9,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,9,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,9,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,9,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,9,0,1/10,13,1
+"CSH5800iG",heatpump,16,heatingpumpmod,heating pump modulation,uint8,%,false,sensor.heatpump_heating_pump_modulation,sensor.heatpump_heatingpumpmod,9,0,1,14,1
+"CSH5800iG",heatpump,16,hpcompspd,compressor speed,uint8,%,false,sensor.heatpump_compressor_speed,sensor.heatpump_hpcompspd,9,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,9,0,1,16,1
+"CSH5800iG",heatpump,16,hppower,compressor power output,uint16,W,false,sensor.heatpump_compressor_power_output,sensor.heatpump_hppower,9,0,1,17,1
+"CSH5800iG",heatpump,16,hpcurrpower,compressor current power,uint16,W,false,sensor.heatpump_compressor_current_power,sensor.heatpump_hpcurrpower,9,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,9,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,9,0,1,20,1
+"CSH5800iG",heatpump,16,lownoisestart,low noise starttime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_starttime,number.heatpump_lownoisestart,9,0,1,21,1
+"CSH5800iG",heatpump,16,lownoisestop,low noise stoptime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_stoptime,number.heatpump_lownoisestop,9,0,1,22,1
+"CSH5800iG",heatpump,16,dhw.hybriddhw,hybrid DHW,enum [eco\|high comfort] (>=0<=0), ,true,select.heatpump_dhw_hybrid_DHW,select.heatpump_dhw_hybriddhw,9,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,9,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,9,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,9,0,1,25,1
+"CSH5800iG",heatpump,16,switchovertemp,outside switchover temperature,int8 (>=0<=0),C,true,number.heatpump_outside_switchover_temperature,number.heatpump_switchovertemp,9,0,1,26,1
+"CSH5800iG",heatpump,16,airpurgemode,air purge mode,boolean (>=0<=0), ,true,switch.heatpump_air_purge_mode,switch.heatpump_airpurgemode,9,0,1,27,1
+"CSH5800iG",heatpump,16,heatpumpoutput,heatpump output,uint8 (>=0<=0),%,true,number.heatpump_heatpump_output,number.heatpump_heatpumpoutput,9,0,1,28,1
+"CSH5800iG",heatpump,16,coolingcircuit,cooling circuit,boolean (>=0<=0), ,true,switch.heatpump_cooling_circuit,switch.heatpump_coolingcircuit,9,0,1,29,1
+"CSH5800iG",heatpump,16,compstartmod,compressor start modulation,uint8 (>=0<=0),%,true,number.heatpump_compressor_start_modulation,number.heatpump_compstartmod,9,0,1,30,1
+"CSH5800iG",heatpump,16,heatdrainpan,heat drain pan,boolean (>=0<=0), ,true,switch.heatpump_heat_drain_pan,switch.heatpump_heatdrainpan,9,0,1,31,1
+"CSH5800iG",heatpump,16,heatcable,heating cable,boolean (>=0<=0), ,true,switch.heatpump_heating_cable,switch.heatpump_heatcable,9,0,1,32,1
+"CSH5800iG",heatpump,16,nrgtotal,total energy,uint24,kWh,false,sensor.heatpump_total_energy,sensor.heatpump_nrgtotal,9,0,1/100,33,2
+"CSH5800iG",heatpump,16,dhw.nrg,energy,uint24,kWh,false,sensor.heatpump_dhw_energy,sensor.heatpump_dhw_nrg,9,9,1/100,1,2
+"CSH5800iG",heatpump,16,nrgheat,energy heating,uint24,kWh,false,sensor.heatpump_energy_heating,sensor.heatpump_nrgheat,9,0,1/100,35,2
+"CSH5800iG",heatpump,16,metertotal,meter total,uint24,kWh,false,sensor.heatpump_meter_total,sensor.heatpump_metertotal,9,0,1/100,37,2
+"CSH5800iG",heatpump,16,metercomp,meter compressor,uint24,kWh,false,sensor.heatpump_meter_compressor,sensor.heatpump_metercomp,9,0,1/100,39,2
+"CSH5800iG",heatpump,16,metereheat,meter e-heater,uint24,kWh,false,sensor.heatpump_meter_e-heater,sensor.heatpump_metereheat,9,0,1/100,41,2
+"CSH5800iG",heatpump,16,meterheat,meter heating,uint24,kWh,false,sensor.heatpump_meter_heating,sensor.heatpump_meterheat,9,0,1/100,43,2
+"CSH5800iG",heatpump,16,dhw.meter,meter,uint24,kWh,false,sensor.heatpump_dhw_meter,sensor.heatpump_dhw_meter,9,9,1/100,3,2
+"CSH5800iG",heatpump,16,heatingstarts,heating control starts,uint24, ,false,sensor.heatpump_heating_control_starts,sensor.heatpump_heatingstarts,9,0,1,45,2
+"CSH5800iG",heatpump,16,dhw.startshp,starts hp,uint24, ,false,sensor.heatpump_dhw_starts_hp,sensor.heatpump_dhw_startshp,9,9,1,5,2
+"CSH5800iG",heatpump,16,fuelheat,fuel consumption heating,uint32,kWh,false,sensor.heatpump_fuel_consumption_heating,sensor.heatpump_fuelheat,9,0,1/10,47,2
+"CSH5800iG",heatpump,16,dhw.fueldhw,fuel consumption,uint32,kWh,false,sensor.heatpump_dhw_fuel_consumption,sensor.heatpump_dhw_fueldhw,9,9,1/10,7,2
+"CSH5800iG",heatpump,16,elheat,el. consumption heating,uint32,kWh,false,sensor.heatpump_el._consumption_heating,sensor.heatpump_elheat,9,0,1/10,49,2
+"CSH5800iG",heatpump,16,dhw.eldhw,el. consumption,uint32,kWh,false,sensor.heatpump_dhw_el._consumption,sensor.heatpump_dhw_eldhw,9,9,1/10,9,2
+"CSH5800iG",heatpump,16,elgenheat,el. generation heating,uint32,kWh,false,sensor.heatpump_el._generation_heating,sensor.heatpump_elgenheat,9,0,1/10,51,2
+"CSH5800iG",heatpump,16,dhw.elgendhw,el generation,uint32,kWh,false,sensor.heatpump_dhw_el_generation,sensor.heatpump_dhw_elgendhw,9,9,1/10,11,2
"WM10",switch,71,activated,activated,boolean, ,false,binary_sensor.switch_activated,binary_sensor.switch_activated,11,0,1,0,1
-"WM10",switch,71,flowtemphc,flow temperature (TC1),uint16 (>=0<=3199),C,false,sensor.switch_flow_temperature_(TC1),sensor.switch_flowtemphc,11,0,1/10,1,1
-"WM10",switch,71,status,status,int8 (>=-126<=126), ,false,sensor.switch_status,sensor.switch_status,11,0,1,2,1
+"WM10",switch,71,flowtemphc,flow temperature (TC1),uint16,C,false,sensor.switch_flow_temperature_(TC1),sensor.switch_flowtemphc,11,0,1/10,1,1
+"WM10",switch,71,status,status,int8, ,false,sensor.switch_status,sensor.switch_status,11,0,1,2,1
"Rego 3000",controller,240,datetime,date/time,string, ,false,sensor.controller_date/time,sensor.controller_datetime,12,0,1,0,13
"MX400",connect,17,datetime,date/time,string, ,false,sensor.connect_date/time,sensor.connect_datetime,13,0,1,0,13
-"MX400",connect,17,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.connect_outside_temperature,sensor.connect_outdoortemp,13,0,1/10,13,1
-"MX400",connect,17,src1.currtemp,current room temperature,int16 (>=-3199<=3199),C,false,sensor.connect_src1_current_room_temperature,sensor.connect_src1_currtemp,13,36,1/10,0,1
-"MX400",connect,17,src1.airhumidity,relative air humidity,int8 (>=-100<=100),%,false,sensor.connect_src1_relative_air_humidity,sensor.connect_src1_airhumidity,13,36,1,1,1
-"MX400",connect,17,src1.dewtemperature,dew point temperature,int16 (>=-3199<=3199),C,false,sensor.connect_src1_dew_point_temperature,sensor.connect_src1_dewtemperature,13,36,1/10,2,1
+"MX400",connect,17,outdoortemp,outside temperature,int16,C,false,sensor.connect_outside_temperature,sensor.connect_outdoortemp,13,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,13,36,1/10,0,1
+"MX400",connect,17,src1.airhumidity,relative air humidity,int8,%,false,sensor.connect_src1_relative_air_humidity,sensor.connect_src1_airhumidity,13,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,13,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,13,36,1/2,3,1
-"MX400",connect,17,src1.mode,operating mode,enum [off\|manual\|auto], ,true,select.connect_src1_operating_mode,select.connect_src1_mode,13,36,1,4,1
-"MX400",connect,17,src1.name,name,string, ,true,sensor.connect_src1_name,sensor.connect_src1_name,13,36,1,5,26
-"MX400",connect,17,src1.childlock,child lock,boolean, ,true,switch.connect_src1_child_lock,switch.connect_src1_childlock,13,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], ,true,select.connect_src1_icon,select.connect_src1_icon,13,36,1,32,1
-"EM10",alert,74,setflowtemp,set flow temperature,uint8 (>=0<=254),C,false,sensor.alert_set_flow_temperature,sensor.alert_setflowtemp,14,0,1,0,1
-"EM10",alert,74,setburnpow,burner set power,uint8 (>=0<=100),%,false,sensor.alert_burner_set_power,sensor.alert_setburnpow,14,0,1,1,1
-"EM10, EM100",extension,243,flowtempvf,flow temperature in header (T0/Vf),int16 (>=-3199<=3199),C,false,sensor.extension_flow_temperature_in_header_(T0/Vf),sensor.extension_flowtempvf,15,0,1/10,0,1
-"EM10, EM100",extension,243,input,input,uint8 (>=0<=25),V,false,sensor.extension_input,sensor.extension_input,15,0,1/10,1,1
-"EM10, EM100",extension,243,outpow,output IO1,uint8 (>=0<=100),%,false,sensor.extension_output_IO1,sensor.extension_outpow,15,0,1,2,1
-"EM10, EM100",extension,243,setpower,request power,uint8 (>=0<=100),%,false,sensor.extension_request_power,sensor.extension_setpower,15,0,1,3,1
-"EM10, EM100",extension,243,setpoint,set temp.,uint8 (>=0<=254),C,false,sensor.extension_set_temp.,sensor.extension_setpoint,15,0,1,4,1
-"EM10, EM100",extension,243,minv,min volt.,uint8 (>=0<=25),V,true,number.extension_min_volt.,number.extension_minv,15,0,1/10,5,1
-"EM10, EM100",extension,243,maxv,max volt.,uint8 (>=0<=25),V,true,number.extension_max_volt.,number.extension_maxv,15,0,1/10,6,1
-"EM10, EM100",extension,243,mint,min temp.,uint8 (>=0<=254),C,true,number.extension_min_temp.,number.extension_mint,15,0,1,7,1
-"EM10, EM100",extension,243,maxt,max temp.,uint8 (>=0<=254),C,true,number.extension_max_temp.,number.extension_maxt,15,0,1,8,1
-"EM10, EM100",extension,243,mode,operating mode,uint8 (>=0<=254), ,false,sensor.extension_operating_mode,sensor.extension_mode,15,0,1,9,1
-"T1RF",extension,220,flowtempvf,flow temperature in header (T0/Vf),int16 (>=-3199<=3199),C,false,sensor.extension_flow_temperature_in_header_(T0/Vf),sensor.extension_flowtempvf,15,0,1/10,0,1
-"T1RF",extension,220,input,input,uint8 (>=0<=25),V,false,sensor.extension_input,sensor.extension_input,15,0,1/10,1,1
-"T1RF",extension,220,outpow,output IO1,uint8 (>=0<=100),%,false,sensor.extension_output_IO1,sensor.extension_outpow,15,0,1,2,1
-"T1RF",extension,220,setpower,request power,uint8 (>=0<=100),%,false,sensor.extension_request_power,sensor.extension_setpower,15,0,1,3,1
-"T1RF",extension,220,setpoint,set temp.,uint8 (>=0<=254),C,false,sensor.extension_set_temp.,sensor.extension_setpoint,15,0,1,4,1
-"T1RF",extension,220,minv,min volt.,uint8 (>=0<=25),V,true,number.extension_min_volt.,number.extension_minv,15,0,1/10,5,1
-"T1RF",extension,220,maxv,max volt.,uint8 (>=0<=25),V,true,number.extension_max_volt.,number.extension_maxv,15,0,1/10,6,1
-"T1RF",extension,220,mint,min temp.,uint8 (>=0<=254),C,true,number.extension_min_temp.,number.extension_mint,15,0,1,7,1
-"T1RF",extension,220,maxt,max temp.,uint8 (>=0<=254),C,true,number.extension_max_temp.,number.extension_maxt,15,0,1,8,1
-"T1RF",extension,220,mode,operating mode,uint8 (>=0<=254), ,false,sensor.extension_operating_mode,sensor.extension_mode,15,0,1,9,1
-"AM200",heatsource,228,ahs1.sysflowtemp,system flow temperature,int16 (>=-3199<=3199),C,false,sensor.heatsource_ahs1_system_flow_temperature,sensor.heatsource_ahs1_sysflowtemp,17,19,1/10,0,1
-"AM200",heatsource,228,ahs1.sysrettemp,system return temperature,int16 (>=-3199<=3199),C,false,sensor.heatsource_ahs1_system_return_temperature,sensor.heatsource_ahs1_sysrettemp,17,19,1/10,1,1
-"AM200",heatsource,228,ahs1.altflowtemp,alternative hs flow temperature,int16 (>=-3199<=3199),C,false,sensor.heatsource_ahs1_alternative_hs_flow_temperature,sensor.heatsource_ahs1_altflowtemp,17,19,1/10,2,1
-"AM200",heatsource,228,ahs1.altrettemp,alternative hs return temperature,int16 (>=-3199<=3199),C,false,sensor.heatsource_ahs1_alternative_hs_return_temperature,sensor.heatsource_ahs1_altrettemp,17,19,1/10,3,1
-"AM200",heatsource,228,ahs1.cyltoptemp,cylinder top temperature,int16 (>=-3199<=3199),C,false,sensor.heatsource_ahs1_cylinder_top_temperature,sensor.heatsource_ahs1_cyltoptemp,17,19,1/10,4,1
-"AM200",heatsource,228,ahs1.cylcentertemp,cylinder center temperature,int16 (>=-3199<=3199),C,false,sensor.heatsource_ahs1_cylinder_center_temperature,sensor.heatsource_ahs1_cylcentertemp,17,19,1/10,5,1
-"AM200",heatsource,228,ahs1.cylbottomtemp,cylinder bottom temperature,int16 (>=-3199<=3199),C,false,sensor.heatsource_ahs1_cylinder_bottom_temperature,sensor.heatsource_ahs1_cylbottomtemp,17,19,1/10,6,1
-"AM200",heatsource,228,ahs1.fluegastemp,flue gas temperature,int16 (>=-3199<=3199),C,false,sensor.heatsource_ahs1_flue_gas_temperature,sensor.heatsource_ahs1_fluegastemp,17,19,1/10,7,1
-"AM200",heatsource,228,ahs1.valvebuffer,buffer valve,uint8 (>=0<=100),%,false,sensor.heatsource_ahs1_buffer_valve,sensor.heatsource_ahs1_valvebuffer,17,19,1,8,1
-"AM200",heatsource,228,ahs1.valvereturn,return valve,uint8 (>=0<=100),%,false,sensor.heatsource_ahs1_return_valve,sensor.heatsource_ahs1_valvereturn,17,19,1,9,1
-"AM200",heatsource,228,ahs1.apumpmod,alternative hs pump modulation,uint8 (>=0<=100),%,false,sensor.heatsource_ahs1_alternative_hs_pump_modulation,sensor.heatsource_ahs1_apumpmod,17,19,1,10,1
-"AM200",heatsource,228,ahs1.vr2config,vr2 configuration,enum [off\|bypass], ,true,select.heatsource_ahs1_vr2_configuration,select.heatsource_ahs1_vr2config,17,19,1,11,1
-"AM200",heatsource,228,ahs1.ahsactivated,alternate heat source activation,boolean, ,true,switch.heatsource_ahs1_alternate_heat_source_activation,switch.heatsource_ahs1_ahsactivated,17,19,1,12,1
-"AM200",heatsource,228,ahs1.apumpconfig,primary pump config,boolean, ,true,switch.heatsource_ahs1_primary_pump_config,switch.heatsource_ahs1_apumpconfig,17,19,1,13,1
-"AM200",heatsource,228,ahs1.apumpsignal,output for pr1 pump,enum [off\|pwm\|pwm inverse], ,true,select.heatsource_ahs1_output_for_pr1_pump,select.heatsource_ahs1_apumpsignal,17,19,1,14,1
+"MX400",connect,17,src1.mode,operating mode,enum [off\|manual\|auto] (>=0<=0), ,true,select.connect_src1_operating_mode,select.connect_src1_mode,13,36,1,4,1
+"MX400",connect,17,src1.name,name,string (>=0<=0), ,true,sensor.connect_src1_name,sensor.connect_src1_name,13,36,1,5,26
+"MX400",connect,17,src1.childlock,child lock,boolean (>=0<=0), ,true,switch.connect_src1_child_lock,switch.connect_src1_childlock,13,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,13,36,1,32,1
+"EM10",alert,74,setflowtemp,set flow temperature,uint8,C,false,sensor.alert_set_flow_temperature,sensor.alert_setflowtemp,14,0,1,0,1
+"EM10",alert,74,setburnpow,burner set power,uint8,%,false,sensor.alert_burner_set_power,sensor.alert_setburnpow,14,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,15,0,1/10,0,1
+"EM10, EM100",extension,243,input,input,uint8,V,false,sensor.extension_input,sensor.extension_input,15,0,1/10,1,1
+"EM10, EM100",extension,243,outpow,output IO1,uint8,%,false,sensor.extension_output_IO1,sensor.extension_outpow,15,0,1,2,1
+"EM10, EM100",extension,243,setpower,request power,uint8,%,false,sensor.extension_request_power,sensor.extension_setpower,15,0,1,3,1
+"EM10, EM100",extension,243,setpoint,set temp.,uint8,C,false,sensor.extension_set_temp.,sensor.extension_setpoint,15,0,1,4,1
+"EM10, EM100",extension,243,minv,min volt.,uint8 (>=0<=0),V,true,number.extension_min_volt.,number.extension_minv,15,0,1/10,5,1
+"EM10, EM100",extension,243,maxv,max volt.,uint8 (>=0<=0),V,true,number.extension_max_volt.,number.extension_maxv,15,0,1/10,6,1
+"EM10, EM100",extension,243,mint,min temp.,uint8 (>=0<=0),C,true,number.extension_min_temp.,number.extension_mint,15,0,1,7,1
+"EM10, EM100",extension,243,maxt,max temp.,uint8 (>=0<=0),C,true,number.extension_max_temp.,number.extension_maxt,15,0,1,8,1
+"EM10, EM100",extension,243,mode,operating mode,uint8, ,false,sensor.extension_operating_mode,sensor.extension_mode,15,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,15,0,1/10,0,1
+"T1RF",extension,220,input,input,uint8,V,false,sensor.extension_input,sensor.extension_input,15,0,1/10,1,1
+"T1RF",extension,220,outpow,output IO1,uint8,%,false,sensor.extension_output_IO1,sensor.extension_outpow,15,0,1,2,1
+"T1RF",extension,220,setpower,request power,uint8,%,false,sensor.extension_request_power,sensor.extension_setpower,15,0,1,3,1
+"T1RF",extension,220,setpoint,set temp.,uint8,C,false,sensor.extension_set_temp.,sensor.extension_setpoint,15,0,1,4,1
+"T1RF",extension,220,minv,min volt.,uint8 (>=0<=0),V,true,number.extension_min_volt.,number.extension_minv,15,0,1/10,5,1
+"T1RF",extension,220,maxv,max volt.,uint8 (>=0<=0),V,true,number.extension_max_volt.,number.extension_maxv,15,0,1/10,6,1
+"T1RF",extension,220,mint,min temp.,uint8 (>=0<=0),C,true,number.extension_min_temp.,number.extension_mint,15,0,1,7,1
+"T1RF",extension,220,maxt,max temp.,uint8 (>=0<=0),C,true,number.extension_max_temp.,number.extension_maxt,15,0,1,8,1
+"T1RF",extension,220,mode,operating mode,uint8, ,false,sensor.extension_operating_mode,sensor.extension_mode,15,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,17,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,17,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,17,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,17,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,17,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,17,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,17,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,17,19,1/10,7,1
+"AM200",heatsource,228,ahs1.valvebuffer,buffer valve,uint8,%,false,sensor.heatsource_ahs1_buffer_valve,sensor.heatsource_ahs1_valvebuffer,17,19,1,8,1
+"AM200",heatsource,228,ahs1.valvereturn,return valve,uint8,%,false,sensor.heatsource_ahs1_return_valve,sensor.heatsource_ahs1_valvereturn,17,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,17,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,17,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,17,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,17,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,17,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,17,19,1,15,1
-"AM200",heatsource,228,ahs1.temprise,ahs return temp rise,boolean, ,true,switch.heatsource_ahs1_ahs_return_temp_rise,switch.heatsource_ahs1_temprise,17,19,1,16,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,17,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,17,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,17,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,17,19,1,19,1
-"AM200",heatsource,228,ahs1.bufbypass,buffer bypass config,enum [no\|mixer\|valve], ,true,select.heatsource_ahs1_buffer_bypass_config,select.heatsource_ahs1_bufbypass,17,19,1,20,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,17,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,17,19,1,21,1
-"AM200",heatsource,228,ahs1.bufconfig,dhw buffer config,enum [off\|monovalent\|bivalent], ,true,select.heatsource_ahs1_dhw_buffer_config,select.heatsource_ahs1_bufconfig,17,19,1,22,1
-"AM200",heatsource,228,ahs1.blockmode,config htg. blocking mode,enum [off\|auto\|blocking], ,true,select.heatsource_ahs1_config_htg._blocking_mode,select.heatsource_ahs1_blockmode,17,19,1,23,1
-"AM200",heatsource,228,ahs1.blockterm,config of block terminal,enum [n_o\|n_c], ,true,select.heatsource_ahs1_config_of_block_terminal,select.heatsource_ahs1_blockterm,17,19,1,24,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,17,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,17,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,17,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,17,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,17,19,1,26,1
"AM200",heatsource,228,ahs1.burner,burner,boolean, ,false,binary_sensor.heatsource_ahs1_burner,binary_sensor.heatsource_ahs1_burner,17,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,17,19,1,28,1
-"AM200",heatsource,228,ahs1.heatrequest,heat request,uint8 (>=0<=100),%,false,sensor.heatsource_ahs1_heat_request,sensor.heatsource_ahs1_heatrequest,17,19,1,29,1
-"AM200",heatsource,228,ahs1.blockremain,remaining blocktime,uint8 (>=0<=254),minutes,false,sensor.heatsource_ahs1_remaining_blocktime,sensor.heatsource_ahs1_blockremain,17,19,1,30,1
-"AM200",heatsource,228,ahs1.blockremaindhw,remaining blocktime dhw,uint8 (>=0<=254),minutes,false,sensor.heatsource_ahs1_remaining_blocktime_dhw,sensor.heatsource_ahs1_blockremaindhw,17,19,1,31,1
-"HRV176, HRV156, 5000c, MV200",ventilation,231,outfresh,outdoor fresh air,int16 (>=-3199<=3199),C,false,sensor.ventilation_outdoor_fresh_air,sensor.ventilation_outfresh,18,0,1/10,0,1
-"HRV176, HRV156, 5000c, MV200",ventilation,231,infresh,indoor fresh air,int16 (>=-3199<=3199),C,false,sensor.ventilation_indoor_fresh_air,sensor.ventilation_infresh,18,0,1/10,1,1
-"HRV176, HRV156, 5000c, MV200",ventilation,231,outexhaust,outdoor exhaust air,int16 (>=-3199<=3199),C,false,sensor.ventilation_outdoor_exhaust_air,sensor.ventilation_outexhaust,18,0,1/10,2,1
-"HRV176, HRV156, 5000c, MV200",ventilation,231,inexhaust,indoor exhaust air,int16 (>=-3199<=3199),C,false,sensor.ventilation_indoor_exhaust_air,sensor.ventilation_inexhaust,18,0,1/10,3,1
-"HRV176, HRV156, 5000c, MV200",ventilation,231,ventinspeed,in blower speed,uint8 (>=0<=100),%,false,sensor.ventilation_in_blower_speed,sensor.ventilation_ventinspeed,18,0,1,4,1
-"HRV176, HRV156, 5000c, MV200",ventilation,231,ventoutspeed,out blower speed,uint8 (>=0<=100),%,false,sensor.ventilation_out_blower_speed,sensor.ventilation_ventoutspeed,18,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], ,true,select.ventilation_ventilation_mode,select.ventilation_ventmode,18,0,1,6,1
-"HRV176, HRV156, 5000c, MV200",ventilation,231,airquality,air quality (voc),uint16 (>=0<=31999), ,false,sensor.ventilation_air_quality_(voc),sensor.ventilation_airquality,18,0,1,7,1
-"HRV176, HRV156, 5000c, MV200",ventilation,231,airhumidity,relative air humidity,uint8 (>=0<=100),%,false,sensor.ventilation_relative_air_humidity,sensor.ventilation_airhumidity,18,0,1,8,1
-"HRV176, HRV156, 5000c, MV200",ventilation,231,bypass,bypass,boolean, ,true,switch.ventilation_bypass,switch.ventilation_bypass,18,0,1,9,1
-"IPM",water,100,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.water_dhw_selected_temperature,number.water_dhw_seltemp,19,9,1,0,1
-"IPM",water,100,dhw.temp,current temperature,uint16 (>=0<=3199),C,false,sensor.water_dhw_current_temperature,sensor.water_dhw_temp,19,9,1/10,1,1
-"IPM",water,100,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.water_dhw_current_extern_temperature,sensor.water_dhw_curtemp2,19,9,1/10,2,1
-"IPM",water,100,dhw.hydrTemp,hydraulic header temperature,uint16 (>=0<=3199),C,false,sensor.water_dhw_hydraulic_header_temperature,sensor.water_dhw_hydrTemp,19,9,1/10,3,1
+"AM200",heatsource,228,ahs1.heatrequest,heat request,uint8,%,false,sensor.heatsource_ahs1_heat_request,sensor.heatsource_ahs1_heatrequest,17,19,1,29,1
+"AM200",heatsource,228,ahs1.blockremain,remaining blocktime,uint8,minutes,false,sensor.heatsource_ahs1_remaining_blocktime,sensor.heatsource_ahs1_blockremain,17,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,17,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,18,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,18,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,18,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,18,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,18,0,1,4,1
+"HRV176, HRV156, 5000c, MV200",ventilation,231,ventoutspeed,out blower speed,uint8,%,false,sensor.ventilation_out_blower_speed,sensor.ventilation_ventoutspeed,18,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,18,0,1,6,1
+"HRV176, HRV156, 5000c, MV200",ventilation,231,airquality,air quality (voc),uint16, ,false,sensor.ventilation_air_quality_(voc),sensor.ventilation_airquality,18,0,1,7,1
+"HRV176, HRV156, 5000c, MV200",ventilation,231,airhumidity,relative air humidity,uint8,%,false,sensor.ventilation_relative_air_humidity,sensor.ventilation_airhumidity,18,0,1,8,1
+"HRV176, HRV156, 5000c, MV200",ventilation,231,bypass,bypass,boolean (>=0<=0), ,true,switch.ventilation_bypass,switch.ventilation_bypass,18,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,19,9,1,0,1
+"IPM",water,100,dhw.temp,current temperature,uint16,C,false,sensor.water_dhw_current_temperature,sensor.water_dhw_temp,19,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,19,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,19,9,1/10,3,1
"IPM",water,100,dhw.pump,pump,boolean, ,false,binary_sensor.water_dhw_pump,binary_sensor.water_dhw_pump,19,9,1,4,1
-"IPM",water,100,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=254),C,true,number.water_dhw_flow_temperature_offset,number.water_dhw_flowtempoffset,19,9,1,5,1
-"IPM",water,100,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.water_dhw_hysteresis_on_temperature,number.water_dhw_hyston,19,9,1,6,1
-"IPM",water,100,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.water_dhw_hysteresis_off_temperature,number.water_dhw_hystoff,19,9,1,7,1
-"IPM",water,100,dhw.disinfectiontemp,disinfection temperature,uint8 (>=0<=254),C,true,number.water_dhw_disinfection_temperature,number.water_dhw_disinfectiontemp,19,9,1,8,1
-"IPM",water,100,dhw.circ,circulation active,boolean, ,true,switch.water_dhw_circulation_active,switch.water_dhw_circ,19,9,1,9,1
-"IPM",water,100,dhw.circmode,circulation pump mode,enum [off\|on\|auto\|own prog], ,true,select.water_dhw_circulation_pump_mode,select.water_dhw_circmode,19,9,1,10,1
-"IPM2",water,102,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.water_dhw_selected_temperature,number.water_dhw_seltemp,19,9,1,0,1
-"IPM2",water,102,dhw.temp,current temperature,uint16 (>=0<=3199),C,false,sensor.water_dhw_current_temperature,sensor.water_dhw_temp,19,9,1/10,1,1
-"IPM2",water,102,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.water_dhw_current_extern_temperature,sensor.water_dhw_curtemp2,19,9,1/10,2,1
-"IPM2",water,102,dhw.hydrTemp,hydraulic header temperature,uint16 (>=0<=3199),C,false,sensor.water_dhw_hydraulic_header_temperature,sensor.water_dhw_hydrTemp,19,9,1/10,3,1
+"IPM",water,100,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=0),C,true,number.water_dhw_flow_temperature_offset,number.water_dhw_flowtempoffset,19,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,19,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,19,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,19,9,1,8,1
+"IPM",water,100,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.water_dhw_circulation_active,switch.water_dhw_circ,19,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,19,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,19,9,1,0,1
+"IPM2",water,102,dhw.temp,current temperature,uint16,C,false,sensor.water_dhw_current_temperature,sensor.water_dhw_temp,19,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,19,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,19,9,1/10,3,1
"IPM2",water,102,dhw.pump,pump,boolean, ,false,binary_sensor.water_dhw_pump,binary_sensor.water_dhw_pump,19,9,1,4,1
-"IPM2",water,102,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=254),C,true,number.water_dhw_flow_temperature_offset,number.water_dhw_flowtempoffset,19,9,1,5,1
-"IPM2",water,102,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.water_dhw_hysteresis_on_temperature,number.water_dhw_hyston,19,9,1,6,1
-"IPM2",water,102,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.water_dhw_hysteresis_off_temperature,number.water_dhw_hystoff,19,9,1,7,1
-"IPM2",water,102,dhw.disinfectiontemp,disinfection temperature,uint8 (>=0<=254),C,true,number.water_dhw_disinfection_temperature,number.water_dhw_disinfectiontemp,19,9,1,8,1
-"IPM2",water,102,dhw.circ,circulation active,boolean, ,true,switch.water_dhw_circulation_active,switch.water_dhw_circ,19,9,1,9,1
-"IPM2",water,102,dhw.circmode,circulation pump mode,enum [off\|on\|auto\|own prog], ,true,select.water_dhw_circulation_pump_mode,select.water_dhw_circmode,19,9,1,10,1
-"MM100",water,160,dhw.temp,current temperature,uint16 (>=0<=3199),C,false,sensor.water_dhw_current_temperature,sensor.water_dhw_temp,19,9,1/10,1,1
-"MM100",water,160,dhw.tempstatus,temperature switch in assigned dhw (MC1),int8 (>=-126<=126), ,false,sensor.water_dhw_temperature_switch_in_assigned_dhw_(MC1),sensor.water_dhw_tempstatus,19,9,1,11,1
+"IPM2",water,102,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=0),C,true,number.water_dhw_flow_temperature_offset,number.water_dhw_flowtempoffset,19,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,19,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,19,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,19,9,1,8,1
+"IPM2",water,102,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.water_dhw_circulation_active,switch.water_dhw_circ,19,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,19,9,1,10,1
+"MM100",water,160,dhw.temp,current temperature,uint16,C,false,sensor.water_dhw_current_temperature,sensor.water_dhw_temp,19,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,19,9,1,11,1
"MM100",water,160,dhw.pump,pump,boolean, ,false,binary_sensor.water_dhw_pump,binary_sensor.water_dhw_pump,19,9,1,4,1
-"MM100",water,160,dhw.maxtemp,maximum temperature,uint8 (>=0<=254),C,true,number.water_dhw_maximum_temperature,number.water_dhw_maxtemp,19,9,1,12,1
-"MM100",water,160,dhw.difftemp,start differential temperature,int8 (>=-126<=126),C,true,number.water_dhw_start_differential_temperature,number.water_dhw_difftemp,19,9,1,13,1
-"MM100",water,160,dhw.disinfectiontemp,disinfection temperature,uint8 (>=0<=254),C,true,number.water_dhw_disinfection_temperature,number.water_dhw_disinfectiontemp,19,9,1,8,1
-"MM100",water,160,dhw.redtemp,reduced temperature,uint8 (>=0<=254),C,true,number.water_dhw_reduced_temperature,number.water_dhw_redtemp,19,9,1,14,1
-"MM100",water,160,dhw.requiredtemp,required temperature,uint8 (>=0<=254),C,true,number.water_dhw_required_temperature,number.water_dhw_requiredtemp,19,9,1,15,1
-"MM100",water,160,dhw.circ,circulation active,boolean, ,true,switch.water_dhw_circulation_active,switch.water_dhw_circ,19,9,1,9,1
-"MM100",water,160,dhw.circmode,circulation pump mode,enum [off\|on\|auto\|own prog], ,true,select.water_dhw_circulation_pump_mode,select.water_dhw_circmode,19,9,1,10,1
-"MM200",water,161,dhw.temp,current temperature,uint16 (>=0<=3199),C,false,sensor.water_dhw_current_temperature,sensor.water_dhw_temp,19,9,1/10,1,1
-"MM200",water,161,dhw.tempstatus,temperature switch in assigned dhw (MC1),int8 (>=-126<=126), ,false,sensor.water_dhw_temperature_switch_in_assigned_dhw_(MC1),sensor.water_dhw_tempstatus,19,9,1,11,1
+"MM100",water,160,dhw.maxtemp,maximum temperature,uint8 (>=0<=0),C,true,number.water_dhw_maximum_temperature,number.water_dhw_maxtemp,19,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,19,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,19,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,19,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,19,9,1,15,1
+"MM100",water,160,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.water_dhw_circulation_active,switch.water_dhw_circ,19,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,19,9,1,10,1
+"MM200",water,161,dhw.temp,current temperature,uint16,C,false,sensor.water_dhw_current_temperature,sensor.water_dhw_temp,19,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,19,9,1,11,1
"MM200",water,161,dhw.pump,pump,boolean, ,false,binary_sensor.water_dhw_pump,binary_sensor.water_dhw_pump,19,9,1,4,1
-"MM200",water,161,dhw.maxtemp,maximum temperature,uint8 (>=0<=254),C,true,number.water_dhw_maximum_temperature,number.water_dhw_maxtemp,19,9,1,12,1
-"MM200",water,161,dhw.difftemp,start differential temperature,int8 (>=-126<=126),C,true,number.water_dhw_start_differential_temperature,number.water_dhw_difftemp,19,9,1,13,1
-"MM200",water,161,dhw.disinfectiontemp,disinfection temperature,uint8 (>=0<=254),C,true,number.water_dhw_disinfection_temperature,number.water_dhw_disinfectiontemp,19,9,1,8,1
-"MM200",water,161,dhw.redtemp,reduced temperature,uint8 (>=0<=254),C,true,number.water_dhw_reduced_temperature,number.water_dhw_redtemp,19,9,1,14,1
-"MM200",water,161,dhw.requiredtemp,required temperature,uint8 (>=0<=254),C,true,number.water_dhw_required_temperature,number.water_dhw_requiredtemp,19,9,1,15,1
-"MM200",water,161,dhw.circ,circulation active,boolean, ,true,switch.water_dhw_circulation_active,switch.water_dhw_circ,19,9,1,9,1
-"MM200",water,161,dhw.circmode,circulation pump mode,enum [off\|on\|auto\|own prog], ,true,select.water_dhw_circulation_pump_mode,select.water_dhw_circmode,19,9,1,10,1
-"SM100, MS100",water,163,dhw.temp,current temperature,uint16 (>=0<=3199),C,false,sensor.water_dhw_current_temperature,sensor.water_dhw_temp,19,9,1/10,1,1
-"SM100, MS100",water,163,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.water_dhw_storage_intern_temperature,sensor.water_dhw_storagetemp1,19,9,1/10,16,1
-"SM100, MS100",water,163,dhw.coldtemp,cold water,uint16 (>=0<=3199),C,false,sensor.water_dhw_cold_water,sensor.water_dhw_coldtemp,19,9,1/10,17,1
-"SM100, MS100",water,163,dhw.temp5,temperature 5,uint16 (>=0<=3199),C,false,sensor.water_dhw_temperature_5,sensor.water_dhw_temp5,19,9,1/10,18,1
-"SM100, MS100",water,163,dhw.rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.water_dhw_return_temperature,sensor.water_dhw_rettemp,19,9,1/10,19,1
+"MM200",water,161,dhw.maxtemp,maximum temperature,uint8 (>=0<=0),C,true,number.water_dhw_maximum_temperature,number.water_dhw_maxtemp,19,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,19,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,19,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,19,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,19,9,1,15,1
+"MM200",water,161,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.water_dhw_circulation_active,switch.water_dhw_circ,19,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,19,9,1,10,1
+"SM100, MS100",water,163,dhw.temp,current temperature,uint16,C,false,sensor.water_dhw_current_temperature,sensor.water_dhw_temp,19,9,1/10,1,1
+"SM100, MS100",water,163,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.water_dhw_storage_intern_temperature,sensor.water_dhw_storagetemp1,19,9,1/10,16,1
+"SM100, MS100",water,163,dhw.coldtemp,cold water,uint16,C,false,sensor.water_dhw_cold_water,sensor.water_dhw_coldtemp,19,9,1/10,17,1
+"SM100, MS100",water,163,dhw.temp5,temperature 5,uint16,C,false,sensor.water_dhw_temperature_5,sensor.water_dhw_temp5,19,9,1/10,18,1
+"SM100, MS100",water,163,dhw.rettemp,return temperature,uint16,C,false,sensor.water_dhw_return_temperature,sensor.water_dhw_rettemp,19,9,1/10,19,1
"SM100, MS100",water,163,dhw.pump,pump,boolean, ,false,binary_sensor.water_dhw_pump,binary_sensor.water_dhw_pump,19,9,1,4,1
-"SM100, MS100",water,163,dhw.maxtemp,maximum temperature,uint8 (>=0<=254),C,true,number.water_dhw_maximum_temperature,number.water_dhw_maxtemp,19,9,1,12,1
-"SM100, MS100",water,163,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.water_dhw_selected_temperature,number.water_dhw_seltemp,19,9,1,0,1
-"SM100, MS100",water,163,dhw.redtemp,reduced temperature,uint8 (>=0<=254),C,true,number.water_dhw_reduced_temperature,number.water_dhw_redtemp,19,9,1,14,1
-"SM100, MS100",water,163,dhw.hottemp,extra hot temperature,uint8 (>=0<=254),C,true,number.water_dhw_extra_hot_temperature,number.water_dhw_hottemp,19,9,1,20,1
-"SM100, MS100",water,163,dhw.dailytemp,daily temperature,uint8 (>=0<=254),C,true,number.water_dhw_daily_temperature,number.water_dhw_dailytemp,19,9,1,21,1
-"SM100, MS100",water,163,dhw.disinfectiontemp,disinfection temperature,uint8 (>=0<=254),C,true,number.water_dhw_disinfection_temperature,number.water_dhw_disinfectiontemp,19,9,1,8,1
-"SM100, MS100",water,163,dhw.circ,circulation active,boolean, ,true,switch.water_dhw_circulation_active,switch.water_dhw_circ,19,9,1,9,1
-"SM100, MS100",water,163,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.water_dhw_circulation_pump_mode,select.water_dhw_circmode,19,9,1,10,1
-"SM100, MS100",water,163,dhw.circtc,circulation time controlled,boolean, ,true,switch.water_dhw_circulation_time_controlled,switch.water_dhw_circtc,19,9,1,22,1
-"SM100, MS100",water,163,dhw.keepwarm,keep warm,boolean, ,true,switch.water_dhw_keep_warm,switch.water_dhw_keepwarm,19,9,1,23,1
+"SM100, MS100",water,163,dhw.maxtemp,maximum temperature,uint8 (>=0<=0),C,true,number.water_dhw_maximum_temperature,number.water_dhw_maxtemp,19,9,1,12,1
+"SM100, MS100",water,163,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.water_dhw_selected_temperature,number.water_dhw_seltemp,19,9,1,0,1
+"SM100, MS100",water,163,dhw.redtemp,reduced temperature,uint8 (>=0<=0),C,true,number.water_dhw_reduced_temperature,number.water_dhw_redtemp,19,9,1,14,1
+"SM100, MS100",water,163,dhw.hottemp,extra hot temperature,uint8 (>=0<=0),C,true,number.water_dhw_extra_hot_temperature,number.water_dhw_hottemp,19,9,1,20,1
+"SM100, MS100",water,163,dhw.dailytemp,daily temperature,uint8 (>=0<=0),C,true,number.water_dhw_daily_temperature,number.water_dhw_dailytemp,19,9,1,21,1
+"SM100, MS100",water,163,dhw.disinfectiontemp,disinfection temperature,uint8 (>=0<=0),C,true,number.water_dhw_disinfection_temperature,number.water_dhw_disinfectiontemp,19,9,1,8,1
+"SM100, MS100",water,163,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.water_dhw_circulation_active,switch.water_dhw_circ,19,9,1,9,1
+"SM100, MS100",water,163,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.water_dhw_circulation_pump_mode,select.water_dhw_circmode,19,9,1,10,1
+"SM100, MS100",water,163,dhw.circtc,circulation time controlled,boolean (>=0<=0), ,true,switch.water_dhw_circulation_time_controlled,switch.water_dhw_circtc,19,9,1,22,1
+"SM100, MS100",water,163,dhw.keepwarm,keep warm,boolean (>=0<=0), ,true,switch.water_dhw_keep_warm,switch.water_dhw_keepwarm,19,9,1,23,1
"SM100, MS100",water,163,dhw.status2,status 2,enum [\|\|\|no heat\|\|\|heat request\|\|disinfecting\|hold], ,false,sensor.water_dhw_status_2,sensor.water_dhw_status2,19,9,1,24,1
-"SM100, MS100",water,163,dhw.pumpmod,pump modulation,uint8 (>=0<=100),%,false,sensor.water_dhw_pump_modulation,sensor.water_dhw_pumpmod,19,9,1,25,1
-"SM100, MS100",water,163,dhw.flow,flow rate,uint16 (>=0<=3199),l/min,false,sensor.water_dhw_flow_rate,sensor.water_dhw_flow,19,9,1/10,26,1
-"SM100, MS100",water,163,dhw.valvereturn,return valve,uint8 (>=0<=100),%,true,number.water_dhw_return_valve,number.water_dhw_valvereturn,19,9,1,27,1
-"SM100, MS100",water,163,dhw.deltatret,temp. diff. return valve,uint8 (>=0<=254),K,true,number.water_dhw_temp._diff._return_valve,number.water_dhw_deltatret,19,9,1,28,1
-"SM100, MS100",water,163,dhw.errordisp,error display,enum [off\|normal\|inverted], ,true,select.water_dhw_error_display,select.water_dhw_errordisp,19,9,1,29,1
-"SM200, MS200",water,164,dhw.temp,current temperature,uint16 (>=0<=3199),C,false,sensor.water_dhw_current_temperature,sensor.water_dhw_temp,19,9,1/10,1,1
-"SM200, MS200",water,164,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.water_dhw_storage_intern_temperature,sensor.water_dhw_storagetemp1,19,9,1/10,16,1
-"SM200, MS200",water,164,dhw.coldtemp,cold water,uint16 (>=0<=3199),C,false,sensor.water_dhw_cold_water,sensor.water_dhw_coldtemp,19,9,1/10,17,1
-"SM200, MS200",water,164,dhw.temp5,temperature 5,uint16 (>=0<=3199),C,false,sensor.water_dhw_temperature_5,sensor.water_dhw_temp5,19,9,1/10,18,1
-"SM200, MS200",water,164,dhw.rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.water_dhw_return_temperature,sensor.water_dhw_rettemp,19,9,1/10,19,1
+"SM100, MS100",water,163,dhw.pumpmod,pump modulation,uint8,%,false,sensor.water_dhw_pump_modulation,sensor.water_dhw_pumpmod,19,9,1,25,1
+"SM100, MS100",water,163,dhw.flow,flow rate,uint16,l/min,false,sensor.water_dhw_flow_rate,sensor.water_dhw_flow,19,9,1/10,26,1
+"SM100, MS100",water,163,dhw.valvereturn,return valve,uint8 (>=0<=0),%,true,number.water_dhw_return_valve,number.water_dhw_valvereturn,19,9,1,27,1
+"SM100, MS100",water,163,dhw.deltatret,temp. diff. return valve,uint8 (>=0<=0),K,true,number.water_dhw_temp._diff._return_valve,number.water_dhw_deltatret,19,9,1,28,1
+"SM100, MS100",water,163,dhw.errordisp,error display,enum [off\|normal\|inverted] (>=0<=0), ,true,select.water_dhw_error_display,select.water_dhw_errordisp,19,9,1,29,1
+"SM200, MS200",water,164,dhw.temp,current temperature,uint16,C,false,sensor.water_dhw_current_temperature,sensor.water_dhw_temp,19,9,1/10,1,1
+"SM200, MS200",water,164,dhw.storagetemp1,storage intern temperature,uint16,C,false,sensor.water_dhw_storage_intern_temperature,sensor.water_dhw_storagetemp1,19,9,1/10,16,1
+"SM200, MS200",water,164,dhw.coldtemp,cold water,uint16,C,false,sensor.water_dhw_cold_water,sensor.water_dhw_coldtemp,19,9,1/10,17,1
+"SM200, MS200",water,164,dhw.temp5,temperature 5,uint16,C,false,sensor.water_dhw_temperature_5,sensor.water_dhw_temp5,19,9,1/10,18,1
+"SM200, MS200",water,164,dhw.rettemp,return temperature,uint16,C,false,sensor.water_dhw_return_temperature,sensor.water_dhw_rettemp,19,9,1/10,19,1
"SM200, MS200",water,164,dhw.pump,pump,boolean, ,false,binary_sensor.water_dhw_pump,binary_sensor.water_dhw_pump,19,9,1,4,1
-"SM200, MS200",water,164,dhw.maxtemp,maximum temperature,uint8 (>=0<=254),C,true,number.water_dhw_maximum_temperature,number.water_dhw_maxtemp,19,9,1,12,1
-"SM200, MS200",water,164,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.water_dhw_selected_temperature,number.water_dhw_seltemp,19,9,1,0,1
-"SM200, MS200",water,164,dhw.redtemp,reduced temperature,uint8 (>=0<=254),C,true,number.water_dhw_reduced_temperature,number.water_dhw_redtemp,19,9,1,14,1
-"SM200, MS200",water,164,dhw.hottemp,extra hot temperature,uint8 (>=0<=254),C,true,number.water_dhw_extra_hot_temperature,number.water_dhw_hottemp,19,9,1,20,1
-"SM200, MS200",water,164,dhw.dailytemp,daily temperature,uint8 (>=0<=254),C,true,number.water_dhw_daily_temperature,number.water_dhw_dailytemp,19,9,1,21,1
-"SM200, MS200",water,164,dhw.disinfectiontemp,disinfection temperature,uint8 (>=0<=254),C,true,number.water_dhw_disinfection_temperature,number.water_dhw_disinfectiontemp,19,9,1,8,1
-"SM200, MS200",water,164,dhw.circ,circulation active,boolean, ,true,switch.water_dhw_circulation_active,switch.water_dhw_circ,19,9,1,9,1
-"SM200, MS200",water,164,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.water_dhw_circulation_pump_mode,select.water_dhw_circmode,19,9,1,10,1
-"SM200, MS200",water,164,dhw.circtc,circulation time controlled,boolean, ,true,switch.water_dhw_circulation_time_controlled,switch.water_dhw_circtc,19,9,1,22,1
-"SM200, MS200",water,164,dhw.keepwarm,keep warm,boolean, ,true,switch.water_dhw_keep_warm,switch.water_dhw_keepwarm,19,9,1,23,1
+"SM200, MS200",water,164,dhw.maxtemp,maximum temperature,uint8 (>=0<=0),C,true,number.water_dhw_maximum_temperature,number.water_dhw_maxtemp,19,9,1,12,1
+"SM200, MS200",water,164,dhw.seltemp,selected temperature,uint8 (>=0<=0),C,true,number.water_dhw_selected_temperature,number.water_dhw_seltemp,19,9,1,0,1
+"SM200, MS200",water,164,dhw.redtemp,reduced temperature,uint8 (>=0<=0),C,true,number.water_dhw_reduced_temperature,number.water_dhw_redtemp,19,9,1,14,1
+"SM200, MS200",water,164,dhw.hottemp,extra hot temperature,uint8 (>=0<=0),C,true,number.water_dhw_extra_hot_temperature,number.water_dhw_hottemp,19,9,1,20,1
+"SM200, MS200",water,164,dhw.dailytemp,daily temperature,uint8 (>=0<=0),C,true,number.water_dhw_daily_temperature,number.water_dhw_dailytemp,19,9,1,21,1
+"SM200, MS200",water,164,dhw.disinfectiontemp,disinfection temperature,uint8 (>=0<=0),C,true,number.water_dhw_disinfection_temperature,number.water_dhw_disinfectiontemp,19,9,1,8,1
+"SM200, MS200",water,164,dhw.circ,circulation active,boolean (>=0<=0), ,true,switch.water_dhw_circulation_active,switch.water_dhw_circ,19,9,1,9,1
+"SM200, MS200",water,164,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] (>=0<=0), ,true,select.water_dhw_circulation_pump_mode,select.water_dhw_circmode,19,9,1,10,1
+"SM200, MS200",water,164,dhw.circtc,circulation time controlled,boolean (>=0<=0), ,true,switch.water_dhw_circulation_time_controlled,switch.water_dhw_circtc,19,9,1,22,1
+"SM200, MS200",water,164,dhw.keepwarm,keep warm,boolean (>=0<=0), ,true,switch.water_dhw_keep_warm,switch.water_dhw_keepwarm,19,9,1,23,1
"SM200, MS200",water,164,dhw.status2,status 2,enum [\|\|\|no heat\|\|\|heat request\|\|disinfecting\|hold], ,false,sensor.water_dhw_status_2,sensor.water_dhw_status2,19,9,1,24,1
-"SM200, MS200",water,164,dhw.pumpmod,pump modulation,uint8 (>=0<=100),%,false,sensor.water_dhw_pump_modulation,sensor.water_dhw_pumpmod,19,9,1,25,1
-"SM200, MS200",water,164,dhw.flow,flow rate,uint16 (>=0<=3199),l/min,false,sensor.water_dhw_flow_rate,sensor.water_dhw_flow,19,9,1/10,26,1
-"SM200, MS200",water,164,dhw.valvereturn,return valve,uint8 (>=0<=100),%,true,number.water_dhw_return_valve,number.water_dhw_valvereturn,19,9,1,27,1
-"SM200, MS200",water,164,dhw.deltatret,temp. diff. return valve,uint8 (>=0<=254),K,true,number.water_dhw_temp._diff._return_valve,number.water_dhw_deltatret,19,9,1,28,1
-"SM200, MS200",water,164,dhw.errordisp,error display,enum [off\|normal\|inverted], ,true,select.water_dhw_error_display,select.water_dhw_errordisp,19,9,1,29,1
-"MP100",pool,204,pooltemp,pool temperature,int16 (>=-3199<=3199),C,false,sensor.pool_pool_temperature,sensor.pool_pooltemp,20,0,1/10,-1,1
+"SM200, MS200",water,164,dhw.pumpmod,pump modulation,uint8,%,false,sensor.water_dhw_pump_modulation,sensor.water_dhw_pumpmod,19,9,1,25,1
+"SM200, MS200",water,164,dhw.flow,flow rate,uint16,l/min,false,sensor.water_dhw_flow_rate,sensor.water_dhw_flow,19,9,1/10,26,1
+"SM200, MS200",water,164,dhw.valvereturn,return valve,uint8 (>=0<=0),%,true,number.water_dhw_return_valve,number.water_dhw_valvereturn,19,9,1,27,1
+"SM200, MS200",water,164,dhw.deltatret,temp. diff. return valve,uint8 (>=0<=0),K,true,number.water_dhw_temp._diff._return_valve,number.water_dhw_deltatret,19,9,1,28,1
+"SM200, MS200",water,164,dhw.errordisp,error display,enum [off\|normal\|inverted] (>=0<=0), ,true,select.water_dhw_error_display,select.water_dhw_errordisp,19,9,1,29,1
+"MP100",pool,204,pooltemp,pool temperature,int16,C,false,sensor.pool_pool_temperature,sensor.pool_pooltemp,20,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,20,0,1,-1,1
-"MP100",pool,204,poolshunt,pool shunt open/close (0% = pool / 100% = heat),uint8 (>=0<=100),%,false,sensor.pool_pool_shunt_open/close_(0%_=_pool_/_100%_=_heat),sensor.pool_poolshunt,20,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,20,0,1,-1,1
diff --git a/docs/dump_telegrams.csv b/docs/dump_telegrams.csv
index 980114993..297405d42 100644
--- a/docs/dump_telegrams.csv
+++ b/docs/dump_telegrams.csv
@@ -111,10 +111,10 @@ telegram_type_id,name,is_fetched
0x02A0,RC300Curves,
0x02A1,RC300Curves,
0x02A2,RC300Curves,
-0x02A5,RC300Monitor,fetched
+0x02A5,RC300Monitor,
0x02A6,RC300Monitor,
0x02A7,RC300Monitor,
-0x02A8,RC300Monitor,
+0x02A8,CRFMonitor,
0x02A9,RC300Monitor,
0x02AA,RC300Monitor,
0x02AB,RC300Monitor,
diff --git a/interface/package.json b/interface/package.json
index 7adf2ae70..87005f6d9 100644
--- a/interface/package.json
+++ b/interface/package.json
@@ -12,7 +12,7 @@
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
- "build-hosted": "typesafe-i18n && vite build --mode hosted",
+ "build-hosted": "typesafe-i18n --no-watch && vite build --mode hosted",
"mock-rest": "bun --watch ../mock-api/restServer.ts",
"preview-standalone": "typesafe-i18n --no-watch && vite build && concurrently -c \"auto\" \"pnpm:mock-rest\" \"vite preview\"",
"standalone": "concurrently -c \"auto\" \"typesafe-i18n\" \"pnpm:mock-rest\" \"vite dev\"",
@@ -26,8 +26,8 @@
"@alova/adapter-xhr": "2.3.1",
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.1",
- "@mui/icons-material": "^7.3.6",
- "@mui/material": "^7.3.6",
+ "@mui/icons-material": "^7.3.7",
+ "@mui/material": "^7.3.7",
"@preact/compat": "^18.3.1",
"@table-library/react-table-library": "4.1.15",
"alova": "3.4.1",
@@ -37,11 +37,11 @@
"jwt-decode": "^4.0.0",
"magic-string": "^0.30.21",
"mime-types": "^3.0.2",
- "preact": "^10.28.1",
+ "preact": "^10.28.2",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"react-icons": "^5.5.0",
- "react-router": "^7.11.0",
+ "react-router": "^7.12.0",
"react-toastify": "^11.0.5",
"typesafe-i18n": "^5.26.2",
"typescript": "^5.9.3"
@@ -51,21 +51,21 @@
"@eslint/js": "^9.39.2",
"@preact/compat": "^18.3.1",
"@preact/preset-vite": "^2.10.2",
- "@trivago/prettier-plugin-sort-imports": "^6.0.0",
- "@types/node": "^25.0.3",
- "@types/react": "^19.2.7",
+ "@trivago/prettier-plugin-sort-imports": "^6.0.2",
+ "@types/node": "^25.0.6",
+ "@types/react": "^19.2.8",
"@types/react-dom": "^19.2.3",
- "axe-core": "^4.11.0",
+ "axe-core": "^4.11.1",
"concurrently": "^9.2.1",
"eslint": "^9.39.2",
"eslint-config-prettier": "^10.1.8",
"prettier": "^3.7.4",
"rollup-plugin-visualizer": "^6.0.5",
"terser": "^5.44.1",
- "typescript-eslint": "^8.51.0",
- "vite": "^7.3.0",
+ "typescript-eslint": "^8.52.0",
+ "vite": "^7.3.1",
"vite-plugin-imagemin": "^0.6.1",
- "vite-tsconfig-paths": "^6.0.3"
+ "vite-tsconfig-paths": "^6.0.4"
},
- "packageManager": "pnpm@10.27.0+sha512.72d699da16b1179c14ba9e64dc71c9a40988cbdc65c264cb0e489db7de917f20dcf4d64d8723625f2969ba52d4b7e2a1170682d9ac2a5dcaeaab732b7e16f04a"
+ "packageManager": "pnpm@10.28.0+sha512.05df71d1421f21399e053fde567cea34d446fa02c76571441bfc1c7956e98e363088982d940465fd34480d4d90a0668bc12362f8aa88000a64e83d0b0e47be48"
}
diff --git a/interface/pnpm-lock.yaml b/interface/pnpm-lock.yaml
new file mode 100644
index 000000000..a46d81557
--- /dev/null
+++ b/interface/pnpm-lock.yaml
@@ -0,0 +1,6111 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ dependencies:
+ '@alova/adapter-xhr':
+ specifier: 2.3.1
+ version: 2.3.1(alova@3.4.1)
+ '@emotion/react':
+ specifier: ^11.14.0
+ version: 11.14.0(@types/react@19.2.8)(react@19.2.3)
+ '@emotion/styled':
+ specifier: ^11.14.1
+ version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3)
+ '@mui/icons-material':
+ specifier: ^7.3.7
+ version: 7.3.7(@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@types/react@19.2.8)(react@19.2.3)
+ '@mui/material':
+ specifier: ^7.3.7
+ version: 7.3.7(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@preact/compat':
+ specifier: ^18.3.1
+ version: 18.3.1(preact@10.28.2)
+ '@table-library/react-table-library':
+ specifier: 4.1.15
+ version: 4.1.15(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ alova:
+ specifier: 3.4.1
+ version: 3.4.1
+ async-validator:
+ specifier: ^4.2.5
+ version: 4.2.5
+ etag:
+ specifier: ^1.8.1
+ version: 1.8.1
+ formidable:
+ specifier: ^3.5.4
+ version: 3.5.4
+ jwt-decode:
+ specifier: ^4.0.0
+ version: 4.0.0
+ magic-string:
+ specifier: ^0.30.21
+ version: 0.30.21
+ mime-types:
+ specifier: ^3.0.2
+ version: 3.0.2
+ preact:
+ specifier: ^10.28.2
+ version: 10.28.2
+ react:
+ specifier: ^19.2.3
+ version: 19.2.3
+ react-dom:
+ specifier: ^19.2.3
+ version: 19.2.3(react@19.2.3)
+ react-icons:
+ specifier: ^5.5.0
+ version: 5.5.0(react@19.2.3)
+ react-router:
+ specifier: ^7.12.0
+ version: 7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ react-toastify:
+ specifier: ^11.0.5
+ version: 11.0.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ typesafe-i18n:
+ specifier: ^5.26.2
+ version: 5.26.2(typescript@5.9.3)
+ typescript:
+ specifier: ^5.9.3
+ version: 5.9.3
+ devDependencies:
+ '@babel/core':
+ specifier: ^7.28.5
+ version: 7.28.5
+ '@eslint/js':
+ specifier: ^9.39.2
+ version: 9.39.2
+ '@preact/preset-vite':
+ specifier: ^2.10.2
+ version: 2.10.2(@babel/core@7.28.5)(preact@10.28.2)(vite@7.3.1(@types/node@25.0.6)(terser@5.44.1))
+ '@trivago/prettier-plugin-sort-imports':
+ specifier: ^6.0.2
+ version: 6.0.2(prettier@3.7.4)
+ '@types/node':
+ specifier: ^25.0.6
+ version: 25.0.6
+ '@types/react':
+ specifier: ^19.2.8
+ version: 19.2.8
+ '@types/react-dom':
+ specifier: ^19.2.3
+ version: 19.2.3(@types/react@19.2.8)
+ axe-core:
+ specifier: ^4.11.1
+ version: 4.11.1
+ concurrently:
+ specifier: ^9.2.1
+ version: 9.2.1
+ eslint:
+ specifier: ^9.39.2
+ version: 9.39.2
+ eslint-config-prettier:
+ specifier: ^10.1.8
+ version: 10.1.8(eslint@9.39.2)
+ prettier:
+ specifier: ^3.7.4
+ version: 3.7.4
+ rollup-plugin-visualizer:
+ specifier: ^6.0.5
+ version: 6.0.5(rollup@4.55.1)
+ terser:
+ specifier: ^5.44.1
+ version: 5.44.1
+ typescript-eslint:
+ specifier: ^8.52.0
+ version: 8.52.0(eslint@9.39.2)(typescript@5.9.3)
+ vite:
+ specifier: ^7.3.1
+ version: 7.3.1(@types/node@25.0.6)(terser@5.44.1)
+ vite-plugin-imagemin:
+ specifier: ^0.6.1
+ version: 0.6.1(vite@7.3.1(@types/node@25.0.6)(terser@5.44.1))
+ vite-tsconfig-paths:
+ specifier: ^6.0.4
+ version: 6.0.4(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.6)(terser@5.44.1))
+
+packages:
+
+ '@alova/adapter-xhr@2.3.1':
+ resolution: {integrity: sha512-mhViueeSJ6yfyEUvHIWyZlb6V8+9GJCzwU1hUsvjXSZHpkzGCeNUefxjjFC++K9UBsvUzJ5KGeyeqoToUQg3gg==}
+ peerDependencies:
+ alova: ^3.0.20
+
+ '@alova/shared@1.3.2':
+ resolution: {integrity: sha512-1XvDLWgYpVZ99MmLl1f3Fw4T6S6pPYk5afz5cwRVjuq8JXEGsDn9IygDKfvRyWqkqCBx7Jif07LIct1O+MVEow==}
+
+ '@babel/code-frame@7.27.1':
+ resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/compat-data@7.28.5':
+ resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/core@7.28.5':
+ resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/generator@7.28.5':
+ resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-annotate-as-pure@7.27.3':
+ resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-compilation-targets@7.27.2':
+ resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-globals@7.28.0':
+ resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-imports@7.27.1':
+ resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-transforms@7.28.3':
+ resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-plugin-utils@7.27.1':
+ resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-string-parser@7.27.1':
+ resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-identifier@7.28.5':
+ resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-option@7.27.1':
+ resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helpers@7.28.4':
+ resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/parser@7.28.5':
+ resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ '@babel/plugin-syntax-jsx@7.27.1':
+ resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-react-jsx-development@7.27.1':
+ resolution: {integrity: sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-react-jsx@7.27.1':
+ resolution: {integrity: sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/runtime@7.28.4':
+ resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/template@7.27.2':
+ resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/traverse@7.28.5':
+ resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/types@7.28.5':
+ resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==}
+ engines: {node: '>=6.9.0'}
+
+ '@emotion/babel-plugin@11.13.5':
+ resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==}
+
+ '@emotion/cache@11.14.0':
+ resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==}
+
+ '@emotion/hash@0.9.2':
+ resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==}
+
+ '@emotion/is-prop-valid@1.4.0':
+ resolution: {integrity: sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==}
+
+ '@emotion/memoize@0.9.0':
+ resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==}
+
+ '@emotion/react@11.14.0':
+ resolution: {integrity: sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: '>=16.8.0'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@emotion/serialize@1.3.3':
+ resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==}
+
+ '@emotion/sheet@1.4.0':
+ resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==}
+
+ '@emotion/styled@11.14.1':
+ resolution: {integrity: sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw==}
+ peerDependencies:
+ '@emotion/react': ^11.0.0-rc.0
+ '@types/react': '*'
+ react: '>=16.8.0'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@emotion/unitless@0.10.0':
+ resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==}
+
+ '@emotion/use-insertion-effect-with-fallbacks@1.2.0':
+ resolution: {integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==}
+ peerDependencies:
+ react: '>=16.8.0'
+
+ '@emotion/utils@1.4.2':
+ resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==}
+
+ '@emotion/weak-memoize@0.4.0':
+ resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==}
+
+ '@esbuild/aix-ppc64@0.27.2':
+ resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [aix]
+
+ '@esbuild/android-arm64@0.27.2':
+ resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [android]
+
+ '@esbuild/android-arm@0.27.2':
+ resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [android]
+
+ '@esbuild/android-x64@0.27.2':
+ resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [android]
+
+ '@esbuild/darwin-arm64@0.27.2':
+ resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@esbuild/darwin-x64@0.27.2':
+ resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@esbuild/freebsd-arm64@0.27.2':
+ resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-x64@0.27.2':
+ resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@esbuild/linux-arm64@0.27.2':
+ resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@esbuild/linux-arm@0.27.2':
+ resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [linux]
+
+ '@esbuild/linux-ia32@0.27.2':
+ resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [linux]
+
+ '@esbuild/linux-loong64@0.14.54':
+ resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@esbuild/linux-loong64@0.27.2':
+ resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==}
+ engines: {node: '>=18'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@esbuild/linux-mips64el@0.27.2':
+ resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==}
+ engines: {node: '>=18'}
+ cpu: [mips64el]
+ os: [linux]
+
+ '@esbuild/linux-ppc64@0.27.2':
+ resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@esbuild/linux-riscv64@0.27.2':
+ resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==}
+ engines: {node: '>=18'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@esbuild/linux-s390x@0.27.2':
+ resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==}
+ engines: {node: '>=18'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@esbuild/linux-x64@0.27.2':
+ resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [linux]
+
+ '@esbuild/netbsd-arm64@0.27.2':
+ resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [netbsd]
+
+ '@esbuild/netbsd-x64@0.27.2':
+ resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [netbsd]
+
+ '@esbuild/openbsd-arm64@0.27.2':
+ resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
+
+ '@esbuild/openbsd-x64@0.27.2':
+ resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@esbuild/openharmony-arm64@0.27.2':
+ resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@esbuild/sunos-x64@0.27.2':
+ resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [sunos]
+
+ '@esbuild/win32-arm64@0.27.2':
+ resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@esbuild/win32-ia32@0.27.2':
+ resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@esbuild/win32-x64@0.27.2':
+ resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [win32]
+
+ '@eslint-community/eslint-utils@4.9.1':
+ resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
+
+ '@eslint-community/regexpp@4.12.2':
+ resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==}
+ engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
+
+ '@eslint/config-array@0.21.1':
+ resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/config-helpers@0.4.2':
+ resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/core@0.17.0':
+ resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/eslintrc@3.3.3':
+ resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/js@9.39.2':
+ resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/object-schema@2.1.7':
+ resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/plugin-kit@0.4.1':
+ resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@humanfs/core@0.19.1':
+ resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
+ engines: {node: '>=18.18.0'}
+
+ '@humanfs/node@0.16.7':
+ resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==}
+ engines: {node: '>=18.18.0'}
+
+ '@humanwhocodes/module-importer@1.0.1':
+ resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
+ engines: {node: '>=12.22'}
+
+ '@humanwhocodes/retry@0.4.3':
+ resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
+ engines: {node: '>=18.18'}
+
+ '@isaacs/balanced-match@4.0.1':
+ resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==}
+ engines: {node: 20 || >=22}
+
+ '@isaacs/brace-expansion@5.0.0':
+ resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==}
+ engines: {node: 20 || >=22}
+
+ '@jridgewell/gen-mapping@0.3.13':
+ resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
+
+ '@jridgewell/remapping@2.3.5':
+ resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
+
+ '@jridgewell/resolve-uri@3.1.2':
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/source-map@0.3.11':
+ resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==}
+
+ '@jridgewell/sourcemap-codec@1.5.5':
+ resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
+
+ '@jridgewell/trace-mapping@0.3.31':
+ resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
+
+ '@mui/core-downloads-tracker@7.3.7':
+ resolution: {integrity: sha512-8jWwS6FweMkpyRkrJooamUGe1CQfO1yJ+lM43IyUJbrhHW/ObES+6ry4vfGi8EKaldHL3t3BG1bcLcERuJPcjg==}
+
+ '@mui/icons-material@7.3.7':
+ resolution: {integrity: sha512-3Q+ulAqG+A1+R4ebgoIs7AccaJhIGy+Xi/9OnvX376jQ6wcy+rz4geDGrxQxCGzdjOQr4Z3NgyFSZCz4T999lA==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ '@mui/material': ^7.3.7
+ '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@mui/material@7.3.7':
+ resolution: {integrity: sha512-6bdIxqzeOtBAj2wAsfhWCYyMKPLkRO9u/2o5yexcL0C3APqyy91iGSWgT3H7hg+zR2XgE61+WAu12wXPON8b6A==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ '@emotion/react': ^11.5.0
+ '@emotion/styled': ^11.3.0
+ '@mui/material-pigment-css': ^7.3.7
+ '@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
+ peerDependenciesMeta:
+ '@emotion/react':
+ optional: true
+ '@emotion/styled':
+ optional: true
+ '@mui/material-pigment-css':
+ optional: true
+ '@types/react':
+ optional: true
+
+ '@mui/private-theming@7.3.7':
+ resolution: {integrity: sha512-w7r1+CYhG0syCAQUWAuV5zSaU2/67WA9JXUderdb7DzCIJdp/5RmJv6L85wRjgKCMsxFF0Kfn0kPgPbPgw/jdw==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@mui/styled-engine@7.3.7':
+ resolution: {integrity: sha512-y/QkNXv6cF6dZ5APztd/dFWfQ6LHKPx3skyYO38YhQD4+Cxd6sFAL3Z38WMSSC8LQz145Mpp3CcLrSCLKPwYAg==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ '@emotion/react': ^11.4.1
+ '@emotion/styled': ^11.3.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ '@emotion/react':
+ optional: true
+ '@emotion/styled':
+ optional: true
+
+ '@mui/system@7.3.7':
+ resolution: {integrity: sha512-DovL3k+FBRKnhmatzUMyO5bKkhMLlQ9L7Qw5qHrre3m8zCZmE+31NDVBFfqrbrA7sq681qaEIHdkWD5nmiAjyQ==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ '@emotion/react': ^11.5.0
+ '@emotion/styled': ^11.3.0
+ '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ '@emotion/react':
+ optional: true
+ '@emotion/styled':
+ optional: true
+ '@types/react':
+ optional: true
+
+ '@mui/types@7.4.10':
+ resolution: {integrity: sha512-0+4mSjknSu218GW3isRqoxKRTOrTLd/vHi/7UC4+wZcUrOAqD9kRk7UQRL1mcrzqRoe7s3UT6rsRpbLkW5mHpQ==}
+ peerDependencies:
+ '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@mui/utils@7.3.7':
+ resolution: {integrity: sha512-+YjnjMRnyeTkWnspzoxRdiSOgkrcpTikhNPoxOZW0APXx+urHtUoXJ9lbtCZRCA5a4dg5gSbd19alL1DvRs5fg==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@noble/hashes@1.8.0':
+ resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==}
+ engines: {node: ^14.21.3 || >=16}
+
+ '@nodelib/fs.scandir@2.1.5':
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.stat@2.0.5':
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.walk@1.2.8':
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+
+ '@paralleldrive/cuid2@2.3.1':
+ resolution: {integrity: sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==}
+
+ '@popperjs/core@2.11.8':
+ resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
+
+ '@preact/compat@18.3.1':
+ resolution: {integrity: sha512-Kog4PSRxtT4COtOXjsuQPV1vMXpUzREQfv+6Dmcy9/rMk0HOPK0HTE9fspFjAmY8R80T/T8gtgmZ68u5bOSngw==}
+ peerDependencies:
+ preact: '*'
+
+ '@preact/preset-vite@2.10.2':
+ resolution: {integrity: sha512-K9wHlJOtkE+cGqlyQ5v9kL3Ge0Ql4LlIZjkUTL+1zf3nNdF88F9UZN6VTV8jdzBX9Fl7WSzeNMSDG7qECPmSmg==}
+ peerDependencies:
+ '@babel/core': 7.x
+ vite: 2.x || 3.x || 4.x || 5.x || 6.x || 7.x
+
+ '@prefresh/babel-plugin@0.5.2':
+ resolution: {integrity: sha512-AOl4HG6dAxWkJ5ndPHBgBa49oo/9bOiJuRDKHLSTyH+Fd9x00shTXpdiTj1W41l6oQIwUOAgJeHMn4QwIDpHkA==}
+
+ '@prefresh/core@1.5.9':
+ resolution: {integrity: sha512-IKBKCPaz34OFVC+adiQ2qaTF5qdztO2/4ZPf4KsRTgjKosWqxVXmEbxCiUydYZRY8GVie+DQlKzQr9gt6HQ+EQ==}
+ peerDependencies:
+ preact: ^10.0.0 || ^11.0.0-0
+
+ '@prefresh/utils@1.2.1':
+ resolution: {integrity: sha512-vq/sIuN5nYfYzvyayXI4C2QkprfNaHUQ9ZX+3xLD8nL3rWyzpxOm1+K7RtMbhd+66QcaISViK7amjnheQ/4WZw==}
+
+ '@prefresh/vite@2.4.11':
+ resolution: {integrity: sha512-/XjURQqdRiCG3NpMmWqE9kJwrg9IchIOWHzulCfqg2sRe/8oQ1g5De7xrk9lbqPIQLn7ntBkKdqWXIj4E9YXyg==}
+ peerDependencies:
+ preact: ^10.4.0 || ^11.0.0-0
+ vite: '>=2.0.0'
+
+ '@rollup/pluginutils@4.2.1':
+ resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==}
+ engines: {node: '>= 8.0.0'}
+
+ '@rollup/rollup-android-arm-eabi@4.55.1':
+ resolution: {integrity: sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg==}
+ cpu: [arm]
+ os: [android]
+
+ '@rollup/rollup-android-arm64@4.55.1':
+ resolution: {integrity: sha512-eFZCb1YUqhTysgW3sj/55du5cG57S7UTNtdMjCW7LwVcj3dTTcowCsC8p7uBdzKsZYa8J7IDE8lhMI+HX1vQvg==}
+ cpu: [arm64]
+ os: [android]
+
+ '@rollup/rollup-darwin-arm64@4.55.1':
+ resolution: {integrity: sha512-p3grE2PHcQm2e8PSGZdzIhCKbMCw/xi9XvMPErPhwO17vxtvCN5FEA2mSLgmKlCjHGMQTP6phuQTYWUnKewwGg==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rollup/rollup-darwin-x64@4.55.1':
+ resolution: {integrity: sha512-rDUjG25C9qoTm+e02Esi+aqTKSBYwVTaoS1wxcN47/Luqef57Vgp96xNANwt5npq9GDxsH7kXxNkJVEsWEOEaQ==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rollup/rollup-freebsd-arm64@4.55.1':
+ resolution: {integrity: sha512-+JiU7Jbp5cdxekIgdte0jfcu5oqw4GCKr6i3PJTlXTCU5H5Fvtkpbs4XJHRmWNXF+hKmn4v7ogI5OQPaupJgOg==}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@rollup/rollup-freebsd-x64@4.55.1':
+ resolution: {integrity: sha512-V5xC1tOVWtLLmr3YUk2f6EJK4qksksOYiz/TCsFHu/R+woubcLWdC9nZQmwjOAbmExBIVKsm1/wKmEy4z4u4Bw==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.55.1':
+ resolution: {integrity: sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ==}
+ cpu: [arm]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm-musleabihf@4.55.1':
+ resolution: {integrity: sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg==}
+ cpu: [arm]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm64-gnu@4.55.1':
+ resolution: {integrity: sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm64-musl@4.55.1':
+ resolution: {integrity: sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rollup/rollup-linux-loong64-gnu@4.55.1':
+ resolution: {integrity: sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g==}
+ cpu: [loong64]
+ os: [linux]
+
+ '@rollup/rollup-linux-loong64-musl@4.55.1':
+ resolution: {integrity: sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw==}
+ cpu: [loong64]
+ os: [linux]
+
+ '@rollup/rollup-linux-ppc64-gnu@4.55.1':
+ resolution: {integrity: sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw==}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@rollup/rollup-linux-ppc64-musl@4.55.1':
+ resolution: {integrity: sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw==}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@rollup/rollup-linux-riscv64-gnu@4.55.1':
+ resolution: {integrity: sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@rollup/rollup-linux-riscv64-musl@4.55.1':
+ resolution: {integrity: sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@rollup/rollup-linux-s390x-gnu@4.55.1':
+ resolution: {integrity: sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg==}
+ cpu: [s390x]
+ os: [linux]
+
+ '@rollup/rollup-linux-x64-gnu@4.55.1':
+ resolution: {integrity: sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rollup/rollup-linux-x64-musl@4.55.1':
+ resolution: {integrity: sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rollup/rollup-openbsd-x64@4.55.1':
+ resolution: {integrity: sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg==}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@rollup/rollup-openharmony-arm64@4.55.1':
+ resolution: {integrity: sha512-xzm44KgEP11te3S2HCSyYf5zIzWmx3n8HDCc7EE59+lTcswEWNpvMLfd9uJvVX8LCg9QWG67Xt75AuHn4vgsXw==}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@rollup/rollup-win32-arm64-msvc@4.55.1':
+ resolution: {integrity: sha512-yR6Bl3tMC/gBok5cz/Qi0xYnVbIxGx5Fcf/ca0eB6/6JwOY+SRUcJfI0OpeTpPls7f194as62thCt/2BjxYN8g==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rollup/rollup-win32-ia32-msvc@4.55.1':
+ resolution: {integrity: sha512-3fZBidchE0eY0oFZBnekYCfg+5wAB0mbpCBuofh5mZuzIU/4jIVkbESmd2dOsFNS78b53CYv3OAtwqkZZmU5nA==}
+ cpu: [ia32]
+ os: [win32]
+
+ '@rollup/rollup-win32-x64-gnu@4.55.1':
+ resolution: {integrity: sha512-xGGY5pXj69IxKb4yv/POoocPy/qmEGhimy/FoTpTSVju3FYXUQQMFCaZZXJVidsmGxRioZAwpThl/4zX41gRKg==}
+ cpu: [x64]
+ os: [win32]
+
+ '@rollup/rollup-win32-x64-msvc@4.55.1':
+ resolution: {integrity: sha512-SPEpaL6DX4rmcXtnhdrQYgzQ5W2uW3SCJch88lB2zImhJRhIIK44fkUrgIV/Q8yUNfw5oyZ5vkeQsZLhCb06lw==}
+ cpu: [x64]
+ os: [win32]
+
+ '@sindresorhus/is@0.7.0':
+ resolution: {integrity: sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==}
+ engines: {node: '>=4'}
+
+ '@table-library/react-table-library@4.1.15':
+ resolution: {integrity: sha512-c/FY88KbPhAqt+eFy+TnLsFVn9ntAdQrosZ08/T6QpoCUrESlaBFbMOeWvNSV1F4KyUo0RccSJAoSVbJYL5QlA==}
+ peerDependencies:
+ '@emotion/react': '>= 11'
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+
+ '@trivago/prettier-plugin-sort-imports@6.0.2':
+ resolution: {integrity: sha512-3DgfkukFyC/sE/VuYjaUUWoFfuVjPK55vOFDsxD56XXynFMCZDYFogH2l/hDfOsQAm1myoU/1xByJ3tWqtulXA==}
+ engines: {node: '>= 20'}
+ peerDependencies:
+ '@vue/compiler-sfc': 3.x
+ prettier: 2.x - 3.x
+ prettier-plugin-ember-template-tag: '>= 2.0.0'
+ prettier-plugin-svelte: 3.x
+ svelte: 4.x || 5.x
+ peerDependenciesMeta:
+ '@vue/compiler-sfc':
+ optional: true
+ prettier-plugin-ember-template-tag:
+ optional: true
+ prettier-plugin-svelte:
+ optional: true
+ svelte:
+ optional: true
+
+ '@trysound/sax@0.2.0':
+ resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
+ engines: {node: '>=10.13.0'}
+
+ '@types/estree@1.0.8':
+ resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
+
+ '@types/glob@7.2.0':
+ resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==}
+
+ '@types/imagemin-gifsicle@7.0.4':
+ resolution: {integrity: sha512-ZghMBd/Jgqg5utTJNPmvf6DkuHzMhscJ8vgf/7MUGCpO+G+cLrhYltL+5d+h3A1B4W73S2SrmJZ1jS5LACpX+A==}
+
+ '@types/imagemin-jpegtran@5.0.4':
+ resolution: {integrity: sha512-PSMxOeJa8q94Y+qx8Yriw+qj1+vH5xWpvar63o6SGO0Xi5RlKuwHHfJmN2GRUngPrlhe394jOUmpVq8jQlVmFA==}
+
+ '@types/imagemin-mozjpeg@8.0.4':
+ resolution: {integrity: sha512-ZCAxV8SYJB8ehwHpnbRpHjg5Wc4HcyuAMiDhXbkgC7gujDoOTyHO3dhDkUtZ1oK1DLBRZapqG9etdLVhUml7yQ==}
+
+ '@types/imagemin-optipng@5.2.4':
+ resolution: {integrity: sha512-mvKnDMC8eCYZetAQudjs1DbgpR84WhsTx1wgvdiXnpuUEti3oJ+MaMYBRWPY0JlQ4+y4TXKOfa7+LOuT8daegQ==}
+
+ '@types/imagemin-svgo@10.0.5':
+ resolution: {integrity: sha512-9U2Rf7vWBHeqJvzmWNP3vYAKqR0208QqQ9Mkrq9OLIL5AeoF/dRVRou6iUYCufBSim57BpBpCJhZLrTgfS3k1g==}
+
+ '@types/imagemin-webp@7.0.3':
+ resolution: {integrity: sha512-C2/EMohS4bzsvY5VJvdzHFdcfmnZoui54DmM/9bFtK57/CgGmKkc+p6n49euPGmMFDDvwm4yVl60nwxcZOmH5A==}
+
+ '@types/imagemin@7.0.1':
+ resolution: {integrity: sha512-xEn5+M3lDBtI3JxLy6eU3ksoVurygnlG7OYhTqJfGGP4PcvYnfn+IABCmMve7ziM/SneHDm5xgJFKC8hCYPicw==}
+
+ '@types/json-schema@7.0.15':
+ resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+
+ '@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/node@25.0.6':
+ resolution: {integrity: sha512-NNu0sjyNxpoiW3YuVFfNz7mxSQ+S4X2G28uqg2s+CzoqoQjLPsWSbsFFyztIAqt2vb8kfEAsJNepMGPTxFDx3Q==}
+
+ '@types/parse-json@4.0.2':
+ resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
+
+ '@types/prop-types@15.7.15':
+ resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==}
+
+ '@types/react-dom@19.2.3':
+ resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==}
+ peerDependencies:
+ '@types/react': ^19.2.0
+
+ '@types/react-transition-group@4.4.12':
+ resolution: {integrity: sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==}
+ peerDependencies:
+ '@types/react': '*'
+
+ '@types/react@19.2.8':
+ resolution: {integrity: sha512-3MbSL37jEchWZz2p2mjntRZtPt837ij10ApxKfgmXCTuHWagYg7iA5bqPw6C8BMPfwidlvfPI/fxOc42HLhcyg==}
+
+ '@types/responselike@1.0.3':
+ resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==}
+
+ '@types/svgo@2.6.4':
+ resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==}
+
+ '@typescript-eslint/eslint-plugin@8.52.0':
+ resolution: {integrity: sha512-okqtOgqu2qmZJ5iN4TWlgfF171dZmx2FzdOv2K/ixL2LZWDStL8+JgQerI2sa8eAEfoydG9+0V96m7V+P8yE1Q==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ '@typescript-eslint/parser': ^8.52.0
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
+ '@typescript-eslint/parser@8.52.0':
+ resolution: {integrity: sha512-iIACsx8pxRnguSYhHiMn2PvhvfpopO9FXHyn1mG5txZIsAaB6F0KwbFnUQN3KCiG3Jcuad/Cao2FAs1Wp7vAyg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
+ '@typescript-eslint/project-service@8.52.0':
+ resolution: {integrity: sha512-xD0MfdSdEmeFa3OmVqonHi+Cciab96ls1UhIF/qX/O/gPu5KXD0bY9lu33jj04fjzrXHcuvjBcBC+D3SNSadaw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.0.0'
+
+ '@typescript-eslint/scope-manager@8.52.0':
+ resolution: {integrity: sha512-ixxqmmCcc1Nf8S0mS0TkJ/3LKcC8mruYJPOU6Ia2F/zUUR4pApW7LzrpU3JmtePbRUTes9bEqRc1Gg4iyRnDzA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@typescript-eslint/tsconfig-utils@8.52.0':
+ resolution: {integrity: sha512-jl+8fzr/SdzdxWJznq5nvoI7qn2tNYV/ZBAEcaFMVXf+K6jmXvAFrgo/+5rxgnL152f//pDEAYAhhBAZGrVfwg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.0.0'
+
+ '@typescript-eslint/type-utils@8.52.0':
+ resolution: {integrity: sha512-JD3wKBRWglYRQkAtsyGz1AewDu3mTc7NtRjR/ceTyGoPqmdS5oCdx/oZMWD5Zuqmo6/MpsYs0wp6axNt88/2EQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
+ '@typescript-eslint/types@8.52.0':
+ resolution: {integrity: sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@typescript-eslint/typescript-estree@8.52.0':
+ resolution: {integrity: sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.0.0'
+
+ '@typescript-eslint/utils@8.52.0':
+ resolution: {integrity: sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
+ '@typescript-eslint/visitor-keys@8.52.0':
+ resolution: {integrity: sha512-ink3/Zofus34nmBsPjow63FP5M7IGff0RKAgqR6+CFpdk22M7aLwC9gOcLGYqr7MczLPzZVERW9hRog3O4n1sQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ acorn-jsx@5.3.2:
+ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+
+ acorn@8.15.0:
+ resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
+ ajv@6.12.6:
+ resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
+
+ alova@3.4.1:
+ resolution: {integrity: sha512-xGChKIiCHDqcMglF9RyuWAsk+ltwnja8Dp4MgRIRbUlhOi8XFiQnaoWwIQzJcODKeblmmiFAK7YrYnpskFZWLA==}
+ engines: {node: '>= 18.0.0'}
+
+ ansi-regex@2.1.1:
+ resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==}
+ engines: {node: '>=0.10.0'}
+
+ ansi-regex@5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+
+ ansi-styles@2.2.1:
+ resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==}
+ engines: {node: '>=0.10.0'}
+
+ ansi-styles@4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+
+ arch@2.2.0:
+ resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==}
+
+ archive-type@4.0.0:
+ resolution: {integrity: sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==}
+ engines: {node: '>=4'}
+
+ argparse@2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+
+ array-find-index@1.0.2:
+ resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==}
+ engines: {node: '>=0.10.0'}
+
+ array-union@2.1.0:
+ resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
+ engines: {node: '>=8'}
+
+ asap@2.0.6:
+ resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==}
+
+ async-validator@4.2.5:
+ resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==}
+
+ available-typed-arrays@1.0.7:
+ resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
+ engines: {node: '>= 0.4'}
+
+ axe-core@4.11.1:
+ resolution: {integrity: sha512-BASOg+YwO2C+346x3LZOeoovTIoTrRqEsqMa6fmfAV0P+U9mFr9NsyOEpiYvFjbc64NMrSswhV50WdXzdb/Z5A==}
+ engines: {node: '>=4'}
+
+ babel-plugin-macros@3.1.0:
+ resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==}
+ engines: {node: '>=10', npm: '>=6'}
+
+ babel-plugin-transform-hook-names@1.0.2:
+ resolution: {integrity: sha512-5gafyjyyBTTdX/tQQ0hRgu4AhNHG/hqWi0ZZmg2xvs2FgRkJXzDNKBZCyoYqgFkovfDrgM8OoKg8karoUvWeCw==}
+ peerDependencies:
+ '@babel/core': ^7.12.10
+
+ balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ base64-js@1.5.1:
+ resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
+
+ baseline-browser-mapping@2.9.14:
+ resolution: {integrity: sha512-B0xUquLkiGLgHhpPBqvl7GWegWBUNuujQ6kXd/r1U38ElPT6Ok8KZ8e+FpUGEc2ZoRQUzq/aUnaKFc/svWUGSg==}
+ hasBin: true
+
+ bin-build@3.0.0:
+ resolution: {integrity: sha512-jcUOof71/TNAI2uM5uoUaDq2ePcVBQ3R/qhxAz1rX7UfvduAL/RXD3jXzvn8cVcDJdGVkiR1shal3OH0ImpuhA==}
+ engines: {node: '>=4'}
+
+ bin-check@4.1.0:
+ resolution: {integrity: sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==}
+ engines: {node: '>=4'}
+
+ bin-version-check@4.0.0:
+ resolution: {integrity: sha512-sR631OrhC+1f8Cvs8WyVWOA33Y8tgwjETNPyyD/myRBXLkfS/vl74FmH/lFcRl9KY3zwGh7jFhvyk9vV3/3ilQ==}
+ engines: {node: '>=6'}
+
+ bin-version@3.1.0:
+ resolution: {integrity: sha512-Mkfm4iE1VFt4xd4vH+gx+0/71esbfus2LsnCGe8Pi4mndSPyT+NGES/Eg99jx8/lUGWfu3z2yuB/bt5UB+iVbQ==}
+ engines: {node: '>=6'}
+
+ bin-wrapper@4.1.0:
+ resolution: {integrity: sha512-hfRmo7hWIXPkbpi0ZltboCMVrU+0ClXR/JgbCKKjlDjQf6igXa7OwdqNcFWQZPZTgiY7ZpzE3+LjjkLiTN2T7Q==}
+ engines: {node: '>=6'}
+
+ bl@1.2.3:
+ resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==}
+
+ boolbase@1.0.0:
+ resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
+
+ brace-expansion@1.1.12:
+ resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
+
+ brace-expansion@2.0.2:
+ resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
+
+ braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
+ engines: {node: '>=8'}
+
+ browserslist@4.28.1:
+ resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+
+ buffer-alloc-unsafe@1.1.0:
+ resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==}
+
+ buffer-alloc@1.2.0:
+ resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==}
+
+ buffer-crc32@0.2.13:
+ resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==}
+
+ buffer-fill@1.0.0:
+ resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==}
+
+ buffer-from@1.1.2:
+ resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+
+ buffer@5.7.1:
+ resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
+
+ cacheable-request@2.1.4:
+ resolution: {integrity: sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==}
+
+ call-bind-apply-helpers@1.0.2:
+ resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
+ engines: {node: '>= 0.4'}
+
+ call-bind@1.0.8:
+ resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
+ engines: {node: '>= 0.4'}
+
+ call-bound@1.0.4:
+ resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
+ engines: {node: '>= 0.4'}
+
+ callsites@3.1.0:
+ resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
+ engines: {node: '>=6'}
+
+ camelcase-keys@2.1.0:
+ resolution: {integrity: sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==}
+ engines: {node: '>=0.10.0'}
+
+ camelcase@2.1.1:
+ resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==}
+ engines: {node: '>=0.10.0'}
+
+ caniuse-lite@1.0.30001764:
+ resolution: {integrity: sha512-9JGuzl2M+vPL+pz70gtMF9sHdMFbY9FJaQBi186cHKH3pSzDvzoUJUPV6fqiKIMyXbud9ZLg4F3Yza1vJ1+93g==}
+
+ caw@2.0.1:
+ resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==}
+ engines: {node: '>=4'}
+
+ chalk@1.1.3:
+ resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==}
+ engines: {node: '>=0.10.0'}
+
+ chalk@4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
+
+ cliui@8.0.1:
+ resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
+ engines: {node: '>=12'}
+
+ clone-response@1.0.2:
+ resolution: {integrity: sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==}
+
+ clsx@1.1.1:
+ resolution: {integrity: sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==}
+ engines: {node: '>=6'}
+
+ clsx@2.1.1:
+ resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
+ engines: {node: '>=6'}
+
+ color-convert@2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+
+ color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+
+ commander@2.20.3:
+ resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
+
+ commander@7.2.0:
+ resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
+ engines: {node: '>= 10'}
+
+ concat-map@0.0.1:
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+
+ concurrently@9.2.1:
+ resolution: {integrity: sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ config-chain@1.1.13:
+ resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==}
+
+ console-stream@0.1.1:
+ resolution: {integrity: sha512-QC/8l9e6ofi6nqZ5PawlDgzmMw3OxIXtvolBzap/F4UDBJlDaZRSNbL/lb41C29FcbSJncBFlJFj2WJoNyZRfQ==}
+
+ content-disposition@0.5.4:
+ resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
+ engines: {node: '>= 0.6'}
+
+ convert-source-map@1.9.0:
+ resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
+
+ convert-source-map@2.0.0:
+ resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+
+ cookie@1.1.1:
+ resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==}
+ engines: {node: '>=18'}
+
+ core-util-is@1.0.3:
+ resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
+
+ cosmiconfig@7.1.0:
+ resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==}
+ engines: {node: '>=10'}
+
+ cross-spawn@5.1.0:
+ resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==}
+
+ cross-spawn@6.0.6:
+ resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==}
+ engines: {node: '>=4.8'}
+
+ cross-spawn@7.0.6:
+ resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
+ engines: {node: '>= 8'}
+
+ css-select@4.3.0:
+ resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==}
+
+ css-select@5.2.2:
+ resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==}
+
+ css-tree@1.1.3:
+ resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==}
+ engines: {node: '>=8.0.0'}
+
+ css-what@6.2.2:
+ resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==}
+ engines: {node: '>= 6'}
+
+ csso@4.2.0:
+ resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==}
+ engines: {node: '>=8.0.0'}
+
+ csstype@3.2.3:
+ resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
+
+ currently-unhandled@0.4.1:
+ resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==}
+ engines: {node: '>=0.10.0'}
+
+ cwebp-bin@6.1.2:
+ resolution: {integrity: sha512-NLEZ/BVAl9g426hwUX/qrQ7b/EfQH7BS1tr+CzPo2EgDQbcdzmUVE+fIfsi64lsL638lWgzTEViMAL4pxV1GOg==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ debug@4.4.3:
+ resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ decamelize@1.2.0:
+ resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
+ engines: {node: '>=0.10.0'}
+
+ decode-uri-component@0.2.2:
+ resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
+ engines: {node: '>=0.10'}
+
+ decompress-response@3.3.0:
+ resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==}
+ engines: {node: '>=4'}
+
+ decompress-tar@4.1.1:
+ resolution: {integrity: sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==}
+ engines: {node: '>=4'}
+
+ decompress-tarbz2@4.1.1:
+ resolution: {integrity: sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==}
+ engines: {node: '>=4'}
+
+ decompress-targz@4.1.1:
+ resolution: {integrity: sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==}
+ engines: {node: '>=4'}
+
+ decompress-unzip@4.0.1:
+ resolution: {integrity: sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==}
+ engines: {node: '>=4'}
+
+ decompress@4.2.1:
+ resolution: {integrity: sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==}
+ engines: {node: '>=4'}
+
+ deep-is@0.1.4:
+ resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+
+ define-data-property@1.1.4:
+ resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
+ engines: {node: '>= 0.4'}
+
+ define-lazy-prop@2.0.0:
+ resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
+ engines: {node: '>=8'}
+
+ dezalgo@1.0.4:
+ resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==}
+
+ dir-glob@3.0.1:
+ resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
+ engines: {node: '>=8'}
+
+ dom-helpers@5.2.1:
+ resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
+
+ dom-serializer@1.4.1:
+ resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==}
+
+ dom-serializer@2.0.0:
+ resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
+
+ domelementtype@2.3.0:
+ resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
+
+ domhandler@4.3.1:
+ resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==}
+ engines: {node: '>= 4'}
+
+ domhandler@5.0.3:
+ resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
+ engines: {node: '>= 4'}
+
+ domutils@2.8.0:
+ resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==}
+
+ domutils@3.2.2:
+ resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==}
+
+ download@6.2.5:
+ resolution: {integrity: sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA==}
+ engines: {node: '>=4'}
+
+ download@7.1.0:
+ resolution: {integrity: sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==}
+ engines: {node: '>=6'}
+
+ dunder-proto@1.0.1:
+ resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
+ engines: {node: '>= 0.4'}
+
+ duplexer3@0.1.5:
+ resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==}
+
+ electron-to-chromium@1.5.267:
+ resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==}
+
+ emoji-regex@8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+
+ end-of-stream@1.4.5:
+ resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==}
+
+ entities@2.2.0:
+ resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
+
+ entities@4.5.0:
+ resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
+ engines: {node: '>=0.12'}
+
+ error-ex@1.3.4:
+ resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==}
+
+ es-define-property@1.0.1:
+ resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
+ engines: {node: '>= 0.4'}
+
+ es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+
+ es-object-atoms@1.1.1:
+ resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
+ engines: {node: '>= 0.4'}
+
+ esbuild-android-64@0.14.54:
+ resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+
+ esbuild-android-arm64@0.14.54:
+ resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+
+ esbuild-darwin-64@0.14.54:
+ resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+
+ esbuild-darwin-arm64@0.14.54:
+ resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+
+ esbuild-freebsd-64@0.14.54:
+ resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+
+ esbuild-freebsd-arm64@0.14.54:
+ resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ esbuild-linux-32@0.14.54:
+ resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+
+ esbuild-linux-64@0.14.54:
+ resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+
+ esbuild-linux-arm64@0.14.54:
+ resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+
+ esbuild-linux-arm@0.14.54:
+ resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+
+ esbuild-linux-mips64le@0.14.54:
+ resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+
+ esbuild-linux-ppc64le@0.14.54:
+ resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+
+ esbuild-linux-riscv64@0.14.54:
+ resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+
+ esbuild-linux-s390x@0.14.54:
+ resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+
+ esbuild-netbsd-64@0.14.54:
+ resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+
+ esbuild-openbsd-64@0.14.54:
+ resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+
+ esbuild-sunos-64@0.14.54:
+ resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+
+ esbuild-windows-32@0.14.54:
+ resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+
+ esbuild-windows-64@0.14.54:
+ resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+
+ esbuild-windows-arm64@0.14.54:
+ resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+
+ esbuild@0.14.54:
+ resolution: {integrity: sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==}
+ engines: {node: '>=12'}
+ hasBin: true
+
+ esbuild@0.27.2:
+ resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ escalade@3.2.0:
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
+ engines: {node: '>=6'}
+
+ escape-string-regexp@1.0.5:
+ resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
+ engines: {node: '>=0.8.0'}
+
+ escape-string-regexp@4.0.0:
+ resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
+ engines: {node: '>=10'}
+
+ eslint-config-prettier@10.1.8:
+ resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==}
+ hasBin: true
+ peerDependencies:
+ eslint: '>=7.0.0'
+
+ eslint-scope@8.4.0:
+ resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ eslint-visitor-keys@3.4.3:
+ resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ eslint-visitor-keys@4.2.1:
+ resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ eslint@9.39.2:
+ resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ hasBin: true
+ peerDependencies:
+ jiti: '*'
+ peerDependenciesMeta:
+ jiti:
+ optional: true
+
+ espree@10.4.0:
+ resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ esquery@1.7.0:
+ resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==}
+ engines: {node: '>=0.10'}
+
+ esrecurse@4.3.0:
+ resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
+ engines: {node: '>=4.0'}
+
+ estraverse@5.3.0:
+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
+ engines: {node: '>=4.0'}
+
+ estree-walker@2.0.2:
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+
+ esutils@2.0.3:
+ resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
+ engines: {node: '>=0.10.0'}
+
+ etag@1.8.1:
+ resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
+ engines: {node: '>= 0.6'}
+
+ exec-buffer@3.2.0:
+ resolution: {integrity: sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA==}
+ engines: {node: '>=4'}
+
+ execa@0.7.0:
+ resolution: {integrity: sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==}
+ engines: {node: '>=4'}
+
+ execa@1.0.0:
+ resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==}
+ engines: {node: '>=6'}
+
+ execa@4.1.0:
+ resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==}
+ engines: {node: '>=10'}
+
+ execa@5.1.1:
+ resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
+ engines: {node: '>=10'}
+
+ executable@4.1.1:
+ resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==}
+ engines: {node: '>=4'}
+
+ ext-list@2.2.2:
+ resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==}
+ engines: {node: '>=0.10.0'}
+
+ ext-name@5.0.0:
+ resolution: {integrity: sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==}
+ engines: {node: '>=4'}
+
+ fast-deep-equal@3.1.3:
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+
+ fast-glob@3.3.3:
+ resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
+ engines: {node: '>=8.6.0'}
+
+ fast-json-stable-stringify@2.1.0:
+ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+
+ fast-levenshtein@2.0.6:
+ resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
+
+ fast-xml-parser@4.5.3:
+ resolution: {integrity: sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==}
+ hasBin: true
+
+ fastq@1.20.1:
+ resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==}
+
+ fd-slicer@1.1.0:
+ resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==}
+
+ fdir@6.5.0:
+ resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ picomatch: ^3 || ^4
+ peerDependenciesMeta:
+ picomatch:
+ optional: true
+
+ figures@1.7.0:
+ resolution: {integrity: sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==}
+ engines: {node: '>=0.10.0'}
+
+ file-entry-cache@8.0.0:
+ resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
+ engines: {node: '>=16.0.0'}
+
+ file-type@10.11.0:
+ resolution: {integrity: sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==}
+ engines: {node: '>=6'}
+
+ file-type@12.4.2:
+ resolution: {integrity: sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg==}
+ engines: {node: '>=8'}
+
+ file-type@3.9.0:
+ resolution: {integrity: sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==}
+ engines: {node: '>=0.10.0'}
+
+ file-type@4.4.0:
+ resolution: {integrity: sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ==}
+ engines: {node: '>=4'}
+
+ file-type@5.2.0:
+ resolution: {integrity: sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==}
+ engines: {node: '>=4'}
+
+ file-type@6.2.0:
+ resolution: {integrity: sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==}
+ engines: {node: '>=4'}
+
+ file-type@8.1.0:
+ resolution: {integrity: sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==}
+ engines: {node: '>=6'}
+
+ filename-reserved-regex@2.0.0:
+ resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==}
+ engines: {node: '>=4'}
+
+ filenamify@2.1.0:
+ resolution: {integrity: sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==}
+ engines: {node: '>=4'}
+
+ fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+ engines: {node: '>=8'}
+
+ find-root@1.1.0:
+ resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==}
+
+ find-up@1.1.2:
+ resolution: {integrity: sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==}
+ engines: {node: '>=0.10.0'}
+
+ find-up@5.0.0:
+ resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
+ engines: {node: '>=10'}
+
+ find-versions@3.2.0:
+ resolution: {integrity: sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==}
+ engines: {node: '>=6'}
+
+ flat-cache@4.0.1:
+ resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
+ engines: {node: '>=16'}
+
+ flatted@3.3.3:
+ resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
+
+ for-each@0.3.5:
+ resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==}
+ engines: {node: '>= 0.4'}
+
+ formidable@3.5.4:
+ resolution: {integrity: sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==}
+ engines: {node: '>=14.0.0'}
+
+ from2@2.3.0:
+ resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==}
+
+ fs-constants@1.0.0:
+ resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
+
+ fs-extra@10.1.0:
+ resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
+ engines: {node: '>=12'}
+
+ fs.realpath@1.0.0:
+ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+
+ fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
+ function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+
+ gensync@1.0.0-beta.2:
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
+
+ get-caller-file@2.0.5:
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
+
+ get-intrinsic@1.3.0:
+ resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
+ engines: {node: '>= 0.4'}
+
+ get-proto@1.0.1:
+ resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
+ engines: {node: '>= 0.4'}
+
+ get-proxy@2.1.0:
+ resolution: {integrity: sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==}
+ engines: {node: '>=4'}
+
+ get-stdin@4.0.1:
+ resolution: {integrity: sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==}
+ engines: {node: '>=0.10.0'}
+
+ get-stream@2.3.1:
+ resolution: {integrity: sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==}
+ engines: {node: '>=0.10.0'}
+
+ get-stream@3.0.0:
+ resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==}
+ engines: {node: '>=4'}
+
+ get-stream@4.1.0:
+ resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==}
+ engines: {node: '>=6'}
+
+ get-stream@5.2.0:
+ resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==}
+ engines: {node: '>=8'}
+
+ get-stream@6.0.1:
+ resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
+ engines: {node: '>=10'}
+
+ gifsicle@5.2.0:
+ resolution: {integrity: sha512-vOIS3j0XoTCxq9pkGj43gEix82RkI5FveNgaFZutjbaui/HH+4fR8Y56dwXDuxYo8hR4xOo6/j2h1WHoQW6XLw==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+
+ glob-parent@6.0.2:
+ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
+ engines: {node: '>=10.13.0'}
+
+ glob@7.2.3:
+ resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ deprecated: Glob versions prior to v9 are no longer supported
+
+ globals@14.0.0:
+ resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
+ engines: {node: '>=18'}
+
+ globby@10.0.2:
+ resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==}
+ engines: {node: '>=8'}
+
+ globrex@0.1.2:
+ resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
+
+ gopd@1.2.0:
+ resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
+ engines: {node: '>= 0.4'}
+
+ got@7.1.0:
+ resolution: {integrity: sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==}
+ engines: {node: '>=4'}
+
+ got@8.3.2:
+ resolution: {integrity: sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==}
+ engines: {node: '>=4'}
+
+ graceful-fs@4.2.11:
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+
+ has-ansi@2.0.0:
+ resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==}
+ engines: {node: '>=0.10.0'}
+
+ has-flag@4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+
+ has-property-descriptors@1.0.2:
+ resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
+
+ has-symbol-support-x@1.4.2:
+ resolution: {integrity: sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==}
+
+ has-symbols@1.1.0:
+ resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
+ engines: {node: '>= 0.4'}
+
+ has-to-string-tag-x@1.4.1:
+ resolution: {integrity: sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==}
+
+ has-tostringtag@1.0.2:
+ resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
+ engines: {node: '>= 0.4'}
+
+ hasown@2.0.2:
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ engines: {node: '>= 0.4'}
+
+ he@1.2.0:
+ resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
+ hasBin: true
+
+ hoist-non-react-statics@3.3.2:
+ resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
+
+ hosted-git-info@2.8.9:
+ resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
+
+ http-cache-semantics@3.8.1:
+ resolution: {integrity: sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==}
+
+ human-signals@1.1.1:
+ resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==}
+ engines: {node: '>=8.12.0'}
+
+ human-signals@2.1.0:
+ resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
+ engines: {node: '>=10.17.0'}
+
+ ieee754@1.2.1:
+ resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
+
+ ignore@5.3.2:
+ resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
+ engines: {node: '>= 4'}
+
+ ignore@7.0.5:
+ resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==}
+ engines: {node: '>= 4'}
+
+ imagemin-gifsicle@7.0.0:
+ resolution: {integrity: sha512-LaP38xhxAwS3W8PFh4y5iQ6feoTSF+dTAXFRUEYQWYst6Xd+9L/iPk34QGgK/VO/objmIlmq9TStGfVY2IcHIA==}
+ engines: {node: '>=10'}
+
+ imagemin-jpegtran@7.0.0:
+ resolution: {integrity: sha512-MJoyTCW8YjMJf56NorFE41SR/WkaGA3IYk4JgvMlRwguJEEd3PnP9UxA8Y2UWjquz8d+On3Ds/03ZfiiLS8xTQ==}
+ engines: {node: '>=10'}
+
+ imagemin-mozjpeg@9.0.0:
+ resolution: {integrity: sha512-TwOjTzYqCFRgROTWpVSt5UTT0JeCuzF1jswPLKALDd89+PmrJ2PdMMYeDLYZ1fs9cTovI9GJd68mRSnuVt691w==}
+ engines: {node: '>=10'}
+
+ imagemin-optipng@8.0.0:
+ resolution: {integrity: sha512-CUGfhfwqlPjAC0rm8Fy+R2DJDBGjzy2SkfyT09L8rasnF9jSoHFqJ1xxSZWK6HVPZBMhGPMxCTL70OgTHlLF5A==}
+ engines: {node: '>=10'}
+
+ imagemin-pngquant@9.0.2:
+ resolution: {integrity: sha512-cj//bKo8+Frd/DM8l6Pg9pws1pnDUjgb7ae++sUX1kUVdv2nrngPykhiUOgFeE0LGY/LmUbCf4egCHC4YUcZSg==}
+ engines: {node: '>=10'}
+
+ imagemin-svgo@9.0.0:
+ resolution: {integrity: sha512-uNgXpKHd99C0WODkrJ8OO/3zW3qjgS4pW7hcuII0RcHN3tnKxDjJWcitdVC/TZyfIqSricU8WfrHn26bdSW62g==}
+ engines: {node: '>=10'}
+
+ imagemin-webp@6.1.0:
+ resolution: {integrity: sha512-i8ZluZV1pfQX9aVzmZ/VZh9KBSdPwUlp5VruAa9c30GZnX/nMl5n7h+oUMnI7Mg7+SUpu9mYBsw2nsYGUEllWQ==}
+ engines: {node: '>=10'}
+
+ imagemin@7.0.1:
+ resolution: {integrity: sha512-33AmZ+xjZhg2JMCe+vDf6a9mzWukE7l+wAtesjE7KyteqqKjzxv7aVQeWnul1Ve26mWvEQqyPwl0OctNBfSR9w==}
+ engines: {node: '>=8'}
+
+ import-fresh@3.3.1:
+ resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
+ engines: {node: '>=6'}
+
+ import-lazy@3.1.0:
+ resolution: {integrity: sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==}
+ engines: {node: '>=6'}
+
+ imurmurhash@0.1.4:
+ resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
+ engines: {node: '>=0.8.19'}
+
+ indent-string@2.1.0:
+ resolution: {integrity: sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==}
+ engines: {node: '>=0.10.0'}
+
+ inflight@1.0.6:
+ resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+ deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
+
+ inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
+ ini@1.3.8:
+ resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
+
+ into-stream@3.1.0:
+ resolution: {integrity: sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==}
+ engines: {node: '>=4'}
+
+ is-arrayish@0.2.1:
+ resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
+
+ is-callable@1.2.7:
+ resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
+ engines: {node: '>= 0.4'}
+
+ is-core-module@2.16.1:
+ resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
+ engines: {node: '>= 0.4'}
+
+ is-cwebp-readable@3.0.0:
+ resolution: {integrity: sha512-bpELc7/Q1/U5MWHn4NdHI44R3jxk0h9ew9ljzabiRl70/UIjL/ZAqRMb52F5+eke/VC8yTiv4Ewryo1fPWidvA==}
+
+ is-docker@2.2.1:
+ resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
+ engines: {node: '>=8'}
+ hasBin: true
+
+ is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+
+ is-finite@1.1.0:
+ resolution: {integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==}
+ engines: {node: '>=0.10.0'}
+
+ is-fullwidth-code-point@3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+
+ is-gif@3.0.0:
+ resolution: {integrity: sha512-IqJ/jlbw5WJSNfwQ/lHEDXF8rxhRgF6ythk2oiEvhpG29F704eX9NO6TvPfMiq9DrbwgcEDnETYNcZDPewQoVw==}
+ engines: {node: '>=6'}
+
+ is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+
+ is-jpg@2.0.0:
+ resolution: {integrity: sha512-ODlO0ruzhkzD3sdynIainVP5eoOFNN85rxA1+cwwnPe4dKyX0r5+hxNO5XpCrxlHcmb9vkOit9mhRD2JVuimHg==}
+ engines: {node: '>=6'}
+
+ is-natural-number@4.0.1:
+ resolution: {integrity: sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==}
+
+ is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+
+ is-object@1.0.2:
+ resolution: {integrity: sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==}
+
+ is-plain-obj@1.1.0:
+ resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==}
+ engines: {node: '>=0.10.0'}
+
+ is-png@2.0.0:
+ resolution: {integrity: sha512-4KPGizaVGj2LK7xwJIz8o5B2ubu1D/vcQsgOGFEDlpcvgZHto4gBnyd0ig7Ws+67ixmwKoNmu0hYnpo6AaKb5g==}
+ engines: {node: '>=8'}
+
+ is-retry-allowed@1.2.0:
+ resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==}
+ engines: {node: '>=0.10.0'}
+
+ is-stream@1.1.0:
+ resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==}
+ engines: {node: '>=0.10.0'}
+
+ is-stream@2.0.1:
+ resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
+ engines: {node: '>=8'}
+
+ is-svg@4.4.0:
+ resolution: {integrity: sha512-v+AgVwiK5DsGtT9ng+m4mClp6zDAmwrW8nZi6Gg15qzvBnRWWdfWA1TGaXyCDnWq5g5asofIgMVl3PjKxvk1ug==}
+ engines: {node: '>=6'}
+
+ is-typed-array@1.1.15:
+ resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
+ engines: {node: '>= 0.4'}
+
+ is-utf8@0.2.1:
+ resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==}
+
+ is-wsl@2.2.0:
+ resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
+ engines: {node: '>=8'}
+
+ isarray@1.0.0:
+ resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
+
+ isarray@2.0.5:
+ resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
+
+ isexe@2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+
+ isurl@1.0.0:
+ resolution: {integrity: sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==}
+ engines: {node: '>= 4'}
+
+ javascript-natural-sort@0.7.1:
+ resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==}
+
+ jpegtran-bin@5.0.2:
+ resolution: {integrity: sha512-4FSmgIcr8d5+V6T1+dHbPZjaFH0ogVyP4UVsE+zri7S9YLO4qAT2our4IN3sW3STVgNTbqPermdIgt2XuAJ4EA==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ jpegtran-bin@6.0.1:
+ resolution: {integrity: sha512-WohhhHhqe22de7PU8hXs6Sr5d4BAvkrfA93NR5tGlHyPnFLgvEW/bH+q7fv65JgoiQDsd7SBwwQ/OGRBivU3Mw==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ hasBin: true
+
+ js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
+ js-yaml@4.1.1:
+ resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
+ hasBin: true
+
+ jsesc@3.1.0:
+ resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ json-buffer@3.0.0:
+ resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==}
+
+ json-buffer@3.0.1:
+ resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
+
+ json-parse-even-better-errors@2.3.1:
+ resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
+
+ json-schema-traverse@0.4.1:
+ resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
+
+ json-stable-stringify-without-jsonify@1.0.1:
+ resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
+
+ json5@2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ jsonfile@6.2.0:
+ resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==}
+
+ junk@3.1.0:
+ resolution: {integrity: sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==}
+ engines: {node: '>=8'}
+
+ jwt-decode@4.0.0:
+ resolution: {integrity: sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==}
+ engines: {node: '>=18'}
+
+ keyv@3.0.0:
+ resolution: {integrity: sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==}
+
+ keyv@4.5.4:
+ resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
+
+ kolorist@1.8.0:
+ resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==}
+
+ levn@0.4.1:
+ resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
+ engines: {node: '>= 0.8.0'}
+
+ lines-and-columns@1.2.4:
+ resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+
+ load-json-file@1.1.0:
+ resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==}
+ engines: {node: '>=0.10.0'}
+
+ locate-path@6.0.0:
+ resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
+ engines: {node: '>=10'}
+
+ lodash-es@4.17.22:
+ resolution: {integrity: sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q==}
+
+ lodash.merge@4.6.2:
+ resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+
+ logalot@2.1.0:
+ resolution: {integrity: sha512-Ah4CgdSRfeCJagxQhcVNMi9BfGYyEKLa6d7OA6xSbld/Hg3Cf2QiOa1mDpmG7Ve8LOH6DN3mdttzjQAvWTyVkw==}
+ engines: {node: '>=0.10.0'}
+
+ longest@1.0.1:
+ resolution: {integrity: sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg==}
+ engines: {node: '>=0.10.0'}
+
+ loose-envify@1.4.0:
+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
+ hasBin: true
+
+ loud-rejection@1.6.0:
+ resolution: {integrity: sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==}
+ engines: {node: '>=0.10.0'}
+
+ lowercase-keys@1.0.0:
+ resolution: {integrity: sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==}
+ engines: {node: '>=0.10.0'}
+
+ lowercase-keys@1.0.1:
+ resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==}
+ engines: {node: '>=0.10.0'}
+
+ lpad-align@1.1.2:
+ resolution: {integrity: sha512-MMIcFmmR9zlGZtBcFOows6c2COMekHCIFJz3ew/rRpKZ1wR4mXDPzvcVqLarux8M33X4TPSq2Jdw8WJj0q0KbQ==}
+ engines: {node: '>=0.10.0'}
+ hasBin: true
+
+ lru-cache@4.1.5:
+ resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==}
+
+ lru-cache@5.1.1:
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+
+ magic-string@0.30.21:
+ resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
+
+ make-dir@1.3.0:
+ resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==}
+ engines: {node: '>=4'}
+
+ make-dir@3.1.0:
+ resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
+ engines: {node: '>=8'}
+
+ map-obj@1.0.1:
+ resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==}
+ engines: {node: '>=0.10.0'}
+
+ math-intrinsics@1.1.0:
+ resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
+ engines: {node: '>= 0.4'}
+
+ mdn-data@2.0.14:
+ resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==}
+
+ memoize-one@5.2.1:
+ resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==}
+
+ meow@3.7.0:
+ resolution: {integrity: sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==}
+ engines: {node: '>=0.10.0'}
+
+ merge-stream@2.0.0:
+ resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
+
+ merge2@1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+
+ micromatch@4.0.8:
+ resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
+ engines: {node: '>=8.6'}
+
+ mime-db@1.54.0:
+ resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==}
+ engines: {node: '>= 0.6'}
+
+ mime-types@3.0.2:
+ resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==}
+ engines: {node: '>=18'}
+
+ mimic-fn@2.1.0:
+ resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
+ engines: {node: '>=6'}
+
+ mimic-response@1.0.1:
+ resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==}
+ engines: {node: '>=4'}
+
+ minimatch@10.1.1:
+ resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==}
+ engines: {node: 20 || >=22}
+
+ minimatch@3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+
+ minimatch@9.0.5:
+ resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ minimist@1.2.8:
+ resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
+
+ mozjpeg@7.1.1:
+ resolution: {integrity: sha512-iIDxWvzhWvLC9mcRJ1uSkiKaj4drF58oCqK2bITm5c2Jt6cJ8qQjSSru2PCaysG+hLIinryj8mgz5ZJzOYTv1A==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+ nanoid@3.3.11:
+ resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
+ natural-compare@1.4.0:
+ resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+
+ nice-try@1.0.5:
+ resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==}
+
+ node-html-parser@6.1.13:
+ resolution: {integrity: sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==}
+
+ node-releases@2.0.27:
+ resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==}
+
+ normalize-package-data@2.5.0:
+ resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
+
+ normalize-url@2.0.1:
+ resolution: {integrity: sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==}
+ engines: {node: '>=4'}
+
+ npm-conf@1.1.3:
+ resolution: {integrity: sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==}
+ engines: {node: '>=4'}
+
+ npm-run-path@2.0.2:
+ resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==}
+ engines: {node: '>=4'}
+
+ npm-run-path@4.0.1:
+ resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
+ engines: {node: '>=8'}
+
+ nth-check@2.1.1:
+ resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
+
+ object-assign@4.1.1:
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
+
+ once@1.4.0:
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+
+ onetime@5.1.2:
+ resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
+ engines: {node: '>=6'}
+
+ open@8.4.2:
+ resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==}
+ engines: {node: '>=12'}
+
+ optionator@0.9.4:
+ resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
+ engines: {node: '>= 0.8.0'}
+
+ optipng-bin@7.0.1:
+ resolution: {integrity: sha512-W99mpdW7Nt2PpFiaO+74pkht7KEqkXkeRomdWXfEz3SALZ6hns81y/pm1dsGZ6ItUIfchiNIP6ORDr1zETU1jA==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ os-filter-obj@2.0.0:
+ resolution: {integrity: sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==}
+ engines: {node: '>=4'}
+
+ ow@0.17.0:
+ resolution: {integrity: sha512-i3keDzDQP5lWIe4oODyDFey1qVrq2hXKTuTH2VpqwpYtzPiKZt2ziRI4NBQmgW40AnV5Euz17OyWweCb+bNEQA==}
+ engines: {node: '>=10'}
+
+ p-cancelable@0.3.0:
+ resolution: {integrity: sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==}
+ engines: {node: '>=4'}
+
+ p-cancelable@0.4.1:
+ resolution: {integrity: sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==}
+ engines: {node: '>=4'}
+
+ p-event@1.3.0:
+ resolution: {integrity: sha512-hV1zbA7gwqPVFcapfeATaNjQ3J0NuzorHPyG8GPL9g/Y/TplWVBVoCKCXL6Ej2zscrCEv195QNWJXuBH6XZuzA==}
+ engines: {node: '>=4'}
+
+ p-event@2.3.1:
+ resolution: {integrity: sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==}
+ engines: {node: '>=6'}
+
+ p-finally@1.0.0:
+ resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==}
+ engines: {node: '>=4'}
+
+ p-is-promise@1.1.0:
+ resolution: {integrity: sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==}
+ engines: {node: '>=4'}
+
+ p-limit@3.1.0:
+ resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
+ engines: {node: '>=10'}
+
+ p-locate@5.0.0:
+ resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
+ engines: {node: '>=10'}
+
+ p-map-series@1.0.0:
+ resolution: {integrity: sha512-4k9LlvY6Bo/1FcIdV33wqZQES0Py+iKISU9Uc8p8AjWoZPnFKMpVIVD3s0EYn4jzLh1I+WeUZkJ0Yoa4Qfw3Kg==}
+ engines: {node: '>=4'}
+
+ p-pipe@3.1.0:
+ resolution: {integrity: sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==}
+ engines: {node: '>=8'}
+
+ p-reduce@1.0.0:
+ resolution: {integrity: sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ==}
+ engines: {node: '>=4'}
+
+ p-timeout@1.2.1:
+ resolution: {integrity: sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA==}
+ engines: {node: '>=4'}
+
+ p-timeout@2.0.1:
+ resolution: {integrity: sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==}
+ engines: {node: '>=4'}
+
+ parent-module@1.0.1:
+ resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
+ engines: {node: '>=6'}
+
+ parse-imports-exports@0.2.4:
+ resolution: {integrity: sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==}
+
+ parse-json@2.2.0:
+ resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==}
+ engines: {node: '>=0.10.0'}
+
+ parse-json@5.2.0:
+ resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
+ engines: {node: '>=8'}
+
+ parse-statements@1.0.11:
+ resolution: {integrity: sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==}
+
+ path-exists@2.1.0:
+ resolution: {integrity: sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==}
+ engines: {node: '>=0.10.0'}
+
+ path-exists@4.0.0:
+ resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
+ engines: {node: '>=8'}
+
+ path-is-absolute@1.0.1:
+ resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
+ engines: {node: '>=0.10.0'}
+
+ path-key@2.0.1:
+ resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==}
+ engines: {node: '>=4'}
+
+ path-key@3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
+
+ path-parse@1.0.7:
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+
+ path-type@1.1.0:
+ resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==}
+ engines: {node: '>=0.10.0'}
+
+ path-type@4.0.0:
+ resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
+ engines: {node: '>=8'}
+
+ pathe@0.2.0:
+ resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==}
+
+ pend@1.2.0:
+ resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==}
+
+ picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+
+ picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+
+ picomatch@4.0.3:
+ resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
+ engines: {node: '>=12'}
+
+ pify@2.3.0:
+ resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
+ engines: {node: '>=0.10.0'}
+
+ pify@3.0.0:
+ resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==}
+ engines: {node: '>=4'}
+
+ pify@4.0.1:
+ resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
+ engines: {node: '>=6'}
+
+ pinkie-promise@2.0.1:
+ resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==}
+ engines: {node: '>=0.10.0'}
+
+ pinkie@2.0.4:
+ resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==}
+ engines: {node: '>=0.10.0'}
+
+ pngquant-bin@6.0.1:
+ resolution: {integrity: sha512-Q3PUyolfktf+hYio6wsg3SanQzEU/v8aICg/WpzxXcuCMRb7H2Q81okfpcEztbMvw25ILjd3a87doj2N9kvbpQ==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ possible-typed-array-names@1.1.0:
+ resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
+ engines: {node: '>= 0.4'}
+
+ postcss@8.5.6:
+ resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
+ engines: {node: ^10 || ^12 || >=14}
+
+ preact@10.28.2:
+ resolution: {integrity: sha512-lbteaWGzGHdlIuiJ0l2Jq454m6kcpI1zNje6d8MlGAFlYvP2GO4ibnat7P74Esfz4sPTdM6UxtTwh/d3pwM9JA==}
+
+ prelude-ls@1.2.1:
+ resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
+ engines: {node: '>= 0.8.0'}
+
+ prepend-http@1.0.4:
+ resolution: {integrity: sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==}
+ engines: {node: '>=0.10.0'}
+
+ prepend-http@2.0.0:
+ resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==}
+ engines: {node: '>=4'}
+
+ prettier@3.7.4:
+ resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==}
+ engines: {node: '>=14'}
+ hasBin: true
+
+ process-nextick-args@2.0.1:
+ resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+
+ prop-types@15.8.1:
+ resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
+
+ proto-list@1.2.4:
+ resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
+
+ pseudomap@1.0.2:
+ resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==}
+
+ pump@3.0.3:
+ resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==}
+
+ punycode@2.3.1:
+ resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
+ engines: {node: '>=6'}
+
+ query-string@5.1.1:
+ resolution: {integrity: sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==}
+ engines: {node: '>=0.10.0'}
+
+ queue-microtask@1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+
+ rate-limiter-flexible@5.0.5:
+ resolution: {integrity: sha512-+/dSQfo+3FYwYygUs/V2BBdwGa9nFtakDwKt4l0bnvNB53TNT++QSFewwHX9qXrZJuMe9j+TUaU21lm5ARgqdQ==}
+
+ react-dom@19.2.3:
+ resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==}
+ peerDependencies:
+ react: ^19.2.3
+
+ react-icons@5.5.0:
+ resolution: {integrity: sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==}
+ peerDependencies:
+ react: '*'
+
+ react-is@16.13.1:
+ resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
+
+ react-is@19.2.3:
+ resolution: {integrity: sha512-qJNJfu81ByyabuG7hPFEbXqNcWSU3+eVus+KJs+0ncpGfMyYdvSmxiJxbWR65lYi1I+/0HBcliO029gc4F+PnA==}
+
+ react-router@7.12.0:
+ resolution: {integrity: sha512-kTPDYPFzDVGIIGNLS5VJykK0HfHLY5MF3b+xj0/tTyNYL1gF1qs7u67Z9jEhQk2sQ98SUaHxlG31g1JtF7IfVw==}
+ engines: {node: '>=20.0.0'}
+ peerDependencies:
+ react: '>=18'
+ react-dom: '>=18'
+ peerDependenciesMeta:
+ react-dom:
+ optional: true
+
+ react-toastify@11.0.5:
+ resolution: {integrity: sha512-EpqHBGvnSTtHYhCPLxML05NLY2ZX0JURbAdNYa6BUkk+amz4wbKBQvoKQAB0ardvSarUBuY4Q4s1sluAzZwkmA==}
+ peerDependencies:
+ react: ^18 || ^19
+ react-dom: ^18 || ^19
+
+ react-transition-group@4.4.5:
+ resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==}
+ peerDependencies:
+ react: '>=16.6.0'
+ react-dom: '>=16.6.0'
+
+ react-virtualized-auto-sizer@1.0.26:
+ resolution: {integrity: sha512-CblNyiNVw2o+hsa5/49NH2ogGxZ+t+3aweRvNSq7TVjDIlwk7ir4lencEg5HxHeSzwNarSkNkiu0qJSOXtxm5A==}
+ peerDependencies:
+ react: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0 || ^19.0.0
+
+ react-window@1.8.11:
+ resolution: {integrity: sha512-+SRbUVT2scadgFSWx+R1P754xHPEqvcfSfVX10QYg6POOz+WNgkN48pS+BtZNIMGiL1HYrSEiCkwsMS15QogEQ==}
+ engines: {node: '>8.0.0'}
+ peerDependencies:
+ react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
+ react@19.2.3:
+ resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==}
+ engines: {node: '>=0.10.0'}
+
+ read-pkg-up@1.0.1:
+ resolution: {integrity: sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==}
+ engines: {node: '>=0.10.0'}
+
+ read-pkg@1.1.0:
+ resolution: {integrity: sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==}
+ engines: {node: '>=0.10.0'}
+
+ readable-stream@2.3.8:
+ resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
+
+ redent@1.0.0:
+ resolution: {integrity: sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==}
+ engines: {node: '>=0.10.0'}
+
+ repeating@2.0.1:
+ resolution: {integrity: sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==}
+ engines: {node: '>=0.10.0'}
+
+ replace-ext@1.0.1:
+ resolution: {integrity: sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==}
+ engines: {node: '>= 0.10'}
+
+ require-directory@2.1.1:
+ resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
+ engines: {node: '>=0.10.0'}
+
+ resolve-from@4.0.0:
+ resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
+ engines: {node: '>=4'}
+
+ resolve@1.22.11:
+ resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==}
+ engines: {node: '>= 0.4'}
+ hasBin: true
+
+ responselike@1.0.2:
+ resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==}
+
+ reusify@1.1.0:
+ resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+
+ rimraf@2.7.1:
+ resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==}
+ deprecated: Rimraf versions prior to v4 are no longer supported
+ hasBin: true
+
+ rollup-plugin-visualizer@6.0.5:
+ resolution: {integrity: sha512-9+HlNgKCVbJDs8tVtjQ43US12eqaiHyyiLMdBwQ7vSZPiHMysGNo2E88TAp1si5wx8NAoYriI2A5kuKfIakmJg==}
+ engines: {node: '>=18'}
+ hasBin: true
+ peerDependencies:
+ rolldown: 1.x || ^1.0.0-beta
+ rollup: 2.x || 3.x || 4.x
+ peerDependenciesMeta:
+ rolldown:
+ optional: true
+ rollup:
+ optional: true
+
+ rollup@4.55.1:
+ resolution: {integrity: sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A==}
+ engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ hasBin: true
+
+ run-parallel@1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+
+ rxjs@7.8.2:
+ resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==}
+
+ safe-buffer@5.1.2:
+ resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+
+ safe-buffer@5.2.1:
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+
+ scheduler@0.27.0:
+ resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==}
+
+ seek-bzip@1.0.6:
+ resolution: {integrity: sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==}
+ hasBin: true
+
+ semver-regex@2.0.0:
+ resolution: {integrity: sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==}
+ engines: {node: '>=6'}
+
+ semver-truncate@1.1.2:
+ resolution: {integrity: sha512-V1fGg9i4CL3qesB6U0L6XAm4xOJiHmt4QAacazumuasc03BvtFGIMCduv01JWQ69Nv+JST9TqhSCiJoxoY031w==}
+ engines: {node: '>=0.10.0'}
+
+ semver@5.7.2:
+ resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
+ hasBin: true
+
+ semver@6.3.1:
+ resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
+ hasBin: true
+
+ semver@7.7.3:
+ resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ set-cookie-parser@2.7.2:
+ resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==}
+
+ set-function-length@1.2.2:
+ resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
+ engines: {node: '>= 0.4'}
+
+ shebang-command@1.2.0:
+ resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==}
+ engines: {node: '>=0.10.0'}
+
+ shebang-command@2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+
+ shebang-regex@1.0.0:
+ resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==}
+ engines: {node: '>=0.10.0'}
+
+ shebang-regex@3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+
+ shell-quote@1.8.3:
+ resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==}
+ engines: {node: '>= 0.4'}
+
+ signal-exit@3.0.7:
+ resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+
+ simple-code-frame@1.3.0:
+ resolution: {integrity: sha512-MB4pQmETUBlNs62BBeRjIFGeuy/x6gGKh7+eRUemn1rCFhqo7K+4slPqsyizCbcbYLnaYqaoZ2FWsZ/jN06D8w==}
+
+ slash@3.0.0:
+ resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
+ engines: {node: '>=8'}
+
+ sort-keys-length@1.0.1:
+ resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==}
+ engines: {node: '>=0.10.0'}
+
+ sort-keys@1.1.2:
+ resolution: {integrity: sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==}
+ engines: {node: '>=0.10.0'}
+
+ sort-keys@2.0.0:
+ resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==}
+ engines: {node: '>=4'}
+
+ source-map-js@1.2.1:
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+ engines: {node: '>=0.10.0'}
+
+ source-map-support@0.5.21:
+ resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
+
+ source-map@0.5.7:
+ resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==}
+ engines: {node: '>=0.10.0'}
+
+ source-map@0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+
+ source-map@0.7.6:
+ resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==}
+ engines: {node: '>= 12'}
+
+ spdx-correct@3.2.0:
+ resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
+
+ spdx-exceptions@2.5.0:
+ resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==}
+
+ spdx-expression-parse@3.0.1:
+ resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
+
+ spdx-license-ids@3.0.22:
+ resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==}
+
+ squeak@1.3.0:
+ resolution: {integrity: sha512-YQL1ulInM+ev8nXX7vfXsCsDh6IqXlrremc1hzi77776BtpWgYJUMto3UM05GSAaGzJgWekszjoKDrVNB5XG+A==}
+ engines: {node: '>=0.10.0'}
+
+ stable@0.1.8:
+ resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==}
+ deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility'
+
+ stack-trace@1.0.0-pre2:
+ resolution: {integrity: sha512-2ztBJRek8IVofG9DBJqdy2N5kulaacX30Nz7xmkYF6ale9WBVmIy6mFBchvGX7Vx/MyjBhx+Rcxqrj+dbOnQ6A==}
+ engines: {node: '>=16'}
+
+ strict-uri-encode@1.1.0:
+ resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==}
+ engines: {node: '>=0.10.0'}
+
+ string-width@4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+
+ string_decoder@1.1.1:
+ resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
+
+ strip-ansi@3.0.1:
+ resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==}
+ engines: {node: '>=0.10.0'}
+
+ strip-ansi@6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+
+ strip-bom@2.0.0:
+ resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==}
+ engines: {node: '>=0.10.0'}
+
+ strip-dirs@2.1.0:
+ resolution: {integrity: sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==}
+
+ strip-eof@1.0.0:
+ resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==}
+ engines: {node: '>=0.10.0'}
+
+ strip-final-newline@2.0.0:
+ resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
+ engines: {node: '>=6'}
+
+ strip-indent@1.0.1:
+ resolution: {integrity: sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==}
+ engines: {node: '>=0.10.0'}
+ hasBin: true
+
+ strip-json-comments@3.1.1:
+ resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
+ engines: {node: '>=8'}
+
+ strip-outer@1.0.1:
+ resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==}
+ engines: {node: '>=0.10.0'}
+
+ strnum@1.1.2:
+ resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==}
+
+ stylis@4.2.0:
+ resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==}
+
+ supports-color@2.0.0:
+ resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==}
+ engines: {node: '>=0.8.0'}
+
+ supports-color@7.2.0:
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
+
+ supports-color@8.1.1:
+ resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
+ engines: {node: '>=10'}
+
+ supports-preserve-symlinks-flag@1.0.0:
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
+
+ svgo@2.8.0:
+ resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==}
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+
+ tar-stream@1.6.2:
+ resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==}
+ engines: {node: '>= 0.8.0'}
+
+ temp-dir@1.0.0:
+ resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==}
+ engines: {node: '>=4'}
+
+ tempfile@2.0.0:
+ resolution: {integrity: sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA==}
+ engines: {node: '>=4'}
+
+ terser@5.44.1:
+ resolution: {integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ through@2.3.8:
+ resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
+
+ timed-out@4.0.1:
+ resolution: {integrity: sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==}
+ engines: {node: '>=0.10.0'}
+
+ tinyglobby@0.2.15:
+ resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
+ engines: {node: '>=12.0.0'}
+
+ to-buffer@1.2.2:
+ resolution: {integrity: sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==}
+ engines: {node: '>= 0.4'}
+
+ to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+
+ tree-kill@1.2.2:
+ resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
+ hasBin: true
+
+ trim-newlines@1.0.0:
+ resolution: {integrity: sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==}
+ engines: {node: '>=0.10.0'}
+
+ trim-repeated@1.0.0:
+ resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==}
+ engines: {node: '>=0.10.0'}
+
+ ts-api-utils@2.4.0:
+ resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==}
+ engines: {node: '>=18.12'}
+ peerDependencies:
+ typescript: '>=4.8.4'
+
+ tsconfck@3.1.6:
+ resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==}
+ engines: {node: ^18 || >=20}
+ hasBin: true
+ peerDependencies:
+ typescript: ^5.0.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ tslib@2.8.1:
+ resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
+
+ tunnel-agent@0.6.0:
+ resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
+
+ type-check@0.4.0:
+ resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
+ engines: {node: '>= 0.8.0'}
+
+ type-fest@0.11.0:
+ resolution: {integrity: sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==}
+ engines: {node: '>=8'}
+
+ typed-array-buffer@1.0.3:
+ resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
+ engines: {node: '>= 0.4'}
+
+ typesafe-i18n@5.26.2:
+ resolution: {integrity: sha512-2QAriFmiY5JwUAJtG7yufoE/XZ1aFBY++wj7YFS2yo89a3jLBfKoWSdq5JfQYk1V2BS7V2c/u+KEcaCQoE65hw==}
+ hasBin: true
+ peerDependencies:
+ typescript: '>=3.5.1'
+
+ typescript-eslint@8.52.0:
+ resolution: {integrity: sha512-atlQQJ2YkO4pfTVQmQ+wvYQwexPDOIgo+RaVcD7gHgzy/IQA+XTyuxNM9M9TVXvttkF7koBHmcwisKdOAf2EcA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
+ typescript@5.9.3:
+ resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
+ unbzip2-stream@1.4.3:
+ resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==}
+
+ undici-types@7.16.0:
+ resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
+
+ universalify@2.0.1:
+ resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
+ engines: {node: '>= 10.0.0'}
+
+ update-browserslist-db@1.2.3:
+ resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+
+ uri-js@4.4.1:
+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+
+ url-parse-lax@1.0.0:
+ resolution: {integrity: sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==}
+ engines: {node: '>=0.10.0'}
+
+ url-parse-lax@3.0.0:
+ resolution: {integrity: sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==}
+ engines: {node: '>=4'}
+
+ url-to-options@1.0.1:
+ resolution: {integrity: sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==}
+ engines: {node: '>= 4'}
+
+ util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+
+ uuid@3.4.0:
+ resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==}
+ deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
+ hasBin: true
+
+ validate-npm-package-license@3.0.4:
+ resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
+
+ vite-plugin-imagemin@0.6.1:
+ resolution: {integrity: sha512-cP7LDn8euPrji7WYtDoNQpJEB9nkMxJHm/A+QZnvMrrCSuyo/clpMy/T1v7suDXPBavsDiDdFdVQB5p7VGD2cg==}
+ peerDependencies:
+ vite: '>=2.0.0'
+
+ vite-prerender-plugin@0.5.12:
+ resolution: {integrity: sha512-EiwhbMn+flg14EysbLTmZSzq8NGTxhytgK3bf4aGRF1evWLGwZiHiUJ1KZDvbxgKbMf2pG6fJWGEa3UZXOnR1g==}
+ peerDependencies:
+ vite: 5.x || 6.x || 7.x
+
+ vite-tsconfig-paths@6.0.4:
+ resolution: {integrity: sha512-iIsEJ+ek5KqRTK17pmxtgIxXtqr3qDdE6OxrP9mVeGhVDNXRJTKN/l9oMbujTQNzMLe6XZ8qmpztfbkPu2TiFQ==}
+ peerDependencies:
+ vite: '*'
+ peerDependenciesMeta:
+ vite:
+ optional: true
+
+ vite@7.3.1:
+ resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': ^20.19.0 || >=22.12.0
+ jiti: '>=1.21.0'
+ less: ^4.0.0
+ lightningcss: ^1.21.0
+ sass: ^1.70.0
+ sass-embedded: ^1.70.0
+ stylus: '>=0.54.8'
+ sugarss: ^5.0.0
+ terser: ^5.16.0
+ tsx: ^4.8.1
+ yaml: ^2.4.2
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ jiti:
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ tsx:
+ optional: true
+ yaml:
+ optional: true
+
+ which-typed-array@1.1.19:
+ resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==}
+ engines: {node: '>= 0.4'}
+
+ which@1.3.1:
+ resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
+ hasBin: true
+
+ which@2.0.2:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
+
+ word-wrap@1.2.5:
+ resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
+ engines: {node: '>=0.10.0'}
+
+ wrap-ansi@7.0.0:
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+ engines: {node: '>=10'}
+
+ wrappy@1.0.2:
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+
+ xtend@4.0.2:
+ resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
+ engines: {node: '>=0.4'}
+
+ y18n@5.0.8:
+ resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
+ engines: {node: '>=10'}
+
+ yallist@2.1.2:
+ resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==}
+
+ yallist@3.1.1:
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+
+ yaml@1.10.2:
+ resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
+ engines: {node: '>= 6'}
+
+ yargs-parser@21.1.1:
+ resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
+ engines: {node: '>=12'}
+
+ yargs@17.7.2:
+ resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
+ engines: {node: '>=12'}
+
+ yauzl@2.10.0:
+ resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==}
+
+ yocto-queue@0.1.0:
+ resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
+ engines: {node: '>=10'}
+
+snapshots:
+
+ '@alova/adapter-xhr@2.3.1(alova@3.4.1)':
+ dependencies:
+ '@alova/shared': 1.3.2
+ alova: 3.4.1
+
+ '@alova/shared@1.3.2': {}
+
+ '@babel/code-frame@7.27.1':
+ dependencies:
+ '@babel/helper-validator-identifier': 7.28.5
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+
+ '@babel/compat-data@7.28.5': {}
+
+ '@babel/core@7.28.5':
+ dependencies:
+ '@babel/code-frame': 7.27.1
+ '@babel/generator': 7.28.5
+ '@babel/helper-compilation-targets': 7.27.2
+ '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5)
+ '@babel/helpers': 7.28.4
+ '@babel/parser': 7.28.5
+ '@babel/template': 7.27.2
+ '@babel/traverse': 7.28.5
+ '@babel/types': 7.28.5
+ '@jridgewell/remapping': 2.3.5
+ convert-source-map: 2.0.0
+ debug: 4.4.3
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/generator@7.28.5':
+ dependencies:
+ '@babel/parser': 7.28.5
+ '@babel/types': 7.28.5
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+ jsesc: 3.1.0
+
+ '@babel/helper-annotate-as-pure@7.27.3':
+ dependencies:
+ '@babel/types': 7.28.5
+
+ '@babel/helper-compilation-targets@7.27.2':
+ dependencies:
+ '@babel/compat-data': 7.28.5
+ '@babel/helper-validator-option': 7.27.1
+ browserslist: 4.28.1
+ lru-cache: 5.1.1
+ semver: 6.3.1
+
+ '@babel/helper-globals@7.28.0': {}
+
+ '@babel/helper-module-imports@7.27.1':
+ dependencies:
+ '@babel/traverse': 7.28.5
+ '@babel/types': 7.28.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/helper-module-imports': 7.27.1
+ '@babel/helper-validator-identifier': 7.28.5
+ '@babel/traverse': 7.28.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-plugin-utils@7.27.1': {}
+
+ '@babel/helper-string-parser@7.27.1': {}
+
+ '@babel/helper-validator-identifier@7.28.5': {}
+
+ '@babel/helper-validator-option@7.27.1': {}
+
+ '@babel/helpers@7.28.4':
+ dependencies:
+ '@babel/template': 7.27.2
+ '@babel/types': 7.28.5
+
+ '@babel/parser@7.28.5':
+ dependencies:
+ '@babel/types': 7.28.5
+
+ '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/helper-plugin-utils': 7.27.1
+
+ '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.5)':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.5)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.5)':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/helper-annotate-as-pure': 7.27.3
+ '@babel/helper-module-imports': 7.27.1
+ '@babel/helper-plugin-utils': 7.27.1
+ '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5)
+ '@babel/types': 7.28.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/runtime@7.28.4': {}
+
+ '@babel/template@7.27.2':
+ dependencies:
+ '@babel/code-frame': 7.27.1
+ '@babel/parser': 7.28.5
+ '@babel/types': 7.28.5
+
+ '@babel/traverse@7.28.5':
+ dependencies:
+ '@babel/code-frame': 7.27.1
+ '@babel/generator': 7.28.5
+ '@babel/helper-globals': 7.28.0
+ '@babel/parser': 7.28.5
+ '@babel/template': 7.27.2
+ '@babel/types': 7.28.5
+ debug: 4.4.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/types@7.28.5':
+ dependencies:
+ '@babel/helper-string-parser': 7.27.1
+ '@babel/helper-validator-identifier': 7.28.5
+
+ '@emotion/babel-plugin@11.13.5':
+ dependencies:
+ '@babel/helper-module-imports': 7.27.1
+ '@babel/runtime': 7.28.4
+ '@emotion/hash': 0.9.2
+ '@emotion/memoize': 0.9.0
+ '@emotion/serialize': 1.3.3
+ babel-plugin-macros: 3.1.0
+ convert-source-map: 1.9.0
+ escape-string-regexp: 4.0.0
+ find-root: 1.1.0
+ source-map: 0.5.7
+ stylis: 4.2.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@emotion/cache@11.14.0':
+ dependencies:
+ '@emotion/memoize': 0.9.0
+ '@emotion/sheet': 1.4.0
+ '@emotion/utils': 1.4.2
+ '@emotion/weak-memoize': 0.4.0
+ stylis: 4.2.0
+
+ '@emotion/hash@0.9.2': {}
+
+ '@emotion/is-prop-valid@1.4.0':
+ dependencies:
+ '@emotion/memoize': 0.9.0
+
+ '@emotion/memoize@0.9.0': {}
+
+ '@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3)':
+ dependencies:
+ '@babel/runtime': 7.28.4
+ '@emotion/babel-plugin': 11.13.5
+ '@emotion/cache': 11.14.0
+ '@emotion/serialize': 1.3.3
+ '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.3)
+ '@emotion/utils': 1.4.2
+ '@emotion/weak-memoize': 0.4.0
+ hoist-non-react-statics: 3.3.2
+ react: 19.2.3
+ optionalDependencies:
+ '@types/react': 19.2.8
+ transitivePeerDependencies:
+ - supports-color
+
+ '@emotion/serialize@1.3.3':
+ dependencies:
+ '@emotion/hash': 0.9.2
+ '@emotion/memoize': 0.9.0
+ '@emotion/unitless': 0.10.0
+ '@emotion/utils': 1.4.2
+ csstype: 3.2.3
+
+ '@emotion/sheet@1.4.0': {}
+
+ '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3)':
+ dependencies:
+ '@babel/runtime': 7.28.4
+ '@emotion/babel-plugin': 11.13.5
+ '@emotion/is-prop-valid': 1.4.0
+ '@emotion/react': 11.14.0(@types/react@19.2.8)(react@19.2.3)
+ '@emotion/serialize': 1.3.3
+ '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.3)
+ '@emotion/utils': 1.4.2
+ react: 19.2.3
+ optionalDependencies:
+ '@types/react': 19.2.8
+ transitivePeerDependencies:
+ - supports-color
+
+ '@emotion/unitless@0.10.0': {}
+
+ '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.2.3)':
+ dependencies:
+ react: 19.2.3
+
+ '@emotion/utils@1.4.2': {}
+
+ '@emotion/weak-memoize@0.4.0': {}
+
+ '@esbuild/aix-ppc64@0.27.2':
+ optional: true
+
+ '@esbuild/android-arm64@0.27.2':
+ optional: true
+
+ '@esbuild/android-arm@0.27.2':
+ optional: true
+
+ '@esbuild/android-x64@0.27.2':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.27.2':
+ optional: true
+
+ '@esbuild/darwin-x64@0.27.2':
+ optional: true
+
+ '@esbuild/freebsd-arm64@0.27.2':
+ optional: true
+
+ '@esbuild/freebsd-x64@0.27.2':
+ optional: true
+
+ '@esbuild/linux-arm64@0.27.2':
+ optional: true
+
+ '@esbuild/linux-arm@0.27.2':
+ optional: true
+
+ '@esbuild/linux-ia32@0.27.2':
+ optional: true
+
+ '@esbuild/linux-loong64@0.14.54':
+ optional: true
+
+ '@esbuild/linux-loong64@0.27.2':
+ optional: true
+
+ '@esbuild/linux-mips64el@0.27.2':
+ optional: true
+
+ '@esbuild/linux-ppc64@0.27.2':
+ optional: true
+
+ '@esbuild/linux-riscv64@0.27.2':
+ optional: true
+
+ '@esbuild/linux-s390x@0.27.2':
+ optional: true
+
+ '@esbuild/linux-x64@0.27.2':
+ optional: true
+
+ '@esbuild/netbsd-arm64@0.27.2':
+ optional: true
+
+ '@esbuild/netbsd-x64@0.27.2':
+ optional: true
+
+ '@esbuild/openbsd-arm64@0.27.2':
+ optional: true
+
+ '@esbuild/openbsd-x64@0.27.2':
+ optional: true
+
+ '@esbuild/openharmony-arm64@0.27.2':
+ optional: true
+
+ '@esbuild/sunos-x64@0.27.2':
+ optional: true
+
+ '@esbuild/win32-arm64@0.27.2':
+ optional: true
+
+ '@esbuild/win32-ia32@0.27.2':
+ optional: true
+
+ '@esbuild/win32-x64@0.27.2':
+ optional: true
+
+ '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2)':
+ dependencies:
+ eslint: 9.39.2
+ eslint-visitor-keys: 3.4.3
+
+ '@eslint-community/regexpp@4.12.2': {}
+
+ '@eslint/config-array@0.21.1':
+ dependencies:
+ '@eslint/object-schema': 2.1.7
+ debug: 4.4.3
+ minimatch: 3.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@eslint/config-helpers@0.4.2':
+ dependencies:
+ '@eslint/core': 0.17.0
+
+ '@eslint/core@0.17.0':
+ dependencies:
+ '@types/json-schema': 7.0.15
+
+ '@eslint/eslintrc@3.3.3':
+ dependencies:
+ ajv: 6.12.6
+ debug: 4.4.3
+ espree: 10.4.0
+ globals: 14.0.0
+ ignore: 5.3.2
+ import-fresh: 3.3.1
+ js-yaml: 4.1.1
+ minimatch: 3.1.2
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@eslint/js@9.39.2': {}
+
+ '@eslint/object-schema@2.1.7': {}
+
+ '@eslint/plugin-kit@0.4.1':
+ dependencies:
+ '@eslint/core': 0.17.0
+ levn: 0.4.1
+
+ '@humanfs/core@0.19.1': {}
+
+ '@humanfs/node@0.16.7':
+ dependencies:
+ '@humanfs/core': 0.19.1
+ '@humanwhocodes/retry': 0.4.3
+
+ '@humanwhocodes/module-importer@1.0.1': {}
+
+ '@humanwhocodes/retry@0.4.3': {}
+
+ '@isaacs/balanced-match@4.0.1': {}
+
+ '@isaacs/brace-expansion@5.0.0':
+ dependencies:
+ '@isaacs/balanced-match': 4.0.1
+
+ '@jridgewell/gen-mapping@0.3.13':
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+ '@jridgewell/trace-mapping': 0.3.31
+
+ '@jridgewell/remapping@2.3.5':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+
+ '@jridgewell/resolve-uri@3.1.2': {}
+
+ '@jridgewell/source-map@0.3.11':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+
+ '@jridgewell/sourcemap-codec@1.5.5': {}
+
+ '@jridgewell/trace-mapping@0.3.31':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.5
+
+ '@mui/core-downloads-tracker@7.3.7': {}
+
+ '@mui/icons-material@7.3.7(@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@types/react@19.2.8)(react@19.2.3)':
+ dependencies:
+ '@babel/runtime': 7.28.4
+ '@mui/material': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ react: 19.2.3
+ optionalDependencies:
+ '@types/react': 19.2.8
+
+ '@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ dependencies:
+ '@babel/runtime': 7.28.4
+ '@mui/core-downloads-tracker': 7.3.7
+ '@mui/system': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3)
+ '@mui/types': 7.4.10(@types/react@19.2.8)
+ '@mui/utils': 7.3.7(@types/react@19.2.8)(react@19.2.3)
+ '@popperjs/core': 2.11.8
+ '@types/react-transition-group': 4.4.12(@types/react@19.2.8)
+ clsx: 2.1.1
+ csstype: 3.2.3
+ prop-types: 15.8.1
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ react-is: 19.2.3
+ react-transition-group: 4.4.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ optionalDependencies:
+ '@emotion/react': 11.14.0(@types/react@19.2.8)(react@19.2.3)
+ '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3)
+ '@types/react': 19.2.8
+
+ '@mui/private-theming@7.3.7(@types/react@19.2.8)(react@19.2.3)':
+ dependencies:
+ '@babel/runtime': 7.28.4
+ '@mui/utils': 7.3.7(@types/react@19.2.8)(react@19.2.3)
+ prop-types: 15.8.1
+ react: 19.2.3
+ optionalDependencies:
+ '@types/react': 19.2.8
+
+ '@mui/styled-engine@7.3.7(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3))(react@19.2.3)':
+ dependencies:
+ '@babel/runtime': 7.28.4
+ '@emotion/cache': 11.14.0
+ '@emotion/serialize': 1.3.3
+ '@emotion/sheet': 1.4.0
+ csstype: 3.2.3
+ prop-types: 15.8.1
+ react: 19.2.3
+ optionalDependencies:
+ '@emotion/react': 11.14.0(@types/react@19.2.8)(react@19.2.3)
+ '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3)
+
+ '@mui/system@7.3.7(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3)':
+ dependencies:
+ '@babel/runtime': 7.28.4
+ '@mui/private-theming': 7.3.7(@types/react@19.2.8)(react@19.2.3)
+ '@mui/styled-engine': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3))(react@19.2.3)
+ '@mui/types': 7.4.10(@types/react@19.2.8)
+ '@mui/utils': 7.3.7(@types/react@19.2.8)(react@19.2.3)
+ clsx: 2.1.1
+ csstype: 3.2.3
+ prop-types: 15.8.1
+ react: 19.2.3
+ optionalDependencies:
+ '@emotion/react': 11.14.0(@types/react@19.2.8)(react@19.2.3)
+ '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3)
+ '@types/react': 19.2.8
+
+ '@mui/types@7.4.10(@types/react@19.2.8)':
+ dependencies:
+ '@babel/runtime': 7.28.4
+ optionalDependencies:
+ '@types/react': 19.2.8
+
+ '@mui/utils@7.3.7(@types/react@19.2.8)(react@19.2.3)':
+ dependencies:
+ '@babel/runtime': 7.28.4
+ '@mui/types': 7.4.10(@types/react@19.2.8)
+ '@types/prop-types': 15.7.15
+ clsx: 2.1.1
+ prop-types: 15.8.1
+ react: 19.2.3
+ react-is: 19.2.3
+ optionalDependencies:
+ '@types/react': 19.2.8
+
+ '@noble/hashes@1.8.0': {}
+
+ '@nodelib/fs.scandir@2.1.5':
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+
+ '@nodelib/fs.stat@2.0.5': {}
+
+ '@nodelib/fs.walk@1.2.8':
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.20.1
+
+ '@paralleldrive/cuid2@2.3.1':
+ dependencies:
+ '@noble/hashes': 1.8.0
+
+ '@popperjs/core@2.11.8': {}
+
+ '@preact/compat@18.3.1(preact@10.28.2)':
+ dependencies:
+ preact: 10.28.2
+
+ '@preact/preset-vite@2.10.2(@babel/core@7.28.5)(preact@10.28.2)(vite@7.3.1(@types/node@25.0.6)(terser@5.44.1))':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.5)
+ '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.5)
+ '@prefresh/vite': 2.4.11(preact@10.28.2)(vite@7.3.1(@types/node@25.0.6)(terser@5.44.1))
+ '@rollup/pluginutils': 4.2.1
+ babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.28.5)
+ debug: 4.4.3
+ picocolors: 1.1.1
+ vite: 7.3.1(@types/node@25.0.6)(terser@5.44.1)
+ vite-prerender-plugin: 0.5.12(vite@7.3.1(@types/node@25.0.6)(terser@5.44.1))
+ transitivePeerDependencies:
+ - preact
+ - supports-color
+
+ '@prefresh/babel-plugin@0.5.2': {}
+
+ '@prefresh/core@1.5.9(preact@10.28.2)':
+ dependencies:
+ preact: 10.28.2
+
+ '@prefresh/utils@1.2.1': {}
+
+ '@prefresh/vite@2.4.11(preact@10.28.2)(vite@7.3.1(@types/node@25.0.6)(terser@5.44.1))':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@prefresh/babel-plugin': 0.5.2
+ '@prefresh/core': 1.5.9(preact@10.28.2)
+ '@prefresh/utils': 1.2.1
+ '@rollup/pluginutils': 4.2.1
+ preact: 10.28.2
+ vite: 7.3.1(@types/node@25.0.6)(terser@5.44.1)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@rollup/pluginutils@4.2.1':
+ dependencies:
+ estree-walker: 2.0.2
+ picomatch: 2.3.1
+
+ '@rollup/rollup-android-arm-eabi@4.55.1':
+ optional: true
+
+ '@rollup/rollup-android-arm64@4.55.1':
+ optional: true
+
+ '@rollup/rollup-darwin-arm64@4.55.1':
+ optional: true
+
+ '@rollup/rollup-darwin-x64@4.55.1':
+ optional: true
+
+ '@rollup/rollup-freebsd-arm64@4.55.1':
+ optional: true
+
+ '@rollup/rollup-freebsd-x64@4.55.1':
+ optional: true
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.55.1':
+ optional: true
+
+ '@rollup/rollup-linux-arm-musleabihf@4.55.1':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-gnu@4.55.1':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-musl@4.55.1':
+ optional: true
+
+ '@rollup/rollup-linux-loong64-gnu@4.55.1':
+ optional: true
+
+ '@rollup/rollup-linux-loong64-musl@4.55.1':
+ optional: true
+
+ '@rollup/rollup-linux-ppc64-gnu@4.55.1':
+ optional: true
+
+ '@rollup/rollup-linux-ppc64-musl@4.55.1':
+ optional: true
+
+ '@rollup/rollup-linux-riscv64-gnu@4.55.1':
+ optional: true
+
+ '@rollup/rollup-linux-riscv64-musl@4.55.1':
+ optional: true
+
+ '@rollup/rollup-linux-s390x-gnu@4.55.1':
+ optional: true
+
+ '@rollup/rollup-linux-x64-gnu@4.55.1':
+ optional: true
+
+ '@rollup/rollup-linux-x64-musl@4.55.1':
+ optional: true
+
+ '@rollup/rollup-openbsd-x64@4.55.1':
+ optional: true
+
+ '@rollup/rollup-openharmony-arm64@4.55.1':
+ optional: true
+
+ '@rollup/rollup-win32-arm64-msvc@4.55.1':
+ optional: true
+
+ '@rollup/rollup-win32-ia32-msvc@4.55.1':
+ optional: true
+
+ '@rollup/rollup-win32-x64-gnu@4.55.1':
+ optional: true
+
+ '@rollup/rollup-win32-x64-msvc@4.55.1':
+ optional: true
+
+ '@sindresorhus/is@0.7.0': {}
+
+ '@table-library/react-table-library@4.1.15(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ dependencies:
+ '@emotion/react': 11.14.0(@types/react@19.2.8)(react@19.2.3)
+ clsx: 1.1.1
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ react-virtualized-auto-sizer: 1.0.26(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ react-window: 1.8.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+
+ '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.7.4)':
+ dependencies:
+ '@babel/generator': 7.28.5
+ '@babel/parser': 7.28.5
+ '@babel/traverse': 7.28.5
+ '@babel/types': 7.28.5
+ javascript-natural-sort: 0.7.1
+ lodash-es: 4.17.22
+ minimatch: 9.0.5
+ parse-imports-exports: 0.2.4
+ prettier: 3.7.4
+ transitivePeerDependencies:
+ - supports-color
+
+ '@trysound/sax@0.2.0': {}
+
+ '@types/estree@1.0.8': {}
+
+ '@types/glob@7.2.0':
+ dependencies:
+ '@types/minimatch': 6.0.0
+ '@types/node': 25.0.6
+
+ '@types/imagemin-gifsicle@7.0.4':
+ dependencies:
+ '@types/imagemin': 7.0.1
+
+ '@types/imagemin-jpegtran@5.0.4':
+ dependencies:
+ '@types/imagemin': 7.0.1
+
+ '@types/imagemin-mozjpeg@8.0.4':
+ dependencies:
+ '@types/imagemin': 7.0.1
+
+ '@types/imagemin-optipng@5.2.4':
+ dependencies:
+ '@types/imagemin': 7.0.1
+
+ '@types/imagemin-svgo@10.0.5':
+ dependencies:
+ '@types/imagemin': 7.0.1
+ '@types/svgo': 2.6.4
+
+ '@types/imagemin-webp@7.0.3':
+ dependencies:
+ '@types/imagemin': 7.0.1
+
+ '@types/imagemin@7.0.1':
+ dependencies:
+ '@types/node': 25.0.6
+
+ '@types/json-schema@7.0.15': {}
+
+ '@types/keyv@3.1.4':
+ dependencies:
+ '@types/node': 25.0.6
+
+ '@types/minimatch@6.0.0':
+ dependencies:
+ minimatch: 10.1.1
+
+ '@types/node@25.0.6':
+ dependencies:
+ undici-types: 7.16.0
+
+ '@types/parse-json@4.0.2': {}
+
+ '@types/prop-types@15.7.15': {}
+
+ '@types/react-dom@19.2.3(@types/react@19.2.8)':
+ dependencies:
+ '@types/react': 19.2.8
+
+ '@types/react-transition-group@4.4.12(@types/react@19.2.8)':
+ dependencies:
+ '@types/react': 19.2.8
+
+ '@types/react@19.2.8':
+ dependencies:
+ csstype: 3.2.3
+
+ '@types/responselike@1.0.3':
+ dependencies:
+ '@types/node': 25.0.6
+
+ '@types/svgo@2.6.4':
+ dependencies:
+ '@types/node': 25.0.6
+
+ '@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)':
+ dependencies:
+ '@eslint-community/regexpp': 4.12.2
+ '@typescript-eslint/parser': 8.52.0(eslint@9.39.2)(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.52.0
+ '@typescript-eslint/type-utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3)
+ '@typescript-eslint/visitor-keys': 8.52.0
+ eslint: 9.39.2
+ ignore: 7.0.5
+ natural-compare: 1.4.0
+ ts-api-utils: 2.4.0(typescript@5.9.3)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/parser@8.52.0(eslint@9.39.2)(typescript@5.9.3)':
+ dependencies:
+ '@typescript-eslint/scope-manager': 8.52.0
+ '@typescript-eslint/types': 8.52.0
+ '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3)
+ '@typescript-eslint/visitor-keys': 8.52.0
+ debug: 4.4.3
+ eslint: 9.39.2
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/project-service@8.52.0(typescript@5.9.3)':
+ dependencies:
+ '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3)
+ '@typescript-eslint/types': 8.52.0
+ debug: 4.4.3
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/scope-manager@8.52.0':
+ dependencies:
+ '@typescript-eslint/types': 8.52.0
+ '@typescript-eslint/visitor-keys': 8.52.0
+
+ '@typescript-eslint/tsconfig-utils@8.52.0(typescript@5.9.3)':
+ dependencies:
+ typescript: 5.9.3
+
+ '@typescript-eslint/type-utils@8.52.0(eslint@9.39.2)(typescript@5.9.3)':
+ dependencies:
+ '@typescript-eslint/types': 8.52.0
+ '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3)
+ debug: 4.4.3
+ eslint: 9.39.2
+ ts-api-utils: 2.4.0(typescript@5.9.3)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/types@8.52.0': {}
+
+ '@typescript-eslint/typescript-estree@8.52.0(typescript@5.9.3)':
+ dependencies:
+ '@typescript-eslint/project-service': 8.52.0(typescript@5.9.3)
+ '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3)
+ '@typescript-eslint/types': 8.52.0
+ '@typescript-eslint/visitor-keys': 8.52.0
+ debug: 4.4.3
+ minimatch: 9.0.5
+ semver: 7.7.3
+ tinyglobby: 0.2.15
+ ts-api-utils: 2.4.0(typescript@5.9.3)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/utils@8.52.0(eslint@9.39.2)(typescript@5.9.3)':
+ dependencies:
+ '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2)
+ '@typescript-eslint/scope-manager': 8.52.0
+ '@typescript-eslint/types': 8.52.0
+ '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3)
+ eslint: 9.39.2
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/visitor-keys@8.52.0':
+ dependencies:
+ '@typescript-eslint/types': 8.52.0
+ eslint-visitor-keys: 4.2.1
+
+ acorn-jsx@5.3.2(acorn@8.15.0):
+ dependencies:
+ acorn: 8.15.0
+
+ acorn@8.15.0: {}
+
+ ajv@6.12.6:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-json-stable-stringify: 2.1.0
+ json-schema-traverse: 0.4.1
+ uri-js: 4.4.1
+
+ alova@3.4.1:
+ dependencies:
+ '@alova/shared': 1.3.2
+ rate-limiter-flexible: 5.0.5
+
+ ansi-regex@2.1.1: {}
+
+ ansi-regex@5.0.1: {}
+
+ ansi-styles@2.2.1: {}
+
+ ansi-styles@4.3.0:
+ dependencies:
+ color-convert: 2.0.1
+
+ arch@2.2.0: {}
+
+ archive-type@4.0.0:
+ dependencies:
+ file-type: 4.4.0
+
+ argparse@2.0.1: {}
+
+ array-find-index@1.0.2: {}
+
+ array-union@2.1.0: {}
+
+ asap@2.0.6: {}
+
+ async-validator@4.2.5: {}
+
+ available-typed-arrays@1.0.7:
+ dependencies:
+ possible-typed-array-names: 1.1.0
+
+ axe-core@4.11.1: {}
+
+ babel-plugin-macros@3.1.0:
+ dependencies:
+ '@babel/runtime': 7.28.4
+ cosmiconfig: 7.1.0
+ resolve: 1.22.11
+
+ babel-plugin-transform-hook-names@1.0.2(@babel/core@7.28.5):
+ dependencies:
+ '@babel/core': 7.28.5
+
+ balanced-match@1.0.2: {}
+
+ base64-js@1.5.1: {}
+
+ baseline-browser-mapping@2.9.14: {}
+
+ bin-build@3.0.0:
+ dependencies:
+ decompress: 4.2.1
+ download: 6.2.5
+ execa: 0.7.0
+ p-map-series: 1.0.0
+ tempfile: 2.0.0
+
+ bin-check@4.1.0:
+ dependencies:
+ execa: 0.7.0
+ executable: 4.1.1
+
+ bin-version-check@4.0.0:
+ dependencies:
+ bin-version: 3.1.0
+ semver: 5.7.2
+ semver-truncate: 1.1.2
+
+ bin-version@3.1.0:
+ dependencies:
+ execa: 1.0.0
+ find-versions: 3.2.0
+
+ bin-wrapper@4.1.0:
+ dependencies:
+ bin-check: 4.1.0
+ bin-version-check: 4.0.0
+ download: 7.1.0
+ import-lazy: 3.1.0
+ os-filter-obj: 2.0.0
+ pify: 4.0.1
+
+ bl@1.2.3:
+ dependencies:
+ readable-stream: 2.3.8
+ safe-buffer: 5.2.1
+
+ boolbase@1.0.0: {}
+
+ brace-expansion@1.1.12:
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+
+ brace-expansion@2.0.2:
+ dependencies:
+ balanced-match: 1.0.2
+
+ braces@3.0.3:
+ dependencies:
+ fill-range: 7.1.1
+
+ browserslist@4.28.1:
+ dependencies:
+ baseline-browser-mapping: 2.9.14
+ caniuse-lite: 1.0.30001764
+ electron-to-chromium: 1.5.267
+ node-releases: 2.0.27
+ update-browserslist-db: 1.2.3(browserslist@4.28.1)
+
+ buffer-alloc-unsafe@1.1.0: {}
+
+ buffer-alloc@1.2.0:
+ dependencies:
+ buffer-alloc-unsafe: 1.1.0
+ buffer-fill: 1.0.0
+
+ buffer-crc32@0.2.13: {}
+
+ buffer-fill@1.0.0: {}
+
+ buffer-from@1.1.2: {}
+
+ buffer@5.7.1:
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+
+ cacheable-request@2.1.4:
+ dependencies:
+ clone-response: 1.0.2
+ get-stream: 3.0.0
+ http-cache-semantics: 3.8.1
+ keyv: 3.0.0
+ lowercase-keys: 1.0.0
+ normalize-url: 2.0.1
+ responselike: 1.0.2
+
+ call-bind-apply-helpers@1.0.2:
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+
+ call-bind@1.0.8:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ get-intrinsic: 1.3.0
+ set-function-length: 1.2.2
+
+ call-bound@1.0.4:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ get-intrinsic: 1.3.0
+
+ callsites@3.1.0: {}
+
+ camelcase-keys@2.1.0:
+ dependencies:
+ camelcase: 2.1.1
+ map-obj: 1.0.1
+
+ camelcase@2.1.1: {}
+
+ caniuse-lite@1.0.30001764: {}
+
+ caw@2.0.1:
+ dependencies:
+ get-proxy: 2.1.0
+ isurl: 1.0.0
+ tunnel-agent: 0.6.0
+ url-to-options: 1.0.1
+
+ chalk@1.1.3:
+ dependencies:
+ ansi-styles: 2.2.1
+ escape-string-regexp: 1.0.5
+ has-ansi: 2.0.0
+ strip-ansi: 3.0.1
+ supports-color: 2.0.0
+
+ chalk@4.1.2:
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+
+ cliui@8.0.1:
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
+
+ clone-response@1.0.2:
+ dependencies:
+ mimic-response: 1.0.1
+
+ clsx@1.1.1: {}
+
+ clsx@2.1.1: {}
+
+ color-convert@2.0.1:
+ dependencies:
+ color-name: 1.1.4
+
+ color-name@1.1.4: {}
+
+ commander@2.20.3: {}
+
+ commander@7.2.0: {}
+
+ concat-map@0.0.1: {}
+
+ concurrently@9.2.1:
+ dependencies:
+ chalk: 4.1.2
+ rxjs: 7.8.2
+ shell-quote: 1.8.3
+ supports-color: 8.1.1
+ tree-kill: 1.2.2
+ yargs: 17.7.2
+
+ config-chain@1.1.13:
+ dependencies:
+ ini: 1.3.8
+ proto-list: 1.2.4
+
+ console-stream@0.1.1: {}
+
+ content-disposition@0.5.4:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ convert-source-map@1.9.0: {}
+
+ convert-source-map@2.0.0: {}
+
+ cookie@1.1.1: {}
+
+ core-util-is@1.0.3: {}
+
+ cosmiconfig@7.1.0:
+ dependencies:
+ '@types/parse-json': 4.0.2
+ import-fresh: 3.3.1
+ parse-json: 5.2.0
+ path-type: 4.0.0
+ yaml: 1.10.2
+
+ cross-spawn@5.1.0:
+ dependencies:
+ lru-cache: 4.1.5
+ shebang-command: 1.2.0
+ which: 1.3.1
+
+ cross-spawn@6.0.6:
+ dependencies:
+ nice-try: 1.0.5
+ path-key: 2.0.1
+ semver: 5.7.2
+ shebang-command: 1.2.0
+ which: 1.3.1
+
+ cross-spawn@7.0.6:
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+
+ css-select@4.3.0:
+ dependencies:
+ boolbase: 1.0.0
+ css-what: 6.2.2
+ domhandler: 4.3.1
+ domutils: 2.8.0
+ nth-check: 2.1.1
+
+ css-select@5.2.2:
+ dependencies:
+ boolbase: 1.0.0
+ css-what: 6.2.2
+ domhandler: 5.0.3
+ domutils: 3.2.2
+ nth-check: 2.1.1
+
+ css-tree@1.1.3:
+ dependencies:
+ mdn-data: 2.0.14
+ source-map: 0.6.1
+
+ css-what@6.2.2: {}
+
+ csso@4.2.0:
+ dependencies:
+ css-tree: 1.1.3
+
+ csstype@3.2.3: {}
+
+ currently-unhandled@0.4.1:
+ dependencies:
+ array-find-index: 1.0.2
+
+ cwebp-bin@6.1.2:
+ dependencies:
+ bin-build: 3.0.0
+ bin-wrapper: 4.1.0
+
+ debug@4.4.3:
+ dependencies:
+ ms: 2.1.3
+
+ decamelize@1.2.0: {}
+
+ decode-uri-component@0.2.2: {}
+
+ decompress-response@3.3.0:
+ dependencies:
+ mimic-response: 1.0.1
+
+ decompress-tar@4.1.1:
+ dependencies:
+ file-type: 5.2.0
+ is-stream: 1.1.0
+ tar-stream: 1.6.2
+
+ decompress-tarbz2@4.1.1:
+ dependencies:
+ decompress-tar: 4.1.1
+ file-type: 6.2.0
+ is-stream: 1.1.0
+ seek-bzip: 1.0.6
+ unbzip2-stream: 1.4.3
+
+ decompress-targz@4.1.1:
+ dependencies:
+ decompress-tar: 4.1.1
+ file-type: 5.2.0
+ is-stream: 1.1.0
+
+ decompress-unzip@4.0.1:
+ dependencies:
+ file-type: 3.9.0
+ get-stream: 2.3.1
+ pify: 2.3.0
+ yauzl: 2.10.0
+
+ decompress@4.2.1:
+ dependencies:
+ decompress-tar: 4.1.1
+ decompress-tarbz2: 4.1.1
+ decompress-targz: 4.1.1
+ decompress-unzip: 4.0.1
+ graceful-fs: 4.2.11
+ make-dir: 1.3.0
+ pify: 2.3.0
+ strip-dirs: 2.1.0
+
+ deep-is@0.1.4: {}
+
+ define-data-property@1.1.4:
+ dependencies:
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ gopd: 1.2.0
+
+ define-lazy-prop@2.0.0: {}
+
+ dezalgo@1.0.4:
+ dependencies:
+ asap: 2.0.6
+ wrappy: 1.0.2
+
+ dir-glob@3.0.1:
+ dependencies:
+ path-type: 4.0.0
+
+ dom-helpers@5.2.1:
+ dependencies:
+ '@babel/runtime': 7.28.4
+ csstype: 3.2.3
+
+ dom-serializer@1.4.1:
+ dependencies:
+ domelementtype: 2.3.0
+ domhandler: 4.3.1
+ entities: 2.2.0
+
+ dom-serializer@2.0.0:
+ dependencies:
+ domelementtype: 2.3.0
+ domhandler: 5.0.3
+ entities: 4.5.0
+
+ domelementtype@2.3.0: {}
+
+ domhandler@4.3.1:
+ dependencies:
+ domelementtype: 2.3.0
+
+ domhandler@5.0.3:
+ dependencies:
+ domelementtype: 2.3.0
+
+ domutils@2.8.0:
+ dependencies:
+ dom-serializer: 1.4.1
+ domelementtype: 2.3.0
+ domhandler: 4.3.1
+
+ domutils@3.2.2:
+ dependencies:
+ dom-serializer: 2.0.0
+ domelementtype: 2.3.0
+ domhandler: 5.0.3
+
+ download@6.2.5:
+ dependencies:
+ caw: 2.0.1
+ content-disposition: 0.5.4
+ decompress: 4.2.1
+ ext-name: 5.0.0
+ file-type: 5.2.0
+ filenamify: 2.1.0
+ get-stream: 3.0.0
+ got: 7.1.0
+ make-dir: 1.3.0
+ p-event: 1.3.0
+ pify: 3.0.0
+
+ download@7.1.0:
+ dependencies:
+ archive-type: 4.0.0
+ caw: 2.0.1
+ content-disposition: 0.5.4
+ decompress: 4.2.1
+ ext-name: 5.0.0
+ file-type: 8.1.0
+ filenamify: 2.1.0
+ get-stream: 3.0.0
+ got: 8.3.2
+ make-dir: 1.3.0
+ p-event: 2.3.1
+ pify: 3.0.0
+
+ dunder-proto@1.0.1:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-errors: 1.3.0
+ gopd: 1.2.0
+
+ duplexer3@0.1.5: {}
+
+ electron-to-chromium@1.5.267: {}
+
+ emoji-regex@8.0.0: {}
+
+ end-of-stream@1.4.5:
+ dependencies:
+ once: 1.4.0
+
+ entities@2.2.0: {}
+
+ entities@4.5.0: {}
+
+ error-ex@1.3.4:
+ dependencies:
+ is-arrayish: 0.2.1
+
+ es-define-property@1.0.1: {}
+
+ es-errors@1.3.0: {}
+
+ es-object-atoms@1.1.1:
+ dependencies:
+ es-errors: 1.3.0
+
+ esbuild-android-64@0.14.54:
+ optional: true
+
+ esbuild-android-arm64@0.14.54:
+ optional: true
+
+ esbuild-darwin-64@0.14.54:
+ optional: true
+
+ esbuild-darwin-arm64@0.14.54:
+ optional: true
+
+ esbuild-freebsd-64@0.14.54:
+ optional: true
+
+ esbuild-freebsd-arm64@0.14.54:
+ optional: true
+
+ esbuild-linux-32@0.14.54:
+ optional: true
+
+ esbuild-linux-64@0.14.54:
+ optional: true
+
+ esbuild-linux-arm64@0.14.54:
+ optional: true
+
+ esbuild-linux-arm@0.14.54:
+ optional: true
+
+ esbuild-linux-mips64le@0.14.54:
+ optional: true
+
+ esbuild-linux-ppc64le@0.14.54:
+ optional: true
+
+ esbuild-linux-riscv64@0.14.54:
+ optional: true
+
+ esbuild-linux-s390x@0.14.54:
+ optional: true
+
+ esbuild-netbsd-64@0.14.54:
+ optional: true
+
+ esbuild-openbsd-64@0.14.54:
+ optional: true
+
+ esbuild-sunos-64@0.14.54:
+ optional: true
+
+ esbuild-windows-32@0.14.54:
+ optional: true
+
+ esbuild-windows-64@0.14.54:
+ optional: true
+
+ esbuild-windows-arm64@0.14.54:
+ optional: true
+
+ esbuild@0.14.54:
+ optionalDependencies:
+ '@esbuild/linux-loong64': 0.14.54
+ esbuild-android-64: 0.14.54
+ esbuild-android-arm64: 0.14.54
+ esbuild-darwin-64: 0.14.54
+ esbuild-darwin-arm64: 0.14.54
+ esbuild-freebsd-64: 0.14.54
+ esbuild-freebsd-arm64: 0.14.54
+ esbuild-linux-32: 0.14.54
+ esbuild-linux-64: 0.14.54
+ esbuild-linux-arm: 0.14.54
+ esbuild-linux-arm64: 0.14.54
+ esbuild-linux-mips64le: 0.14.54
+ esbuild-linux-ppc64le: 0.14.54
+ esbuild-linux-riscv64: 0.14.54
+ esbuild-linux-s390x: 0.14.54
+ esbuild-netbsd-64: 0.14.54
+ esbuild-openbsd-64: 0.14.54
+ esbuild-sunos-64: 0.14.54
+ esbuild-windows-32: 0.14.54
+ esbuild-windows-64: 0.14.54
+ esbuild-windows-arm64: 0.14.54
+
+ esbuild@0.27.2:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.27.2
+ '@esbuild/android-arm': 0.27.2
+ '@esbuild/android-arm64': 0.27.2
+ '@esbuild/android-x64': 0.27.2
+ '@esbuild/darwin-arm64': 0.27.2
+ '@esbuild/darwin-x64': 0.27.2
+ '@esbuild/freebsd-arm64': 0.27.2
+ '@esbuild/freebsd-x64': 0.27.2
+ '@esbuild/linux-arm': 0.27.2
+ '@esbuild/linux-arm64': 0.27.2
+ '@esbuild/linux-ia32': 0.27.2
+ '@esbuild/linux-loong64': 0.27.2
+ '@esbuild/linux-mips64el': 0.27.2
+ '@esbuild/linux-ppc64': 0.27.2
+ '@esbuild/linux-riscv64': 0.27.2
+ '@esbuild/linux-s390x': 0.27.2
+ '@esbuild/linux-x64': 0.27.2
+ '@esbuild/netbsd-arm64': 0.27.2
+ '@esbuild/netbsd-x64': 0.27.2
+ '@esbuild/openbsd-arm64': 0.27.2
+ '@esbuild/openbsd-x64': 0.27.2
+ '@esbuild/openharmony-arm64': 0.27.2
+ '@esbuild/sunos-x64': 0.27.2
+ '@esbuild/win32-arm64': 0.27.2
+ '@esbuild/win32-ia32': 0.27.2
+ '@esbuild/win32-x64': 0.27.2
+
+ escalade@3.2.0: {}
+
+ escape-string-regexp@1.0.5: {}
+
+ escape-string-regexp@4.0.0: {}
+
+ eslint-config-prettier@10.1.8(eslint@9.39.2):
+ dependencies:
+ eslint: 9.39.2
+
+ eslint-scope@8.4.0:
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 5.3.0
+
+ eslint-visitor-keys@3.4.3: {}
+
+ eslint-visitor-keys@4.2.1: {}
+
+ eslint@9.39.2:
+ dependencies:
+ '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2)
+ '@eslint-community/regexpp': 4.12.2
+ '@eslint/config-array': 0.21.1
+ '@eslint/config-helpers': 0.4.2
+ '@eslint/core': 0.17.0
+ '@eslint/eslintrc': 3.3.3
+ '@eslint/js': 9.39.2
+ '@eslint/plugin-kit': 0.4.1
+ '@humanfs/node': 0.16.7
+ '@humanwhocodes/module-importer': 1.0.1
+ '@humanwhocodes/retry': 0.4.3
+ '@types/estree': 1.0.8
+ ajv: 6.12.6
+ chalk: 4.1.2
+ cross-spawn: 7.0.6
+ debug: 4.4.3
+ escape-string-regexp: 4.0.0
+ eslint-scope: 8.4.0
+ eslint-visitor-keys: 4.2.1
+ espree: 10.4.0
+ esquery: 1.7.0
+ esutils: 2.0.3
+ fast-deep-equal: 3.1.3
+ file-entry-cache: 8.0.0
+ find-up: 5.0.0
+ glob-parent: 6.0.2
+ ignore: 5.3.2
+ imurmurhash: 0.1.4
+ is-glob: 4.0.3
+ json-stable-stringify-without-jsonify: 1.0.1
+ lodash.merge: 4.6.2
+ minimatch: 3.1.2
+ natural-compare: 1.4.0
+ optionator: 0.9.4
+ transitivePeerDependencies:
+ - supports-color
+
+ espree@10.4.0:
+ dependencies:
+ acorn: 8.15.0
+ acorn-jsx: 5.3.2(acorn@8.15.0)
+ eslint-visitor-keys: 4.2.1
+
+ esquery@1.7.0:
+ dependencies:
+ estraverse: 5.3.0
+
+ esrecurse@4.3.0:
+ dependencies:
+ estraverse: 5.3.0
+
+ estraverse@5.3.0: {}
+
+ estree-walker@2.0.2: {}
+
+ esutils@2.0.3: {}
+
+ etag@1.8.1: {}
+
+ exec-buffer@3.2.0:
+ dependencies:
+ execa: 0.7.0
+ p-finally: 1.0.0
+ pify: 3.0.0
+ rimraf: 2.7.1
+ tempfile: 2.0.0
+
+ execa@0.7.0:
+ dependencies:
+ cross-spawn: 5.1.0
+ get-stream: 3.0.0
+ is-stream: 1.1.0
+ npm-run-path: 2.0.2
+ p-finally: 1.0.0
+ signal-exit: 3.0.7
+ strip-eof: 1.0.0
+
+ execa@1.0.0:
+ dependencies:
+ cross-spawn: 6.0.6
+ get-stream: 4.1.0
+ is-stream: 1.1.0
+ npm-run-path: 2.0.2
+ p-finally: 1.0.0
+ signal-exit: 3.0.7
+ strip-eof: 1.0.0
+
+ execa@4.1.0:
+ dependencies:
+ cross-spawn: 7.0.6
+ get-stream: 5.2.0
+ human-signals: 1.1.1
+ is-stream: 2.0.1
+ merge-stream: 2.0.0
+ npm-run-path: 4.0.1
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+ strip-final-newline: 2.0.0
+
+ execa@5.1.1:
+ dependencies:
+ cross-spawn: 7.0.6
+ get-stream: 6.0.1
+ human-signals: 2.1.0
+ is-stream: 2.0.1
+ merge-stream: 2.0.0
+ npm-run-path: 4.0.1
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+ strip-final-newline: 2.0.0
+
+ executable@4.1.1:
+ dependencies:
+ pify: 2.3.0
+
+ ext-list@2.2.2:
+ dependencies:
+ mime-db: 1.54.0
+
+ ext-name@5.0.0:
+ dependencies:
+ ext-list: 2.2.2
+ sort-keys-length: 1.0.1
+
+ fast-deep-equal@3.1.3: {}
+
+ fast-glob@3.3.3:
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ '@nodelib/fs.walk': 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.8
+
+ fast-json-stable-stringify@2.1.0: {}
+
+ fast-levenshtein@2.0.6: {}
+
+ fast-xml-parser@4.5.3:
+ dependencies:
+ strnum: 1.1.2
+
+ fastq@1.20.1:
+ dependencies:
+ reusify: 1.1.0
+
+ fd-slicer@1.1.0:
+ dependencies:
+ pend: 1.2.0
+
+ fdir@6.5.0(picomatch@4.0.3):
+ optionalDependencies:
+ picomatch: 4.0.3
+
+ figures@1.7.0:
+ dependencies:
+ escape-string-regexp: 1.0.5
+ object-assign: 4.1.1
+
+ file-entry-cache@8.0.0:
+ dependencies:
+ flat-cache: 4.0.1
+
+ file-type@10.11.0: {}
+
+ file-type@12.4.2: {}
+
+ file-type@3.9.0: {}
+
+ file-type@4.4.0: {}
+
+ file-type@5.2.0: {}
+
+ file-type@6.2.0: {}
+
+ file-type@8.1.0: {}
+
+ filename-reserved-regex@2.0.0: {}
+
+ filenamify@2.1.0:
+ dependencies:
+ filename-reserved-regex: 2.0.0
+ strip-outer: 1.0.1
+ trim-repeated: 1.0.0
+
+ fill-range@7.1.1:
+ dependencies:
+ to-regex-range: 5.0.1
+
+ find-root@1.1.0: {}
+
+ find-up@1.1.2:
+ dependencies:
+ path-exists: 2.1.0
+ pinkie-promise: 2.0.1
+
+ find-up@5.0.0:
+ dependencies:
+ locate-path: 6.0.0
+ path-exists: 4.0.0
+
+ find-versions@3.2.0:
+ dependencies:
+ semver-regex: 2.0.0
+
+ flat-cache@4.0.1:
+ dependencies:
+ flatted: 3.3.3
+ keyv: 4.5.4
+
+ flatted@3.3.3: {}
+
+ for-each@0.3.5:
+ dependencies:
+ is-callable: 1.2.7
+
+ formidable@3.5.4:
+ dependencies:
+ '@paralleldrive/cuid2': 2.3.1
+ dezalgo: 1.0.4
+ once: 1.4.0
+
+ from2@2.3.0:
+ dependencies:
+ inherits: 2.0.4
+ readable-stream: 2.3.8
+
+ fs-constants@1.0.0: {}
+
+ fs-extra@10.1.0:
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 6.2.0
+ universalify: 2.0.1
+
+ fs.realpath@1.0.0: {}
+
+ fsevents@2.3.3:
+ optional: true
+
+ function-bind@1.1.2: {}
+
+ gensync@1.0.0-beta.2: {}
+
+ get-caller-file@2.0.5: {}
+
+ get-intrinsic@1.3.0:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ function-bind: 1.1.2
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.2
+ math-intrinsics: 1.1.0
+
+ get-proto@1.0.1:
+ dependencies:
+ dunder-proto: 1.0.1
+ es-object-atoms: 1.1.1
+
+ get-proxy@2.1.0:
+ dependencies:
+ npm-conf: 1.1.3
+
+ get-stdin@4.0.1: {}
+
+ get-stream@2.3.1:
+ dependencies:
+ object-assign: 4.1.1
+ pinkie-promise: 2.0.1
+
+ get-stream@3.0.0: {}
+
+ get-stream@4.1.0:
+ dependencies:
+ pump: 3.0.3
+
+ get-stream@5.2.0:
+ dependencies:
+ pump: 3.0.3
+
+ get-stream@6.0.1: {}
+
+ gifsicle@5.2.0:
+ dependencies:
+ bin-build: 3.0.0
+ bin-wrapper: 4.1.0
+ execa: 5.1.1
+ logalot: 2.1.0
+
+ glob-parent@5.1.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob-parent@6.0.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob@7.2.3:
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.2
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+
+ globals@14.0.0: {}
+
+ globby@10.0.2:
+ dependencies:
+ '@types/glob': 7.2.0
+ array-union: 2.1.0
+ dir-glob: 3.0.1
+ fast-glob: 3.3.3
+ glob: 7.2.3
+ ignore: 5.3.2
+ merge2: 1.4.1
+ slash: 3.0.0
+
+ globrex@0.1.2: {}
+
+ gopd@1.2.0: {}
+
+ got@7.1.0:
+ dependencies:
+ '@types/keyv': 3.1.4
+ '@types/responselike': 1.0.3
+ decompress-response: 3.3.0
+ duplexer3: 0.1.5
+ get-stream: 3.0.0
+ is-plain-obj: 1.1.0
+ is-retry-allowed: 1.2.0
+ is-stream: 1.1.0
+ isurl: 1.0.0
+ lowercase-keys: 1.0.1
+ p-cancelable: 0.3.0
+ p-timeout: 1.2.1
+ safe-buffer: 5.2.1
+ timed-out: 4.0.1
+ url-parse-lax: 1.0.0
+ url-to-options: 1.0.1
+
+ got@8.3.2:
+ dependencies:
+ '@sindresorhus/is': 0.7.0
+ '@types/keyv': 3.1.4
+ '@types/responselike': 1.0.3
+ cacheable-request: 2.1.4
+ decompress-response: 3.3.0
+ duplexer3: 0.1.5
+ get-stream: 3.0.0
+ into-stream: 3.1.0
+ is-retry-allowed: 1.2.0
+ isurl: 1.0.0
+ lowercase-keys: 1.0.1
+ mimic-response: 1.0.1
+ p-cancelable: 0.4.1
+ p-timeout: 2.0.1
+ pify: 3.0.0
+ safe-buffer: 5.2.1
+ timed-out: 4.0.1
+ url-parse-lax: 3.0.0
+ url-to-options: 1.0.1
+
+ graceful-fs@4.2.11: {}
+
+ has-ansi@2.0.0:
+ dependencies:
+ ansi-regex: 2.1.1
+
+ has-flag@4.0.0: {}
+
+ has-property-descriptors@1.0.2:
+ dependencies:
+ es-define-property: 1.0.1
+
+ has-symbol-support-x@1.4.2: {}
+
+ has-symbols@1.1.0: {}
+
+ has-to-string-tag-x@1.4.1:
+ dependencies:
+ has-symbol-support-x: 1.4.2
+
+ has-tostringtag@1.0.2:
+ dependencies:
+ has-symbols: 1.1.0
+
+ hasown@2.0.2:
+ dependencies:
+ function-bind: 1.1.2
+
+ he@1.2.0: {}
+
+ hoist-non-react-statics@3.3.2:
+ dependencies:
+ react-is: 16.13.1
+
+ hosted-git-info@2.8.9: {}
+
+ http-cache-semantics@3.8.1: {}
+
+ human-signals@1.1.1: {}
+
+ human-signals@2.1.0: {}
+
+ ieee754@1.2.1: {}
+
+ ignore@5.3.2: {}
+
+ ignore@7.0.5: {}
+
+ imagemin-gifsicle@7.0.0:
+ dependencies:
+ execa: 1.0.0
+ gifsicle: 5.2.0
+ is-gif: 3.0.0
+
+ imagemin-jpegtran@7.0.0:
+ dependencies:
+ exec-buffer: 3.2.0
+ is-jpg: 2.0.0
+ jpegtran-bin: 5.0.2
+
+ imagemin-mozjpeg@9.0.0:
+ dependencies:
+ execa: 4.1.0
+ is-jpg: 2.0.0
+ mozjpeg: 7.1.1
+
+ imagemin-optipng@8.0.0:
+ dependencies:
+ exec-buffer: 3.2.0
+ is-png: 2.0.0
+ optipng-bin: 7.0.1
+
+ imagemin-pngquant@9.0.2:
+ dependencies:
+ execa: 4.1.0
+ is-png: 2.0.0
+ is-stream: 2.0.1
+ ow: 0.17.0
+ pngquant-bin: 6.0.1
+
+ imagemin-svgo@9.0.0:
+ dependencies:
+ is-svg: 4.4.0
+ svgo: 2.8.0
+
+ imagemin-webp@6.1.0:
+ dependencies:
+ cwebp-bin: 6.1.2
+ exec-buffer: 3.2.0
+ is-cwebp-readable: 3.0.0
+
+ imagemin@7.0.1:
+ dependencies:
+ file-type: 12.4.2
+ globby: 10.0.2
+ graceful-fs: 4.2.11
+ junk: 3.1.0
+ make-dir: 3.1.0
+ p-pipe: 3.1.0
+ replace-ext: 1.0.1
+
+ import-fresh@3.3.1:
+ dependencies:
+ parent-module: 1.0.1
+ resolve-from: 4.0.0
+
+ import-lazy@3.1.0: {}
+
+ imurmurhash@0.1.4: {}
+
+ indent-string@2.1.0:
+ dependencies:
+ repeating: 2.0.1
+
+ inflight@1.0.6:
+ dependencies:
+ once: 1.4.0
+ wrappy: 1.0.2
+
+ inherits@2.0.4: {}
+
+ ini@1.3.8: {}
+
+ into-stream@3.1.0:
+ dependencies:
+ from2: 2.3.0
+ p-is-promise: 1.1.0
+
+ is-arrayish@0.2.1: {}
+
+ is-callable@1.2.7: {}
+
+ is-core-module@2.16.1:
+ dependencies:
+ hasown: 2.0.2
+
+ is-cwebp-readable@3.0.0:
+ dependencies:
+ file-type: 10.11.0
+
+ is-docker@2.2.1: {}
+
+ is-extglob@2.1.1: {}
+
+ is-finite@1.1.0: {}
+
+ is-fullwidth-code-point@3.0.0: {}
+
+ is-gif@3.0.0:
+ dependencies:
+ file-type: 10.11.0
+
+ is-glob@4.0.3:
+ dependencies:
+ is-extglob: 2.1.1
+
+ is-jpg@2.0.0: {}
+
+ is-natural-number@4.0.1: {}
+
+ is-number@7.0.0: {}
+
+ is-object@1.0.2: {}
+
+ is-plain-obj@1.1.0: {}
+
+ is-png@2.0.0: {}
+
+ is-retry-allowed@1.2.0: {}
+
+ is-stream@1.1.0: {}
+
+ is-stream@2.0.1: {}
+
+ is-svg@4.4.0:
+ dependencies:
+ fast-xml-parser: 4.5.3
+
+ is-typed-array@1.1.15:
+ dependencies:
+ which-typed-array: 1.1.19
+
+ is-utf8@0.2.1: {}
+
+ is-wsl@2.2.0:
+ dependencies:
+ is-docker: 2.2.1
+
+ isarray@1.0.0: {}
+
+ isarray@2.0.5: {}
+
+ isexe@2.0.0: {}
+
+ isurl@1.0.0:
+ dependencies:
+ has-to-string-tag-x: 1.4.1
+ is-object: 1.0.2
+
+ javascript-natural-sort@0.7.1: {}
+
+ jpegtran-bin@5.0.2:
+ dependencies:
+ bin-build: 3.0.0
+ bin-wrapper: 4.1.0
+ logalot: 2.1.0
+
+ jpegtran-bin@6.0.1:
+ dependencies:
+ bin-build: 3.0.0
+ bin-wrapper: 4.1.0
+
+ js-tokens@4.0.0: {}
+
+ js-yaml@4.1.1:
+ dependencies:
+ argparse: 2.0.1
+
+ jsesc@3.1.0: {}
+
+ json-buffer@3.0.0: {}
+
+ json-buffer@3.0.1: {}
+
+ json-parse-even-better-errors@2.3.1: {}
+
+ json-schema-traverse@0.4.1: {}
+
+ json-stable-stringify-without-jsonify@1.0.1: {}
+
+ json5@2.2.3: {}
+
+ jsonfile@6.2.0:
+ dependencies:
+ universalify: 2.0.1
+ optionalDependencies:
+ graceful-fs: 4.2.11
+
+ junk@3.1.0: {}
+
+ jwt-decode@4.0.0: {}
+
+ keyv@3.0.0:
+ dependencies:
+ json-buffer: 3.0.0
+
+ keyv@4.5.4:
+ dependencies:
+ json-buffer: 3.0.1
+
+ kolorist@1.8.0: {}
+
+ levn@0.4.1:
+ dependencies:
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+
+ lines-and-columns@1.2.4: {}
+
+ load-json-file@1.1.0:
+ dependencies:
+ graceful-fs: 4.2.11
+ parse-json: 2.2.0
+ pify: 2.3.0
+ pinkie-promise: 2.0.1
+ strip-bom: 2.0.0
+
+ locate-path@6.0.0:
+ dependencies:
+ p-locate: 5.0.0
+
+ lodash-es@4.17.22: {}
+
+ lodash.merge@4.6.2: {}
+
+ logalot@2.1.0:
+ dependencies:
+ figures: 1.7.0
+ squeak: 1.3.0
+
+ longest@1.0.1: {}
+
+ loose-envify@1.4.0:
+ dependencies:
+ js-tokens: 4.0.0
+
+ loud-rejection@1.6.0:
+ dependencies:
+ currently-unhandled: 0.4.1
+ signal-exit: 3.0.7
+
+ lowercase-keys@1.0.0: {}
+
+ lowercase-keys@1.0.1: {}
+
+ lpad-align@1.1.2:
+ dependencies:
+ get-stdin: 4.0.1
+ indent-string: 2.1.0
+ longest: 1.0.1
+ meow: 3.7.0
+
+ lru-cache@4.1.5:
+ dependencies:
+ pseudomap: 1.0.2
+ yallist: 2.1.2
+
+ lru-cache@5.1.1:
+ dependencies:
+ yallist: 3.1.1
+
+ magic-string@0.30.21:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+
+ make-dir@1.3.0:
+ dependencies:
+ pify: 3.0.0
+
+ make-dir@3.1.0:
+ dependencies:
+ semver: 6.3.1
+
+ map-obj@1.0.1: {}
+
+ math-intrinsics@1.1.0: {}
+
+ mdn-data@2.0.14: {}
+
+ memoize-one@5.2.1: {}
+
+ meow@3.7.0:
+ dependencies:
+ camelcase-keys: 2.1.0
+ decamelize: 1.2.0
+ loud-rejection: 1.6.0
+ map-obj: 1.0.1
+ minimist: 1.2.8
+ normalize-package-data: 2.5.0
+ object-assign: 4.1.1
+ read-pkg-up: 1.0.1
+ redent: 1.0.0
+ trim-newlines: 1.0.0
+
+ merge-stream@2.0.0: {}
+
+ merge2@1.4.1: {}
+
+ micromatch@4.0.8:
+ dependencies:
+ braces: 3.0.3
+ picomatch: 2.3.1
+
+ mime-db@1.54.0: {}
+
+ mime-types@3.0.2:
+ dependencies:
+ mime-db: 1.54.0
+
+ mimic-fn@2.1.0: {}
+
+ mimic-response@1.0.1: {}
+
+ minimatch@10.1.1:
+ dependencies:
+ '@isaacs/brace-expansion': 5.0.0
+
+ minimatch@3.1.2:
+ dependencies:
+ brace-expansion: 1.1.12
+
+ minimatch@9.0.5:
+ dependencies:
+ brace-expansion: 2.0.2
+
+ minimist@1.2.8: {}
+
+ mozjpeg@7.1.1:
+ dependencies:
+ bin-build: 3.0.0
+ bin-wrapper: 4.1.0
+
+ ms@2.1.3: {}
+
+ nanoid@3.3.11: {}
+
+ natural-compare@1.4.0: {}
+
+ nice-try@1.0.5: {}
+
+ node-html-parser@6.1.13:
+ dependencies:
+ css-select: 5.2.2
+ he: 1.2.0
+
+ node-releases@2.0.27: {}
+
+ normalize-package-data@2.5.0:
+ dependencies:
+ hosted-git-info: 2.8.9
+ resolve: 1.22.11
+ semver: 5.7.2
+ validate-npm-package-license: 3.0.4
+
+ normalize-url@2.0.1:
+ dependencies:
+ prepend-http: 2.0.0
+ query-string: 5.1.1
+ sort-keys: 2.0.0
+
+ npm-conf@1.1.3:
+ dependencies:
+ config-chain: 1.1.13
+ pify: 3.0.0
+
+ npm-run-path@2.0.2:
+ dependencies:
+ path-key: 2.0.1
+
+ npm-run-path@4.0.1:
+ dependencies:
+ path-key: 3.1.1
+
+ nth-check@2.1.1:
+ dependencies:
+ boolbase: 1.0.0
+
+ object-assign@4.1.1: {}
+
+ once@1.4.0:
+ dependencies:
+ wrappy: 1.0.2
+
+ onetime@5.1.2:
+ dependencies:
+ mimic-fn: 2.1.0
+
+ open@8.4.2:
+ dependencies:
+ define-lazy-prop: 2.0.0
+ is-docker: 2.2.1
+ is-wsl: 2.2.0
+
+ optionator@0.9.4:
+ dependencies:
+ deep-is: 0.1.4
+ fast-levenshtein: 2.0.6
+ levn: 0.4.1
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+ word-wrap: 1.2.5
+
+ optipng-bin@7.0.1:
+ dependencies:
+ bin-build: 3.0.0
+ bin-wrapper: 4.1.0
+
+ os-filter-obj@2.0.0:
+ dependencies:
+ arch: 2.2.0
+
+ ow@0.17.0:
+ dependencies:
+ type-fest: 0.11.0
+
+ p-cancelable@0.3.0: {}
+
+ p-cancelable@0.4.1: {}
+
+ p-event@1.3.0:
+ dependencies:
+ p-timeout: 1.2.1
+
+ p-event@2.3.1:
+ dependencies:
+ p-timeout: 2.0.1
+
+ p-finally@1.0.0: {}
+
+ p-is-promise@1.1.0: {}
+
+ p-limit@3.1.0:
+ dependencies:
+ yocto-queue: 0.1.0
+
+ p-locate@5.0.0:
+ dependencies:
+ p-limit: 3.1.0
+
+ p-map-series@1.0.0:
+ dependencies:
+ p-reduce: 1.0.0
+
+ p-pipe@3.1.0: {}
+
+ p-reduce@1.0.0: {}
+
+ p-timeout@1.2.1:
+ dependencies:
+ p-finally: 1.0.0
+
+ p-timeout@2.0.1:
+ dependencies:
+ p-finally: 1.0.0
+
+ parent-module@1.0.1:
+ dependencies:
+ callsites: 3.1.0
+
+ parse-imports-exports@0.2.4:
+ dependencies:
+ parse-statements: 1.0.11
+
+ parse-json@2.2.0:
+ dependencies:
+ error-ex: 1.3.4
+
+ parse-json@5.2.0:
+ dependencies:
+ '@babel/code-frame': 7.27.1
+ error-ex: 1.3.4
+ json-parse-even-better-errors: 2.3.1
+ lines-and-columns: 1.2.4
+
+ parse-statements@1.0.11: {}
+
+ path-exists@2.1.0:
+ dependencies:
+ pinkie-promise: 2.0.1
+
+ path-exists@4.0.0: {}
+
+ path-is-absolute@1.0.1: {}
+
+ path-key@2.0.1: {}
+
+ path-key@3.1.1: {}
+
+ path-parse@1.0.7: {}
+
+ path-type@1.1.0:
+ dependencies:
+ graceful-fs: 4.2.11
+ pify: 2.3.0
+ pinkie-promise: 2.0.1
+
+ path-type@4.0.0: {}
+
+ pathe@0.2.0: {}
+
+ pend@1.2.0: {}
+
+ picocolors@1.1.1: {}
+
+ picomatch@2.3.1: {}
+
+ picomatch@4.0.3: {}
+
+ pify@2.3.0: {}
+
+ pify@3.0.0: {}
+
+ pify@4.0.1: {}
+
+ pinkie-promise@2.0.1:
+ dependencies:
+ pinkie: 2.0.4
+
+ pinkie@2.0.4: {}
+
+ pngquant-bin@6.0.1:
+ dependencies:
+ bin-build: 3.0.0
+ bin-wrapper: 4.1.0
+ execa: 4.1.0
+
+ possible-typed-array-names@1.1.0: {}
+
+ postcss@8.5.6:
+ dependencies:
+ nanoid: 3.3.11
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
+ preact@10.28.2: {}
+
+ prelude-ls@1.2.1: {}
+
+ prepend-http@1.0.4: {}
+
+ prepend-http@2.0.0: {}
+
+ prettier@3.7.4: {}
+
+ process-nextick-args@2.0.1: {}
+
+ prop-types@15.8.1:
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+ react-is: 16.13.1
+
+ proto-list@1.2.4: {}
+
+ pseudomap@1.0.2: {}
+
+ pump@3.0.3:
+ dependencies:
+ end-of-stream: 1.4.5
+ once: 1.4.0
+
+ punycode@2.3.1: {}
+
+ query-string@5.1.1:
+ dependencies:
+ decode-uri-component: 0.2.2
+ object-assign: 4.1.1
+ strict-uri-encode: 1.1.0
+
+ queue-microtask@1.2.3: {}
+
+ rate-limiter-flexible@5.0.5: {}
+
+ react-dom@19.2.3(react@19.2.3):
+ dependencies:
+ react: 19.2.3
+ scheduler: 0.27.0
+
+ react-icons@5.5.0(react@19.2.3):
+ dependencies:
+ react: 19.2.3
+
+ react-is@16.13.1: {}
+
+ react-is@19.2.3: {}
+
+ react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
+ dependencies:
+ cookie: 1.1.1
+ react: 19.2.3
+ set-cookie-parser: 2.7.2
+ optionalDependencies:
+ react-dom: 19.2.3(react@19.2.3)
+
+ react-toastify@11.0.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
+ dependencies:
+ clsx: 2.1.1
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+
+ react-transition-group@4.4.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
+ dependencies:
+ '@babel/runtime': 7.28.4
+ dom-helpers: 5.2.1
+ loose-envify: 1.4.0
+ prop-types: 15.8.1
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+
+ react-virtualized-auto-sizer@1.0.26(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
+ dependencies:
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+
+ react-window@1.8.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
+ dependencies:
+ '@babel/runtime': 7.28.4
+ memoize-one: 5.2.1
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+
+ react@19.2.3: {}
+
+ read-pkg-up@1.0.1:
+ dependencies:
+ find-up: 1.1.2
+ read-pkg: 1.1.0
+
+ read-pkg@1.1.0:
+ dependencies:
+ load-json-file: 1.1.0
+ normalize-package-data: 2.5.0
+ path-type: 1.1.0
+
+ readable-stream@2.3.8:
+ dependencies:
+ core-util-is: 1.0.3
+ inherits: 2.0.4
+ isarray: 1.0.0
+ process-nextick-args: 2.0.1
+ safe-buffer: 5.1.2
+ string_decoder: 1.1.1
+ util-deprecate: 1.0.2
+
+ redent@1.0.0:
+ dependencies:
+ indent-string: 2.1.0
+ strip-indent: 1.0.1
+
+ repeating@2.0.1:
+ dependencies:
+ is-finite: 1.1.0
+
+ replace-ext@1.0.1: {}
+
+ require-directory@2.1.1: {}
+
+ resolve-from@4.0.0: {}
+
+ resolve@1.22.11:
+ dependencies:
+ is-core-module: 2.16.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+
+ responselike@1.0.2:
+ dependencies:
+ lowercase-keys: 1.0.1
+
+ reusify@1.1.0: {}
+
+ rimraf@2.7.1:
+ dependencies:
+ glob: 7.2.3
+
+ rollup-plugin-visualizer@6.0.5(rollup@4.55.1):
+ dependencies:
+ open: 8.4.2
+ picomatch: 4.0.3
+ source-map: 0.7.6
+ yargs: 17.7.2
+ optionalDependencies:
+ rollup: 4.55.1
+
+ rollup@4.55.1:
+ dependencies:
+ '@types/estree': 1.0.8
+ optionalDependencies:
+ '@rollup/rollup-android-arm-eabi': 4.55.1
+ '@rollup/rollup-android-arm64': 4.55.1
+ '@rollup/rollup-darwin-arm64': 4.55.1
+ '@rollup/rollup-darwin-x64': 4.55.1
+ '@rollup/rollup-freebsd-arm64': 4.55.1
+ '@rollup/rollup-freebsd-x64': 4.55.1
+ '@rollup/rollup-linux-arm-gnueabihf': 4.55.1
+ '@rollup/rollup-linux-arm-musleabihf': 4.55.1
+ '@rollup/rollup-linux-arm64-gnu': 4.55.1
+ '@rollup/rollup-linux-arm64-musl': 4.55.1
+ '@rollup/rollup-linux-loong64-gnu': 4.55.1
+ '@rollup/rollup-linux-loong64-musl': 4.55.1
+ '@rollup/rollup-linux-ppc64-gnu': 4.55.1
+ '@rollup/rollup-linux-ppc64-musl': 4.55.1
+ '@rollup/rollup-linux-riscv64-gnu': 4.55.1
+ '@rollup/rollup-linux-riscv64-musl': 4.55.1
+ '@rollup/rollup-linux-s390x-gnu': 4.55.1
+ '@rollup/rollup-linux-x64-gnu': 4.55.1
+ '@rollup/rollup-linux-x64-musl': 4.55.1
+ '@rollup/rollup-openbsd-x64': 4.55.1
+ '@rollup/rollup-openharmony-arm64': 4.55.1
+ '@rollup/rollup-win32-arm64-msvc': 4.55.1
+ '@rollup/rollup-win32-ia32-msvc': 4.55.1
+ '@rollup/rollup-win32-x64-gnu': 4.55.1
+ '@rollup/rollup-win32-x64-msvc': 4.55.1
+ fsevents: 2.3.3
+
+ run-parallel@1.2.0:
+ dependencies:
+ queue-microtask: 1.2.3
+
+ rxjs@7.8.2:
+ dependencies:
+ tslib: 2.8.1
+
+ safe-buffer@5.1.2: {}
+
+ safe-buffer@5.2.1: {}
+
+ scheduler@0.27.0: {}
+
+ seek-bzip@1.0.6:
+ dependencies:
+ commander: 2.20.3
+
+ semver-regex@2.0.0: {}
+
+ semver-truncate@1.1.2:
+ dependencies:
+ semver: 5.7.2
+
+ semver@5.7.2: {}
+
+ semver@6.3.1: {}
+
+ semver@7.7.3: {}
+
+ set-cookie-parser@2.7.2: {}
+
+ set-function-length@1.2.2:
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.3.0
+ gopd: 1.2.0
+ has-property-descriptors: 1.0.2
+
+ shebang-command@1.2.0:
+ dependencies:
+ shebang-regex: 1.0.0
+
+ shebang-command@2.0.0:
+ dependencies:
+ shebang-regex: 3.0.0
+
+ shebang-regex@1.0.0: {}
+
+ shebang-regex@3.0.0: {}
+
+ shell-quote@1.8.3: {}
+
+ signal-exit@3.0.7: {}
+
+ simple-code-frame@1.3.0:
+ dependencies:
+ kolorist: 1.8.0
+
+ slash@3.0.0: {}
+
+ sort-keys-length@1.0.1:
+ dependencies:
+ sort-keys: 1.1.2
+
+ sort-keys@1.1.2:
+ dependencies:
+ is-plain-obj: 1.1.0
+
+ sort-keys@2.0.0:
+ dependencies:
+ is-plain-obj: 1.1.0
+
+ source-map-js@1.2.1: {}
+
+ source-map-support@0.5.21:
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
+
+ source-map@0.5.7: {}
+
+ source-map@0.6.1: {}
+
+ source-map@0.7.6: {}
+
+ spdx-correct@3.2.0:
+ dependencies:
+ spdx-expression-parse: 3.0.1
+ spdx-license-ids: 3.0.22
+
+ spdx-exceptions@2.5.0: {}
+
+ spdx-expression-parse@3.0.1:
+ dependencies:
+ spdx-exceptions: 2.5.0
+ spdx-license-ids: 3.0.22
+
+ spdx-license-ids@3.0.22: {}
+
+ squeak@1.3.0:
+ dependencies:
+ chalk: 1.1.3
+ console-stream: 0.1.1
+ lpad-align: 1.1.2
+
+ stable@0.1.8: {}
+
+ stack-trace@1.0.0-pre2: {}
+
+ strict-uri-encode@1.1.0: {}
+
+ string-width@4.2.3:
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+
+ string_decoder@1.1.1:
+ dependencies:
+ safe-buffer: 5.1.2
+
+ strip-ansi@3.0.1:
+ dependencies:
+ ansi-regex: 2.1.1
+
+ strip-ansi@6.0.1:
+ dependencies:
+ ansi-regex: 5.0.1
+
+ strip-bom@2.0.0:
+ dependencies:
+ is-utf8: 0.2.1
+
+ strip-dirs@2.1.0:
+ dependencies:
+ is-natural-number: 4.0.1
+
+ strip-eof@1.0.0: {}
+
+ strip-final-newline@2.0.0: {}
+
+ strip-indent@1.0.1:
+ dependencies:
+ get-stdin: 4.0.1
+
+ strip-json-comments@3.1.1: {}
+
+ strip-outer@1.0.1:
+ dependencies:
+ escape-string-regexp: 1.0.5
+
+ strnum@1.1.2: {}
+
+ stylis@4.2.0: {}
+
+ supports-color@2.0.0: {}
+
+ supports-color@7.2.0:
+ dependencies:
+ has-flag: 4.0.0
+
+ supports-color@8.1.1:
+ dependencies:
+ has-flag: 4.0.0
+
+ supports-preserve-symlinks-flag@1.0.0: {}
+
+ svgo@2.8.0:
+ dependencies:
+ '@trysound/sax': 0.2.0
+ commander: 7.2.0
+ css-select: 4.3.0
+ css-tree: 1.1.3
+ csso: 4.2.0
+ picocolors: 1.1.1
+ stable: 0.1.8
+
+ tar-stream@1.6.2:
+ dependencies:
+ bl: 1.2.3
+ buffer-alloc: 1.2.0
+ end-of-stream: 1.4.5
+ fs-constants: 1.0.0
+ readable-stream: 2.3.8
+ to-buffer: 1.2.2
+ xtend: 4.0.2
+
+ temp-dir@1.0.0: {}
+
+ tempfile@2.0.0:
+ dependencies:
+ temp-dir: 1.0.0
+ uuid: 3.4.0
+
+ terser@5.44.1:
+ dependencies:
+ '@jridgewell/source-map': 0.3.11
+ acorn: 8.15.0
+ commander: 2.20.3
+ source-map-support: 0.5.21
+
+ through@2.3.8: {}
+
+ timed-out@4.0.1: {}
+
+ tinyglobby@0.2.15:
+ dependencies:
+ fdir: 6.5.0(picomatch@4.0.3)
+ picomatch: 4.0.3
+
+ to-buffer@1.2.2:
+ dependencies:
+ isarray: 2.0.5
+ safe-buffer: 5.2.1
+ typed-array-buffer: 1.0.3
+
+ to-regex-range@5.0.1:
+ dependencies:
+ is-number: 7.0.0
+
+ tree-kill@1.2.2: {}
+
+ trim-newlines@1.0.0: {}
+
+ trim-repeated@1.0.0:
+ dependencies:
+ escape-string-regexp: 1.0.5
+
+ ts-api-utils@2.4.0(typescript@5.9.3):
+ dependencies:
+ typescript: 5.9.3
+
+ tsconfck@3.1.6(typescript@5.9.3):
+ optionalDependencies:
+ typescript: 5.9.3
+
+ tslib@2.8.1: {}
+
+ tunnel-agent@0.6.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ type-check@0.4.0:
+ dependencies:
+ prelude-ls: 1.2.1
+
+ type-fest@0.11.0: {}
+
+ typed-array-buffer@1.0.3:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-typed-array: 1.1.15
+
+ typesafe-i18n@5.26.2(typescript@5.9.3):
+ dependencies:
+ typescript: 5.9.3
+
+ typescript-eslint@8.52.0(eslint@9.39.2)(typescript@5.9.3):
+ dependencies:
+ '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)
+ '@typescript-eslint/parser': 8.52.0(eslint@9.39.2)(typescript@5.9.3)
+ '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3)
+ eslint: 9.39.2
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ typescript@5.9.3: {}
+
+ unbzip2-stream@1.4.3:
+ dependencies:
+ buffer: 5.7.1
+ through: 2.3.8
+
+ undici-types@7.16.0: {}
+
+ universalify@2.0.1: {}
+
+ update-browserslist-db@1.2.3(browserslist@4.28.1):
+ dependencies:
+ browserslist: 4.28.1
+ escalade: 3.2.0
+ picocolors: 1.1.1
+
+ uri-js@4.4.1:
+ dependencies:
+ punycode: 2.3.1
+
+ url-parse-lax@1.0.0:
+ dependencies:
+ prepend-http: 1.0.4
+
+ url-parse-lax@3.0.0:
+ dependencies:
+ prepend-http: 2.0.0
+
+ url-to-options@1.0.1: {}
+
+ util-deprecate@1.0.2: {}
+
+ uuid@3.4.0: {}
+
+ validate-npm-package-license@3.0.4:
+ dependencies:
+ spdx-correct: 3.2.0
+ spdx-expression-parse: 3.0.1
+
+ vite-plugin-imagemin@0.6.1(vite@7.3.1(@types/node@25.0.6)(terser@5.44.1)):
+ dependencies:
+ '@types/imagemin': 7.0.1
+ '@types/imagemin-gifsicle': 7.0.4
+ '@types/imagemin-jpegtran': 5.0.4
+ '@types/imagemin-mozjpeg': 8.0.4
+ '@types/imagemin-optipng': 5.2.4
+ '@types/imagemin-svgo': 10.0.5
+ '@types/imagemin-webp': 7.0.3
+ '@types/svgo': 2.6.4
+ chalk: 4.1.2
+ debug: 4.4.3
+ esbuild: 0.14.54
+ fs-extra: 10.1.0
+ gifsicle: 5.2.0
+ imagemin: 7.0.1
+ imagemin-gifsicle: 7.0.0
+ imagemin-jpegtran: 7.0.0
+ imagemin-mozjpeg: 9.0.0
+ imagemin-optipng: 8.0.0
+ imagemin-pngquant: 9.0.2
+ imagemin-svgo: 9.0.0
+ imagemin-webp: 6.1.0
+ jpegtran-bin: 6.0.1
+ pathe: 0.2.0
+ vite: 7.3.1(@types/node@25.0.6)(terser@5.44.1)
+ transitivePeerDependencies:
+ - supports-color
+
+ vite-prerender-plugin@0.5.12(vite@7.3.1(@types/node@25.0.6)(terser@5.44.1)):
+ dependencies:
+ kolorist: 1.8.0
+ magic-string: 0.30.21
+ node-html-parser: 6.1.13
+ simple-code-frame: 1.3.0
+ source-map: 0.7.6
+ stack-trace: 1.0.0-pre2
+ vite: 7.3.1(@types/node@25.0.6)(terser@5.44.1)
+
+ vite-tsconfig-paths@6.0.4(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.6)(terser@5.44.1)):
+ dependencies:
+ debug: 4.4.3
+ globrex: 0.1.2
+ tsconfck: 3.1.6(typescript@5.9.3)
+ optionalDependencies:
+ vite: 7.3.1(@types/node@25.0.6)(terser@5.44.1)
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ vite@7.3.1(@types/node@25.0.6)(terser@5.44.1):
+ dependencies:
+ esbuild: 0.27.2
+ fdir: 6.5.0(picomatch@4.0.3)
+ picomatch: 4.0.3
+ postcss: 8.5.6
+ rollup: 4.55.1
+ tinyglobby: 0.2.15
+ optionalDependencies:
+ '@types/node': 25.0.6
+ fsevents: 2.3.3
+ terser: 5.44.1
+
+ which-typed-array@1.1.19:
+ dependencies:
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ for-each: 0.3.5
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-tostringtag: 1.0.2
+
+ which@1.3.1:
+ dependencies:
+ isexe: 2.0.0
+
+ which@2.0.2:
+ dependencies:
+ isexe: 2.0.0
+
+ word-wrap@1.2.5: {}
+
+ wrap-ansi@7.0.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ wrappy@1.0.2: {}
+
+ xtend@4.0.2: {}
+
+ y18n@5.0.8: {}
+
+ yallist@2.1.2: {}
+
+ yallist@3.1.1: {}
+
+ yaml@1.10.2: {}
+
+ yargs-parser@21.1.1: {}
+
+ yargs@17.7.2:
+ dependencies:
+ cliui: 8.0.1
+ escalade: 3.2.0
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.8
+ yargs-parser: 21.1.1
+
+ yauzl@2.10.0:
+ dependencies:
+ buffer-crc32: 0.2.13
+ fd-slicer: 1.1.0
+
+ yocto-queue@0.1.0: {}
diff --git a/interface/src/app/main/Customizations.tsx b/interface/src/app/main/Customizations.tsx
index a387774cc..21711380e 100644
--- a/interface/src/app/main/Customizations.tsx
+++ b/interface/src/app/main/Customizations.tsx
@@ -788,10 +788,12 @@ const Customizations = () => {
>
);
- return (
+ return restarting ? (
+
+ ) : (
{blocker ? : null}
- {restarting ? : renderContent()}
+ {renderContent()}
{selectedDeviceEntity && (
= {
active: false,
deleted: false,
- flags: ScheduleFlag.SCHEDULE_DAY,
+ flags: FLAG_ALL_DAYS,
time: '',
cmd: '',
value: '',
diff --git a/interface/src/app/main/SchedulerDialog.tsx b/interface/src/app/main/SchedulerDialog.tsx
index 06495fd94..881aa14d0 100644
--- a/interface/src/app/main/SchedulerDialog.tsx
+++ b/interface/src/app/main/SchedulerDialog.tsx
@@ -33,7 +33,8 @@ import type { ScheduleItem } from './types';
// Constants
const FLAG_MASK_127 = 127;
-const SCHEDULE_TYPE_THRESHOLD = 128;
+const SCHEDULE_TYPE_THRESHOLD = 127;
+const FLAG_ALL_DAYS = 127;
const DEFAULT_TIME = '00:00';
const TYPOGRAPHY_FONT_SIZE = 10;
@@ -104,7 +105,7 @@ const SchedulerDialog = ({
// 130 is on condition
// 132 is immediate
setScheduleType(
- selectedItem.flags < SCHEDULE_TYPE_THRESHOLD
+ selectedItem.flags <= SCHEDULE_TYPE_THRESHOLD
? ScheduleFlag.SCHEDULE_DAY
: selectedItem.flags
);
@@ -181,7 +182,7 @@ const SchedulerDialog = ({
setScheduleType(flag);
// wipe the time field when changing the schedule type
// set the flags based on type
- const newFlags = flag === ScheduleFlag.SCHEDULE_DAY ? 0 : flag;
+ const newFlags = flag === ScheduleFlag.SCHEDULE_DAY ? FLAG_ALL_DAYS : flag;
setEditItem((prev) => ({ ...prev, time: '', flags: newFlags }));
}
},
@@ -190,7 +191,8 @@ const SchedulerDialog = ({
const handleDOWChange = useCallback(
(_event: React.SyntheticEvent, flags: string[]) => {
- const newFlags = getFlagDOWnumber(flags);
+ const newFlags =
+ getFlagDOWnumber(flags) === 0 ? FLAG_ALL_DAYS : getFlagDOWnumber(flags);
setEditItem((prev) => ({ ...prev, flags: newFlags }));
},
[getFlagDOWnumber]
diff --git a/interface/src/app/main/types.ts b/interface/src/app/main/types.ts
index 67b88d10e..492ccc532 100644
--- a/interface/src/app/main/types.ts
+++ b/interface/src/app/main/types.ts
@@ -196,7 +196,7 @@ export enum DeviceValueUOM {
MBAR,
LH,
CTKWH,
- HZ
+ HERTZ
}
export const DeviceValueUOM_s = [
diff --git a/interface/src/app/settings/ApplicationSettings.tsx b/interface/src/app/settings/ApplicationSettings.tsx
index 826af46ea..61841d305 100644
--- a/interface/src/app/settings/ApplicationSettings.tsx
+++ b/interface/src/app/settings/ApplicationSettings.tsx
@@ -489,17 +489,25 @@ const ApplicationSettings = () => {
name="board_profile"
label={LL.BOARD_PROFILE()}
value={data.board_profile}
- disabled={processingBoard || hardwareData.model.startsWith('BBQKees')}
+ disabled={processingBoard}
variant="outlined"
onChange={changeBoardProfile}
margin="normal"
select
>
- {boardProfileItems}
-
-
+ {hardwareData.model.startsWith('BBQKees') ? (
+
+ ) : (
+ boardProfileItems
+ )}
+ {(data.board_profile === 'CUSTOM' || data.developer_mode) && }
+ {(data.board_profile === 'CUSTOM' || data.developer_mode) && (
+
+ )}
{data.board_profile === 'CUSTOM' && (
<>
@@ -896,10 +904,12 @@ const ApplicationSettings = () => {
);
};
- return (
+ return restarting ? (
+
+ ) : (
{blocker ? : null}
- {restarting ? : content()}
+ {content()}
);
};
diff --git a/interface/src/app/settings/MqttSettings.tsx b/interface/src/app/settings/MqttSettings.tsx
index 2d02f94b3..f910cadcd 100644
--- a/interface/src/app/settings/MqttSettings.tsx
+++ b/interface/src/app/settings/MqttSettings.tsx
@@ -345,75 +345,91 @@ const MqttSettings = () => {
)}
-
-
-
- }
- label={LL.MQTT_PUBLISH_TEXT_3()}
- />
-
- {data.ha_enabled && (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- )}
+ {/* */}
+
+
+ }
+ label={LL.MQTT_PUBLISH_TEXT_3()}
+ />
+ {data.ha_enabled && (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {data.discovery_type === 0 && (
+
+
+
+
+ )}
+
+
+ )}
{LL.MQTT_PUBLISH_INTERVALS()} (0=auto)
diff --git a/interface/src/app/settings/Settings.tsx b/interface/src/app/settings/Settings.tsx
index 608c37ee9..a8130bb24 100644
--- a/interface/src/app/settings/Settings.tsx
+++ b/interface/src/app/settings/Settings.tsx
@@ -182,7 +182,7 @@ const Settings = () => {
restarting
]);
- return {restarting ? : content};
+ return restarting ? : {content};
};
export default Settings;
diff --git a/interface/src/app/settings/network/NetworkSettings.tsx b/interface/src/app/settings/network/NetworkSettings.tsx
index 5f525a992..92651c654 100644
--- a/interface/src/app/settings/network/NetworkSettings.tsx
+++ b/interface/src/app/settings/network/NetworkSettings.tsx
@@ -397,10 +397,12 @@ const NetworkSettings = () => {
);
};
- return (
+ return restarting ? (
+
+ ) : (
{blocker ? : null}
- {restarting ? : content()}
+ {content()}
);
};
diff --git a/interface/src/app/status/Status.tsx b/interface/src/app/status/Status.tsx
index be5427785..1d87a5d4d 100644
--- a/interface/src/app/status/Status.tsx
+++ b/interface/src/app/status/Status.tsx
@@ -443,7 +443,7 @@ const SystemStatus = () => {
renderRestartDialog
]);
- return {restarting ? : content};
+ return restarting ? : {content};
};
export default SystemStatus;
diff --git a/interface/src/app/status/SystemMonitor.tsx b/interface/src/app/status/SystemMonitor.tsx
index 492049074..7e7c289af 100644
--- a/interface/src/app/status/SystemMonitor.tsx
+++ b/interface/src/app/status/SystemMonitor.tsx
@@ -103,8 +103,8 @@ const SystemMonitor = () => {
height: '100vh',
display: 'flex',
alignItems: 'center',
- justifyContent: 'center',
- backdropFilter: 'blur(8px)'
+ justifyContent: 'center'
+ // backdropFilter: 'blur(8px)'
}}
>
{
installPartitionFirmware
]);
- return {restarting ? : content};
+ return restarting ? : {content};
};
export default memo(Version);
diff --git a/interface/src/components/ButtonRow.tsx b/interface/src/components/ButtonRow.tsx
index 8fff5e161..562fd4b19 100644
--- a/interface/src/components/ButtonRow.tsx
+++ b/interface/src/components/ButtonRow.tsx
@@ -1,9 +1,9 @@
-import { memo } from 'react';
+import { type FC, type PropsWithChildren, memo } from 'react';
import { Box } from '@mui/material';
import type { BoxProps } from '@mui/material';
-const ButtonRow = memo(({ children, ...rest }) => (
+const ButtonRow: FC> = memo(({ children, ...rest }) => (
> = {
@@ -28,7 +29,7 @@ const LEVEL_PALETTE_PATHS: Record = {
error: 'error.dark'
};
-const MessageBox: FC = ({
+const MessageBox: FC> = ({
level,
message,
sx,
diff --git a/interface/src/components/layout/LayoutMenuItem.tsx b/interface/src/components/layout/LayoutMenuItem.tsx
index b19652cca..a0dbc8354 100644
--- a/interface/src/components/layout/LayoutMenuItem.tsx
+++ b/interface/src/components/layout/LayoutMenuItem.tsx
@@ -39,9 +39,8 @@ const LayoutMenuItemComponent = ({
left: 0,
top: 0,
bottom: 0,
- width: selected ? '4px' : '0px',
+ width: selected ? '3px' : '0px',
backgroundColor: '#90caf9',
- borderRadius: '0 2px 2px 0',
transition: 'width 0.05s cubic-bezier(0.55, 0.085, 0.68, 0.53)'
}
}),
diff --git a/interface/src/i18n/cz/index.ts b/interface/src/i18n/cz/index.ts
index efc1c6887..27cef9a70 100644
--- a/interface/src/i18n/cz/index.ts
+++ b/interface/src/i18n/cz/index.ts
@@ -219,6 +219,7 @@ const cz: Translation = {
MQTT_PUBLISH_TEXT_3: 'Povolit MQTT Discovery',
MQTT_PUBLISH_TEXT_4: 'Prefix pro Discovery témata',
MQTT_PUBLISH_TEXT_5: 'Typ Discovery',
+ MQTT_INPUT_NUMBER_FORMAT: 'Formát čísla',
MQTT_PUBLISH_INTERVALS: 'Intervaly publikování',
MQTT_INT_BOILER: 'Kotle a tepelná čerpadla',
MQTT_INT_THERMOSTATS: 'Termostaty',
diff --git a/interface/src/i18n/de/index.ts b/interface/src/i18n/de/index.ts
index 8aa4e1dc8..53634bde9 100644
--- a/interface/src/i18n/de/index.ts
+++ b/interface/src/i18n/de/index.ts
@@ -219,6 +219,7 @@ const de: Translation = {
MQTT_PUBLISH_TEXT_3: 'Aktiviere `MQTT Discovery`',
MQTT_PUBLISH_TEXT_4: 'Prefix für die `Discovery`-Topics',
MQTT_PUBLISH_TEXT_5: 'Discovery Typ',
+ MQTT_INPUT_NUMBER_FORMAT: 'Zahlenformat',
MQTT_PUBLISH_INTERVALS: 'Veröffentlichungs-Intervalle',
MQTT_INT_BOILER: 'Boiler und Wärmepumpen',
MQTT_INT_THERMOSTATS: 'Thermostate',
diff --git a/interface/src/i18n/en/index.ts b/interface/src/i18n/en/index.ts
index bdb05a480..7196fcd6e 100644
--- a/interface/src/i18n/en/index.ts
+++ b/interface/src/i18n/en/index.ts
@@ -219,6 +219,7 @@ const en: Translation = {
MQTT_PUBLISH_TEXT_3: 'Enable MQTT Discovery',
MQTT_PUBLISH_TEXT_4: 'Prefix for the Discovery topics',
MQTT_PUBLISH_TEXT_5: 'Discovery type',
+ MQTT_INPUT_NUMBER_FORMAT: 'Input Number Fomat',
MQTT_PUBLISH_INTERVALS: 'Publish Intervals',
MQTT_INT_BOILER: 'Boilers and Heat Pumps',
MQTT_INT_THERMOSTATS: 'Thermostats',
diff --git a/interface/src/i18n/fr/index.ts b/interface/src/i18n/fr/index.ts
index 008df1fcd..13a18327a 100644
--- a/interface/src/i18n/fr/index.ts
+++ b/interface/src/i18n/fr/index.ts
@@ -219,6 +219,7 @@ const fr: Translation = {
MQTT_PUBLISH_TEXT_3: 'Activer la découverte MQTT',
MQTT_PUBLISH_TEXT_4: 'Préfixe pour les topics découverte',
MQTT_PUBLISH_TEXT_5: 'Type de découverte',
+ MQTT_INPUT_NUMBER_FORMAT: 'Format des nombres',
MQTT_PUBLISH_INTERVALS: 'Intervalles de publication',
MQTT_INT_BOILER: 'Chaudières et pompes à chaleur',
MQTT_INT_THERMOSTATS: 'Thermostats',
diff --git a/interface/src/i18n/it/index.ts b/interface/src/i18n/it/index.ts
index cd38ed18a..51f29f9fe 100644
--- a/interface/src/i18n/it/index.ts
+++ b/interface/src/i18n/it/index.ts
@@ -219,6 +219,7 @@ const it: Translation = {
MQTT_PUBLISH_TEXT_3: 'Abilita rilevamento MQTT (Home Assistant, Domoticz)',
MQTT_PUBLISH_TEXT_4: 'Prefisso per gli argomenti di scoperta',
MQTT_PUBLISH_TEXT_5: 'Discovery type',
+ MQTT_INPUT_NUMBER_FORMAT: 'Formato numero di input',
MQTT_PUBLISH_INTERVALS: 'Pubblica intervalli',
MQTT_INT_BOILER: 'Caldaie e Pompe di Calore',
MQTT_INT_THERMOSTATS: 'Termostati',
diff --git a/interface/src/i18n/nl/index.ts b/interface/src/i18n/nl/index.ts
index 3f23c42db..9463088a8 100644
--- a/interface/src/i18n/nl/index.ts
+++ b/interface/src/i18n/nl/index.ts
@@ -219,6 +219,7 @@ const nl: Translation = {
MQTT_PUBLISH_TEXT_3: 'Activeer MQTT Discovery',
MQTT_PUBLISH_TEXT_4: 'Prefix voor de Discovery topics',
MQTT_PUBLISH_TEXT_5: 'Discovery type',
+ MQTT_INPUT_NUMBER_FORMAT: 'Getalformaat',
MQTT_PUBLISH_INTERVALS: 'Publicatie intervallen',
MQTT_INT_BOILER: 'CV ketels en warmtepompen',
MQTT_INT_THERMOSTATS: 'Thermostaten',
diff --git a/interface/src/i18n/no/index.ts b/interface/src/i18n/no/index.ts
index 88af2bc43..63365268d 100644
--- a/interface/src/i18n/no/index.ts
+++ b/interface/src/i18n/no/index.ts
@@ -219,6 +219,7 @@ const no: Translation = {
MQTT_PUBLISH_TEXT_3: 'Aktiver MQTT Discovery',
MQTT_PUBLISH_TEXT_4: 'Prefiks for Discovery topics',
MQTT_PUBLISH_TEXT_5: 'Discovery type',
+ MQTT_INPUT_NUMBER_FORMAT: 'Nummerformat',
MQTT_PUBLISH_INTERVALS: 'Publiseringsintervall',
MQTT_INT_BOILER: 'Fyr/Varmepumpe',
MQTT_INT_THERMOSTATS: 'Termostat',
diff --git a/interface/src/i18n/pl/index.ts b/interface/src/i18n/pl/index.ts
index 07b003447..60ee8b58f 100644
--- a/interface/src/i18n/pl/index.ts
+++ b/interface/src/i18n/pl/index.ts
@@ -219,6 +219,7 @@ const pl: BaseTranslation = {
MQTT_PUBLISH_TEXT_3: 'Włącz opcję "MQTT discovery"',
MQTT_PUBLISH_TEXT_4: 'Prefiks dla "MQTT discovery"',
MQTT_PUBLISH_TEXT_5: 'Typ "MQTT discovery"',
+ MQTT_INPUT_NUMBER_FORMAT: 'Format liczby',
MQTT_PUBLISH_INTERVALS: 'Interwały publikowania',
MQTT_INT_BOILER: 'Kotły i pompy ciepła',
MQTT_INT_THERMOSTATS: 'Termostaty',
diff --git a/interface/src/i18n/sk/index.ts b/interface/src/i18n/sk/index.ts
index 7950f2e05..e74175241 100644
--- a/interface/src/i18n/sk/index.ts
+++ b/interface/src/i18n/sk/index.ts
@@ -219,6 +219,7 @@ const sk: Translation = {
MQTT_PUBLISH_TEXT_3: 'Povolenie zisťovania MQTT',
MQTT_PUBLISH_TEXT_4: 'Predpona tém Discovery',
MQTT_PUBLISH_TEXT_5: 'Typ zistenia',
+ MQTT_INPUT_NUMBER_FORMAT: 'Formát čísla',
MQTT_PUBLISH_INTERVALS: 'Intervaly zverejňovania',
MQTT_INT_BOILER: 'Kotly a tepelné čerpadlá',
MQTT_INT_THERMOSTATS: 'Termostaty',
diff --git a/interface/src/i18n/sv/index.ts b/interface/src/i18n/sv/index.ts
index a8fd58d23..7ff150a83 100644
--- a/interface/src/i18n/sv/index.ts
+++ b/interface/src/i18n/sv/index.ts
@@ -219,6 +219,7 @@ const sv: Translation = {
MQTT_PUBLISH_TEXT_3: 'Aktivera MQTT Discovery',
MQTT_PUBLISH_TEXT_4: 'Prefix för Discovery topics',
MQTT_PUBLISH_TEXT_5: 'Discoverytyp',
+ MQTT_INPUT_NUMBER_FORMAT: 'Nummerformat',
MQTT_PUBLISH_INTERVALS: 'Publiceringsintervall',
MQTT_INT_BOILER: 'Värmepump/panna',
MQTT_INT_THERMOSTATS: 'Termostater',
diff --git a/interface/src/i18n/tr/index.ts b/interface/src/i18n/tr/index.ts
index d931077f1..f280a7183 100644
--- a/interface/src/i18n/tr/index.ts
+++ b/interface/src/i18n/tr/index.ts
@@ -219,6 +219,7 @@ const tr: Translation = {
MQTT_PUBLISH_TEXT_3: 'MQTT keşfi etkinleştir (Home Assistant, Domoticz)',
MQTT_PUBLISH_TEXT_4: 'Keşif konuları için ön ek',
MQTT_PUBLISH_TEXT_5: 'Domoticz Format',
+ MQTT_INPUT_NUMBER_FORMAT: 'Sayı Biçimi',
MQTT_PUBLISH_INTERVALS: 'Yayınlama aralıkları',
MQTT_INT_BOILER: 'Kazanlar ve Isı Pompaları',
MQTT_INT_THERMOSTATS: 'Termostatlar',
diff --git a/interface/src/types/mqtt.ts b/interface/src/types/mqtt.ts
index 738dafa75..346df7fe6 100644
--- a/interface/src/types/mqtt.ts
+++ b/interface/src/types/mqtt.ts
@@ -49,4 +49,5 @@ export interface MqttSettingsType {
publish_single2cmd: boolean;
discovery_prefix: string;
discovery_type: number;
+ ha_number_mode: number;
}
diff --git a/interface/src/types/system.ts b/interface/src/types/system.ts
index b68ce3ce1..077d45c28 100644
--- a/interface/src/types/system.ts
+++ b/interface/src/types/system.ts
@@ -50,6 +50,7 @@ export interface SystemStatus {
free_psram?: number;
free_caps: number;
model: string;
+ board: string;
has_loader: boolean;
has_partition: boolean;
partitions: {
diff --git a/interface/vite.config.ts b/interface/vite.config.ts
index d73dc869f..2369cc845 100644
--- a/interface/vite.config.ts
+++ b/interface/vite.config.ts
@@ -136,9 +136,16 @@ const createManualChunks = (detailed = false) => {
return 'vendor';
}
if (detailed) {
- if (id.includes('components/')) return 'components';
- if (id.includes('app/')) return 'app';
- if (id.includes('utils/')) return 'utils';
+ // Group circularly dependent modules together to avoid circular chunk warnings
+ // components, app, and utils are tightly coupled, so combine them
+ if (
+ id.includes('components/') ||
+ id.includes('app/') ||
+ id.includes('utils/')
+ ) {
+ return 'app';
+ }
+ // Keep api separate as it's typically more independent
if (id.includes('api/')) return 'api';
}
return undefined;
diff --git a/lib/eModbus/src/ModbusClientTCPasync.cpp b/lib/eModbus/src/ModbusClientTCPasync.cpp
index 949de2c49..cebdd7a30 100644
--- a/lib/eModbus/src/ModbusClientTCPasync.cpp
+++ b/lib/eModbus/src/ModbusClientTCPasync.cpp
@@ -52,7 +52,7 @@ ModbusClientTCPasync::~ModbusClientTCPasync() {
}
}
// force close client
- MTA_client.close(true);
+ MTA_client.close();
}
// optionally manually connect to modbus server. Otherwise connection will be made upon first request
@@ -79,7 +79,7 @@ void ModbusClientTCPasync::connect(IPAddress host, uint16_t port) {
// manually disconnect from modbus server. Connection will also auto close after idle time
void ModbusClientTCPasync::disconnect(bool force) {
LOG_D("disconnecting\n");
- MTA_client.close(force);
+ MTA_client.close();
}
// Set timeout value
diff --git a/lib/eModbus/src/ModbusServerTCPasync.cpp b/lib/eModbus/src/ModbusServerTCPasync.cpp
index e8d0a43dc..be2b0cbf1 100644
--- a/lib/eModbus/src/ModbusServerTCPasync.cpp
+++ b/lib/eModbus/src/ModbusServerTCPasync.cpp
@@ -253,7 +253,7 @@ void ModbusServerTCPasync::onClientConnect(AsyncClient* client) {
LOG_D("nr clients: %u\n", clients.size());
} else {
LOG_D("max number of clients reached, closing new\n");
- client->close(true);
+ client->close();
delete client;
}
}
diff --git a/lib/espMqttClient/src/Packets/Packet.cpp b/lib/espMqttClient/src/Packets/Packet.cpp
index 14d241b20..d33a633f1 100644
--- a/lib/espMqttClient/src/Packets/Packet.cpp
+++ b/lib/espMqttClient/src/Packets/Packet.cpp
@@ -321,7 +321,14 @@ bool Packet::_allocate(size_t remainingLength, bool check) {
#if EMC_USE_MEMPOOL
_data = reinterpret_cast(_memPool.malloc(_size));
#else
- _data = reinterpret_cast(malloc(_size));
+#ifdef EMSESP_STANDALONE
+ _data = reinterpret_cast(malloc(_size));
+#else
+ _data = reinterpret_cast(ps_malloc(_size));
+ if (!_data) {
+ _data = reinterpret_cast(malloc(_size));
+ }
+#endif
#endif
if (!_data) {
_size = 0;
diff --git a/lib/espMqttClient/src/Transport/ClientAsync.cpp b/lib/espMqttClient/src/Transport/ClientAsync.cpp
index 4f8d69eeb..0ca91564f 100644
--- a/lib/espMqttClient/src/Transport/ClientAsync.cpp
+++ b/lib/espMqttClient/src/Transport/ClientAsync.cpp
@@ -42,7 +42,7 @@ int ClientAsync::read(uint8_t* buf, size_t size) {
}
void ClientAsync::stop() {
- client.close(false);
+ client.close();
}
bool ClientAsync::connected() {
diff --git a/lib_standalone/Arduino.h b/lib_standalone/Arduino.h
index 1ac2aea3b..d13411c24 100644
--- a/lib_standalone/Arduino.h
+++ b/lib_standalone/Arduino.h
@@ -76,6 +76,10 @@ 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;
+}
+
#define PROGMEM
#define PGM_P const char *
diff --git a/lib_standalone/ESP32React.h b/lib_standalone/ESP32React.h
index 23e3a5736..cb5644db6 100644
--- a/lib_standalone/ESP32React.h
+++ b/lib_standalone/ESP32React.h
@@ -36,6 +36,7 @@ class DummySettings {
uint8_t nested_format = 1; // 1=nested 2=single
String discovery_prefix = "homeassistant";
uint8_t discovery_type = 0; // HA
+ uint8_t ha_number_mode = 0; // box
bool ha_enabled = true;
String base = "ems-esp";
bool publish_single = false;
diff --git a/lib_standalone/ModuleLibrary.cpp b/lib_standalone/ModuleLibrary.cpp
index 479327847..1d0bff0ea 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/lib_standalone/ModuleLibrary.h b/lib_standalone/ModuleLibrary.h
index 7d3004722..e9d410a4d 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/lib_standalone/emsuart_standalone.cpp b/lib_standalone/emsuart_standalone.cpp
index 643db2682..b10fededc 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/lib_standalone/emsuart_standalone.h b/lib_standalone/emsuart_standalone.h
index 6146f7372..4a76581db 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/mock-api/README.md b/mock-api/README.md
index f730bc973..b483ac7a7 100644
--- a/mock-api/README.md
+++ b/mock-api/README.md
@@ -1,13 +1 @@
-When developing and testing the web interface, it's handy not to bother with re-flashing an ESP32 each time. The idea is to mimic the ESP using a mock/stub server that responds to the REST (HTTP POST & GET) and WebSocket calls.
-
-# prerequisites
-
-- Install the latest LTS of NodeJS
-- install corepack `npm install -g corepack@latest` and `orepack enable`
-- Install pnpm (`corepack use pnpm@latest-10` on linux or `winget install -e --id pnpm.pnpm` on windows). See
-- Install bun ()
-- type `pnpm install` from this `mock-api` folder to build
-
-# To run
-
-- `pnpm standalone` from the main `interface` folder and then navigate to
+Refer to the [EMS-ESP documentation](https://emsesp.org/Building#webui-development) on how to run the mock Web server.
diff --git a/mock-api/package.json b/mock-api/package.json
index 1934da897..d05239e7b 100644
--- a/mock-api/package.json
+++ b/mock-api/package.json
@@ -10,10 +10,10 @@
},
"dependencies": {
"@msgpack/msgpack": "^3.1.3",
- "@trivago/prettier-plugin-sort-imports": "^6.0.0",
+ "@trivago/prettier-plugin-sort-imports": "^6.0.2",
"formidable": "^3.5.4",
"itty-router": "^5.0.22",
"prettier": "^3.7.4"
},
- "packageManager": "pnpm@10.27.0+sha512.72d699da16b1179c14ba9e64dc71c9a40988cbdc65c264cb0e489db7de917f20dcf4d64d8723625f2969ba52d4b7e2a1170682d9ac2a5dcaeaab732b7e16f04a"
+ "packageManager": "pnpm@10.28.0+sha512.05df71d1421f21399e053fde567cea34d446fa02c76571441bfc1c7956e98e363088982d940465fd34480d4d90a0668bc12362f8aa88000a64e83d0b0e47be48"
}
diff --git a/mock-api/pnpm-lock.yaml b/mock-api/pnpm-lock.yaml
new file mode 100644
index 000000000..5f50a949e
--- /dev/null
+++ b/mock-api/pnpm-lock.yaml
@@ -0,0 +1,316 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ dependencies:
+ '@msgpack/msgpack':
+ specifier: ^3.1.3
+ version: 3.1.3
+ '@trivago/prettier-plugin-sort-imports':
+ specifier: ^6.0.2
+ version: 6.0.2(prettier@3.7.4)
+ formidable:
+ specifier: ^3.5.4
+ version: 3.5.4
+ itty-router:
+ specifier: ^5.0.22
+ version: 5.0.22
+ prettier:
+ specifier: ^3.7.4
+ version: 3.7.4
+
+packages:
+
+ '@babel/code-frame@7.27.1':
+ resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/generator@7.28.5':
+ resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-globals@7.28.0':
+ resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-string-parser@7.27.1':
+ resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-identifier@7.28.5':
+ resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/parser@7.28.5':
+ resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ '@babel/template@7.27.2':
+ resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/traverse@7.28.5':
+ resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/types@7.28.5':
+ resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==}
+ engines: {node: '>=6.9.0'}
+
+ '@jridgewell/gen-mapping@0.3.13':
+ resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
+
+ '@jridgewell/resolve-uri@3.1.2':
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/sourcemap-codec@1.5.5':
+ resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
+
+ '@jridgewell/trace-mapping@0.3.31':
+ resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
+
+ '@msgpack/msgpack@3.1.3':
+ resolution: {integrity: sha512-47XIizs9XZXvuJgoaJUIE2lFoID8ugvc0jzSHP+Ptfk8nTbnR8g788wv48N03Kx0UkAv559HWRQ3yzOgzlRNUA==}
+ engines: {node: '>= 18'}
+
+ '@noble/hashes@1.8.0':
+ resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==}
+ engines: {node: ^14.21.3 || >=16}
+
+ '@paralleldrive/cuid2@2.3.1':
+ resolution: {integrity: sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==}
+
+ '@trivago/prettier-plugin-sort-imports@6.0.2':
+ resolution: {integrity: sha512-3DgfkukFyC/sE/VuYjaUUWoFfuVjPK55vOFDsxD56XXynFMCZDYFogH2l/hDfOsQAm1myoU/1xByJ3tWqtulXA==}
+ engines: {node: '>= 20'}
+ peerDependencies:
+ '@vue/compiler-sfc': 3.x
+ prettier: 2.x - 3.x
+ prettier-plugin-ember-template-tag: '>= 2.0.0'
+ prettier-plugin-svelte: 3.x
+ svelte: 4.x || 5.x
+ peerDependenciesMeta:
+ '@vue/compiler-sfc':
+ optional: true
+ prettier-plugin-ember-template-tag:
+ optional: true
+ prettier-plugin-svelte:
+ optional: true
+ svelte:
+ optional: true
+
+ asap@2.0.6:
+ resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==}
+
+ balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ brace-expansion@2.0.2:
+ resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
+
+ debug@4.4.3:
+ resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ dezalgo@1.0.4:
+ resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==}
+
+ formidable@3.5.4:
+ resolution: {integrity: sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==}
+ engines: {node: '>=14.0.0'}
+
+ itty-router@5.0.22:
+ resolution: {integrity: sha512-9hmdGErWdYDOurGYxSbqLhy4EFReIwk71hMZTJ5b+zfa2zjMNV1ftFno2b8VjAQvX615gNB8Qxbl9JMRqHnIVA==}
+
+ javascript-natural-sort@0.7.1:
+ resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==}
+
+ js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
+ jsesc@3.1.0:
+ resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ lodash-es@4.17.22:
+ resolution: {integrity: sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q==}
+
+ minimatch@9.0.5:
+ resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+ once@1.4.0:
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+
+ parse-imports-exports@0.2.4:
+ resolution: {integrity: sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==}
+
+ parse-statements@1.0.11:
+ resolution: {integrity: sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==}
+
+ picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+
+ prettier@3.7.4:
+ resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==}
+ engines: {node: '>=14'}
+ hasBin: true
+
+ wrappy@1.0.2:
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+
+snapshots:
+
+ '@babel/code-frame@7.27.1':
+ dependencies:
+ '@babel/helper-validator-identifier': 7.28.5
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+
+ '@babel/generator@7.28.5':
+ dependencies:
+ '@babel/parser': 7.28.5
+ '@babel/types': 7.28.5
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+ jsesc: 3.1.0
+
+ '@babel/helper-globals@7.28.0': {}
+
+ '@babel/helper-string-parser@7.27.1': {}
+
+ '@babel/helper-validator-identifier@7.28.5': {}
+
+ '@babel/parser@7.28.5':
+ dependencies:
+ '@babel/types': 7.28.5
+
+ '@babel/template@7.27.2':
+ dependencies:
+ '@babel/code-frame': 7.27.1
+ '@babel/parser': 7.28.5
+ '@babel/types': 7.28.5
+
+ '@babel/traverse@7.28.5':
+ dependencies:
+ '@babel/code-frame': 7.27.1
+ '@babel/generator': 7.28.5
+ '@babel/helper-globals': 7.28.0
+ '@babel/parser': 7.28.5
+ '@babel/template': 7.27.2
+ '@babel/types': 7.28.5
+ debug: 4.4.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/types@7.28.5':
+ dependencies:
+ '@babel/helper-string-parser': 7.27.1
+ '@babel/helper-validator-identifier': 7.28.5
+
+ '@jridgewell/gen-mapping@0.3.13':
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+ '@jridgewell/trace-mapping': 0.3.31
+
+ '@jridgewell/resolve-uri@3.1.2': {}
+
+ '@jridgewell/sourcemap-codec@1.5.5': {}
+
+ '@jridgewell/trace-mapping@0.3.31':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.5
+
+ '@msgpack/msgpack@3.1.3': {}
+
+ '@noble/hashes@1.8.0': {}
+
+ '@paralleldrive/cuid2@2.3.1':
+ dependencies:
+ '@noble/hashes': 1.8.0
+
+ '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.7.4)':
+ dependencies:
+ '@babel/generator': 7.28.5
+ '@babel/parser': 7.28.5
+ '@babel/traverse': 7.28.5
+ '@babel/types': 7.28.5
+ javascript-natural-sort: 0.7.1
+ lodash-es: 4.17.22
+ minimatch: 9.0.5
+ parse-imports-exports: 0.2.4
+ prettier: 3.7.4
+ transitivePeerDependencies:
+ - supports-color
+
+ asap@2.0.6: {}
+
+ balanced-match@1.0.2: {}
+
+ brace-expansion@2.0.2:
+ dependencies:
+ balanced-match: 1.0.2
+
+ debug@4.4.3:
+ dependencies:
+ ms: 2.1.3
+
+ dezalgo@1.0.4:
+ dependencies:
+ asap: 2.0.6
+ wrappy: 1.0.2
+
+ formidable@3.5.4:
+ dependencies:
+ '@paralleldrive/cuid2': 2.3.1
+ dezalgo: 1.0.4
+ once: 1.4.0
+
+ itty-router@5.0.22: {}
+
+ javascript-natural-sort@0.7.1: {}
+
+ js-tokens@4.0.0: {}
+
+ jsesc@3.1.0: {}
+
+ lodash-es@4.17.22: {}
+
+ minimatch@9.0.5:
+ dependencies:
+ brace-expansion: 2.0.2
+
+ ms@2.1.3: {}
+
+ once@1.4.0:
+ dependencies:
+ wrappy: 1.0.2
+
+ parse-imports-exports@0.2.4:
+ dependencies:
+ parse-statements: 1.0.11
+
+ parse-statements@1.0.11: {}
+
+ picocolors@1.1.1: {}
+
+ prettier@3.7.4: {}
+
+ wrappy@1.0.2: {}
diff --git a/mock-api/restServer.ts b/mock-api/restServer.ts
index 47501ee2c..2c9504147 100644
--- a/mock-api/restServer.ts
+++ b/mock-api/restServer.ts
@@ -130,7 +130,9 @@ let system_status = {
// partitions: [],
developer_mode: true,
model: '',
+ board: '',
// model: 'BBQKees Electronics EMS Gateway E32 V2 (E32 V2.0 P3/2024011)',
+ // board: 'E32V2',
// status: 0,
status: 3
};
@@ -584,6 +586,7 @@ let mqtt_settings = {
keep_alive: 60,
clean_session: true,
entity_format: 1,
+ ha_number_mode: 0,
publish_time_boiler: 10,
publish_time_thermostat: 10,
publish_time_solar: 10,
diff --git a/platformio.ini b/platformio.ini
index 4d2bfee4d..31ac85d60 100644
--- a/platformio.ini
+++ b/platformio.ini
@@ -105,8 +105,8 @@ build_type = release
board_build.filesystem = littlefs
lib_deps =
bblanchon/ArduinoJson @ 7.4.2
- ESP32Async/AsyncTCP @ 3.4.9
- ESP32Async/ESPAsyncWebServer @ 3.9.3
+ ESP32Async/AsyncTCP @ 3.4.10
+ ESP32Async/ESPAsyncWebServer @ 3.9.4
https://github.com/emsesp/EMS-ESP-Modules.git @ 1.0.8
@@ -228,7 +228,7 @@ build_src_flags =
-DEMSESP_STANDALONE -DEMSESP_TEST
-DEMSESP_UNITY
-DARDUINOJSON_ENABLE_ARDUINO_STRING=1
- -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_TX_MODE=8 -DEMSESP_DEFAULT_VERSION=\"3.8.0-dev.0\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32\"
+ -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32\"
-std=gnu++17 -Og -ggdb
-Wall -Wextra
-Wno-unused-parameter -Wno-sign-compare -Wno-missing-braces
@@ -284,7 +284,7 @@ build_flags =
[env:standalone]
extends = env:native
build_flags =
- -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_TX_MODE=8 -DEMSESP_DEFAULT_VERSION=\"3.8.0-dev.0\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32\"
+ -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32\"
; Modbus
; Creates the file modbus_entity_parameters.hpp
diff --git a/project-words.txt b/project-words.txt
index 53fee07eb..ea16610ce 100644
--- a/project-words.txt
+++ b/project-words.txt
@@ -1446,3 +1446,6 @@ vchip
SPIIO
SPIDQS
txpause
+relais
+pinout
+TXEN
\ No newline at end of file
diff --git a/scripts/generate-modbus-register-doc.py b/scripts/generate-modbus-register-doc.py
index 929e775a5..23da7dcf1 100644
--- a/scripts/generate-modbus-register-doc.py
+++ b/scripts/generate-modbus-register-doc.py
@@ -94,8 +94,9 @@ def print_device_entities(device_name, device_entities):
type_suffix = split_type[1] if len(split_type) > 1 else ""
# Optimize type_rest extraction and int range detection
- type_rest_str = type_suffix
+ type_rest_str = ""
if "int" in type_base and "(" in type_suffix:
+ print(type_base)
try:
# Extract inner part of parentheses
range_inner = type_suffix[type_suffix.index("(")+1:type_suffix.index(")")]
@@ -106,14 +107,12 @@ def print_device_entities(device_name, device_entities):
elif "/" in range_inner:
min_value, max_value = range_inner.split("/")
if min_value is not None and max_value is not None:
- type_rest_str = f"(>={min_value.strip()}<={max_value.strip()})"
- else:
- type_rest_str = ""
+ type_rest_str = f" (>={min_value.strip()}<={max_value.strip()})"
except Exception:
# fallback to original
pass
- print(f"| {entity['shortname']} | {entity['fullname']} | {type_base} {type_rest_str} | "
+ print(f"| {entity['shortname']} | {entity['fullname']} | {type_base}{type_rest_str} | "
f"{entity['uom']} | {entity['writeable']} | {tag_type} | {entity['modbus offset']} | "
f"{entity['modbus count']} | {entity['modbus scale factor']} |")
print()
@@ -135,6 +134,9 @@ def print_device_type_devices(device_type, devices):
def print_header():
"""Print the markdown document header."""
+ print("---")
+ print("id: Modbus-Entity-Registers")
+ print("---")
print("# Modbus Entity/Register Mapping")
print()
print(":::warning")
diff --git a/src/ESP32React/APSettingsService.h b/src/ESP32React/APSettingsService.h
index 67c9e03bf..fda384bc8 100644
--- a/src/ESP32React/APSettingsService.h
+++ b/src/ESP32React/APSettingsService.h
@@ -58,12 +58,12 @@ enum APNetworkStatus { ACTIVE = 0, INACTIVE, LINGERING };
class APSettings {
public:
- uint8_t provisionMode; // 0 = on, 2 = off
- String ssid;
- String password;
- uint8_t channel;
- bool ssidHidden;
- uint8_t maxClients;
+ uint8_t provisionMode = FACTORY_AP_PROVISION_MODE; // 0 = on, 2 = off
+ String ssid = FACTORY_AP_SSID;
+ String password = FACTORY_AP_PASSWORD;
+ uint8_t channel = FACTORY_AP_CHANNEL;
+ bool ssidHidden = FACTORY_AP_SSID_HIDDEN;
+ uint8_t maxClients = FACTORY_AP_MAX_CLIENTS;
IPAddress localIP;
IPAddress gatewayIP;
diff --git a/src/ESP32React/FSPersistence.h b/src/ESP32React/FSPersistence.h
index 299d943c2..d41e6b53d 100644
--- a/src/ESP32React/FSPersistence.h
+++ b/src/ESP32React/FSPersistence.h
@@ -70,6 +70,10 @@ class FSPersistence {
// failed to open file, return false
if (!settingsFile || !jsonObject.size()) {
+#if defined(EMSESP_DEBUG)
+ Serial.printf("Failed to write file %s", _filePath);
+ Serial.println();
+#endif
return false;
}
diff --git a/src/ESP32React/MqttSettingsService.cpp b/src/ESP32React/MqttSettingsService.cpp
index d616f3491..11c84462e 100644
--- a/src/ESP32React/MqttSettingsService.cpp
+++ b/src/ESP32React/MqttSettingsService.cpp
@@ -248,6 +248,7 @@ void MqttSettings::read(MqttSettings & settings, JsonObject root) {
root["nested_format"] = settings.nested_format;
root["discovery_prefix"] = settings.discovery_prefix;
root["discovery_type"] = settings.discovery_type;
+ root["ha_number_mode"] = settings.ha_number_mode;
root["publish_single"] = settings.publish_single;
root["publish_single2cmd"] = settings.publish_single2cmd;
root["send_response"] = settings.send_response;
@@ -288,6 +289,7 @@ StateUpdateResult MqttSettings::update(JsonObject root, MqttSettings & settings)
newSettings.nested_format = static_cast(root["nested_format"] | EMSESP_DEFAULT_NESTED_FORMAT);
newSettings.discovery_prefix = root["discovery_prefix"] | EMSESP_DEFAULT_DISCOVERY_PREFIX;
newSettings.discovery_type = static_cast(root["discovery_type"] | EMSESP_DEFAULT_DISCOVERY_TYPE);
+ newSettings.ha_number_mode = static_cast(root["ha_number_mode"] | EMSESP_DEFAULT_HA_NUMBER_MODE);
newSettings.publish_single = root["publish_single"] | EMSESP_DEFAULT_PUBLISH_SINGLE;
newSettings.publish_single2cmd = root["publish_single2cmd"] | EMSESP_DEFAULT_PUBLISH_SINGLE2CMD;
newSettings.send_response = root["send_response"] | EMSESP_DEFAULT_SEND_RESPONSE;
diff --git a/src/ESP32React/MqttSettingsService.h b/src/ESP32React/MqttSettingsService.h
index b844e2ea1..83cf751dd 100644
--- a/src/ESP32React/MqttSettingsService.h
+++ b/src/ESP32React/MqttSettingsService.h
@@ -8,6 +8,7 @@
#include
#include
+#include
#define MQTT_RECONNECTION_DELAY 2000 // 2 seconds
@@ -65,37 +66,38 @@
class MqttSettings {
public:
- bool enabled;
- String host;
- uint16_t port;
- String rootCA;
- bool enableTLS;
- String username;
- String password;
+ bool enabled = FACTORY_MQTT_ENABLED;
+ String host = FACTORY_MQTT_HOST;
+ uint16_t port = FACTORY_MQTT_PORT;
+ String rootCA = "";
+ bool enableTLS = false;
+ String username = FACTORY_MQTT_USERNAME;
+ String password = FACTORY_MQTT_PASSWORD;
String clientId;
- uint16_t keepAlive;
- bool cleanSession;
+ uint16_t keepAlive = FACTORY_MQTT_KEEP_ALIVE;
+ bool cleanSession = FACTORY_MQTT_CLEAN_SESSION;
// EMS-ESP specific
- String base;
- uint16_t publish_time_boiler;
- uint16_t publish_time_thermostat;
- uint16_t publish_time_solar;
- uint16_t publish_time_mixer;
- uint16_t publish_time_water;
- uint16_t publish_time_other;
- uint16_t publish_time_sensor;
- uint16_t publish_time_heartbeat;
- uint8_t mqtt_qos;
- bool mqtt_retain;
- bool ha_enabled;
- uint8_t nested_format;
- String discovery_prefix;
- uint8_t discovery_type;
- bool publish_single;
- bool publish_single2cmd;
- bool send_response;
- uint8_t entity_format;
+ String base = FACTORY_MQTT_BASE;
+ uint16_t publish_time_boiler = EMSESP_DEFAULT_PUBLISH_TIME;
+ uint16_t publish_time_thermostat = EMSESP_DEFAULT_PUBLISH_TIME;
+ uint16_t publish_time_solar = EMSESP_DEFAULT_PUBLISH_TIME;
+ uint16_t publish_time_mixer = EMSESP_DEFAULT_PUBLISH_TIME;
+ uint16_t publish_time_water = EMSESP_DEFAULT_PUBLISH_TIME;
+ uint16_t publish_time_other = EMSESP_DEFAULT_PUBLISH_TIME_OTHER;
+ uint16_t publish_time_sensor = EMSESP_DEFAULT_PUBLISH_TIME;
+ uint16_t publish_time_heartbeat = EMSESP_DEFAULT_PUBLISH_HEARTBEAT;
+ uint8_t mqtt_qos = EMSESP_DEFAULT_MQTT_QOS;
+ bool mqtt_retain = EMSESP_DEFAULT_MQTT_RETAIN;
+ bool ha_enabled = EMSESP_DEFAULT_HA_ENABLED;
+ uint8_t nested_format = EMSESP_DEFAULT_NESTED_FORMAT;
+ String discovery_prefix = EMSESP_DEFAULT_DISCOVERY_PREFIX;
+ uint8_t discovery_type = EMSESP_DEFAULT_DISCOVERY_TYPE;
+ uint8_t ha_number_mode = EMSESP_DEFAULT_HA_NUMBER_MODE;
+ bool publish_single = EMSESP_DEFAULT_PUBLISH_SINGLE;
+ bool publish_single2cmd = EMSESP_DEFAULT_PUBLISH_SINGLE2CMD;
+ bool send_response = EMSESP_DEFAULT_SEND_RESPONSE;
+ uint8_t entity_format = EMSESP_DEFAULT_ENTITY_FORMAT;
static void read(MqttSettings & settings, JsonObject root);
static StateUpdateResult update(JsonObject root, MqttSettings & settings);
diff --git a/src/ESP32React/NTPSettingsService.h b/src/ESP32React/NTPSettingsService.h
index 38f4ed5e2..4b3bbce69 100644
--- a/src/ESP32React/NTPSettingsService.h
+++ b/src/ESP32React/NTPSettingsService.h
@@ -30,10 +30,10 @@
class NTPSettings {
public:
- bool enabled;
- String tzLabel;
- String tzFormat;
- String server;
+ bool enabled = FACTORY_NTP_ENABLED;
+ String tzLabel = FACTORY_NTP_TIME_ZONE_LABEL;
+ String tzFormat = FACTORY_NTP_TIME_ZONE_FORMAT;
+ String server = FACTORY_NTP_SERVER;
static void read(NTPSettings & settings, JsonObject root);
static StateUpdateResult update(JsonObject root, NTPSettings & settings);
diff --git a/src/ESP32React/NetworkSettingsService.h b/src/ESP32React/NetworkSettingsService.h
index a12536b78..f35186bf6 100644
--- a/src/ESP32React/NetworkSettingsService.h
+++ b/src/ESP32React/NetworkSettingsService.h
@@ -64,17 +64,17 @@
class NetworkSettings {
public:
// core wifi configuration
- String ssid;
- String bssid;
- String password;
- String hostname;
- bool staticIPConfig;
- bool bandwidth20;
- uint8_t tx_power;
- bool nosleep;
- bool enableMDNS;
- bool enableCORS;
- String CORSOrigin;
+ String ssid = FACTORY_WIFI_SSID;
+ String bssid = "";
+ String password = FACTORY_WIFI_PASSWORD;
+ String hostname = FACTORY_WIFI_HOSTNAME;
+ bool staticIPConfig = false;
+ bool bandwidth20 = false;
+ uint8_t tx_power = 0;
+ bool nosleep = true;
+ bool enableMDNS = true;
+ bool enableCORS = false;
+ String CORSOrigin = "*";
// optional configuration for static IP address
IPAddress localIP;
diff --git a/src/ESP32React/SecurityManager.h b/src/ESP32React/SecurityManager.h
index 247f21019..b4dc89bb8 100644
--- a/src/ESP32React/SecurityManager.h
+++ b/src/ESP32React/SecurityManager.h
@@ -9,7 +9,6 @@
#include
#define ACCESS_TOKEN_PARAMATER "access_token"
-
#define AUTHORIZATION_HEADER "Authorization"
#define AUTHORIZATION_HEADER_PREFIX "Bearer "
#define AUTHORIZATION_HEADER_PREFIX_LEN 7
diff --git a/src/ESP32React/UploadFileService.cpp b/src/ESP32React/UploadFileService.cpp
index 8ef5bfc13..4d016dce4 100644
--- a/src/ESP32React/UploadFileService.cpp
+++ b/src/ESP32React/UploadFileService.cpp
@@ -172,7 +172,7 @@ void UploadFileService::handleError(AsyncWebServerRequest * request, int code) {
// 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
if (code == 406) {
- request->client()->close(true);
+ request->client()->close();
_is_firmware = false;
Update.abort();
}
diff --git a/src/core/analogsensor.cpp b/src/core/analogsensor.cpp
index d62701ded..84b803679 100644
--- a/src/core/analogsensor.cpp
+++ b/src/core/analogsensor.cpp
@@ -56,8 +56,7 @@ void IRAM_ATTR AnalogSensor::freqIrq2() {
#endif
void AnalogSensor::start(const bool factory_settings) {
- // if (factory_settings && EMSESP::nvs_.getString("boot").equals("E32V2_2")) {
- if (factory_settings && analogReadMilliVolts(39) > 700) { // core voltage > 2.6V
+ if (factory_settings && EMSESP::system_.board_profile() == "E32V2_2") {
EMSESP::webCustomizationService.update([&](WebCustomization & settings) {
auto newSensor = AnalogCustomization();
strcpy(newSensor.name, "core_voltage");
@@ -68,12 +67,22 @@ void AnalogSensor::start(const bool factory_settings) {
newSensor.type = AnalogType::ADC;
newSensor.is_system = true;
settings.analogCustomizations.push_back(newSensor);
+ EMSESP::system_.add_gpio(newSensor.gpio, newSensor.name);
strcpy(newSensor.name, "supply_voltage");
newSensor.gpio = 36;
newSensor.factor = 0.017; // Divider 24k - 1,5k
newSensor.is_system = true;
settings.analogCustomizations.push_back(newSensor);
+ EMSESP::system_.add_gpio(newSensor.gpio, newSensor.name);
+
+ strcpy(newSensor.name, "led");
+ newSensor.gpio = 2;
+ newSensor.type = AnalogType::DIGITAL_OUT;
+ newSensor.uom = DeviceValueUOM::NONE; // unchanged after restart
+ newSensor.factor = 1; // active high
+ settings.analogCustomizations.push_back(newSensor);
+ EMSESP::system_.add_gpio(newSensor.gpio, newSensor.name);
return StateUpdateResult::CHANGED; // persist the change
});
@@ -576,7 +585,7 @@ bool AnalogSensor::update(uint8_t gpio, const char * org_name, double offset, do
newSensor.is_system = is_system;
settings.analogCustomizations.push_back(newSensor);
// check the gpio again and add to used list
- if (EMSESP::system_.add_gpio(gpio, "Analog Sensor")) {
+ if (EMSESP::system_.add_gpio(gpio, name)) {
LOG_DEBUG("Adding customization for analog sensor GPIO %02d", gpio);
return StateUpdateResult::CHANGED; // persist the change
} else {
diff --git a/src/core/analogsensor.h b/src/core/analogsensor.h
index e7bda53b2..f466adb75 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/core/command.cpp b/src/core/command.cpp
index 4cea1211c..4fe679e2e 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/core/command.h b/src/core/command.h
index 92832d8a0..61fcb9c49 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/core/common.h b/src/core/common.h
index b6a875264..a9ca215f5 100644
--- a/src/core/common.h
+++ b/src/core/common.h
@@ -1,6 +1,6 @@
/*
* EMS-ESP - https://github.com/emsesp/EMS-ESP
- * Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/core/console.cpp b/src/core/console.cpp
index f0b45cf00..c84adaf2d 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/core/console.h b/src/core/console.h
index 80f7a9cc4..caee763ff 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/core/default_settings.h b/src/core/default_settings.h
index d8187b701..0f5b72f9a 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -25,10 +25,6 @@
#define EMSESP_DEFAULT_LOCALE EMSESP_LOCALE_EN // English
#endif
-#ifndef EMSESP_DEFAULT_VERSION
-#define EMSESP_DEFAULT_VERSION ""
-#endif
-
#ifndef EMSESP_DEFAULT_TX_MODE
#define EMSESP_DEFAULT_TX_MODE 1 // EMS1.0
#endif
@@ -214,6 +210,10 @@
#define EMSESP_DEFAULT_DISCOVERY_TYPE 0 // HA
#endif
+#ifndef EMSESP_DEFAULT_HA_NUMBER_MODE
+#define EMSESP_DEFAULT_HA_NUMBER_MODE 0 // BOX
+#endif
+
#ifndef EMSESP_DEFAULT_PUBLISH_SINGLE
#define EMSESP_DEFAULT_PUBLISH_SINGLE false
#endif
diff --git a/src/core/device_library.h b/src/core/device_library.h
index 343050585..2c291488c 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/core/emsdevice.cpp b/src/core/emsdevice.cpp
index 8d07660d0..29f0cdffb 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -547,40 +547,56 @@ void EMSdevice::add_device_value(int8_t tag, // to b
int16_t min, // min allowed value
uint32_t max // max allowed value
) {
- // initialize the device value depending on it's type
-
- if (type == DeviceValueType::STRING) {
- *(char *)(value_p) = {'\0'}; // this is important for string functions like strlen() to work later
- } else if (type == DeviceValueType::INT8) {
- *(int8_t *)(value_p) = System::test_set_all_active() ? EMS_VALUE_DEFAULT_INT8_DUMMY : EMS_VALUE_DEFAULT_INT8;
- } else if (type == DeviceValueType::UINT8) {
- *(uint8_t *)(value_p) = System::test_set_all_active() ? EMS_VALUE_DEFAULT_UINT8_DUMMY : EMS_VALUE_DEFAULT_UINT8;
- } else if (type == DeviceValueType::INT16) {
- *(int16_t *)(value_p) = System::test_set_all_active() ? EMS_VALUE_DEFAULT_INT16_DUMMY : EMS_VALUE_DEFAULT_INT16;
- } else if (type == DeviceValueType::UINT16) {
- *(uint16_t *)(value_p) = System::test_set_all_active() ? EMS_VALUE_DEFAULT_UINT16_DUMMY : EMS_VALUE_DEFAULT_UINT16;
- } else if ((type == DeviceValueType::UINT24) || (type == DeviceValueType::TIME) || (type == DeviceValueType::UINT32)) {
- *(uint32_t *)(value_p) = System::test_set_all_active() ? EMS_VALUE_DEFAULT_UINT24_DUMMY : EMS_VALUE_DEFAULT_UINT24;
- } else if (type == DeviceValueType::BOOL) {
- *(int8_t *)(value_p) = System::test_set_all_active() ? EMS_VALUE_DEFAULT_BOOL_DUMMY : EMS_VALUE_DEFAULT_BOOL; // bool is uint8_t, but other initial value
- } else if (type == DeviceValueType::ENUM) {
- *(uint8_t *)(value_p) = System::test_set_all_active() ? EMS_VALUE_DEFAULT_ENUM_DUMMY : EMS_VALUE_DEFAULT_ENUM; // enums behave as uint8_t
- } else if (type == DeviceValueType::CMD) {
- if (uom == DeviceValueUOM::NONE) {
- *(uint8_t *)(value_p) = System::test_set_all_active() ? EMS_VALUE_DEFAULT_ENUM_DUMMY : EMS_VALUE_DEFAULT_ENUM; // enums behave as uint8_t
- } else if (uom == DeviceValueUOM::DEGREES) {
- *(int16_t *)(value_p) = System::test_set_all_active() ? EMS_VALUE_DEFAULT_INT16_DUMMY : EMS_VALUE_DEFAULT_INT16;
- } else if (uom == DeviceValueUOM::PERCENT) {
- *(uint8_t *)(value_p) = System::test_set_all_active() ? EMS_VALUE_DEFAULT_UINT8_DUMMY : EMS_VALUE_DEFAULT_UINT8;
- }
- }
-
uint8_t state = DeviceValueState::DV_DEFAULT; // determine state
auto custom_fullname = std::string(""); // custom fullname
auto short_name = name[0]; // entity name
bool has_cmd = (f != nullptr); // is it a command?
bool ignore = false; // ignore this entity?
+ // check test mode, which populates all device values with some dummy date
+ bool test_active = System::test_set_all_active();
+
+ // if writable and in test mode, set to max value directly; otherwise set to default/dummy
+ bool use_max = test_active && has_cmd;
+
+ switch (type) {
+ case DeviceValueType::STRING:
+ *(char *)(value_p) = {'\0'}; // this is important for string functions like strlen() to work later
+ break;
+ case DeviceValueType::INT8:
+ *(int8_t *)(value_p) = use_max ? static_cast(max) : (test_active ? EMS_VALUE_DEFAULT_INT8_DUMMY : EMS_VALUE_DEFAULT_INT8);
+ break;
+ case DeviceValueType::UINT8:
+ *(uint8_t *)(value_p) = use_max ? static_cast(max) : (test_active ? EMS_VALUE_DEFAULT_UINT8_DUMMY : EMS_VALUE_DEFAULT_UINT8);
+ break;
+ case DeviceValueType::INT16:
+ *(int16_t *)(value_p) = use_max ? static_cast(max) : (test_active ? EMS_VALUE_DEFAULT_INT16_DUMMY : EMS_VALUE_DEFAULT_INT16);
+ break;
+ case DeviceValueType::UINT16:
+ *(uint16_t *)(value_p) = use_max ? static_cast(max) : (test_active ? EMS_VALUE_DEFAULT_UINT16_DUMMY : EMS_VALUE_DEFAULT_UINT16);
+ break;
+ case DeviceValueType::UINT24:
+ case DeviceValueType::TIME:
+ case DeviceValueType::UINT32:
+ *(uint32_t *)(value_p) = use_max ? static_cast(max) : (test_active ? EMS_VALUE_DEFAULT_UINT24_DUMMY : EMS_VALUE_DEFAULT_UINT24);
+ break;
+ case DeviceValueType::BOOL:
+ *(int8_t *)(value_p) = use_max ? static_cast(max ? 1 : 0) : (test_active ? EMS_VALUE_DEFAULT_BOOL_DUMMY : EMS_VALUE_DEFAULT_BOOL);
+ break;
+ case DeviceValueType::ENUM:
+ *(uint8_t *)(value_p) = use_max ? static_cast(max) : (test_active ? EMS_VALUE_DEFAULT_ENUM_DUMMY : EMS_VALUE_DEFAULT_ENUM);
+ break;
+ case DeviceValueType::CMD:
+ if (uom == DeviceValueUOM::NONE) {
+ *(uint8_t *)(value_p) = use_max ? static_cast(max) : (test_active ? EMS_VALUE_DEFAULT_ENUM_DUMMY : EMS_VALUE_DEFAULT_ENUM);
+ } else if (uom == DeviceValueUOM::DEGREES) {
+ *(int16_t *)(value_p) = use_max ? static_cast(max) : (test_active ? EMS_VALUE_DEFAULT_INT16_DUMMY : EMS_VALUE_DEFAULT_INT16);
+ } else if (uom == DeviceValueUOM::PERCENT) {
+ *(uint8_t *)(value_p) = use_max ? static_cast(max) : (test_active ? EMS_VALUE_DEFAULT_UINT8_DUMMY : EMS_VALUE_DEFAULT_UINT8);
+ }
+ break;
+ }
+
// get fullname, getting translation if it exists
const char * const * fullname;
if (Helpers::count_items(name) == 1) {
@@ -1295,11 +1311,21 @@ void EMSdevice::getCustomizationEntities(std::vector & entity_ids)
// dumps all entity values in native English
// the code is intended to run only once standalone, outside the ESP32 so not optimized for memory efficiency
// pipe symbols (|) are escaped so they can be converted to Markdown in the Wiki
-// format is: device name,device type,product id,shortname,fullname,type [options...] \\| (min/max),uom,writeable,discovery entityid v3.4, discovery entityid
+// format is: device name,device type,product id,shortname,fullname,type [options...] [(min/max)],uom,writeable,discovery entityid v3.4, discovery entityid
#if defined(EMSESP_STANDALONE)
void EMSdevice::dump_devicevalue_info() {
for (auto & dv : devicevalues_) {
if (dv.fullname != nullptr) {
+ // for debugging, finding max values
+ /*
+ if (dv.has_cmd) {
+ if (dv.max - dv.min > 400) {
+ Serial.printf("shortname:%s, min:%d, max:%d\n", dv.short_name, dv.min, dv.max);
+ }
+ }
+ continue;
+ */
+
Serial.print('\"');
Serial.print(default_name());
Serial.print('\"');
@@ -1323,7 +1349,7 @@ void EMSdevice::dump_devicevalue_info() {
Serial.print(dv.fullname[0]);
Serial.print(',');
- // per type
+ // type [options...] [(min/max)]
switch (dv.type) {
case DeviceValueType::ENUM:
case DeviceValueType::CMD:
@@ -1383,14 +1409,12 @@ void EMSdevice::dump_devicevalue_info() {
break;
}
- // min/max range
- int16_t dv_set_min;
- uint32_t dv_set_max;
- if (dv.get_min_max(dv_set_min, dv_set_max)) {
+ // min/max range, if writeable
+ if (dv.has_cmd) {
Serial.print(" (>=");
- Serial.print(dv_set_min);
+ Serial.print(dv.min);
Serial.print("<=");
- Serial.print(dv_set_max);
+ Serial.print(dv.max);
Serial.print(")");
}
Serial.print(",");
diff --git a/src/core/emsdevice.h b/src/core/emsdevice.h
index c74604d2b..efd535693 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/core/emsdevicevalue.cpp b/src/core/emsdevicevalue.cpp
index e568faa44..c085bd94b 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -103,7 +103,7 @@ DeviceValue::DeviceValue(uint8_t device_type,
}
// mapping of UOM, to match order in DeviceValueUOM enum emsdevicevalue.h
-// also maps to DeviceValueUOM in interface/src/project/types.ts for the Web UI
+// also maps to DeviceValueUOM in interface/src/app/main/types.ts for the Web UI
// must be an int of 4 bytes, 32bit aligned
const char * DeviceValue::DeviceValueUOM_s[] = {
diff --git a/src/core/emsdevicevalue.h b/src/core/emsdevicevalue.h
index 04d28809c..efa9935f8 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -76,7 +76,7 @@ class DeviceValue {
MBAR, // 24 - mbar - atmospheric pressure
LH, // 25 - l/h - volume flow rate
CTKWH, // 26 - ct/kWh - monetary
- HZ, // 27 - Hz - frequency
+ HERTZ, // 27 - Hz - frequency
CONNECTIVITY // 28 - used in HA - connectivity
};
diff --git a/src/core/emsesp.cpp b/src/core/emsesp.cpp
index 04b5b1e34..a85dedad2 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -20,6 +20,7 @@
#ifndef EMSESP_STANDALONE
#include "esp_ota_ops.h"
+#include "rom/rtc.h"
#endif
static_assert(uuid::thread_safe, "uuid-common must be thread-safe");
@@ -1721,15 +1722,31 @@ void EMSESP::start() {
LOG_INFO("EMS-ESP version %s", EMSESP_APP_VERSION);
#endif
- // check if the firmware is fresh
+ LOG_DEBUG("System is running in Debug mode");
+
+ // check if the firmware is fresh, i.e. a new install or a new version has been uploaded
// this is set in UploadFileService::uploadComplete()
// and reset in System::set_partition_install_date()
- if (!EMSESP::nvs_.getBool(EMSESP_NVS_BOOT_NEW_FIRMWARE)) {
- LOG_DEBUG("Firmware is fresh");
+ if (EMSESP::nvs_.getBool(EMSESP_NVS_BOOT_NEW_FIRMWARE)) {
+ LOG_DEBUG("Firmware is a new install");
+ } else {
+// check if the firmware has been uploaded via Serial/USB
+#if defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32C3)
+ if (rtc_get_reset_reason(0) == 11) { // ESP_RST_USB (Reset by USB peripheral, on CPU 0 only
+#else
+ if ((rtc_get_reset_reason(0) == 14 || rtc_get_reset_reason(1) == 14)) { // APP CPU reset by PRO CPU, can be either CPUs
+#endif
+ LOG_DEBUG("Firmware is a new install, uploaded via Serial/USB");
+ EMSESP::nvs_.putBool(emsesp::EMSESP_NVS_BOOT_NEW_FIRMWARE, true); // set flag so it's picked up later to set the install date
+ }
}
- LOG_DEBUG("System is running in Debug mode");
+// S2 are C3 are both single core
+#if defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32C3)
+ LOG_INFO("Last system reset reason Core0: %s", system_.reset_reason(0).c_str());
+#else
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
@@ -1837,7 +1854,7 @@ void EMSESP::loop() {
if (EMSESP::system_.systemStatus() == SYSTEM_STATUS::SYSTEM_STATUS_INVALID_GPIO) {
static bool only_once = false;
if (!only_once) {
- LOG_ERROR("Invalid GPIOs used. Please check your settings and log");
+ LOG_ERROR("Invalid GPIOs used. Please check your settings and the system log");
only_once = true;
}
}
diff --git a/src/core/emsesp.h b/src/core/emsesp.h
index c094f7f7a..b3ed04267 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/core/emsfactory.h b/src/core/emsfactory.h
index b52dfb37d..d2ac63707 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/core/helpers.cpp b/src/core/helpers.cpp
index 9bd6d3d27..8098f93d8 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -207,6 +207,18 @@ char * Helpers::render_boolean(char * result, const bool value, const bool dashb
return result;
}
+char * Helpers::remove_trailing_zero(char * result) {
+ if (strchr(result, '.')) {
+ while (result[strlen(result) - 1] == '0') {
+ result[strlen(result) - 1] = '\0';
+ }
+ if (result[strlen(result) - 1] == '.') {
+ result[strlen(result) - 1] = '\0';
+ }
+ }
+ return result;
+}
+
// convert unsigned int (single byte) to text value and returns it
// format: 255(0xFF)=boolean, 0=no formatting, otherwise divide by format
char * Helpers::render_value(char * result, uint8_t value, int8_t format, const uint8_t fahrenheit) {
@@ -240,14 +252,11 @@ char * Helpers::render_value(char * result, uint8_t value, int8_t format, const
strlcpy(result, itoa(new_value >> 1, s2, 10), 5);
strlcat(result, ".", 5);
strlcat(result, ((new_value & 0x01) ? "5" : "0"), 7);
- return result;
} else if (format == 4) {
strlcpy(result, itoa(new_value >> 2, s2, 10), 5);
strlcat(result, ".", 5);
new_value = (new_value & 0x03) * 25;
strlcat(result, itoa(new_value, s2, 10), 7);
- return result;
-
} else if (format > 0) {
strlcpy(result, itoa(new_value / format, s2, 10), 5);
strlcat(result, ".", 5);
@@ -256,7 +265,7 @@ char * Helpers::render_value(char * result, uint8_t value, int8_t format, const
strlcpy(result, itoa(new_value * format * -1, s2, 10), 5);
}
- return result;
+ return remove_trailing_zero(result);
}
// float: convert float to char
@@ -297,7 +306,7 @@ char * Helpers::render_value(char * result, const double value, const int8_t for
}
itoa(decimal, result, 10);
- return ret;
+ return remove_trailing_zero(ret);
}
// int32: convert signed 32bit to text string and returns string
@@ -335,7 +344,7 @@ char * Helpers::render_value(char * result, const int32_t value, const int8_t fo
strlcat(result, itoa(new_value * format * -1, s, 10), sizeof(s));
}
- return result;
+ return remove_trailing_zero(result);
}
// int16: convert short (two bytes) to text string and prints it
@@ -397,7 +406,7 @@ char * Helpers::render_value(char * result, const uint32_t value, const int8_t f
}
#endif
- return result;
+ return remove_trailing_zero(result);
}
// convert special Latin1 characters to UTF8
diff --git a/src/core/helpers.h b/src/core/helpers.h
index 999f4bc40..20f8fa122 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -88,6 +88,8 @@ class Helpers {
#ifdef EMSESP_STANDALONE
static char * ultostr(char * ptr, uint32_t value, const uint8_t base);
#endif
+ private:
+ static char * remove_trailing_zero(char * result);
};
} // namespace emsesp
diff --git a/src/core/locale_common.h b/src/core/locale_common.h
index 48eca147d..2b9222f69 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -245,6 +245,7 @@ MAKE_NOTRANSLATION(tag_device_data, "")
// Unit Of Measurement mapping - maps to DeviceValueUOM_s in emsdevice.cpp
// Translating hours/minute/seconds are done in emsdevice.cpp (uom_to_string())
+// to keep to some form of consistency, all UOMs follow Home Assistant naming conventions - https://developers.home-assistant.io/docs/core/entity/sensor/#available-device-classes
MAKE_WORD_CUSTOM(uom_blank, " ")
MAKE_WORD_CUSTOM(uom_percent, "%")
MAKE_WORD_CUSTOM(uom_degrees, "°C")
@@ -381,6 +382,7 @@ MAKE_ENUM(enum_lowNoiseMode, FL_(off), FL_(reduced_output), FL_(switchoff), FL_(
// heat pump
MAKE_ENUM(enum_hpactivity, FL_(off), FL_(heating), FL_(cooling), FL_(hot_water), FL_(pool), FL_(pool_heating), FL_(defrost), FL_(compressor_alarm)) // BV name COMPRESSOR_E21_STATUS
+MAKE_ENUM(enum_hpactivity1, FL_(off), FL_(heating), FL_(hot_water), FL_(defrost), FL_(compressor_alarm))
MAKE_ENUM(enum_silentMode, FL_(off), FL_(auto), FL_(on))
MAKE_ENUM(enum_4way, FL_(cool_defrost), FL_(heat_ww))
MAKE_ENUM(enum_auxHeaterSource, FL_(not_installed), FL_(el_heater), FL_(exclusive), FL_(parallel), FL_(hybrid))
diff --git a/src/core/locale_translations.h b/src/core/locale_translations.h
index 71068acda..d1116e7e9 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/core/main.cpp b/src/core/main.cpp
index b3c24b2c4..68130146c 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/core/modbus_entity_parameters.hpp b/src/core/modbus_entity_parameters.hpp
index 703f4ce60..fc7500569 100644
--- a/src/core/modbus_entity_parameters.hpp
+++ b/src/core/modbus_entity_parameters.hpp
@@ -504,30 +504,33 @@ const std::initializer_list Modbus::modbus_register_ma
REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(hpPh1), 13, 1), // hpph1
REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(heatingPumpMod), 14, 1), // heatingpumpmod
REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(hpCompSpd), 15, 1), // hpcompspd
- REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(hybridStrategy), 16, 1), // hybridstrategy
- REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(lowNoiseMode), 17, 1), // lownoisemode
- REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(lowNoiseStart), 18, 1), // lownoisestart
- REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(lowNoiseStop), 19, 1), // lownoisestop
- REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(energyPriceGas), 20, 1), // energypricegas
- REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(energyPriceEl), 21, 1), // energypriceel
- REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(energyPricePV), 22, 1), // energyfeedpv
- REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(switchOverTemp), 23, 1), // switchovertemp
- REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(airPurgeMode), 24, 1), // airpurgemode
- REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(heatPumpOutput), 25, 1), // heatpumpoutput
- REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(coolingCircuit), 26, 1), // coolingcircuit
- REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(compStartMod), 27, 1), // compstartmod
- REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(heatDrainPan), 28, 1), // heatdrainpan
- REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(heatCable), 29, 1), // heatcable
- REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(nrgTotal), 30, 2), // nrgtotal
- REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(nrgHeat), 32, 2), // nrgheat
- REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(meterTotal), 34, 2), // metertotal
- REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(meterComp), 36, 2), // metercomp
- REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(meterEHeat), 38, 2), // metereheat
- REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(meterHeat), 40, 2), // meterheat
- REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(heatingStarts), 42, 2), // heatingstarts
- REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(fuelHeat), 44, 2), // fuelheat
- REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(elHeat), 46, 2), // elheat
- REGISTER_MAPPING(dt::HEATPUMP, TAG_TYPE_DEVICE_DATA, FL_(elGenHeat), 48, 2), // elgenheat
+ 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_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 4b02d55d3..4868084fd 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -43,6 +43,7 @@ bool Mqtt::ha_enabled_;
uint8_t Mqtt::nested_format_;
std::string Mqtt::discovery_prefix_;
uint8_t Mqtt::discovery_type_;
+uint8_t Mqtt::ha_number_mode_;
bool Mqtt::send_response_;
bool Mqtt::publish_single_;
bool Mqtt::publish_single2cmd_;
@@ -343,6 +344,7 @@ void Mqtt::load_settings() {
discovery_prefix_ = mqttSettings.discovery_prefix.c_str();
entity_format_ = mqttSettings.entity_format;
discovery_type_ = mqttSettings.discovery_type;
+ ha_number_mode_ = mqttSettings.ha_number_mode;
// convert to milliseconds
publish_time_boiler_ = mqttSettings.publish_time_boiler * 1000;
@@ -562,8 +564,8 @@ void Mqtt::ha_status() {
// Note we don't use camelCase as it would change the HA entity_id and impact historic data
#ifndef EMSESP_STANDALONE
if (!EMSESP::system_.ethernet_connected() || WiFi.isConnected()) {
- publish_system_ha_sensor_config(DeviceValueType::INT8, "WiFi RSSI", "rssi", DeviceValueUOM::DBM);
- publish_system_ha_sensor_config(DeviceValueType::INT8, "WiFi strength", "wifistrength", DeviceValueUOM::PERCENT);
+ publish_system_ha_sensor_config(DeviceValueType::INT8, "RSSI", "rssi", DeviceValueUOM::DBM);
+ publish_system_ha_sensor_config(DeviceValueType::INT8, "Signal", "wifistrength", DeviceValueUOM::PERCENT);
}
#endif
@@ -1024,8 +1026,12 @@ bool Mqtt::publish_ha_sensor_config(uint8_t type, // EMSdev
snprintf(sample_val, sizeof(sample_val), "'%s'", Helpers::translated_word(options[0]));
}
} else if (type != DeviceValueType::STRING && type != DeviceValueType::BOOL) {
- // For numeric's add the range
- doc["mode"] = "box"; // auto, slider or box
+ // For numeric's add the range and mode
+ if (ha_number_mode_ == 1 && (dv_set_max - dv_set_min) <= 100) {
+ doc["mode"] = "slider";
+ } else {
+ doc["mode"] = "box"; // auto, slider or box
+ }
if (num_op > 0) {
doc["step"] = 1.0 / num_op;
} else if (num_op < 0) {
@@ -1132,6 +1138,9 @@ void Mqtt::add_ha_classes(JsonObject doc, const uint8_t device_type, const uint8
if (device_type == EMSdevice::DeviceType::SYSTEM) {
doc["ent_cat"] = "diagnostic"; // instead of 'config'
}
+ if (type == DeviceValueType::BOOL) {
+ return;
+ }
// For display_only, we don't use the aliases, also we don't display the icon
const char * dc_ha = display_only ? "device_class" : "dev_cla"; // device class, dev_cla
@@ -1146,24 +1155,24 @@ void Mqtt::add_ha_classes(JsonObject doc, const uint8_t device_type, const uint8
// set uom, unless boolean - as HA is fussy with the naming and is case sensitive
// map too HA uom specific codes from https://github.com/home-assistant/core/blob/dev/homeassistant/const.py
- if (type != DeviceValueType::BOOL) {
- if (uom == DeviceValueUOM::HOURS) {
- doc[uom_ha] = "h";
- } else if (uom == DeviceValueUOM::MINUTES) {
- doc[uom_ha] = "min";
- } else if (uom == DeviceValueUOM::SECONDS) {
- doc[uom_ha] = "s";
- } else if (uom == DeviceValueUOM::KB) {
- doc[uom_ha] = "kB";
- } else if (uom == DeviceValueUOM::LMIN) {
- doc[uom_ha] = "L/min";
- } else if (uom == DeviceValueUOM::LH) {
- doc[uom_ha] = "L/h";
- } else if (uom != DeviceValueUOM::NONE) {
- doc[uom_ha] = EMSdevice::uom_to_string(uom); // use default
- } else if (discovery_type() != discoveryType::HOMEASSISTANT) {
- doc[uom_ha] = " "; // Domoticz uses " " for a no-uom
- }
+ if (uom == DeviceValueUOM::HOURS) {
+ doc[uom_ha] = "h";
+ } else if (uom == DeviceValueUOM::MINUTES) {
+ doc[uom_ha] = "min";
+ } else if (uom == DeviceValueUOM::SECONDS) {
+ doc[uom_ha] = "s";
+ } else if (uom == DeviceValueUOM::KB) {
+ doc[uom_ha] = "kB";
+ } else if (uom == DeviceValueUOM::LMIN) {
+ doc[uom_ha] = "L/min";
+ } else if (uom == DeviceValueUOM::LH) {
+ doc[uom_ha] = "L/h";
+ } else if (uom == DeviceValueUOM::L) {
+ doc[uom_ha] = "L";
+ } else if (uom != DeviceValueUOM::NONE) {
+ doc[uom_ha] = EMSdevice::uom_to_string(uom); // use default
+ } else if (discovery_type() != discoveryType::HOMEASSISTANT) {
+ doc[uom_ha] = " "; // Domoticz uses " " for a no-uom
}
// set state and device class - always
@@ -1261,7 +1270,7 @@ void Mqtt::add_ha_classes(JsonObject doc, const uint8_t device_type, const uint8
doc[sc_ha] = sc_ha_total_increasing;
doc[dc_ha] = "monetary";
break;
- case DeviceValueUOM::HZ:
+ case DeviceValueUOM::HERTZ:
doc[sc_ha] = sc_ha_measurement;
doc[dc_ha] = "frequency";
break;
@@ -1280,9 +1289,8 @@ void Mqtt::add_ha_classes(JsonObject doc, const uint8_t device_type, const uint8
// DeviceValueUOM::NONE:
// DeviceValueUOM::KMIN:
// for device entities which have numerical values, with no UOM
- if ((type != DeviceValueType::STRING)
- && (type == DeviceValueType::INT8 || type == DeviceValueType::UINT8 || type == DeviceValueType::INT16 || type == DeviceValueType::UINT16
- || type == DeviceValueType::UINT24 || type == DeviceValueType::UINT32)) {
+ if (type == DeviceValueType::INT8 || type == DeviceValueType::UINT8 || type == DeviceValueType::INT16 || type == DeviceValueType::UINT16
+ || type == DeviceValueType::UINT24 || type == DeviceValueType::UINT32) {
if (display_only) {
doc[ic_ha] = F_(iconnum); // set icon
}
@@ -1418,11 +1426,13 @@ bool Mqtt::publish_ha_climate_config(const DeviceValue & dv, const bool has_room
doc["mode_cmd_t"] = mode_cmd_s;
// add hvac_action - https://github.com/emsesp/EMS-ESP32/discussions/2562
- doc["act_t"] = "~/boiler_data";
- doc["act_tpl"] = "{% if value_json.hpactivity=='cooling'%}cooling{%elif value_json.heatingactive=='on'%}heating{%else%}idle{%endif%}";
+ doc["act_t"] = "~/boiler_data";
+ char on_string[12];
+ doc["act_tpl"] = "{% if value_json.hpactivity=='cooling'%}cooling{%elif value_json.heatingactive=='" + std::string(Helpers::render_boolean(on_string, true))
+ + "'%}heating{%else%}idle{%endif%}"; // uses boolean translation for on/true
// map EMS modes to HA climate modes
- // EMS modes: auto, manual, heat, off, night, day, nofrost, eco, comfort, cool)
+ // EMS modes: auto, manual, heat, off, night, day, nofrost, eco, comfort, cool
// HA supports: auto, off, cool, heat, dry, fan_only
bool found_auto = false;
bool found_heat = false;
@@ -1628,4 +1638,4 @@ void Mqtt::add_value_bool(JsonObject doc, const char * name, bool value) {
}
}
-} // namespace emsesp
\ No newline at end of file
+} // namespace emsesp
diff --git a/src/core/mqtt.h b/src/core/mqtt.h
index 8a2f82137..2c803e0c1 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -341,6 +341,7 @@ class Mqtt {
static uint8_t entity_format_;
static std::string discovery_prefix_;
static uint8_t discovery_type_;
+ static uint8_t ha_number_mode_;
static bool publish_single_;
static bool publish_single2cmd_;
static bool send_response_;
diff --git a/src/core/roomcontrol.cpp b/src/core/roomcontrol.cpp
index 799db788f..a2c0c5098 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/core/roomcontrol.h b/src/core/roomcontrol.h
index b7adb5df3..5b361cfe3 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/core/shower.cpp b/src/core/shower.cpp
index ee9d3fc1a..105b155bb 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/core/shower.h b/src/core/shower.h
index c764b85d7..bc21cfcec 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/core/system.cpp b/src/core/system.cpp
index 83b026cbb..d031a05f2 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -105,10 +105,8 @@ uint32_t System::led_flash_duration_ = 0;
bool System::led_flash_timer_ = false;
// GPIOs
-std::vector> System::valid_system_gpios_;
-std::vector> System::used_gpios_;
-std::vector> System::snapshot_used_gpios_;
-std::vector> System::snapshot_valid_system_gpios_;
+std::vector> System::valid_system_gpios_;
+std::vector> System::used_gpios_;
// find the index of the language
// 0 = EN, 1 = DE, etc...
@@ -318,13 +316,15 @@ void System::get_partition_info() {
auto current_partition = (const char *)esp_ota_get_running_partition()->label;
- // update the current version and partition name in NVS if not already set (saves on flash wearing)
- if (EMSESP::nvs_.isKey(current_partition)) {
- if (EMSESP::nvs_.getString(current_partition) != EMSESP_APP_VERSION) {
- EMSESP::nvs_.putString(current_partition, EMSESP_APP_VERSION);
- }
- } else {
- EMSESP::nvs_.putString(current_partition, EMSESP_APP_VERSION); // create new entry
+ // update the current version and partition name in NVS if not already set
+ if (EMSESP::nvs_.getString(current_partition) != EMSESP_APP_VERSION || emsesp::EMSESP::nvs_.getBool(emsesp::EMSESP_NVS_BOOT_NEW_FIRMWARE, true)) {
+ EMSESP::nvs_.putBool(emsesp::EMSESP_NVS_BOOT_NEW_FIRMWARE, false);
+ EMSESP::nvs_.putString(current_partition, EMSESP_APP_VERSION);
+ char c[20];
+ snprintf(c, sizeof(c), "d_%s", current_partition);
+ auto t = time(nullptr);
+ // write timestamp always with new version, if clock is not set, this will be updated with ntp
+ EMSESP::nvs_.putULong(c, t);
}
// Loop through all available partitions and update map with the version info pulled from NVS
@@ -347,16 +347,17 @@ void System::get_partition_info() {
// get the version from the NVS store, and add to map
if (is_valid) {
PartitionInfo p_info;
- p_info.version = "";
- p_info.install_date = ""; // this will be added later when NTP is connected
+ // if there is an entry for this partition in NVS, get it's version from NVS
+ p_info.version = EMSESP::nvs_.getString(part->label, "").c_str();
+ char c[20];
+ snprintf(c, sizeof(c), "d_%s", (const char *)part->label);
+ time_t d = EMSESP::nvs_.getULong(c, 0);
+ char time_string[25];
+ strftime(time_string, sizeof(time_string), "%FT%T", localtime(&d));
+ p_info.install_date = d > 1500000000L ? time_string : "";
p_info.size = part->size / 1024; // set size in KB
- // if there is an entry for this partition in NVS, get it's version from NVS
- if (EMSESP::nvs_.isKey(part->label)) {
- p_info.version = EMSESP::nvs_.getString(part->label).c_str();
- }
-
partition_info_[part->label] = p_info;
}
@@ -368,36 +369,21 @@ void System::get_partition_info() {
// set NTP install time/date for the current partition
// assumes NTP is connected and working
-void System::set_partition_install_date(bool override) {
+void System::set_partition_install_date() {
#ifndef EMSESP_STANDALONE
auto current_partition = (const char *)esp_ota_get_running_partition()->label;
if (current_partition == nullptr) {
return; // fail-safe
}
- // skip if it already has an install date, unless override is true
- if (!partition_info_[current_partition].install_date.empty() && !override) {
- return;
+ char c[20];
+ snprintf(c, sizeof(c), "d_%s", current_partition);
+ time_t d = EMSESP::nvs_.getULong(c, 0);
+ if (d < 1500000000L) {
+ LOG_INFO("Firmware is fresh, setting the new install date in partition %s", current_partition);
+ auto t = time(nullptr) - uuid::get_uptime_sec();
+ EMSESP::nvs_.putULong(c, t);
}
-
- // EMSESP_NVS_BOOT_NEW_FIRMWARE is set in UploadFileService::uploadComplete()
- auto is_fresh_firmware = EMSESP::nvs_.getBool(EMSESP_NVS_BOOT_NEW_FIRMWARE);
- // always reset flag after setting the install date
- EMSESP::nvs_.putBool(EMSESP_NVS_BOOT_NEW_FIRMWARE, false);
-
- // check if the firmware is a new upload
- if (is_fresh_firmware) {
- LOG_DEBUG("Firmware is fresh, setting the new install date in partition %s", current_partition);
- } else {
- return; // skip, not new
- }
-
- // set current date/time from NTP
- char time_string[25];
- time_t now = time(nullptr);
- strftime(time_string, sizeof(time_string), "%FT%T", localtime(&now));
- partition_info_[current_partition].install_date = time_string;
- LOG_DEBUG("Adding NTP install date %s to partition %s", time_string, current_partition);
#endif
}
@@ -1228,16 +1214,16 @@ void System::show_system(uuid::console::Shell & shell) {
// GPIOs
shell.println(" GPIOs:");
shell.printf(" in use:");
- for (const auto & gpio : used_gpios_) {
- shell.printf(" %d", gpio);
+ for (const auto & usage : used_gpios_) {
+ shell.printf(" %d(%s)", usage.pin, usage.source.c_str());
}
- shell.printfln(" (total %d)", used_gpios_.size());
+ shell.printfln(" [total %d]", used_gpios_.size());
auto available = available_gpios();
shell.printf(" available:");
for (const auto & gpio : available) {
shell.printf(" %d", gpio);
}
- shell.printfln(" (total %d)", available.size());
+ shell.printfln(" [total %d]", available.size());
// List all partitions and their version info
shell.println(" Partitions:");
for (const auto & partition : partition_info_) {
@@ -1422,7 +1408,7 @@ bool System::check_upgrade() {
// see if we're missing a version, will be < 3.5.0b13 from Dec 23 2022
missing_version = (settingsVersion.empty() || (settingsVersion.length() < 5));
if (missing_version) {
- LOG_WARNING("No version information found");
+ LOG_WARNING("No version information found. Assuming version 3.5.0");
settingsVersion = "3.5.0"; // this was the last stable version without version info
}
@@ -1434,7 +1420,7 @@ bool System::check_upgrade() {
bool save_version = true;
bool reboot_required = false;
- LOG_DEBUG("Checking for version upgrades (settings file is v%d.%d.%d%s)",
+ LOG_DEBUG("Checking for version upgrades from v%d.%d.%d%s",
settings_version.major(),
settings_version.minor(),
settings_version.patch(),
@@ -1444,7 +1430,7 @@ bool System::check_upgrade() {
if (this_version > settings_version) {
// we need to do an upgrade
if (missing_version) {
- LOG_NOTICE("Upgrading to version %d.%d.%d%s", this_version.major(), this_version.minor(), this_version.patch(), this_version_type);
+ LOG_NOTICE("Upgrading to version %d.%d.%d%s", this_version.major(), this_version.minor(), this_version.patch(), this_version_type.c_str());
} else {
LOG_NOTICE("Upgrading from version %d.%d.%d%s to %d.%d.%d%s",
settings_version.major(),
@@ -1511,7 +1497,15 @@ bool System::check_upgrade() {
});
} else if (this_version < settings_version) {
// downgrading
- LOG_NOTICE("Downgrading to version %d.%d.%d%s", this_version.major(), this_version.minor(), this_version.patch(), this_version_type.c_str());
+ LOG_NOTICE("Downgrading from version %d.%d.%d%s to version %d.%d.%d%s",
+ settings_version.major(),
+ settings_version.minor(),
+ settings_version.patch(),
+ settings_version_type.c_str(),
+ this_version.major(),
+ this_version.minor(),
+ this_version.patch(),
+ this_version_type.c_str());
} else {
save_version = false; // same version, do nothing
}
@@ -1749,9 +1743,10 @@ void System::get_value_json(JsonObject output, const std::string & circuit, cons
if (circuit.length()) {
output["circuit"] = circuit;
}
- output["readable"] = true;
- output["writeable"] = (name == "showerTimer" || name == "showerAlert" || name == "enabled" || name == "hideLed" || name == "analogEnabled");
- output["visible"] = true;
+ output["readable"] = true;
+ output["writeable"] =
+ (name == "txpause" || name == "showerTimer" || name == "showerAlert" || name == "enabled" || name == "hideLed" || name == "analogEnabled");
+ output["visible"] = true;
if (val.is()) {
output["value"] = val.as();
output["type"] = "boolean";
@@ -1842,7 +1837,6 @@ std::string System::get_metrics_prometheus() {
for (JsonPair p : obj) {
std::string key = p.key().c_str();
- std::string path = prefix.empty() ? key : prefix + "." + key;
std::string metric_name = prefix.empty() ? key : prefix + "_" + key;
if (should_ignore(prefix, key)) {
@@ -1981,6 +1975,7 @@ std::string System::get_metrics_prometheus() {
}
result += info_metric;
+ // TODO fix, as local_info_labels is always empty here
if (!local_info_labels.empty()) {
result += "{";
bool first = true;
@@ -2042,8 +2037,9 @@ bool System::command_info(const char * value, const int8_t id, JsonObject output
#else
node["version"] = EMSESP_APP_VERSION;
#endif
- node["uptime"] = uuid::log::format_timestamp_ms(uuid::get_uptime_ms(), 3);
- node["uptimeSec"] = uuid::get_uptime_sec();
+ node["uptime"] = uuid::log::format_timestamp_ms(uuid::get_uptime_ms(), 3);
+ node["uptimeSec"] = uuid::get_uptime_sec();
+ node["resetReason"] = EMSESP::system_.reset_reason(0) + " / " + EMSESP::system_.reset_reason(1);
#ifndef EMSESP_STANDALONE
node["platform"] = EMSESP_PLATFORM;
node["cpuType"] = ESP.getChipModel();
@@ -2056,10 +2052,7 @@ bool System::command_info(const char * value, const int8_t id, JsonObject output
node["freeApp"] = EMSESP::system_.appFree(); // kilobytes
node["partition"] = (const char *)esp_ota_get_running_partition()->label; // active partition
node["flash_chip_size"] = ESP.getFlashChipSize() / 1024; // kilobytes
-#endif
- node["resetReason"] = EMSESP::system_.reset_reason(0) + " / " + EMSESP::system_.reset_reason(1);
-#ifndef EMSESP_STANDALONE
- node["psram"] = (EMSESP::system_.PSram() > 0); // make boolean
+ node["psram"] = (EMSESP::system_.PSram() > 0); // make boolean
if (EMSESP::system_.PSram()) {
node["psramSize"] = EMSESP::system_.PSram();
node["freePsram"] = ESP.getFreePsram() / 1024;
@@ -2068,8 +2061,27 @@ bool System::command_info(const char * value, const int8_t id, JsonObject output
#if CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32S2
node["temperature"] = EMSESP::system_.temperature();
#endif
-
#endif
+ node["txpause"] = EMSbus::tx_mode() == EMS_TXMODE_OFF;
+
+ // GPIO information
+ std::string gpios_in_use_str;
+ for (const auto & usage : EMSESP::system_.used_gpios_) {
+ if (!gpios_in_use_str.empty()) {
+ gpios_in_use_str += ", ";
+ }
+ gpios_in_use_str += Helpers::itoa(usage.pin);
+ }
+ node["gpios_in_use"] = gpios_in_use_str;
+
+ std::string gpios_available_str;
+ for (const auto & gpio : EMSESP::system_.available_gpios()) {
+ if (!gpios_available_str.empty()) {
+ gpios_available_str += ", ";
+ }
+ gpios_available_str += Helpers::itoa(gpio);
+ }
+ node["gpios_available"] = gpios_available_str;
// Network Status
node = output["network"].to();
@@ -2387,35 +2399,62 @@ bool System::load_board_profile(std::vector & data, const std::string &
if (board_profile == "default") {
return false; // unknown, return false
} else if (board_profile == "S32") {
- data = {2, 18, 23, 5, 0, PHY_type::PHY_TYPE_NONE, 0, 0, 0, 0}; // BBQKees Gateway S32
+ data = {2, 18, 23, 5, 0, PHY_type::PHY_TYPE_NONE, 0, 0, 0, 0}; // BBQKees Gateway S32
+ valid_system_gpios_ = {0, 2, 5, 18, 23};
} else if (board_profile == "E32") {
- data = {2, 4, 5, 17, 33, PHY_type::PHY_TYPE_LAN8720, 16, 1, 0, 0}; // BBQKees Gateway E32
+ data = {2, 4, 5, 17, 33, PHY_type::PHY_TYPE_LAN8720, 16, 1, 0, 0}; // BBQKees Gateway E32
+ valid_system_gpios_ = {0, 2, 4, 5, 16, 17, 33};
} else if (board_profile == "E32V2") {
- data = {2, 14, 4, 5, 34, PHY_type::PHY_TYPE_LAN8720, 15, 0, 1, 0}; // BBQKees Gateway E32 V2
+ data = {2, 14, 4, 5, 34, PHY_type::PHY_TYPE_LAN8720, 15, 0, 1, 0}; // BBQKees Gateway E32 V2
+ valid_system_gpios_ = {0, 2, 4, 5, 14, 15, 34};
} else if (board_profile == "E32V2_2") {
- data = {32, 14, 4, 5, 34, PHY_type::PHY_TYPE_LAN8720, 15, 0, 1, 1}; // BBQKees Gateway E32 V2.2, rgb led
+ data = {32, 14, 4, 5, 34, PHY_type::PHY_TYPE_LAN8720, 15, 0, 1, 1}; // BBQKees Gateway E32 V2.2, rgb led
+ valid_system_gpios_ = {0, 2, 4, 5, 14, 15, 32, 34, 36, 39}; // system analogs 36, 39, led 2
} else if (board_profile == "MH-ET") {
data = {2, 18, 23, 5, 0, PHY_type::PHY_TYPE_NONE, 0, 0, 0, 0}; // MH-ET Live D1 Mini
+ // allow only pins that are marked as `can always be used`
+ valid_system_gpios_ = {0, 2, 5, 18, 23, 12, 13, 14, 15, 16, 17, 26, 27, 33};
+ // can always be used: 12, 13 ,14, 15, 16, 17, 26, 27, 33
+ // can be used if no other function 2, 4, 5, 9, 10, 18, 19, 21, 22, 23, 25, 34, 35, 36, 39
} else if (board_profile == "NODEMCU") {
data = {2, 18, 23, 5, 0, PHY_type::PHY_TYPE_NONE, 0, 0, 0, 0}; // NodeMCU 32S
+ // https://blog.berrybase.de/esp32-node-mcu-module-anfaenger-guide/
+ // all available pins, exclude uart0
+ valid_system_gpios_ = {0, 2, 5, 18, 23, 4, 12, 13, 14, 15, 16, 17, 21, 22, 25, 26, 27, 32, 33, 34, 35, 36, 39};
} else if (board_profile == "LOLIN") {
data = {2, 18, 17, 16, 0, PHY_type::PHY_TYPE_NONE, 0, 0, 0, 0}; // Lolin D32
+ // https://www.wemos.cc/en/latest/d32/d32.html
+ valid_system_gpios_ = {2, 18, 17, 16, 0, 4, 5, 12, 13, 14, 15, 21, 22, 25, 26, 27, 32, 33, 34, 35, 36, 39};
} else if (board_profile == "OLIMEX") {
data = {0, 0, 36, 4, 34, PHY_type::PHY_TYPE_LAN8720, -1, 0, 0, 0}; // Olimex ESP32-EVB (uses U1TXD/U1RXD/BUTTON, no LED or Temperature sensor)
+ // https://github.com/OLIMEX/ESP32-EVB/blob/master/HARDWARE/REV-K1/ESP32-EVB_Rev_K1.pdf
+ // uart0 = 1, 3; CAN = 5, 35; relais = 32, 33; ir = 12(tx), 39(rx); SD-card = 2, 14, 15, button = 34
+ // relais and ir can be configured as analog sensor
+ valid_system_gpios_ = {4, 34, 36, 12, 13, 21, 22, 25, 26, 27, 32, 33, 39};
} else if (board_profile == "OLIMEXPOE") {
data = {0, 0, 36, 4, 34, PHY_type::PHY_TYPE_LAN8720, 12, 0, 3, 0}; // Olimex ESP32-POE
+ // https://github.com/OLIMEX/ESP32-POE/blob/master/HARDWARE/ESP32-PoE-hardware-revision-L1/ESP32-PoE_Rev_L1.pdf
+ // uart0 = 1, 3; SD-card = 2, 14, 15; button = 34;
+ valid_system_gpios_ = {4, 34, 36, 12, 13, 21, 22, 25, 26, 27, 32, 33, 39};
} else if (board_profile == "C3MINI") {
#if defined(BOARD_C3_MINI_V1)
data = {7, 1, 4, 5, 9, PHY_type::PHY_TYPE_NONE, 0, 0, 0, 0}; // Lolin C3 Mini V1
#else
data = {7, 1, 4, 5, 9, PHY_type::PHY_TYPE_NONE, 0, 0, 0, 1}; // Lolin C3 Mini with RGB Led
#endif
+ // https://www.wemos.cc/en/latest/c3/c3_mini.html
+ valid_system_gpios_ = {0, 1, 3, 4, 5, 6, 7, 9, 10, 20, 21};
} else if (board_profile == "S2MINI") {
data = {15, 7, 11, 12, 0, PHY_type::PHY_TYPE_NONE, 0, 0, 0, 0}; // Lolin S2 Mini
+ // https://www.wemos.cc/en/latest/s2/s2_mini.html
+ set_valid_system_gpios();
} else if (board_profile == "S3MINI") {
data = {17, 18, 8, 5, 0, PHY_type::PHY_TYPE_NONE, 0, 0, 0, 0}; // Liligo S3
+ // https://lilygo.cc/products/t7-s3
+ set_valid_system_gpios();
} else if (board_profile == "S32S3") {
- data = {2, 18, 5, 17, 0, PHY_type::PHY_TYPE_NONE, 0, 0, 0, 0}; // BBQKees Gateway S3
+ data = {2, 18, 5, 17, 0, PHY_type::PHY_TYPE_NONE, 0, 0, 0, 0}; // BBQKees Gateway S3
+ valid_system_gpios_ = {0, 2, 5, 17, 18};
} else {
return false; // unknown, return false
}
@@ -2458,15 +2497,15 @@ bool System::command_txpause(const char * value, const int8_t id) {
// format command - factory reset, removing all config files
bool System::command_format(const char * value, const int8_t id) {
-#if !defined(EMSESP_STANDALONE) && !defined(EMSESP_DEBUG)
- // don't really format the filesystem in debug or standalone mode
+#if !defined(EMSESP_STANDALONE) && !defined(EMSESP_TEST)
+ // don't really format the filesystem in test or standalone mode
if (LittleFS.format()) {
LOG_INFO("Filesystem formatted successfully. All config files removed.");
} else {
LOG_ERROR("Format failed");
}
#else
- LOG_INFO("Format command not available in standalone or debug mode");
+ LOG_ERROR("Format command not available in standalone or test mode");
#endif
// restart will be handled by the main loop
@@ -2540,11 +2579,7 @@ void System::ntp_connected(bool b) {
if (b != ntp_connected_) {
if (b) {
LOG_INFO("NTP connected");
-#ifdef EMSESP_DEBUG // reset the install date on startup if in debug mode
- set_partition_install_date(true);
-#else
- set_partition_install_date(false);
-#endif
+ set_partition_install_date();
} else {
LOG_WARNING("NTP disconnected"); // if turned off report it
}
@@ -2567,21 +2602,6 @@ bool System::ntp_connected() {
// see if its a BBQKees Gateway by checking the nvs values
String System::getBBQKeesGatewayDetails(uint8_t detail) {
#ifndef EMSESP_STANDALONE
- /*
- if (!EMSESP::nvs_.isKey("mfg")) {
- return "";
- }
-
- // mfg can be either "BBQKees" or "BBQKees Electronics"
- auto mfg = EMSESP::nvs_.getString("mfg");
- if (mfg) {
- if (!mfg.startsWith("BBQKees")) {
- return "";
- }
- }
-
- return "BBQKees Gateway Model " + EMSESP::nvs_.getString("model") + " v" + EMSESP::nvs_.getString("hwrevision") + "/" + EMSESP::nvs_.getString("batch");
-*/
union {
struct {
uint32_t no : 4;
@@ -2594,14 +2614,17 @@ String System::getBBQKeesGatewayDetails(uint8_t detail) {
};
uint32_t reg;
} gw;
+
for (uint8_t reg = 0; reg < 8; reg++) {
gw.reg = esp_efuse_read_reg(EFUSE_BLK3, reg);
if (reg == 7 || esp_efuse_read_reg(EFUSE_BLK3, reg + 1) == 0)
break;
}
+
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", "", "", ""};
+
switch (detail) {
case FUSE_VALUE::MFG:
return gw.mfg < 2 ? String(mfg[gw.mfg]) : "unknown";
@@ -2619,9 +2642,11 @@ String System::getBBQKeesGatewayDetails(uint8_t detail) {
default:
break;
}
+
if (!gw.reg || gw.mfg > 1 || gw.model > 5) {
return "";
}
+
return String(mfg[gw.mfg]) + " " + String(model[gw.model]) + " rev." + String(gw.rev_major) + "." + String(gw.rev_minor) + "/" + String(2000 + gw.year)
+ (gw.month < 10 ? "0" : "") + String(gw.month) + String(gw.no);
#else
@@ -2698,6 +2723,9 @@ bool System::uploadFirmwareURL(const char * url) {
// we're about to start the upload, set the status so the Web System Monitor spots it
EMSESP::system_.systemStatus(SYSTEM_STATUS::SYSTEM_STATUS_UPLOADING);
+ // set a callback so we can monitor progress in the WebUI
+ Update.onProgress([](size_t progress, size_t total) { EMSESP::system_.systemStatus(SYSTEM_STATUS::SYSTEM_STATUS_UPLOADING + (progress * 100 / total)); });
+
// get tcp stream and send it to Updater
WiFiClient * stream = http.getStreamPtr();
if (Update.writeStream(*stream) != firmware_size) {
@@ -2786,10 +2814,15 @@ bool System::command_read(const char * value, const int8_t id) {
}
// set the system status code - SYSTEM_STATUS in system.h
+// this is also used in the SystemMonitor.tsx WebUI to show the progress of the firmware upload, start at 100
void System::systemStatus(uint8_t status_code) {
if (systemStatus_ != status_code) {
systemStatus_ = status_code;
- LOG_DEBUG("Setting System status code %d", status_code);
+#ifdef EMSESP_DEBUG
+ if (status_code < SYSTEM_STATUS::SYSTEM_STATUS_UPLOADING) {
+ LOG_DEBUG("Setting System status code %d", status_code);
+ }
+#endif
}
}
@@ -2797,8 +2830,11 @@ uint8_t System::systemStatus() {
return systemStatus_;
}
-// takes a string range like "6-11, 1, 23, 24-48" which has optional ranges and single values and converts to a vector of ints
-std::vector> System::string_range_to_vector(const std::string & range) {
+// takes two arguments:
+// the first is the full range of pins to consider
+// the second is a string range of GPIOs to exclude, like "6-11, 1, 23, 24-48"
+// returns a vector array of GPIOs that are valid for use
+std::vector> System::string_range_to_vector(const std::string & range, const std::string & exclude) {
std::vector> gpios;
std::string::size_type pos = 0;
std::string::size_type prev = 0;
@@ -2830,41 +2866,138 @@ std::vector> System::string_range_to_vector(con
// handle the last part
process_part(range.substr(prev));
+ // if exclude list is provided, parse it and remove excluded GPIOs
+ if (!exclude.empty()) {
+ std::vector> exclude_gpios;
+ pos = 0;
+ prev = 0;
+
+ auto process_exclude = [&exclude_gpios](std::string part) {
+ // trim whitespace
+ part.erase(0, part.find_first_not_of(" \t"));
+ part.erase(part.find_last_not_of(" \t") + 1);
+
+ // check if it's a range (contains '-')
+ std::string::size_type dash_pos = part.find('-');
+ if (dash_pos != std::string::npos) {
+ // it's a range like "6-11"
+ int start = std::stoi(part.substr(0, dash_pos));
+ int end = std::stoi(part.substr(dash_pos + 1));
+ for (int i = start; i <= end; i++) {
+ exclude_gpios.push_back(static_cast(i));
+ }
+ } else {
+ exclude_gpios.push_back(static_cast(std::stoi(part)));
+ }
+ };
+
+ while ((pos = exclude.find(',', prev)) != std::string::npos) {
+ process_exclude(exclude.substr(prev, pos - prev));
+ prev = pos + 1;
+ }
+
+ // handle the last part
+ process_exclude(exclude.substr(prev));
+
+ // remove excluded GPIOs from the main list
+ gpios.erase(std::remove_if(gpios.begin(),
+ gpios.end(),
+ [&exclude_gpios](uint8_t gpio) { return std::find(exclude_gpios.begin(), exclude_gpios.end(), gpio) != exclude_gpios.end(); }),
+ gpios.end());
+ }
+
return gpios;
}
// initialize a list of valid GPIOs based on the ESP32 board
-// note: we always allow 0, which is used to indicate Dallas or LED is disabled
+// string_to_vector() take two strings, the first is the range of GPIOs to use, the second is a list of GPIOs to exclude
+// notes:
+// we always allow 0 (which is usually a strapping pin), because it's used to indicate whether EMS-ESP Dallas or the LED is disabled
+// we allow UART0, 1 and 2 as they are configurable
+// strapping pins are disabled as they can affect boot behaviour
+// we accept GPIOs that are fixed on BBQKees boards
+//
void System::set_valid_system_gpios() {
valid_system_gpios_.clear(); // reset system list
used_gpios_.clear(); // reset used list
// get free gpios based on board/platform type
#if CONFIG_IDF_TARGET_ESP32C3
- // https://www.wemos.cc/en/latest/c3/c3_mini.html
- valid_system_gpios_ = string_range_to_vector("0-10"); // UART0=20,21
+ // https://docs.espressif.com/projects/esp-idf/en/stable/esp32c3/api-reference/peripherals/gpio.html
+ // excluded:
+ // GPIO2, GPIO8 - GPIO9 = strapping pins
+ // GPIO12 - GPIO17 = used for SPI flash and PSRAM
+ // GPIO18 - GPIO19 = USB-JTAG
+ //
+ // notes on what is allowed:
+ // GPIO09 = button on BOARD_C3_MINI_V1
+ // GPIO20 - GPIO21 = UART0, , no chip connected because native USB
+ valid_system_gpios_ = string_range_to_vector("0-21", "2, 8, 12-17, 18-19");
+
#elif CONFIG_IDF_TARGET_ESP32S2
- // 43 and 44 are UART0 pins
- // 38 and 39 are strapping pins, input only
- valid_system_gpios_ = string_range_to_vector("0-14, 19, 20, 21, 33-37, 45, 46");
+ // https://docs.espressif.com/projects/esp-idf/en/stable/esp32s2/api-reference/peripherals/gpio.html
+ // excluded:
+ // GPIO26 - GPIO32 = SPI flash and PSRAM
+ // GPIO45 - GPIO46 = strapping pins
+ // GPIO39 - GPIO42 = USB-JTAG
+ // GPIO22 - GPIO25 = don't exist
+ // GPIO19 - GPIO20 = USB
+ //
+ // notes on what is allowed:
+ // GPIO43, GPIO44 = UART0, no chip connected because native USB
+ valid_system_gpios_ = string_range_to_vector("0-46", "19, 20, 26-32, 45-46, 39-42, 22-25");
+
#elif CONFIG_IDF_TARGET_ESP32S3
- // 43 and 44 are UART0 pins
- // 33-37 for Octal SPI (SPIIO4 through SPIIO7 and SPIDQS)
- // 38 and 39 are input only
- // 45 and 36 are strapping pins, input only
- valid_system_gpios_ = string_range_to_vector("0-14, 17, 18, 21, 33-39, 45, 46");
+ // https://docs.espressif.com/projects/esp-idf/en/stable/esp32s3/api-reference/peripherals/gpio.html
+ // excluded:
+ // GPIO3, GPIO45 - GPIO46 = strapping pins
+ // GPIO26 - GPIO32 = SPI flash and PSRAM and not recommended
+ // GPIO33 - GPIO37 = Octal flash/PSRAM
+ // GPIO19 - GPIO20 = USB-JTAG
+ // GPIO22 - GPIO25 = don't exist
+ //
+ // notes on what is allowed:
+ // GPIO11 - GPIO19 = ADC analog input only pins
+ // GPIO47 - GPIO48 = valid on a Wemos S3
+ // GPIO8 = used by Liligo S3 board profile for Rx
+ valid_system_gpios_ = string_range_to_vector("0-48", "3, 45-46, 26-32, 33-37, 19-20, 22-25");
+
#elif CONFIG_IDF_TARGET_ESP32
- // 1 and 3 are UART0 pins, but used for some eth-boards (BBQKees-E32, OlimexPOE)
- // 32-39 is ADC1, input only
+ // https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/peripherals/gpio.html
+ // excluded:
+ // GPIO6 - GPIO11, GPIO16 - GPIO17 = used for SPI flash and PSRAM (dio mode only GPIO06-GPIO08, GPIO11)
+ // GPIO20, GPIO24, GPIO28 - GPIO31 = don't exist
+ // GPIO01, GPIO03 = UART0, normal connected to UART/USB chip
+ //
+ // notes on known boards:
+ // boards have valid gpios depending on pinout and internal used gpios, see: `load_board_profile()`
+ //
+ // notes on BBQKees boards:
+ // *** We block all free GPIOS in load_board_profile() ***
+ // GPIO2, GPIO4, GPIO5, GPIO14 = used on BBQKees boards for either LED, Dallas or Rx
+ // GPIO12, GPIO13, GPIO35 = BBQKees E32V2_2 internal system pins
+ // GPIO33 = BBQKees E32V_2 unused internal NTC system sensor
+ // GPIO36 = used on BBQKees boards for supply_voltage (E32V2.2)
+ // GPIO39 = used on BBQKees boards for core_voltage (E32V2.2)
+ //
+ // notes on what is allowed with special functions:
+ // GPIO01, GPIO03 = UART0, not always connected to uart/usb chip
+ // GPIO12 - GPIO15 = JTAG, normally not used
+ // GPIO00, GPIO05, GPIO12, GPIO15 = strapping pins, can be used with care
+ // GPIO34, GPIO35, GPIO37 = input only
+ // GPIO23 and GPIO18 are used by Ethernet, excluded later by eth config
+ // GPIO00, GPIO02, GPIO04, GPIO12 - GPIO15, GPIO25 - GPIO27 = ADC2 (10 ch), used by WiFI-driver
+ // GPIO32 - GPIO39 = ADC1 (8 ch), can always be used
if (ESP.getPsramSize() > 0) {
- // if psram is enabled remove pins 16 and 17 from the list
- valid_system_gpios_ = string_range_to_vector("0-5, 12-15, 18-19, 23, 25-27, 32-39");
+ // remove SPI0/1 PSRAM pins GPIO16 (CS) and GPIO17 (CLK) from the list
+ valid_system_gpios_ = string_range_to_vector("0-39", "6-11, 16, 17, 20, 24, 28-31");
} else {
- valid_system_gpios_ = string_range_to_vector("0-5, 12-19, 23, 25-27, 32-39");
+ valid_system_gpios_ = string_range_to_vector("0-39", "6-11, 20, 24, 28-31");
}
#elif defined(EMSESP_STANDALONE)
- valid_system_gpios_ = string_range_to_vector("0-5, 12-19, 23, 25-27, 32-39");
+ valid_system_gpios_ = string_range_to_vector("0-39");
#endif
+ valid_system_gpios_.shrink_to_fit();
}
// check if a pin is valid ESP32 pin and if not already used, add to the used gpio list
@@ -2873,8 +3006,9 @@ bool System::add_gpio(uint8_t pin, const char * source_name) {
// check if this is a valid user GPIO
if (std::find(valid_system_gpios_.begin(), valid_system_gpios_.end(), pin) != valid_system_gpios_.end()) {
// It's valid now check if it's already in the used list
- if (std::find(used_gpios_.begin(), used_gpios_.end(), pin) != used_gpios_.end()) {
- LOG_WARNING("GPIO %d for %s is already in use", pin, source_name);
+ auto it = std::find_if(used_gpios_.begin(), used_gpios_.end(), [pin](const GpioUsage & usage) { return usage.pin == pin; });
+ if (it != used_gpios_.end()) {
+ LOG_WARNING("GPIO %d for %s is already in use by %s", pin, source_name, it->source.c_str());
return false; // Pin is already used
}
} else {
@@ -2887,24 +3021,24 @@ bool System::add_gpio(uint8_t pin, const char * source_name) {
remove_gpio(pin);
LOG_DEBUG("Adding GPIO %d for %s to used gpio list", pin, source_name);
- used_gpios_.push_back(pin); // add to used list
+ used_gpios_.push_back({pin, source_name}); // add to used list
return true;
}
// remove a gpio from both valid and used lists
void System::remove_gpio(uint8_t pin, bool also_system) {
- auto it = std::find(used_gpios_.begin(), used_gpios_.end(), pin);
+ auto it = std::find_if(used_gpios_.begin(), used_gpios_.end(), [pin](const GpioUsage & usage) { return usage.pin == pin; });
if (it != used_gpios_.end()) {
LOG_DEBUG("GPIO %d removed from used gpio list", pin);
used_gpios_.erase(it);
}
if (also_system) {
- it = std::find(valid_system_gpios_.begin(), valid_system_gpios_.end(), pin);
- if (it != valid_system_gpios_.end()) {
+ auto it_sys = std::find(valid_system_gpios_.begin(), valid_system_gpios_.end(), pin);
+ if (it_sys != valid_system_gpios_.end()) {
LOG_DEBUG("GPIO %d removed from valid gpio list", pin);
- valid_system_gpios_.erase(it);
+ valid_system_gpios_.erase(it_sys);
}
}
}
@@ -2913,7 +3047,7 @@ void System::remove_gpio(uint8_t pin, bool also_system) {
std::vector System::available_gpios() {
std::vector gpios;
for (const auto & gpio : valid_system_gpios_) {
- if (std::find(used_gpios_.begin(), used_gpios_.end(), gpio) == used_gpios_.end()) {
+ if (std::find_if(used_gpios_.begin(), used_gpios_.end(), [gpio](const GpioUsage & usage) { return usage.pin == gpio; }) == used_gpios_.end()) {
gpios.push_back(gpio); // didn't find it in used_gpios_, so it's available
}
}
@@ -2921,37 +3055,26 @@ std::vector System::available_gpios() {
}
// make a snapshot of the current GPIOs
-void System::make_snapshot_gpios() {
- snapshot_used_gpios_.clear();
- for (const auto & gpio : used_gpios_) {
- snapshot_used_gpios_.push_back(gpio);
+void System::make_snapshot_gpios(std::vector & u_gpios, std::vector & s_gpios) {
+ for (const auto & usage : used_gpios_) {
+ u_gpios.push_back(usage.pin);
}
-
- snapshot_valid_system_gpios_.clear();
for (const auto & gpio : valid_system_gpios_) {
- snapshot_valid_system_gpios_.push_back(gpio);
+ s_gpios.push_back(gpio);
}
}
// restore the GPIOs from the snapshot
-void System::restore_snapshot_gpios() {
+void System::restore_snapshot_gpios(std::vector & u_gpios, std::vector & s_gpios) {
used_gpios_.clear();
- for (const auto & gpio : snapshot_used_gpios_) {
- used_gpios_.push_back(gpio);
+ for (const auto & gpio : u_gpios) {
+ used_gpios_.push_back({static_cast(gpio), "restored"});
}
valid_system_gpios_.clear();
- for (const auto & gpio : snapshot_valid_system_gpios_) {
+ for (const auto & gpio : s_gpios) {
valid_system_gpios_.push_back(gpio);
}
-
- // clear the snapshot
- clear_snapshot_gpios();
-}
-
-void System::clear_snapshot_gpios() {
- snapshot_used_gpios_.clear();
- snapshot_valid_system_gpios_.clear();
}
} // namespace emsesp
diff --git a/src/core/system.h b/src/core/system.h
index 3d2c9c6c4..ba9c33120 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -159,13 +159,11 @@ class System {
static void extractSettings(const char * filename, const char * section, JsonObject output);
static bool saveSettings(const char * filename, const char * section, JsonObject input);
- // GPIOs
static bool add_gpio(uint8_t pin, const char * source_name);
static std::vector available_gpios();
static bool load_board_profile(std::vector & data, const std::string & board_profile);
- static void make_snapshot_gpios();
- static void restore_snapshot_gpios();
- static void clear_snapshot_gpios();
+ static void make_snapshot_gpios(std::vector & u_gpios, std::vector & s_gpios);
+ static void restore_snapshot_gpios(std::vector & u_gpios, std::vector & s_gpios);
static bool readCommand(const char * data);
@@ -392,7 +390,7 @@ class System {
uint8_t systemStatus_; // uses SYSTEM_STATUS enum
- void set_partition_install_date(bool override = false);
+ void set_partition_install_date();
// button
static PButton myPButton_; // PButton instance
@@ -435,13 +433,15 @@ class System {
void led_monitor();
void system_check();
- static std::vector> string_range_to_vector(const std::string & range);
+ static std::vector> string_range_to_vector(const std::string & range, const std::string & exclude = "");
// GPIOs
- static std::vector> valid_system_gpios_; // list of valid GPIOs for the ESP32 board that can be used
- static std::vector> used_gpios_; // list of GPIOs used by the application
- static std::vector> snapshot_used_gpios_; // snapshot of the used GPIOs
- static std::vector> snapshot_valid_system_gpios_; // snapshot of the valid GPIOs
+ struct GpioUsage {
+ uint8_t pin;
+ std::string source;
+ };
+ static std::vector> valid_system_gpios_; // list of valid GPIOs for the ESP32 board that can be used
+ static std::vector> used_gpios_; // list of GPIOs used by the application
int8_t wifi_quality(int8_t dBm);
diff --git a/src/core/telegram.cpp b/src/core/telegram.cpp
index 5d6b5d797..67d4bc4ad 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -221,14 +221,14 @@ void RxService::add(uint8_t * data, uint8_t length) {
LOG_TRACE("Rx: %s", Helpers::data_to_hex(data, length).c_str());
}
- LOG_DEBUG("New Rx telegram, message length %d", message_length);
-
- // if we don't have a type_id exit,
- // do not exit on empty message, it is checked for toggle fetch
+ // if we don't have a type_id exit
+ // do not exit on empty message, it is checked later for toggle fetch
if (type_id == 0) {
return;
}
+ LOG_DEBUG("New Rx telegram, message length %d", message_length);
+
// create the telegram
auto telegram = std::make_shared(operation, src, dest, type_id, offset, message_data, message_length);
diff --git a/src/core/telegram.h b/src/core/telegram.h
index 99390f826..afebb5e23 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/core/temperaturesensor.cpp b/src/core/temperaturesensor.cpp
index cc2b9f989..83624450b 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -33,8 +33,7 @@ uuid::log::Logger TemperatureSensor::logger_{F_(temperaturesensor), uuid::log::F
// start the 1-wire
void TemperatureSensor::start(const bool factory_settings) {
- // set_internal_ = factory_settings && EMSESP::nvs_.getString("boot").equals("E32V2_2") && EMSESP::nvs_.getString("hwrevision").equals("3.0");
- set_internal_ = factory_settings && analogReadMilliVolts(39) > 700; // core voltage > 2.6V
+ set_internal_ = factory_settings && EMSESP::system_.board_profile() == "E32V2_2";
reload();
if (!dallas_gpio_) {
diff --git a/src/core/temperaturesensor.h b/src/core/temperaturesensor.h
index e44e3bc6d..14c53a5e5 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/devices/alert.cpp b/src/devices/alert.cpp
index 3f206fb45..e4ecf5ddf 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/devices/alert.h b/src/devices/alert.h
index 8e50e7c49..d818aca09 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp
index 65a55cdff..4af5dd1f0 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -2478,9 +2478,9 @@ bool Boiler::set_flow_temp(const char * value, const int8_t id) {
uint8_t v1 = v;
if (has_telegram_id(0xE4)) {
EMSESP::txservice_.add(Telegram::Operation::TX_WRITE, device_id(), EMS_TYPE_UBASetPoints2, 1, &v1, 1, 0, false);
- } else {
- EMSESP::txservice_.add(Telegram::Operation::TX_WRITE, device_id(), EMS_TYPE_UBASetPoints, 0, &v1, 1, 0, false);
}
+ // always write to 0x1A
+ EMSESP::txservice_.add(Telegram::Operation::TX_WRITE, device_id(), EMS_TYPE_UBASetPoints, 0, &v1, 1, 0, false);
return true;
}
diff --git a/src/devices/boiler.h b/src/devices/boiler.h
index 21e8b661c..3de7aec72 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/devices/connect.cpp b/src/devices/connect.cpp
index 78c615187..4a96c0700 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/devices/connect.h b/src/devices/connect.h
index 258adc371..ea846c2b8 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/devices/controller.cpp b/src/devices/controller.cpp
index fa6ad325f..3a4a12efd 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/devices/controller.h b/src/devices/controller.h
index a992bcb92..404ff1b9c 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/devices/extension.cpp b/src/devices/extension.cpp
index 69e78c11d..f3475759b 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/devices/extension.h b/src/devices/extension.h
index 7b60d454c..a6c6c4d5f 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/devices/gateway.cpp b/src/devices/gateway.cpp
index fbcd6557b..2e00e66fd 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/devices/gateway.h b/src/devices/gateway.h
index f169518fb..e120e7ee6 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/devices/generic.cpp b/src/devices/generic.cpp
index d01bed9fc..c05bbed63 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/devices/generic.h b/src/devices/generic.h
index e16571ef9..affedbd7e 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/devices/heatpump.cpp b/src/devices/heatpump.cpp
index 72abd6916..76dc4c1be 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -38,6 +38,7 @@ Heatpump::Heatpump(uint8_t device_type, uint8_t device_id, uint8_t product_id, c
register_telegram_type(0x99A, "HPStarts", false, MAKE_PF_CB(process_HpStarts));
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));
// device values
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &airHumidity_, DeviceValueType::UINT8, FL_(airHumidity), DeviceValueUOM::PERCENT);
@@ -69,6 +70,9 @@ Heatpump::Heatpump(uint8_t device_type, uint8_t device_id, uint8_t product_id, c
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &heatingPumpMod_, DeviceValueType::UINT8, FL_(heatingPumpMod), DeviceValueUOM::PERCENT);
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpCompSpd_, DeviceValueType::UINT8, FL_(hpCompSpd), DeviceValueUOM::PERCENT);
+ register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpActivity_, DeviceValueType::ENUM, FL_(enum_hpactivity1), FL_(hpActivity), DeviceValueUOM::NONE);
+ 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);
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
&controlStrategy_,
@@ -256,6 +260,7 @@ void Heatpump::process_HPSettings(std::shared_ptr telegram) {
// data: 00 2B 00 03 04 13 00 00 00 00 00 02 02 02 (offset 24)
void Heatpump::process_HPComp(std::shared_ptr telegram) {
has_update(telegram, hpCompSpd_, 15);
+ has_update(telegram, hpPower_, 17); // https://github.com/emsesp/EMS-ESP32/issues/2883
}
// 0x999 HPFunctionTest
@@ -290,6 +295,7 @@ void Heatpump::process_HpMeters(std::shared_ptr telegram) {
// Broadcast (0x099A), data: 05 00 00 00 00 00 00 37 00 00 1D 00 00 52 00 00 13 01 00 01 7C
void Heatpump::process_HpStarts(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);
}
@@ -308,6 +314,11 @@ void Heatpump::process_HpEnergy2(std::shared_ptr telegram) {
has_update(telegram, elGenDhw_, 7);
}
+// 0x04AA power, Broadcast (0x04AA), data: 00 00
+// see https://github.com/emsesp/EMS-ESP32/issues/2883
+void Heatpump::process_HpPower(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
@@ -330,8 +341,6 @@ void Heatpump::process_HpEnergy2(std::shared_ptr telegram) {
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
- * Broadcast (0x04AA), data: 00 00
-
*/
bool Heatpump::set_controlStrategy(const char * value, const int8_t id) {
diff --git a/src/devices/heatpump.h b/src/devices/heatpump.h
index 92964cd34..b1c83a0d7 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -43,6 +43,10 @@ class Heatpump : public EMSdevice {
int8_t switchOverTemp_;
uint8_t heatingPumpMod_;
uint8_t hpCompSpd_;
+ uint8_t hpActivity_;
+
+ uint16_t hpPower_;
+ uint16_t hpCurrPower_;
// Function test
uint8_t airPurgeMode_;
@@ -97,6 +101,7 @@ class Heatpump : public EMSdevice {
void process_HpStarts(std::shared_ptr telegram);
void process_HpEnergy1(std::shared_ptr telegram);
void process_HpEnergy2(std::shared_ptr telegram);
+ void process_HpPower(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/devices/heatsource.cpp b/src/devices/heatsource.cpp
index 30b3d2c0b..292846da3 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/devices/heatsource.h b/src/devices/heatsource.h
index 6b2d3c7be..c292cadd8 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/devices/mixer.cpp b/src/devices/mixer.cpp
index b00050329..4dccb32c8 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/devices/mixer.h b/src/devices/mixer.h
index 0285359aa..742308864 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/devices/solar.cpp b/src/devices/solar.cpp
index 28ba574c4..2aa874869 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/devices/solar.h b/src/devices/solar.h
index 3dceaff31..39617655a 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/devices/switch.cpp b/src/devices/switch.cpp
index e65348dc4..5e2c0c8aa 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/devices/switch.h b/src/devices/switch.h
index 6c8005b79..4b05a4ea6 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp
index cdf30e386..bbefe086b 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -1228,7 +1228,7 @@ void Thermostat::process_RC300Summer(std::shared_ptr telegram) {
if (hc->heatingtype != 3) {
has_update(telegram, hc->designtemp, 4);
- has_update(telegram, hc->minflowtemp, 13);
+ has_update(telegram, hc->minflowtemp, model() == EMSdevice::EMS_DEVICE_FLAG_BC400 ? 13 : 8);
} else {
has_update(telegram, hc->designtemp, 5);
has_update(telegram, hc->minflowtemp, 8);
@@ -2474,7 +2474,13 @@ bool Thermostat::set_wwcharge(const char * value, const int8_t id) {
}
if ((model() == EMSdevice::EMS_DEVICE_FLAG_JUNKERS)) {
- write_command(0x0115, 0, b ? 0xFF : 0x00, 0x01D3);
+ // see https://github.com/emsesp/EMS-ESP32/discussions/2860#discussioncomment-15395821
+ if (dhw->id() == DeviceValueTAG::TAG_DHW2) {
+ write_command(0x0115, 2, b ? 0xFF : 0, 0x01D3);
+ } else {
+ uint16_t data = b ? 0xFFFF : 0;
+ write_command(0x0115, 0, (uint8_t *)&data, 2, 0x01D3);
+ }
} else {
write_command(0x02F5 + dhw->offset(), 11, b ? 0xFF : 0x00, 0x02F5 + dhw->offset());
}
@@ -4020,7 +4026,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co
case HeatingCircuit::Mode::MINFLOW:
set_typeid = summer_typeids[hc->hc()];
validate_typeid = set_typeid;
- offset = hc->heatingtype == 3 ? 8 : 13;
+ offset = hc->heatingtype != 3 && model == EMS_DEVICE_FLAG_BC400 ? 13 : 8;
factor = 1;
break;
case HeatingCircuit::Mode::MAXFLOW:
diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h
index c9b2c54e3..2bc1e18fc 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/devices/ventilation.cpp b/src/devices/ventilation.cpp
index ff7f2cc48..9d3a142da 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/devices/ventilation.h b/src/devices/ventilation.h
index 21a3ee028..6311bab5e 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/emsesp_version.h b/src/emsesp_version.h
index e0b786b19..543e41baf 100644
--- a/src/emsesp_version.h
+++ b/src/emsesp_version.h
@@ -1 +1 @@
-#define EMSESP_APP_VERSION "3.8.0"
+#define EMSESP_APP_VERSION "3.8.1-dev.8"
diff --git a/src/test/test.h b/src/test/test.h
index d57333c76..8c13d45a1 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/uart/emsuart_esp32.cpp b/src/uart/emsuart_esp32.cpp
index 2b7bf1fd3..3e141f084 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -52,7 +52,8 @@ void EMSuart::uart_event_task(void * pvParameters) {
uart_read_bytes(EMSUART_NUM, telegram, length, portMAX_DELAY);
EMSESP::incoming_telegram(telegram, (uint8_t)(length - 1));
} else { // flush buffer up to break
- uart_flush_input(EMSUART_NUM);
+ uint8_t buf[UART_FIFO_LEN];
+ uart_read_bytes(EMSUART_NUM, buf, length, portMAX_DELAY);
}
length = 0;
} else if (event.type == UART_BUFFER_FULL) {
diff --git a/src/uart/emsuart_esp32.h b/src/uart/emsuart_esp32.h
index d0727f3ee..fbf011943 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/web/WebAPIService.cpp b/src/web/WebAPIService.cpp
index a6220aa49..9f0a551ac 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/web/WebAPIService.h b/src/web/WebAPIService.h
index 0491bb503..7c71ac595 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/web/WebActivityService.cpp b/src/web/WebActivityService.cpp
index 40c0887bc..cfc4ba79c 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/web/WebActivityService.h b/src/web/WebActivityService.h
index 111161807..224bd1fb4 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/web/WebCustomEntityService.cpp b/src/web/WebCustomEntityService.cpp
index 2b25953c4..184085e56 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/web/WebCustomEntityService.h b/src/web/WebCustomEntityService.h
index 3302edd83..d96254846 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/web/WebCustomizationService.cpp b/src/web/WebCustomizationService.cpp
index 9490b8067..d974c979d 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -120,10 +120,9 @@ StateUpdateResult WebCustomization::update(JsonObject root, WebCustomization & c
for (const JsonObject analogJson : analogJsons) {
// create each of the sensor, overwriting any previous settings
// if the gpio is invalid skip the sensor
- if (!EMSESP::system_.add_gpio(analogJson["gpio"].as(), "Analog Sensor")) {
- EMSESP::logger().warning("Analog sensor: Invalid GPIO %d for %s. Skipping.",
- analogJson["gpio"].as(),
- analogJson["name"].as());
+ auto analog_sensor_name = analogJson["name"].as();
+ if (!EMSESP::system_.add_gpio(analogJson["gpio"].as(), analog_sensor_name)) {
+ EMSESP::logger().warning("Analog sensor: Invalid GPIO %d for %s. Skipping.", analogJson["gpio"].as(), analog_sensor_name);
continue;
}
auto analog = AnalogCustomization();
diff --git a/src/web/WebCustomizationService.h b/src/web/WebCustomizationService.h
index ba905b3ef..a8369d091 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/web/WebDataService.cpp b/src/web/WebDataService.cpp
index e12a77df1..4acfc18a2 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/web/WebDataService.h b/src/web/WebDataService.h
index fad72b02c..99c55f28f 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/web/WebLogService.cpp b/src/web/WebLogService.cpp
index 15cdbc877..05bef58a1 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -97,7 +97,7 @@ void WebLogService::show(Shell & shell) {
}
shell.println();
- shell.printfln("Recent Log (level %s, max %d messages):", uuid::log::format_level_uppercase(level_), maximum_log_messages_);
+ shell.printfln("Recent Log:");
shell.println();
for (const auto & message : log_messages_) {
diff --git a/src/web/WebLogService.h b/src/web/WebLogService.h
index 5e5c328c1..6f77d69f2 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/web/WebModulesService.cpp b/src/web/WebModulesService.cpp
index 37f71961f..7638f8aa2 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/web/WebModulesService.h b/src/web/WebModulesService.h
index 43406c758..4fdc2302d 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/web/WebSchedulerService.cpp b/src/web/WebSchedulerService.cpp
index 1f3034fad..943d30b21 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/web/WebSchedulerService.h b/src/web/WebSchedulerService.h
index 511e66ef8..8a1bbbf55 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/web/WebSettingsService.cpp b/src/web/WebSettingsService.cpp
index 3564feeda..5d2dc0354 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -92,11 +92,11 @@ StateUpdateResult WebSettings::update(JsonObject root, WebSettings & settings) {
const WebSettings original_settings(settings);
// make a snapshot of the current GPIOs
- EMSESP::system_.make_snapshot_gpios();
+ std::vector used_gpios;
+ std::vector system_gpios;
+ EMSESP::system_.make_snapshot_gpios(used_gpios, system_gpios);
- reset_flags();
-
- settings.version = root["version"] | EMSESP_DEFAULT_VERSION; // save the version, we use it later in System::check_upgrade()
+ settings.version = root["version"] | EMSESP_APP_VERSION; // save the version, we use it later in System::check_upgrade()
settings.board_profile = root["board_profile"] | EMSESP_DEFAULT_BOARD_PROFILE;
// get current values that are related to the board profile
@@ -111,17 +111,20 @@ StateUpdateResult WebSettings::update(JsonObject root, WebSettings & settings) {
settings.eth_clock_mode = root["eth_clock_mode"];
settings.led_type = root["led_type"]; // 1 = RGB-LED
-#if defined(EMSESP_DEBUG)
- EMSESP::logger().debug("NVS boot value=[%s], current board_profile=[%s], new board_profile=[%s]",
- EMSESP::nvs_.getString("boot").c_str(),
- original_settings.board_profile.c_str(),
- settings.board_profile.c_str());
-#endif
+ reset_flags();
+
+ // before loading new board profile free old gpios from used list to allow remapping
+ EMSESP::system_.remove_gpio(original_settings.led_gpio);
+ EMSESP::system_.remove_gpio(original_settings.dallas_gpio);
+ EMSESP::system_.remove_gpio(original_settings.pbutton_gpio);
+ EMSESP::system_.remove_gpio(original_settings.rx_gpio);
+ EMSESP::system_.remove_gpio(original_settings.tx_gpio);
// see if the user has changed the board profile
// this will set: led_gpio, dallas_gpio, rx_gpio, tx_gpio, pbutton_gpio, phy_type, eth_power, eth_phy_addr, eth_clock_mode, led_type
// this will always run when EMS-ESP starts since original_settings{} is empty
- if (original_settings.board_profile != settings.board_profile) {
+ if (original_settings.board_profile != settings.board_profile || original_settings.board_profile == "default"
+ || original_settings.board_profile.length() == 0) {
set_board_profile(settings);
add_flags(ChangeFlags::RESTART);
}
@@ -137,6 +140,13 @@ StateUpdateResult WebSettings::update(JsonObject root, WebSettings & settings) {
// remove the ethernet pins from valid list, regardless of whether the GPIOs are valid or not
EMSESP::system_.remove_gpio(23, true); // MDC
EMSESP::system_.remove_gpio(18, true); // MDIO
+ EMSESP::system_.remove_gpio(19, true); // TXD0
+ EMSESP::system_.remove_gpio(22, true); // TXD1
+ EMSESP::system_.remove_gpio(21, true); // TXEN
+ EMSESP::system_.remove_gpio(25, true); // RXD0
+ EMSESP::system_.remove_gpio(26, true); // RXD1
+ EMSESP::system_.remove_gpio(27, true); // CRS
+
if (settings.eth_clock_mode < 2) {
EMSESP::system_.remove_gpio(0, true); // ETH.clock input
} else if (settings.eth_clock_mode == 2) {
@@ -145,18 +155,6 @@ StateUpdateResult WebSettings::update(JsonObject root, WebSettings & settings) {
EMSESP::system_.remove_gpio(17, true); // ETH.clock output
}
}
-#if CONFIG_IDF_TARGET_ESP32
- // Uart0 pins not allowed for all other gpio
- EMSESP::system_.remove_gpio(1, true);
- EMSESP::system_.remove_gpio(3, true);
-#endif
-
- // free old gpios from used list to allow remapping
- EMSESP::system_.remove_gpio(original_settings.led_gpio);
- EMSESP::system_.remove_gpio(original_settings.dallas_gpio);
- EMSESP::system_.remove_gpio(original_settings.pbutton_gpio);
- EMSESP::system_.remove_gpio(original_settings.rx_gpio);
- EMSESP::system_.remove_gpio(original_settings.tx_gpio);
// if any of the GPIOs have changed and re-validate them
bool have_valid_gpios = true;
@@ -310,25 +308,23 @@ StateUpdateResult WebSettings::update(JsonObject root, WebSettings & settings) {
}
// save the settings if changed from the webUI
- // if we encountered an invalid GPIO, rollback changes and don't save settings, and report the error to WebUI
+ // if we encountered an invalid GPIO, rollback changes and don't save settings,
+ // and report the error to WebUI without a restart
if (!have_valid_gpios) {
// replace settings with original settings
- settings = original_settings; // the original settings are still valid
- // restore the GPIOs from the snapshot
- EMSESP::system_.restore_snapshot_gpios();
+ settings = original_settings;
+ EMSESP::system_.restore_snapshot_gpios(used_gpios, system_gpios);
// report the error to WebUI
EMSESP::system_.systemStatus(SYSTEM_STATUS::SYSTEM_STATUS_INVALID_GPIO);
return StateUpdateResult::ERROR; // don't save the settings if the GPIOs are invalid
}
- // clean up snapshot of the GPIOs
- EMSESP::system_.clear_snapshot_gpios();
-
// save the setting internally, for reference later
EMSESP::system_.store_settings(settings);
- if (has_flags(WebSettings::ChangeFlags::RESTART)) {
+ // and finally always write to the settings file
+ if (has_flags(ChangeFlags::RESTART)) {
return StateUpdateResult::CHANGED_RESTART;
}
@@ -428,7 +424,7 @@ void WebSettings::set_board_profile(WebSettings & settings) {
// Note 2: The board profile is dynamically changed for the session, but the value in the settings file on the FS remains untouched
if (EMSESP::system_.getBBQKeesGatewayDetails(FUSE_VALUE::MFG).startsWith("BBQKees")) {
String bbq_board = EMSESP::system_.getBBQKeesGatewayDetails(FUSE_VALUE::BOARD);
- if (!bbq_board.isEmpty()) {
+ if (!bbq_board.isEmpty() && settings.board_profile != "CUSTOM") {
#if defined(EMSESP_DEBUG)
EMSESP::logger().info("Overriding board profile with fuse value %s", bbq_board.c_str());
#endif
@@ -440,6 +436,7 @@ void WebSettings::set_board_profile(WebSettings & settings) {
// as it's already set
if (settings.board_profile == "CUSTOM") {
EMSESP::logger().info("Using CUSTOM board profile");
+ EMSESP::system_.set_valid_system_gpios();
return;
}
diff --git a/src/web/WebSettingsService.h b/src/web/WebSettingsService.h
index bc66f024c..54f740de8 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -30,7 +30,7 @@ namespace emsesp {
class WebSettings {
public:
- String version;
+ String version = EMSESP_APP_VERSION;
String locale;
uint8_t tx_mode;
uint8_t ems_bus_id;
diff --git a/src/web/WebStatusService.cpp b/src/web/WebStatusService.cpp
index be8da58c3..4cb923348 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -49,8 +49,6 @@ void WebStatusService::systemStatus(AsyncWebServerRequest * request) {
auto * response = new AsyncJsonResponse(false);
JsonObject root = response->getRoot();
- root["emsesp_version"] = EMSESP_APP_VERSION;
-
//
// System Status
//
@@ -130,6 +128,7 @@ void WebStatusService::systemStatus(AsyncWebServerRequest * request) {
root["free_psram"] = ESP.getFreePsram() / 1024;
}
root["model"] = EMSESP::system_.getBBQKeesGatewayDetails();
+ root["board"] = EMSESP::system_.getBBQKeesGatewayDetails(FUSE_VALUE::BOARD);
#if CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32S2
root["temperature"] = (int)Helpers::transformNumFloat(EMSESP::system_.temperature(), 0, EMSESP::system_.fahrenheit() ? 2 : 0); // only 2 decimal places
#endif
diff --git a/test/test_api/test_api.cpp b/test/test_api/test_api.cpp
index a003ecde1..f32116ad3 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 - proddy, MichaelDvP
+ * Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -203,17 +203,40 @@ void capture(const char * url = nullptr) {
}
if (url) {
- // call API, find and replace all double quotes with escaped quotes
- std::string escaped_response = call_url(url);
+ // call API, store the response in a string
+ std::string response = call_url(url);
- size_t pos = 0;
- while ((pos = escaped_response.find("\"", pos)) != std::string::npos) {
- escaped_response.replace(pos, 1, "\\\"");
- pos += 2;
+ // escape all special characters for C++ string literal
+ std::string escaped_response;
+ escaped_response.reserve(response.length() * 2); // pre-allocate for efficiency
+
+ for (char c : response) {
+ switch (c) {
+ case '\n':
+ escaped_response += "\\n";
+ break;
+ case '\r':
+ escaped_response += "\\r";
+ break;
+ case '\t':
+ escaped_response += "\\t";
+ break;
+ case '\\':
+ escaped_response += "\\\\";
+ break;
+ case '\"':
+ escaped_response += "\\\"";
+ break;
+ default:
+ escaped_response += c;
+ break;
+ }
}
Serial.printf("void test_%d() {\n", count++);
- Serial.printf(" auto expected_response = \"%s\";\n", escaped_response.c_str());
+ Serial.print(" auto expected_response = \"");
+ Serial.print(escaped_response.c_str());
+ Serial.println("\";");
Serial.printf(" TEST_ASSERT_EQUAL_STRING(expected_response, call_url(\"%s\"));\n", url);
Serial.println("}");
Serial.println();
diff --git a/test/test_api/test_api.h b/test/test_api/test_api.h
index 1e2974d63..8848506ae 100644
--- a/test/test_api/test_api.h
+++ b/test/test_api/test_api.h
@@ -5,10 +5,10 @@ void test_1() {
"[{\"reset\":\"\",\"chimneysweeper\":\"\",\"heatingoff\":\"off\",\"heatingactive\":\"off\",\"tapwateractive\":\"on\",\"selflowtemp\":0,\"curflowtemp\":"
"60.2,\"rettemp\":48.1,\"syspress\":1.4,\"burngas\":\"on\",\"burngas2\":\"off\",\"flamecurr\":37.4,\"fanwork\":\"on\",\"ignwork\":\"off\","
"\"oilpreheat\":\"off\",\"heatingpump\":\"on\",\"selburnpow\":115,\"curburnpow\":61,\"ubauptime\":3940268,\"servicecode\":\"=H\",\"servicecodenumber\":"
- "201,\"nompower\":0,\"nrgtotal\":0.0,\"nrgheat\":0.0,\"dhw\":{\"seltemp\":52,\"comfort\":\"hot\",\"flowtempoffset\":40,\"chargeoptimization\":\"off\","
+ "201,\"nompower\":0,\"nrgtotal\":0,\"nrgheat\":0,\"dhw\":{\"seltemp\":52,\"comfort\":\"hot\",\"flowtempoffset\":40,\"chargeoptimization\":\"off\","
"\"circpump\":\"off\",\"chargetype\":\"3-way "
"valve\",\"hyston\":-5,\"disinfectiontemp\":70,\"circmode\":\"off\",\"circ\":\"off\",\"storagetemp1\":53.8,\"activated\":\"on\",\"3wayvalve\":\"on\","
- "\"chargepump\":\"off\",\"nrg\":0.0}}]";
+ "\"chargepump\":\"off\",\"nrg\":0}}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/boiler"));
}
@@ -42,10 +42,10 @@ void test_3() {
"[{\"reset\":\"\",\"chimneysweeper\":\"\",\"heatingoff\":\"off\",\"heatingactive\":\"off\",\"tapwateractive\":\"on\",\"selflowtemp\":0,\"curflowtemp\":"
"60.2,\"rettemp\":48.1,\"syspress\":1.4,\"burngas\":\"on\",\"burngas2\":\"off\",\"flamecurr\":37.4,\"fanwork\":\"on\",\"ignwork\":\"off\","
"\"oilpreheat\":\"off\",\"heatingpump\":\"on\",\"selburnpow\":115,\"curburnpow\":61,\"ubauptime\":3940268,\"servicecode\":\"=H\",\"servicecodenumber\":"
- "201,\"nompower\":0,\"nrgtotal\":0.0,\"nrgheat\":0.0,\"dhw\":{\"seltemp\":52,\"comfort\":\"hot\",\"flowtempoffset\":40,\"chargeoptimization\":\"off\","
+ "201,\"nompower\":0,\"nrgtotal\":0,\"nrgheat\":0,\"dhw\":{\"seltemp\":52,\"comfort\":\"hot\",\"flowtempoffset\":40,\"chargeoptimization\":\"off\","
"\"circpump\":\"off\",\"chargetype\":\"3-way "
"valve\",\"hyston\":-5,\"disinfectiontemp\":70,\"circmode\":\"off\",\"circ\":\"off\",\"storagetemp1\":53.8,\"activated\":\"on\",\"3wayvalve\":\"on\","
- "\"chargepump\":\"off\",\"nrg\":0.0}}]";
+ "\"chargepump\":\"off\",\"nrg\":0}}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/boiler/values"));
}
@@ -62,108 +62,163 @@ void test_4() {
"type (chargetype)\":\"3-way valve\",\"dhw hysteresis on temperature (hyston)\":-5,\"dhw disinfection temperature (disinfectiontemp)\":70,\"dhw "
"circulation pump mode (circmode)\":\"off\",\"dhw circulation active (circ)\":\"off\",\"dhw storage intern temperature (storagetemp1)\":53.8,\"dhw "
"activated (activated)\":\"on\",\"dhw 3-way valve active (3wayvalve)\":\"on\",\"dhw charge pump (chargepump)\":\"off\",\"nominal Power "
- "(nompower)\":0,\"total energy (nrgtotal)\":0.0,\"energy heating (nrgheat)\":0.0,\"dhw energy (nrg)\":0.0}]";
+ "(nompower)\":0,\"total energy (nrgtotal)\":0,\"energy heating (nrgheat)\":0,\"dhw energy (nrg)\":0}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/boiler/info"));
}
void test_5() {
+ auto expected_response =
+ "[{\"api_data\":\"# HELP emsesp_heatingoff force heating off, boolean, readable, writeable, visible\\n# TYPE emsesp_heatingoff "
+ "gauge\\nemsesp_heatingoff 0\\n# HELP emsesp_heatingactive is my heating on?, boolean, readable, visible\\n# TYPE emsesp_heatingactive "
+ "gauge\\nemsesp_heatingactive 0\\n# HELP emsesp_tapwateractive tapwater active, boolean, readable, visible\\n# TYPE emsesp_tapwateractive "
+ "gauge\\nemsesp_tapwateractive 1\\n# HELP emsesp_selflowtemp selected flow temperature, °C, readable, writeable, visible\\n# TYPE emsesp_selflowtemp "
+ "gauge\\nemsesp_selflowtemp 0\\n# HELP emsesp_curflowtemp current flow temperature, °C, readable, visible\\n# TYPE emsesp_curflowtemp "
+ "gauge\\nemsesp_curflowtemp 60.20\\n# HELP emsesp_rettemp return temperature, °C, readable, visible\\n# TYPE emsesp_rettemp gauge\\nemsesp_rettemp "
+ "48.10\\n# HELP emsesp_syspress system pressure, bar, readable, visible\\n# TYPE emsesp_syspress gauge\\nemsesp_syspress 1.40\\n# HELP emsesp_burngas "
+ "gas, boolean, readable, visible\\n# TYPE emsesp_burngas gauge\\nemsesp_burngas 1\\n# HELP emsesp_burngas2 gas stage 2, boolean, readable, visible\\n# "
+ "TYPE emsesp_burngas2 gauge\\nemsesp_burngas2 0\\n# HELP emsesp_flamecurr flame current, µA, readable, visible\\n# TYPE emsesp_flamecurr "
+ "gauge\\nemsesp_flamecurr 37.40\\n# HELP emsesp_fanwork fan, boolean, readable, visible\\n# TYPE emsesp_fanwork gauge\\nemsesp_fanwork 1\\n# HELP "
+ "emsesp_ignwork ignition, boolean, readable, visible\\n# TYPE emsesp_ignwork gauge\\nemsesp_ignwork 0\\n# HELP emsesp_oilpreheat oil preheating, "
+ "boolean, readable, visible\\n# TYPE emsesp_oilpreheat gauge\\nemsesp_oilpreheat 0\\n# HELP emsesp_heatingpump heating pump, boolean, readable, "
+ "visible\\n# TYPE emsesp_heatingpump gauge\\nemsesp_heatingpump 1\\n# HELP emsesp_selburnpow burner selected max power, %, readable, writeable, "
+ "visible\\n# TYPE emsesp_selburnpow gauge\\nemsesp_selburnpow 115\\n# HELP emsesp_curburnpow burner current power, %, readable, visible\\n# TYPE "
+ "emsesp_curburnpow gauge\\nemsesp_curburnpow 61\\n# HELP emsesp_ubauptime total UBA operating time, minutes, readable, visible\\n# TYPE "
+ "emsesp_ubauptime gauge\\nemsesp_ubauptime 3940268\\n# HELP emsesp_servicecodenumber service code number, readable, visible\\n# TYPE "
+ "emsesp_servicecodenumber gauge\\nemsesp_servicecodenumber 201\\n# HELP emsesp_seltemp selected temperature, °C, readable, writeable, visible\\n# TYPE "
+ "emsesp_seltemp gauge\\nemsesp_seltemp{circuit=\\\"dhw\\\"} 52\\n# HELP emsesp_comfort comfort, enum, (0: hot; 1: eco; 2: intelligent), readable, "
+ "writeable, visible\\n# TYPE emsesp_comfort gauge\\nemsesp_comfort{circuit=\\\"dhw\\\"} 0\\n# HELP emsesp_flowtempoffset flow temperature offset, °C, "
+ "readable, writeable, visible\\n# TYPE emsesp_flowtempoffset gauge\\nemsesp_flowtempoffset{circuit=\\\"dhw\\\"} 40\\n# HELP emsesp_chargeoptimization "
+ "charge optimization, boolean, readable, writeable, visible\\n# TYPE emsesp_chargeoptimization gauge\\nemsesp_chargeoptimization{circuit=\\\"dhw\\\"} "
+ "0\\n# HELP emsesp_circpump circulation pump available, boolean, readable, writeable, visible\\n# TYPE emsesp_circpump "
+ "gauge\\nemsesp_circpump{circuit=\\\"dhw\\\"} 0\\n# HELP emsesp_chargetype charging type, enum, (0: chargepump; 1: 3-way valve), readable, visible\\n# "
+ "TYPE emsesp_chargetype gauge\\nemsesp_chargetype{circuit=\\\"dhw\\\"} 1\\n# HELP emsesp_hyston hysteresis on temperature, °C, readable, writeable, "
+ "visible\\n# TYPE emsesp_hyston gauge\\nemsesp_hyston{circuit=\\\"dhw\\\"} -5\\n# HELP emsesp_disinfectiontemp disinfection temperature, °C, readable, "
+ "writeable, visible\\n# TYPE emsesp_disinfectiontemp gauge\\nemsesp_disinfectiontemp{circuit=\\\"dhw\\\"} 70\\n# HELP emsesp_circmode circulation pump "
+ "mode, enum, (0: off; 1: 1x3min; 2: 2x3min; 3: 3x3min; 4: 4x3min; 5: 5x3min; 6: 6x3min; 7: continuous), readable, writeable, visible\\n# TYPE "
+ "emsesp_circmode gauge\\nemsesp_circmode{circuit=\\\"dhw\\\"} 0\\n# HELP emsesp_circ circulation active, boolean, readable, writeable, visible\\n# "
+ "TYPE emsesp_circ gauge\\nemsesp_circ{circuit=\\\"dhw\\\"} 0\\n# HELP emsesp_storagetemp1 storage intern temperature, °C, readable, visible\\n# TYPE "
+ "emsesp_storagetemp1 gauge\\nemsesp_storagetemp1{circuit=\\\"dhw\\\"} 53.80\\n# HELP emsesp_activated activated, boolean, readable, writeable, "
+ "visible\\n# TYPE emsesp_activated gauge\\nemsesp_activated{circuit=\\\"dhw\\\"} 1\\n# HELP emsesp_3wayvalve 3-way valve active, boolean, readable, "
+ "visible\\n# TYPE emsesp_3wayvalve gauge\\nemsesp_3wayvalve{circuit=\\\"dhw\\\"} 1\\n# HELP emsesp_chargepump charge pump, boolean, readable, "
+ "visible\\n# TYPE emsesp_chargepump gauge\\nemsesp_chargepump{circuit=\\\"dhw\\\"} 0\\n# HELP emsesp_nompower nominal Power, kW, readable, writeable, "
+ "visible\\n# TYPE emsesp_nompower gauge\\nemsesp_nompower 0\\n# HELP emsesp_nrgtotal total energy, kWh, readable, visible\\n# TYPE emsesp_nrgtotal "
+ "gauge\\nemsesp_nrgtotal 0\\n# HELP emsesp_nrgheat energy heating, kWh, readable, writeable, visible\\n# TYPE emsesp_nrgheat gauge\\nemsesp_nrgheat "
+ "0\\n# HELP emsesp_nrg energy, kWh, readable, writeable, visible\\n# TYPE emsesp_nrg gauge\\nemsesp_nrg{circuit=\\\"dhw\\\"} 0\\n\"}]";
+ TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/boiler/metrics"));
+}
+
+void test_6() {
auto expected_response = "[{\"name\":\"comfort\",\"fullname\":\"dhw "
"comfort\",\"circuit\":\"dhw\",\"index\":0,\"enum\":[\"hot\",\"eco\",\"intelligent\"],\"value\":\"hot\",\"type\":\"enum\","
"\"readable\":true,\"writeable\":true,\"visible\":true}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/boiler/comfort"));
}
-void test_6() {
+void test_7() {
auto expected_response = "[{\"api_data\":\"hot\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/boiler/comfort/value"));
}
-void test_7() {
+void test_8() {
auto expected_response = "[{\"api_data\":\"dhw comfort\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/boiler/comfort/fullname"));
}
-void test_8() {
+void test_9() {
auto expected_response = "[{\"name\":\"outdoortemp\",\"fullname\":\"outside "
"temperature\",\"circuit\":\"\",\"type\":\"number\",\"uom\":\"°C\",\"state_class\":\"measurement\",\"device_class\":"
"\"temperature\",\"readable\":true,\"writeable\":false,\"visible\":true}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/boiler/outdoortemp"));
}
-void test_9() {
+void test_10() {
auto expected_response = "[{\"name\":\"chargetype\",\"fullname\":\"dhw charging type\",\"circuit\":\"dhw\",\"index\":1,\"enum\":[\"chargepump\",\"3-way "
"valve\"],\"value\":\"3-way valve\",\"type\":\"enum\",\"readable\":true,\"writeable\":false,\"visible\":true}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/boiler/dhw/chargetype"));
}
-void test_10() {
+void test_11() {
auto expected_response = "[{\"api_data\":\"false\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/boiler/dhw.chargetype/writeable"));
}
-void test_11() {
+void test_12() {
auto expected_response = "[{\"api_data\":\"37.4\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/boiler/flamecurr/value"));
}
-void test_12() {
+void test_13() {
auto expected_response = "[{\"hc1\":{\"seltemp\":20.5,\"currtemp\":22.8,\"haclimate\":\"roomTemp\",\"modetype\":\"heat\",\"remotetemp\":null},\"hc2\":{"
"\"seltemp\":20.6,\"currtemp\":22.9,\"haclimate\":\"roomTemp\",\"modetype\":\"eco\",\"remotetemp\":null},\"hc3\":{\"seltemp\":20."
- "7,\"currtemp\":23.0,\"haclimate\":\"roomTemp\",\"modetype\":\"nofrost\",\"remotetemp\":null},\"dhw\":{}}]";
+ "7,\"currtemp\":23,\"haclimate\":\"roomTemp\",\"modetype\":\"nofrost\",\"remotetemp\":null},\"dhw\":{}}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/thermostat"));
}
-void test_13() {
+void test_14() {
auto expected_response = "[{\"seltemp\":20.5,\"currtemp\":22.8,\"haclimate\":\"roomTemp\",\"modetype\":\"heat\",\"remotetemp\":null}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/thermostat/hc1/values"));
}
-void test_14() {
+void test_15() {
+ auto expected_response =
+ "[{\"api_data\":\"# HELP emsesp_seltemp selected room temperature, °C, readable, writeable, visible\\n# TYPE emsesp_seltemp "
+ "gauge\\nemsesp_seltemp{circuit=\\\"hc1\\\"} 20.50\\n# HELP emsesp_currtemp current room temperature, °C, readable, visible\\n# TYPE emsesp_currtemp "
+ "gauge\\nemsesp_currtemp{circuit=\\\"hc1\\\"} 22.80\\n# HELP emsesp_haclimate mqtt discovery current room temperature, enum, (0: selTemp; 1: "
+ "roomTemp), readable, visible\\n# TYPE emsesp_haclimate gauge\\nemsesp_haclimate{circuit=\\\"hc1\\\"} 1\\n# HELP emsesp_modetype mode type, enum, (0: "
+ "nofrost; 1: eco; 2: heat), readable, visible\\n# TYPE emsesp_modetype gauge\\nemsesp_modetype{circuit=\\\"hc1\\\"} "
+ "2\\nemsesp_seltemp{circuit=\\\"hc2\\\"} 20.60\\nemsesp_currtemp{circuit=\\\"hc2\\\"} 22.90\\nemsesp_haclimate{circuit=\\\"hc2\\\"} "
+ "1\\nemsesp_modetype{circuit=\\\"hc2\\\"} 1\\nemsesp_seltemp{circuit=\\\"hc3\\\"} 20.70\\nemsesp_currtemp{circuit=\\\"hc3\\\"} "
+ "23\\nemsesp_haclimate{circuit=\\\"hc3\\\"} 1\\nemsesp_modetype{circuit=\\\"hc3\\\"} 0\\n\"}]";
+ TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/thermostat/metrics"));
+}
+
+void test_16() {
auto expected_response = "[{\"name\":\"seltemp\",\"fullname\":\"hc1 selected room "
"temperature\",\"circuit\":\"hc1\",\"value\":20.5,\"type\":\"number\",\"min\":0,\"max\":30,\"uom\":\"°C\",\"state_class\":"
"\"measurement\",\"device_class\":\"temperature\",\"readable\":true,\"writeable\":true,\"visible\":true}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/thermostat/hc1/seltemp"));
}
-void test_15() {
+void test_17() {
auto expected_response = "[{\"name\":\"seltemp\",\"fullname\":\"hc2 selected room "
"temperature\",\"circuit\":\"hc2\",\"value\":20.6,\"type\":\"number\",\"min\":0,\"max\":30,\"uom\":\"°C\",\"state_class\":"
"\"measurement\",\"device_class\":\"temperature\",\"readable\":true,\"writeable\":true,\"visible\":true}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/thermostat/hc2/seltemp"));
}
-void test_16() {
- auto expected_response = "[{\"test_custom\":0.00,\"test_read_only\":70.00,\"test_ram\":\"14\",\"test_seltemp\":\"14\"}]";
+void test_18() {
+ auto expected_response = "[{\"test_custom\":0,\"test_read_only\":70,\"test_ram\":\"14\",\"test_seltemp\":\"14\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/custom"));
}
-void test_17() {
- auto expected_response = "[{\"test_custom\":0.00,\"test_read_only\":70.00,\"test_ram\":\"14\",\"test_seltemp\":\"14\"}]";
+void test_19() {
+ auto expected_response = "[{\"test_custom\":0,\"test_read_only\":70,\"test_ram\":\"14\",\"test_seltemp\":\"14\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/custom/info"));
}
-void test_18() {
+void test_20() {
auto expected_response = "[{\"name\":\"test_seltemp\",\"fullname\":\"test_seltemp\",\"storage\":\"ram\",\"type\":\"number\",\"readable\":true,"
"\"writeable\":true,\"visible\":true,\"ent_cat\":\"diagnostic\",\"value\":\"14\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/custom/test_seltemp"));
}
-void test_19() {
+void test_21() {
auto expected_response = "[{\"api_data\":\"14\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/custom/test_seltemp/value"));
}
-void test_20() {
+void test_22() {
auto expected_response = "[{\"name\":\"test_custom\",\"fullname\":\"test_custom\",\"storage\":\"ems\",\"type\":\"number\",\"readable\":true,\"writeable\":"
"true,\"visible\":true,\"device_id\":\"0x08\",\"type_id\":\"0x18\",\"offset\":0,\"factor\":1,\"ent_cat\":\"diagnostic\",\"uom\":"
- "\"°C\",\"state_class\":\"measurement\",\"device_class\":\"temperature\",\"value\":0.00}]";
+ "\"°C\",\"state_class\":\"measurement\",\"device_class\":\"temperature\",\"value\":0}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/custom/test_custom"));
}
-void test_21() {
+void test_23() {
auto expected_response =
"[{\"system\":{\"version\":\"dev\",\"uptime\":\"000+00:00:00.000\",\"uptimeSec\":0,\"resetReason\":\"Unknown / "
- "Unknown\"},\"network\":{\"network\":\"WiFi\",\"hostname\":\"ems-esp\",\"RSSI\":-23,\"TxPowerSetting\":0,\"staticIP\":false,\"lowBandwidth\":false,"
+ "Unknown\",\"txpause\":false,\"gpios_in_use\":\"23, 5, 2, 18, 0\",\"gpios_available\":\"\"},"
+ "\"network\":{\"network\":\"WiFi\",\"hostname\":\"ems-esp\",\"RSSI\":-23,\"TxPowerSetting\":0,\"staticIP\":false,\"lowBandwidth\":false,"
"\"disableSleep\":true,\"enableMDNS\":true,\"enableCORS\":false},\"ntp\":{\"NTPstatus\":\"disconnected\",\"enabled\":true,\"server\":\"pool.ntp.org\","
"\"tzLabel\":\"Europe/"
"London\",\"NTPStatus\":\"disconnected\"},\"ap\":{\"provisionMode\":\"always\",\"ssid\":\"ems-esp\"},\"mqtt\":{\"MQTTStatus\":\"disconnected\","
@@ -175,7 +230,7 @@ void test_21() {
"\"temperatureSensorFails\":0,\"analogSensors\":5,\"analogSensorReads\":0,\"analogSensorFails\":0},\"api\":{\"APICalls\":0,\"APIFails\":0},\"bus\":{"
"\"busStatus\":\"connected\",\"busProtocol\":\"Buderus\",\"busTelegramsReceived\":8,\"busReads\":0,\"busWrites\":0,\"busIncompleteTelegrams\":0,"
"\"busReadsFailed\":0,\"busWritesFailed\":0,\"busRxLineQuality\":100,\"busTxLineQuality\":100},\"settings\":{\"boardProfile\":\"S32\",\"locale\":"
- "\"en\",\"txMode\":8,\"emsBusID\":11,\"showerTimer\":false,\"showerMinDuration\":180,\"showerAlert\":false,\"hideLed\":false,\"noTokenApi\":false,"
+ "\"en\",\"txMode\":1,\"emsBusID\":11,\"showerTimer\":false,\"showerMinDuration\":180,\"showerAlert\":false,\"hideLed\":false,\"noTokenApi\":false,"
"\"readonlyMode\":false,\"fahrenheit\":false,\"dallasParasite\":false,\"boolFormat\":1,\"boolDashboard\":1,\"enumFormat\":1,\"analogEnabled\":true,"
"\"telnetEnabled\":true,\"maxWebLogBuffer\":25,\"modbusEnabled\":false,\"forceHeatingOff\":false,\"developerMode\":false},\"devices\":[{\"type\":"
"\"boiler\",\"name\":\"My Custom "
@@ -189,10 +244,11 @@ void test_21() {
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/system"));
}
-void test_22() {
+void test_24() {
auto expected_response =
"[{\"system\":{\"version\":\"dev\",\"uptime\":\"000+00:00:00.000\",\"uptimeSec\":0,\"resetReason\":\"Unknown / "
- "Unknown\"},\"network\":{\"network\":\"WiFi\",\"hostname\":\"ems-esp\",\"RSSI\":-23,\"TxPowerSetting\":0,\"staticIP\":false,\"lowBandwidth\":false,"
+ "Unknown\",\"txpause\":false,\"gpios_in_use\":\"23, 5, 2, 18, 0\",\"gpios_available\":\"\"},"
+ "\"network\":{\"network\":\"WiFi\",\"hostname\":\"ems-esp\",\"RSSI\":-23,\"TxPowerSetting\":0,\"staticIP\":false,\"lowBandwidth\":false,"
"\"disableSleep\":true,\"enableMDNS\":true,\"enableCORS\":false},\"ntp\":{\"NTPstatus\":\"disconnected\",\"enabled\":true,\"server\":\"pool.ntp.org\","
"\"tzLabel\":\"Europe/"
"London\",\"NTPStatus\":\"disconnected\"},\"ap\":{\"provisionMode\":\"always\",\"ssid\":\"ems-esp\"},\"mqtt\":{\"MQTTStatus\":\"disconnected\","
@@ -204,7 +260,7 @@ void test_22() {
"\"temperatureSensorFails\":0,\"analogSensors\":5,\"analogSensorReads\":0,\"analogSensorFails\":0},\"api\":{\"APICalls\":0,\"APIFails\":0},\"bus\":{"
"\"busStatus\":\"connected\",\"busProtocol\":\"Buderus\",\"busTelegramsReceived\":8,\"busReads\":0,\"busWrites\":0,\"busIncompleteTelegrams\":0,"
"\"busReadsFailed\":0,\"busWritesFailed\":0,\"busRxLineQuality\":100,\"busTxLineQuality\":100},\"settings\":{\"boardProfile\":\"S32\",\"locale\":"
- "\"en\",\"txMode\":8,\"emsBusID\":11,\"showerTimer\":false,\"showerMinDuration\":180,\"showerAlert\":false,\"hideLed\":false,\"noTokenApi\":false,"
+ "\"en\",\"txMode\":1,\"emsBusID\":11,\"showerTimer\":false,\"showerMinDuration\":180,\"showerAlert\":false,\"hideLed\":false,\"noTokenApi\":false,"
"\"readonlyMode\":false,\"fahrenheit\":false,\"dallasParasite\":false,\"boolFormat\":1,\"boolDashboard\":1,\"enumFormat\":1,\"analogEnabled\":true,"
"\"telnetEnabled\":true,\"maxWebLogBuffer\":25,\"modbusEnabled\":false,\"forceHeatingOff\":false,\"developerMode\":false},\"devices\":[{\"type\":"
"\"boiler\",\"name\":\"My Custom "
@@ -218,169 +274,254 @@ void test_22() {
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/system/info"));
}
-void test_23() {
+void test_25() {
+ auto expected_response =
+ "[{\"api_data\":\"# HELP emsesp_system_uptimesec uptimeSec\\n# TYPE emsesp_system_uptimesec gauge\\nemsesp_system_uptimesec 0\\n# HELP "
+ "emsesp_system_txpause txpause\\n# TYPE emsesp_system_txpause gauge\\nemsesp_system_txpause 0\\n# HELP emsesp_system_info info\\n# TYPE "
+ "emsesp_system_info gauge\\nemsesp_system_info{version=\\\"dev\\\", resetreason=\\\"Unknown / Unknown\\\", gpios_in_use=\\\"23, 5, 2, 18, 0"
+ "\\\"} 1\\n# HELP emsesp_network_rssi RSSI\\n# TYPE emsesp_network_rssi gauge\\nemsesp_network_rssi -23\\n# HELP emsesp_network_txpowersetting "
+ "TxPowerSetting\\n# TYPE emsesp_network_txpowersetting gauge\\nemsesp_network_txpowersetting 0\\n# HELP emsesp_network_staticip staticIP\\n# TYPE "
+ "emsesp_network_staticip gauge\\nemsesp_network_staticip 0\\n# HELP emsesp_network_lowbandwidth lowBandwidth\\n# TYPE emsesp_network_lowbandwidth "
+ "gauge\\nemsesp_network_lowbandwidth 0\\n# HELP emsesp_network_disablesleep disableSleep\\n# TYPE emsesp_network_disablesleep "
+ "gauge\\nemsesp_network_disablesleep 1\\n# HELP emsesp_network_enablemdns enableMDNS\\n# TYPE emsesp_network_enablemdns "
+ "gauge\\nemsesp_network_enablemdns 1\\n# HELP emsesp_network_enablecors enableCORS\\n# TYPE emsesp_network_enablecors "
+ "gauge\\nemsesp_network_enablecors 0\\n# HELP emsesp_network_info info\\n# TYPE emsesp_network_info gauge\\nemsesp_network_info{network=\\\"WiFi\\\", "
+ "hostname=\\\"ems-esp\\\"} 1\\n# HELP emsesp_ntp_enabled enabled\\n# TYPE emsesp_ntp_enabled gauge\\nemsesp_ntp_enabled 1\\n# HELP emsesp_ntp_info "
+ "info\\n# TYPE emsesp_ntp_info gauge\\nemsesp_ntp_info{ntpstatus=\\\"disconnected\\\", server=\\\"pool.ntp.org\\\", tzlabel=\\\"Europe/London\\\"} "
+ "1\\n# HELP emsesp_ap_info info\\n# TYPE emsesp_ap_info gauge\\nemsesp_ap_info{provisionmode=\\\"always\\\", ssid=\\\"ems-esp\\\"} 1\\n# HELP "
+ "emsesp_mqtt_mqttpublishes MQTTPublishes\\n# TYPE emsesp_mqtt_mqttpublishes gauge\\nemsesp_mqtt_mqttpublishes 0\\n# HELP emsesp_mqtt_mqttqueued "
+ "MQTTQueued\\n# TYPE emsesp_mqtt_mqttqueued gauge\\nemsesp_mqtt_mqttqueued 0\\n# HELP emsesp_mqtt_mqttpublishfails MQTTPublishFails\\n# TYPE "
+ "emsesp_mqtt_mqttpublishfails gauge\\nemsesp_mqtt_mqttpublishfails 0\\n# HELP emsesp_mqtt_mqttreconnects MQTTReconnects\\n# TYPE "
+ "emsesp_mqtt_mqttreconnects gauge\\nemsesp_mqtt_mqttreconnects 0\\n# HELP emsesp_mqtt_enabled enabled\\n# TYPE emsesp_mqtt_enabled "
+ "gauge\\nemsesp_mqtt_enabled 1\\n# HELP emsesp_mqtt_keepalive keepAlive\\n# TYPE emsesp_mqtt_keepalive gauge\\nemsesp_mqtt_keepalive 60\\n# HELP "
+ "emsesp_mqtt_cleansession cleanSession\\n# TYPE emsesp_mqtt_cleansession gauge\\nemsesp_mqtt_cleansession 0\\n# HELP emsesp_mqtt_entityformat "
+ "entityFormat\\n# TYPE emsesp_mqtt_entityformat gauge\\nemsesp_mqtt_entityformat 1\\n# HELP emsesp_mqtt_discoverytype discoveryType\\n# TYPE "
+ "emsesp_mqtt_discoverytype gauge\\nemsesp_mqtt_discoverytype 0\\n# HELP emsesp_mqtt_nestedformat nestedFormat\\n# TYPE emsesp_mqtt_nestedformat "
+ "gauge\\nemsesp_mqtt_nestedformat 1\\n# HELP emsesp_mqtt_haenabled haEnabled\\n# TYPE emsesp_mqtt_haenabled gauge\\nemsesp_mqtt_haenabled 1\\n# HELP "
+ "emsesp_mqtt_mqttqos mqttQos\\n# TYPE emsesp_mqtt_mqttqos gauge\\nemsesp_mqtt_mqttqos 0\\n# HELP emsesp_mqtt_mqttretain mqttRetain\\n# TYPE "
+ "emsesp_mqtt_mqttretain gauge\\nemsesp_mqtt_mqttretain 0\\n# HELP emsesp_mqtt_publishtimeheartbeat publishTimeHeartbeat\\n# TYPE "
+ "emsesp_mqtt_publishtimeheartbeat gauge\\nemsesp_mqtt_publishtimeheartbeat 60\\n# HELP emsesp_mqtt_publishtimeboiler publishTimeBoiler\\n# TYPE "
+ "emsesp_mqtt_publishtimeboiler gauge\\nemsesp_mqtt_publishtimeboiler 10\\n# HELP emsesp_mqtt_publishtimethermostat publishTimeThermostat\\n# TYPE "
+ "emsesp_mqtt_publishtimethermostat gauge\\nemsesp_mqtt_publishtimethermostat 10\\n# HELP emsesp_mqtt_publishtimesolar publishTimeSolar\\n# TYPE "
+ "emsesp_mqtt_publishtimesolar gauge\\nemsesp_mqtt_publishtimesolar 10\\n# HELP emsesp_mqtt_publishtimemixer publishTimeMixer\\n# TYPE "
+ "emsesp_mqtt_publishtimemixer gauge\\nemsesp_mqtt_publishtimemixer 10\\n# HELP emsesp_mqtt_publishtimewater publishTimeWater\\n# TYPE "
+ "emsesp_mqtt_publishtimewater gauge\\nemsesp_mqtt_publishtimewater 0\\n# HELP emsesp_mqtt_publishtimeother publishTimeOther\\n# TYPE "
+ "emsesp_mqtt_publishtimeother gauge\\nemsesp_mqtt_publishtimeother 10\\n# HELP emsesp_mqtt_publishtimesensor publishTimeSensor\\n# TYPE "
+ "emsesp_mqtt_publishtimesensor gauge\\nemsesp_mqtt_publishtimesensor 10\\n# HELP emsesp_mqtt_publishsingle publishSingle\\n# TYPE "
+ "emsesp_mqtt_publishsingle gauge\\nemsesp_mqtt_publishsingle 0\\n# HELP emsesp_mqtt_publish2command publish2command\\n# TYPE "
+ "emsesp_mqtt_publish2command gauge\\nemsesp_mqtt_publish2command 0\\n# HELP emsesp_mqtt_sendresponse sendResponse\\n# TYPE emsesp_mqtt_sendresponse "
+ "gauge\\nemsesp_mqtt_sendresponse 0\\n# HELP emsesp_mqtt_info info\\n# TYPE emsesp_mqtt_info gauge\\nemsesp_mqtt_info{mqttstatus=\\\"disconnected\\\", "
+ "clientid=\\\"ems-esp\\\", base=\\\"ems-esp\\\", discoveryprefix=\\\"homeassistant\\\"} 1\\n# HELP emsesp_syslog_enabled enabled\\n# TYPE "
+ "emsesp_syslog_enabled gauge\\nemsesp_syslog_enabled 0\\n# HELP emsesp_sensor_temperaturesensors temperatureSensors\\n# TYPE "
+ "emsesp_sensor_temperaturesensors gauge\\nemsesp_sensor_temperaturesensors 3\\n# HELP emsesp_sensor_temperaturesensorreads temperatureSensorReads\\n# "
+ "TYPE emsesp_sensor_temperaturesensorreads gauge\\nemsesp_sensor_temperaturesensorreads 0\\n# HELP emsesp_sensor_temperaturesensorfails "
+ "temperatureSensorFails\\n# TYPE emsesp_sensor_temperaturesensorfails gauge\\nemsesp_sensor_temperaturesensorfails 0\\n# HELP "
+ "emsesp_sensor_analogsensors analogSensors\\n# TYPE emsesp_sensor_analogsensors gauge\\nemsesp_sensor_analogsensors 5\\n# HELP "
+ "emsesp_sensor_analogsensorreads analogSensorReads\\n# TYPE emsesp_sensor_analogsensorreads gauge\\nemsesp_sensor_analogsensorreads 0\\n# HELP "
+ "emsesp_sensor_analogsensorfails analogSensorFails\\n# TYPE emsesp_sensor_analogsensorfails gauge\\nemsesp_sensor_analogsensorfails 0\\n# HELP "
+ "emsesp_api_apicalls APICalls\\n# TYPE emsesp_api_apicalls gauge\\nemsesp_api_apicalls 0\\n# HELP emsesp_api_apifails APIFails\\n# TYPE "
+ "emsesp_api_apifails gauge\\nemsesp_api_apifails 0\\n# HELP emsesp_bus_bustelegramsreceived busTelegramsReceived\\n# TYPE "
+ "emsesp_bus_bustelegramsreceived gauge\\nemsesp_bus_bustelegramsreceived 8\\n# HELP emsesp_bus_busreads busReads\\n# TYPE emsesp_bus_busreads "
+ "gauge\\nemsesp_bus_busreads 0\\n# HELP emsesp_bus_buswrites busWrites\\n# TYPE emsesp_bus_buswrites gauge\\nemsesp_bus_buswrites 0\\n# HELP "
+ "emsesp_bus_busincompletetelegrams busIncompleteTelegrams\\n# TYPE emsesp_bus_busincompletetelegrams gauge\\nemsesp_bus_busincompletetelegrams 0\\n# "
+ "HELP emsesp_bus_busreadsfailed busReadsFailed\\n# TYPE emsesp_bus_busreadsfailed gauge\\nemsesp_bus_busreadsfailed 0\\n# HELP "
+ "emsesp_bus_buswritesfailed busWritesFailed\\n# TYPE emsesp_bus_buswritesfailed gauge\\nemsesp_bus_buswritesfailed 0\\n# HELP "
+ "emsesp_bus_busrxlinequality busRxLineQuality\\n# TYPE emsesp_bus_busrxlinequality gauge\\nemsesp_bus_busrxlinequality 100\\n# HELP "
+ "emsesp_bus_bustxlinequality busTxLineQuality\\n# TYPE emsesp_bus_bustxlinequality gauge\\nemsesp_bus_bustxlinequality 100\\n# HELP emsesp_bus_info "
+ "info\\n# TYPE emsesp_bus_info gauge\\nemsesp_bus_info{busstatus=\\\"connected\\\", busprotocol=\\\"Buderus\\\"} 1\\n# HELP emsesp_settings_txmode "
+ "txMode\\n# TYPE emsesp_settings_txmode gauge\\nemsesp_settings_txmode 1\\n# HELP emsesp_settings_emsbusid emsBusID\\n# TYPE emsesp_settings_emsbusid "
+ "gauge\\nemsesp_settings_emsbusid 11\\n# HELP emsesp_settings_showertimer showerTimer\\n# TYPE emsesp_settings_showertimer "
+ "gauge\\nemsesp_settings_showertimer 0\\n# HELP emsesp_settings_showerminduration showerMinDuration\\n# TYPE emsesp_settings_showerminduration "
+ "gauge\\nemsesp_settings_showerminduration 180\\n# HELP emsesp_settings_showeralert showerAlert\\n# TYPE emsesp_settings_showeralert "
+ "gauge\\nemsesp_settings_showeralert 0\\n# HELP emsesp_settings_hideled hideLed\\n# TYPE emsesp_settings_hideled gauge\\nemsesp_settings_hideled 0\\n# "
+ "HELP emsesp_settings_notokenapi noTokenApi\\n# TYPE emsesp_settings_notokenapi gauge\\nemsesp_settings_notokenapi 0\\n# HELP "
+ "emsesp_settings_readonlymode readonlyMode\\n# TYPE emsesp_settings_readonlymode gauge\\nemsesp_settings_readonlymode 0\\n# HELP "
+ "emsesp_settings_fahrenheit fahrenheit\\n# TYPE emsesp_settings_fahrenheit gauge\\nemsesp_settings_fahrenheit 0\\n# HELP "
+ "emsesp_settings_dallasparasite dallasParasite\\n# TYPE emsesp_settings_dallasparasite gauge\\nemsesp_settings_dallasparasite 0\\n# HELP "
+ "emsesp_settings_boolformat boolFormat\\n# TYPE emsesp_settings_boolformat gauge\\nemsesp_settings_boolformat 1\\n# HELP emsesp_settings_booldashboard "
+ "boolDashboard\\n# TYPE emsesp_settings_booldashboard gauge\\nemsesp_settings_booldashboard 1\\n# HELP emsesp_settings_enumformat enumFormat\\n# TYPE "
+ "emsesp_settings_enumformat gauge\\nemsesp_settings_enumformat 1\\n# HELP emsesp_settings_analogenabled analogEnabled\\n# TYPE "
+ "emsesp_settings_analogenabled gauge\\nemsesp_settings_analogenabled 1\\n# HELP emsesp_settings_telnetenabled telnetEnabled\\n# TYPE "
+ "emsesp_settings_telnetenabled gauge\\nemsesp_settings_telnetenabled 1\\n# HELP emsesp_settings_maxweblogbuffer maxWebLogBuffer\\n# TYPE "
+ "emsesp_settings_maxweblogbuffer gauge\\nemsesp_settings_maxweblogbuffer 25\\n# HELP emsesp_settings_modbusenabled modbusEnabled\\n# TYPE "
+ "emsesp_settings_modbusenabled gauge\\nemsesp_settings_modbusenabled 0\\n# HELP emsesp_settings_forceheatingoff forceHeatingOff\\n# TYPE "
+ "emsesp_settings_forceheatingoff gauge\\nemsesp_settings_forceheatingoff 0\\n# HELP emsesp_settings_developermode developerMode\\n# TYPE "
+ "emsesp_settings_developermode gauge\\nemsesp_settings_developermode 0\\n# HELP emsesp_settings_info info\\n# TYPE emsesp_settings_info "
+ "gauge\\nemsesp_settings_info{boardprofile=\\\"S32\\\", locale=\\\"en\\\"} 1\\n# HELP emsesp_device_productid productID\\n# TYPE "
+ "emsesp_device_productid gauge\\nemsesp_device_productid{type=\\\"boiler\\\", name=\\\"My Custom Boiler\\\", deviceid=\\\"0x08\\\", "
+ "version=\\\"01.00\\\"} 123\\n# HELP emsesp_device_entities entities\\n# TYPE emsesp_device_entities "
+ "gauge\\nemsesp_device_entities{type=\\\"boiler\\\", name=\\\"My Custom Boiler\\\", deviceid=\\\"0x08\\\", version=\\\"01.00\\\"} "
+ "39\\nemsesp_device_productid{type=\\\"thermostat\\\", name=\\\"FW120\\\", deviceid=\\\"0x10\\\", version=\\\"01.00\\\"} "
+ "192\\nemsesp_device_entities{type=\\\"thermostat\\\", name=\\\"FW120\\\", deviceid=\\\"0x10\\\", version=\\\"01.00\\\"} "
+ "15\\nemsesp_device_entities{type=\\\"temperaturesensor\\\", name=\\\"temperaturesensor\\\"} 3\\nemsesp_device_entities{type=\\\"analogsensor\\\", "
+ "name=\\\"analogsensor\\\"} 5\\nemsesp_device_entities{type=\\\"scheduler\\\", name=\\\"scheduler\\\"} 2\\nemsesp_device_entities{type=\\\"custom\\\", "
+ "name=\\\"custom\\\"} 4\\n\"}]";
+ TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/system/metrics"));
+}
+
+void test_26() {
auto expected_response =
"[{\"name\":\"locale\",\"circuit\":\"settings\",\"readable\":true,\"writeable\":false,\"visible\":true,\"value\":\"en\",\"type\":\"string\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/system/settings/locale"));
}
-void test_24() {
+void test_27() {
auto expected_response = "[{}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/system/fetch"));
}
-void test_25() {
+void test_28() {
auto expected_response = "[{\"network\":\"WiFi\",\"hostname\":\"ems-esp\",\"RSSI\":\"-23\",\"TxPowerSetting\":\"0\",\"staticIP\":\"false\","
"\"lowBandwidth\":\"false\",\"disableSleep\":\"true\",\"enableMDNS\":\"true\",\"enableCORS\":\"false\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/system/network/values"));
}
-void test_26() {
+void test_29() {
auto expected_response = "[{\"test_scheduler\":\"on\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/scheduler"));
}
-void test_27() {
+void test_30() {
auto expected_response = "[{\"test_scheduler\":\"on\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/scheduler/info"));
}
-void test_28() {
+void test_31() {
auto expected_response = "[{\"name\":\"test_scheduler\",\"fullname\":\"test_scheduler\",\"type\":\"boolean\",\"value\":\"on\",\"time\":\"12:00\","
"\"command\":\"system/fetch\",\"cmd_data\":\"10\",\"readable\":true,\"writeable\":true,\"visible\":true}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/scheduler/test_scheduler"));
}
-void test_29() {
+void test_32() {
auto expected_response = "[{\"test_tempsensor1\":12.3,\"test_tempsensor2\":45.6,\"gateway_temperature\":28.1}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/temperaturesensor"));
}
-void test_30() {
+void test_33() {
auto expected_response = "[{\"test_tempsensor1\":12.3,\"test_tempsensor2\":45.6,\"gateway_temperature\":28.1}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/temperaturesensor/info"));
}
-void test_31() {
+void test_34() {
auto expected_response = "[{\"id\":\"0B_0C0D_0E0F_1011\",\"name\":\"test_tempsensor2\",\"fullname\":\"test_tempsensor2\",\"value\":45.6,\"type\":"
"\"number\",\"uom\":\"°C\",\"readable\":true,\"writeable\":false,\"visible\":true,\"is_system\":false}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/temperaturesensor/test_tempsensor2"));
}
-void test_32() {
+void test_35() {
auto expected_response = "[{\"id\":\"0B_0C0D_0E0F_1011\",\"name\":\"test_tempsensor2\",\"fullname\":\"test_tempsensor2\",\"value\":45.6,\"type\":"
"\"number\",\"uom\":\"°C\",\"readable\":true,\"writeable\":false,\"visible\":true,\"is_system\":false}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/temperaturesensor/0B_0C0D_0E0F_1011"));
}
-void test_33() {
+void test_36() {
auto expected_response = "[{\"api_data\":\"45.6\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/temperaturesensor/test_tempsensor2/value"));
}
-void test_34() {
+void test_37() {
auto expected_response = "[{\"test_analogsensor1\":0,\"test_analogsensor2\":1,\"test_analogsensor3\":0,\"test_analogsensor4\":0,\"test_analogsensor5\":0}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/analogsensor"));
}
-void test_35() {
+void test_38() {
auto expected_response = "[{\"test_analogsensor1\":0,\"test_analogsensor2\":1,\"test_analogsensor3\":0,\"test_analogsensor4\":0,\"test_analogsensor5\":0}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/analogsensor/info"));
}
-void test_36() {
+void test_39() {
auto expected_response =
"[{\"name\":\"test_analogsensor1\",\"fullname\":\"test_analogsensor1\",\"gpio\":36,\"type\":\"number\",\"analog\":\"adc\",\"value\":0,\"readable\":"
"true,\"writeable\":false,\"visible\":true,\"is_system\":false,\"offset\":0,\"factor\":0.2,\"uom\":\"mV\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/analogsensor/test_analogsensor1"));
}
-void test_37() {
+void test_40() {
auto expected_response = "[{\"api_data\":\"0\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/analogsensor/test_analogsensor1/offset"));
}
-void test_38() {
+void test_41() {
auto expected_response = "[{\"message\":\"unknown device boiler2\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/boiler2"));
}
-void test_39() {
+void test_42() {
auto expected_response = "[{}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/boiler/bad/value"));
}
-void test_40() {
+void test_43() {
auto expected_response = "[{\"message\":\"no attribute 'valu' in comfort\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/boiler/comfort/valu"));
}
-void test_41() {
+void test_44() {
auto expected_response = "[{\"message\":\"no 'settings' in system\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/system/settings/locale2"));
}
-void test_42() {
+void test_45() {
auto expected_response = "[{\"message\":\"no 'settings2' in system\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/system/settings2"));
}
-void test_43() {
+void test_46() {
auto expected_response = "[{\"message\":\"no 'settings2' in system\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/system/settings2/locale2"));
}
-void test_44() {
+void test_47() {
auto expected_response = "[{\"message\":\"no 'test_scheduler2' in scheduler\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/scheduler/test_scheduler2"));
}
-void test_45() {
+void test_48() {
auto expected_response = "[{\"message\":\"no attribute 'val' in test_scheduler\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/scheduler/test_scheduler/val"));
}
-void test_46() {
+void test_49() {
auto expected_response = "[{\"message\":\"no 'test_scheduler2' in scheduler\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/scheduler/test_scheduler2/val2"));
}
-void test_47() {
+void test_50() {
auto expected_response = "[{\"message\":\"no 'test_seltemp2' in custom\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/custom/test_seltemp2"));
}
-void test_48() {
+void test_51() {
auto expected_response = "[{\"message\":\"Command test_seltemp failed (Error)\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/custom/test_seltemp/val"));
}
-void test_49() {
+void test_52() {
auto expected_response = "[{\"message\":\"no 'test_sensor20' in temperaturesensor\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/temperaturesensor/test_sensor20"));
}
-void test_50() {
+void test_53() {
auto expected_response = "[{\"message\":\"no '0b_0c0d_0e0f_xxxx' in temperaturesensor\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/temperaturesensor/0B_0C0D_0E0F_XXXX"));
}
-void test_51() {
+void test_54() {
auto expected_response = "[{\"message\":\"no attribute 'bad' in test_tempsensor2\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/temperaturesensor/test_tempsensor2/bad"));
}
-void test_52() {
+void test_55() {
auto expected_response = "[{\"message\":\"no attribute 'bad' in test_analogsensor1\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/analogsensor/test_analogsensor1/bad"));
}
-void test_53() {
+void test_56() {
auto expected_response = "[{\"message\":\"no 'test_analog10' in analogsensor\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/analogsensor/test_analog10"));
}
-void test_54() {
+void test_57() {
auto expected_response = "[{\"message\":\"no 'test_analog10' in analogsensor\"}]";
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/analogsensor/test_analog10/bad2"));
}
@@ -440,6 +581,9 @@ void run_tests() {
RUN_TEST(test_52);
RUN_TEST(test_53);
RUN_TEST(test_54);
+ RUN_TEST(test_55);
+ RUN_TEST(test_56);
+ RUN_TEST(test_57);
}
// ---------- END - CUT HERE ----------
\ No newline at end of file