From 3101f5e6ae11dfb6d5f1face256cb036f733ac74 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sat, 4 Nov 2023 15:24:43 +0100 Subject: [PATCH 01/91] move dhw entities from mixer/solar to new water device, add pool device --- CHANGELOG_LATEST.md | 3 + interface/package.json | 4 +- .../src/framework/mqtt/MqttSettingsForm.tsx | 15 + interface/src/i18n/de/index.ts | 1 + interface/src/i18n/en/index.ts | 1 + interface/src/i18n/fr/index.ts | 1 + interface/src/i18n/it/index.ts | 1 + interface/src/i18n/nl/index.ts | 1 + interface/src/i18n/no/index.ts | 1 + interface/src/i18n/pl/index.ts | 1 + interface/src/i18n/sv/index.ts | 1 + interface/src/i18n/tr/index.ts | 1 + interface/src/project/DeviceIcon.tsx | 8 +- interface/src/project/types.ts | 5 +- interface/src/types/mqtt.ts | 1 + interface/yarn.lock | 40 +- lib/framework/MqttSettingsService.cpp | 6 + lib/framework/MqttSettingsService.h | 1 + src/device_library.h | 2 +- src/devices/boiler.cpp | 112 +++-- src/devices/mixer.cpp | 297 +------------ src/devices/mixer.h | 52 --- src/devices/pool.cpp | 50 +++ src/devices/pool.h | 46 ++ src/devices/solar.cpp | 265 +----------- src/devices/solar.h | 45 -- src/devices/water.cpp | 392 ++++++++++++++++++ src/devices/water.h | 115 +++++ src/emsdevice.cpp | 18 +- src/emsdevice.h | 14 +- src/emsesp.cpp | 14 +- src/locale_common.h | 2 + src/locale_translations.h | 19 +- src/mqtt.cpp | 17 + src/mqtt.h | 3 + src/version.h | 2 +- 36 files changed, 842 insertions(+), 715 deletions(-) create mode 100644 src/devices/pool.cpp create mode 100644 src/devices/pool.h create mode 100644 src/devices/water.cpp create mode 100644 src/devices/water.h diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 3ffef4fdf..7e59c5db5 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -4,6 +4,8 @@ ## **IMPORTANT! BREAKING CHANGES** +- move dhw functions from mixer/solar to water + ## Added - humidity for ventilation devices @@ -16,6 +18,7 @@ - heatpump high res energy counters [#1348, #1349. #1350](https://github.com/emsesp/EMS-ESP32/issues/1348) - optional bssid in network settings - extension module EM100 [#1315](https://github.com/emsesp/EMS-ESP32/discussions/1315) +- digital_out with new options for polarity and startup state ## Fixed diff --git a/interface/package.json b/interface/package.json index bcc223484..702e68c46 100644 --- a/interface/package.json +++ b/interface/package.json @@ -54,7 +54,7 @@ "@typescript-eslint/eslint-plugin": "^6.9.1", "@typescript-eslint/parser": "^6.9.1", "concurrently": "^8.2.2", - "eslint": "^8.52.0", + "eslint": "^8.53.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb-typescript": "^17.1.0", "eslint-config-prettier": "^9.0.0", @@ -65,7 +65,7 @@ "eslint-plugin-prettier": "alpha", "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", - "preact": "^10.18.1", + "preact": "^10.18.2", "prettier": "^3.0.3", "rollup-plugin-visualizer": "^5.9.2", "terser": "^5.24.0", diff --git a/interface/src/framework/mqtt/MqttSettingsForm.tsx b/interface/src/framework/mqtt/MqttSettingsForm.tsx index 1647c3f9d..969ec37a9 100644 --- a/interface/src/framework/mqtt/MqttSettingsForm.tsx +++ b/interface/src/framework/mqtt/MqttSettingsForm.tsx @@ -382,6 +382,21 @@ const MqttSettingsForm: FC = () => { margin="normal" /> + + {LL.SECONDS()} + }} + fullWidth + variant="outlined" + value={numberValue(data.publish_time_water)} + type="number" + onChange={updateFormValue} + margin="normal" + /> + = ({ type_id }) => { return ; case DeviceType.EXTENSION: return ; + case DeviceType.WATER: + return ; + case DeviceType.POOL: + return ; case DeviceType.CUSTOM: return ; default: diff --git a/interface/src/project/types.ts b/interface/src/project/types.ts index 05cf46073..97dceded3 100644 --- a/interface/src/project/types.ts +++ b/interface/src/project/types.ts @@ -355,6 +355,7 @@ export const enum DeviceType { TEMPERATURESENSOR, ANALOGSENSOR, SCHEDULER, + CUSTOM, BOILER, THERMOSTAT, MIXER, @@ -368,7 +369,9 @@ export const enum DeviceType { EXTENSION, GENERIC, HEATSOURCE, - CUSTOM, + VENTILATION, + WATER, + POOL, UNKNOWN } diff --git a/interface/src/types/mqtt.ts b/interface/src/types/mqtt.ts index df9261f4a..cf5b1ce48 100644 --- a/interface/src/types/mqtt.ts +++ b/interface/src/types/mqtt.ts @@ -35,6 +35,7 @@ export interface MqttSettings { publish_time_thermostat: number; publish_time_solar: number; publish_time_mixer: number; + publish_time_water: number; publish_time_other: number; publish_time_sensor: number; publish_time_heartbeat: number; diff --git a/interface/yarn.lock b/interface/yarn.lock index cc0410c85..8d8492cc3 100644 --- a/interface/yarn.lock +++ b/interface/yarn.lock @@ -641,9 +641,9 @@ __metadata: languageName: node linkType: hard -"@eslint/eslintrc@npm:^2.1.2": - version: 2.1.2 - resolution: "@eslint/eslintrc@npm:2.1.2" +"@eslint/eslintrc@npm:^2.1.3": + version: 2.1.3 + resolution: "@eslint/eslintrc@npm:2.1.3" dependencies: ajv: "npm:^6.12.4" debug: "npm:^4.3.2" @@ -654,14 +654,14 @@ __metadata: js-yaml: "npm:^4.1.0" minimatch: "npm:^3.1.2" strip-json-comments: "npm:^3.1.1" - checksum: fa25638f2666cac6810f98ee7d0f4b912f191806467c1b40d72bac759fffef0b3357f12a1869817286837b258e4de3517e0c7408520e156ca860fc53a1fbaed9 + checksum: 77b70a89232fe702c2f765b5b92970f5e4224b55363b923238b996c66fcd991504f40d3663c0543ae17d6c5049ab9b07ab90b65d7601e6f25e8bcd4caf69ac75 languageName: node linkType: hard -"@eslint/js@npm:8.52.0": - version: 8.52.0 - resolution: "@eslint/js@npm:8.52.0" - checksum: 86beff213d0ae4ced203a922b74e2cc4d767d109e7815f985bf648946ba072198977102e32afc9fa04f7825a6de83a831874f6b6675ba0c1d0743ade2dc2d53d +"@eslint/js@npm:8.53.0": + version: 8.53.0 + resolution: "@eslint/js@npm:8.53.0" + checksum: a372d55aa2bbe0d9399acc8de3c892dcfe507fd914d29fde6826ae54a13452619be626aa7eb70b1ec4d4da5302b6ed8e8ac9bf1f830003f15c0ad56c30b4f520 languageName: node linkType: hard @@ -1566,7 +1566,7 @@ __metadata: alova: "npm:^2.13.1" async-validator: "npm:^4.2.5" concurrently: "npm:^8.2.2" - eslint: "npm:^8.52.0" + eslint: "npm:^8.53.0" eslint-config-airbnb: "npm:^19.0.4" eslint-config-airbnb-typescript: "npm:^17.1.0" eslint-config-prettier: "npm:^9.0.0" @@ -1581,7 +1581,7 @@ __metadata: jwt-decode: "npm:^4.0.0" lodash-es: "npm:^4.17.21" mime-types: "npm:^2.1.35" - preact: "npm:^10.18.1" + preact: "npm:^10.18.2" prettier: "npm:^3.0.3" react: "npm:latest" react-dom: "npm:latest" @@ -3654,14 +3654,14 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^8.52.0": - version: 8.52.0 - resolution: "eslint@npm:8.52.0" +"eslint@npm:^8.53.0": + version: 8.53.0 + resolution: "eslint@npm:8.53.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.2.0" "@eslint-community/regexpp": "npm:^4.6.1" - "@eslint/eslintrc": "npm:^2.1.2" - "@eslint/js": "npm:8.52.0" + "@eslint/eslintrc": "npm:^2.1.3" + "@eslint/js": "npm:8.53.0" "@humanwhocodes/config-array": "npm:^0.11.13" "@humanwhocodes/module-importer": "npm:^1.0.1" "@nodelib/fs.walk": "npm:^1.2.8" @@ -3698,7 +3698,7 @@ __metadata: text-table: "npm:^0.2.0" bin: eslint: bin/eslint.js - checksum: 01784ab15351d749bc95446039ed7acd5124f7cc84acdbf98c7199272eae06212a8f3ea4a9b47e7cc54ab17ca094c3a664bbfc3002c7de27936220e278b5028a + checksum: e305a71ce2b9a8631b293266fe53e346c76f28bc8d004af33f10e537cf133db1fb87af3599376e70ed6e0f89a78be10c4f08ddd0c1c9c0c497cd143b4a270420 languageName: node linkType: hard @@ -6661,10 +6661,10 @@ __metadata: languageName: node linkType: hard -"preact@npm:^10.18.1": - version: 10.18.1 - resolution: "preact@npm:10.18.1" - checksum: 587c4634b310efc306ef9315f849b8e4ff538435087a1dca626e1394b98570af1ecdc254b7f0bb3060fc7ab87456c5f891f9b8a167d5c34dbbcfcf60b6e993f4 +"preact@npm:^10.18.2": + version: 10.18.2 + resolution: "preact@npm:10.18.2" + checksum: c7dcd6ea812adb0bdc215366b14aadc44724b6dd6c4e9aadd986126d94abde62f3e02e18d6157a9984873be9877f206c0afa10a09346178c4c828a103a66a0e1 languageName: node linkType: hard diff --git a/lib/framework/MqttSettingsService.cpp b/lib/framework/MqttSettingsService.cpp index 8f96f2f15..14c407bc2 100644 --- a/lib/framework/MqttSettingsService.cpp +++ b/lib/framework/MqttSettingsService.cpp @@ -234,6 +234,7 @@ void MqttSettings::read(MqttSettings & settings, JsonObject & root) { root["publish_time_thermostat"] = settings.publish_time_thermostat; root["publish_time_solar"] = settings.publish_time_solar; root["publish_time_mixer"] = settings.publish_time_mixer; + root["publish_time_water"] = settings.publish_time_water; root["publish_time_other"] = settings.publish_time_other; root["publish_time_sensor"] = settings.publish_time_sensor; root["publish_time_heartbeat"] = settings.publish_time_heartbeat; @@ -271,6 +272,7 @@ StateUpdateResult MqttSettings::update(JsonObject & root, MqttSettings & setting newSettings.publish_time_thermostat = root["publish_time_thermostat"] | EMSESP_DEFAULT_PUBLISH_TIME; newSettings.publish_time_solar = root["publish_time_solar"] | EMSESP_DEFAULT_PUBLISH_TIME; newSettings.publish_time_mixer = root["publish_time_mixer"] | EMSESP_DEFAULT_PUBLISH_TIME; + newSettings.publish_time_water = root["publish_time_water"] | EMSESP_DEFAULT_PUBLISH_TIME; newSettings.publish_time_other = root["publish_time_other"] | EMSESP_DEFAULT_PUBLISH_TIME; newSettings.publish_time_sensor = root["publish_time_sensor"] | EMSESP_DEFAULT_PUBLISH_TIME; newSettings.publish_time_heartbeat = root["publish_time_heartbeat"] | EMSESP_DEFAULT_PUBLISH_HEARTBEAT; @@ -358,6 +360,10 @@ StateUpdateResult MqttSettings::update(JsonObject & root, MqttSettings & setting emsesp::EMSESP::mqtt_.set_publish_time_mixer(newSettings.publish_time_mixer); } + if (newSettings.publish_time_water != settings.publish_time_water) { + emsesp::EMSESP::mqtt_.set_publish_time_water(newSettings.publish_time_water); + } + if (newSettings.publish_time_other != settings.publish_time_other) { emsesp::EMSESP::mqtt_.set_publish_time_other(newSettings.publish_time_other); } diff --git a/lib/framework/MqttSettingsService.h b/lib/framework/MqttSettingsService.h index 90d1a53c7..f1ae73b33 100644 --- a/lib/framework/MqttSettingsService.h +++ b/lib/framework/MqttSettingsService.h @@ -82,6 +82,7 @@ class MqttSettings { 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; diff --git a/src/device_library.h b/src/device_library.h index a955cf52e..42367883c 100644 --- a/src/device_library.h +++ b/src/device_library.h @@ -142,7 +142,7 @@ {160, DeviceType::MIXER, "MM100", DeviceFlags::EMS_DEVICE_FLAG_MMPLUS}, {161, DeviceType::MIXER, "MM200", DeviceFlags::EMS_DEVICE_FLAG_MMPLUS}, {193, DeviceType::MIXER, "MZ100", DeviceFlags::EMS_DEVICE_FLAG_MMPLUS}, -{204, DeviceType::MIXER, "MP100", DeviceFlags::EMS_DEVICE_FLAG_MP}, // pool +{204, DeviceType::POOL, "MP100", DeviceFlags::EMS_DEVICE_FLAG_MP}, // pool // Heat Pumps - 0x38? This is a thermostat like RC100H // also prod-id of wifi module and wireless base diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 330eb6cef..ea7f9cc09 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -176,31 +176,76 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const DeviceValueNumOp::DV_NUMOP_DIV10, FL_(boilTemp), DeviceValueUOM::DEGREES); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, - &exhaustTemp_, - DeviceValueType::USHORT, - DeviceValueNumOp::DV_NUMOP_DIV10, - FL_(exhaustTemp), - DeviceValueUOM::DEGREES); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, - &heatblock_, - DeviceValueType::USHORT, - DeviceValueNumOp::DV_NUMOP_DIV10, - FL_(heatblock), - DeviceValueUOM::DEGREES); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &headertemp_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(headertemp), DeviceValueUOM::DEGREES); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &burnGas_, DeviceValueType::BOOL, FL_(burnGas), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &burnGas2_, DeviceValueType::BOOL, FL_(burnGas2), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &flameCurr_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(flameCurr), DeviceValueUOM::UA); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &heatingPump_, DeviceValueType::BOOL, FL_(heatingPump), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &fanWork_, DeviceValueType::BOOL, FL_(fanWork), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &ignWork_, DeviceValueType::BOOL, FL_(ignWork), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &oilPreHeat_, DeviceValueType::BOOL, FL_(oilPreHeat), DeviceValueUOM::NONE); + + if (model() != EMS_DEVICE_FLAG_HEATPUMP && model() != EMS_DEVICE_FLAG_HIU) { + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &exhaustTemp_, + DeviceValueType::USHORT, + DeviceValueNumOp::DV_NUMOP_DIV10, + FL_(exhaustTemp), + DeviceValueUOM::DEGREES); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &heatblock_, + DeviceValueType::USHORT, + DeviceValueNumOp::DV_NUMOP_DIV10, + FL_(heatblock), + DeviceValueUOM::DEGREES); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &burnGas_, DeviceValueType::BOOL, FL_(burnGas), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &burnGas2_, DeviceValueType::BOOL, FL_(burnGas2), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &flameCurr_, + DeviceValueType::USHORT, + DeviceValueNumOp::DV_NUMOP_DIV10, + FL_(flameCurr), + DeviceValueUOM::UA); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &heatingPump_, DeviceValueType::BOOL, FL_(heatingPump), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &fanWork_, DeviceValueType::BOOL, FL_(fanWork), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &ignWork_, DeviceValueType::BOOL, FL_(ignWork), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &oilPreHeat_, DeviceValueType::BOOL, FL_(oilPreHeat), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &burnMinPower_, + DeviceValueType::UINT, + FL_(burnMinPower), + DeviceValueUOM::PERCENT, + MAKE_CF_CB(set_min_power)); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &burnMaxPower_, + DeviceValueType::UINT, + FL_(burnMaxPower), + DeviceValueUOM::PERCENT, + MAKE_CF_CB(set_max_power), + 0, + 254); + register_device_value( + DeviceValueTAG::TAG_DEVICE_DATA, &boilHystOn_, DeviceValueType::INT, FL_(boilHystOn), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_hyst_on), -20, 0); + register_device_value( + DeviceValueTAG::TAG_DEVICE_DATA, &boilHystOff_, DeviceValueType::INT, FL_(boilHystOff), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_hyst_off), 0, 20); + register_device_value( + DeviceValueTAG::TAG_DEVICE_DATA, &boil2HystOn_, DeviceValueType::INT, FL_(boil2HystOn), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_hyst2_on), -20, 0); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &boil2HystOff_, + DeviceValueType::INT, + FL_(boil2HystOff), + DeviceValueUOM::DEGREES_R, + MAKE_CF_CB(set_hyst2_off), + 0, + 20); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &burnMinPeriod_, + DeviceValueType::UINT, + FL_(burnMinPeriod), + DeviceValueUOM::MINUTES, + MAKE_CF_CB(set_burn_period), + 0, + 120); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &absBurnPow_, DeviceValueType::UINT, FL_(absBurnPow), DeviceValueUOM::PERCENT); + } register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &heatingActivated_, DeviceValueType::BOOL, @@ -215,33 +260,8 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const DeviceValueTAG::TAG_DEVICE_DATA, &pumpMode_, DeviceValueType::ENUM, FL_(enum_pumpMode), FL_(pumpMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_pumpMode)); register_device_value( DeviceValueTAG::TAG_DEVICE_DATA, &pumpDelay_, DeviceValueType::UINT, FL_(pumpDelay), DeviceValueUOM::MINUTES, MAKE_CF_CB(set_pump_delay), 0, 60); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, - &burnMinPeriod_, - DeviceValueType::UINT, - FL_(burnMinPeriod), - DeviceValueUOM::MINUTES, - MAKE_CF_CB(set_burn_period), - 0, - 120); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, - &burnMinPower_, - DeviceValueType::UINT, - FL_(burnMinPower), - DeviceValueUOM::PERCENT, - MAKE_CF_CB(set_min_power)); - register_device_value( - DeviceValueTAG::TAG_DEVICE_DATA, &burnMaxPower_, DeviceValueType::UINT, FL_(burnMaxPower), DeviceValueUOM::PERCENT, MAKE_CF_CB(set_max_power), 0, 254); - register_device_value( - DeviceValueTAG::TAG_DEVICE_DATA, &boilHystOn_, DeviceValueType::INT, FL_(boilHystOn), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_hyst_on), -20, 0); - register_device_value( - DeviceValueTAG::TAG_DEVICE_DATA, &boilHystOff_, DeviceValueType::INT, FL_(boilHystOff), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_hyst_off), 0, 20); - register_device_value( - DeviceValueTAG::TAG_DEVICE_DATA, &boil2HystOn_, DeviceValueType::INT, FL_(boil2HystOn), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_hyst2_on), -20, 0); - register_device_value( - DeviceValueTAG::TAG_DEVICE_DATA, &boil2HystOff_, DeviceValueType::INT, FL_(boil2HystOff), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_hyst2_off), 0, 20); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &setFlowTemp_, DeviceValueType::UINT, FL_(setFlowTemp), DeviceValueUOM::DEGREES); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &setBurnPow_, DeviceValueType::UINT, FL_(setBurnPow), DeviceValueUOM::PERCENT); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &absBurnPow_, DeviceValueType::UINT, FL_(absBurnPow), DeviceValueUOM::PERCENT); register_device_value( DeviceValueTAG::TAG_DEVICE_DATA, &selBurnPow_, DeviceValueType::UINT, FL_(selBurnPow), DeviceValueUOM::PERCENT, MAKE_CF_CB(set_burn_power), 0, 254); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &curBurnPow_, DeviceValueType::UINT, FL_(curBurnPow), DeviceValueUOM::PERCENT); @@ -924,7 +944,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const EMSESP::send_read_request(0xC2, device_id); // read last errorcode on start (only published on errors) - if (model() != EMS_DEVICE_FLAG_HEATPUMP) { + if (model() != EMS_DEVICE_FLAG_HEATPUMP && model() != EMS_DEVICE_FLAG_HIU) { register_telegram_type(0x04, "UBAFactory", true, MAKE_PF_CB(process_UBAFactory)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &nomPower_, DeviceValueType::UINT, FL_(nomPower), DeviceValueUOM::KW, MAKE_CF_CB(set_nomPower)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, @@ -1269,7 +1289,7 @@ void Boiler::process_UBAMonitorFastPlus(std::shared_ptr telegram has_update(telegram, heatblock_, 23); // see #1317 has_update(telegram, headertemp_, 25); // see #1317 //has_update(telegram, temperatur_, 27); // unknown temperature - telegram->read_value(exhaustTemp1_ , 31); + telegram->read_value(exhaustTemp1_, 31); if (Helpers::hasValue(exhaustTemp1_)) { has_update(exhaustTemp_, exhaustTemp1_); } diff --git a/src/devices/mixer.cpp b/src/devices/mixer.cpp index 5f4a94fbe..836036753 100644 --- a/src/devices/mixer.cpp +++ b/src/devices/mixer.cpp @@ -26,61 +26,16 @@ uuid::log::Logger Mixer::logger_{F_(mixer), uuid::log::Facility::CONSOLE}; Mixer::Mixer(uint8_t device_type, uint8_t device_id, uint8_t product_id, const char * version, const char * name, uint8_t flags, uint8_t brand) : EMSdevice(device_type, device_id, product_id, version, name, flags, brand) { - // Pool module - if (flags == EMSdevice::EMS_DEVICE_FLAG_MP) { - register_telegram_type(0x5BA, "HpPoolStatus", true, MAKE_PF_CB(process_HpPoolStatus)); - type_ = Type::MP; - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, - &poolTemp_, - DeviceValueType::SHORT, - DeviceValueNumOp::DV_NUMOP_DIV10, - FL_(poolTemp), - DeviceValueUOM::DEGREES); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &poolShuntStatus_, DeviceValueType::ENUM, FL_(enum_shunt), FL_(poolShuntStatus), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &poolShunt_, DeviceValueType::UINT, FL_(poolShunt), DeviceValueUOM::PERCENT); - } - // EMS+ if (flags == EMSdevice::EMS_DEVICE_FLAG_MMPLUS) { - if (device_id >= 0x20 && device_id <= 0x27) { - register_telegram_type(device_id - 0x20 + 0x02D7, "MMPLUSStatusMessage_HC", false, MAKE_PF_CB(process_MMPLUSStatusMessage_HC)); - // register_telegram_type(device_id - 0x20 + 0x02E1, "MMPLUSSetMessage_HC", true, MAKE_PF_CB(process_MMPLUSSetMessage_HC)); - type_ = Type::HC; - hc_ = device_id - 0x20 + 1; - uint8_t tag = DeviceValueTAG::TAG_HC1 + hc_ - 1; - register_device_value(tag, &flowTempHc_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(flowTempHc), DeviceValueUOM::DEGREES); - register_device_value(tag, &status_, DeviceValueType::INT, FL_(mixerStatus), DeviceValueUOM::PERCENT); - register_device_value(tag, &flowSetTemp_, DeviceValueType::UINT, FL_(flowSetTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_flowSetTemp)); - register_device_value(tag, &pumpStatus_, DeviceValueType::BOOL, FL_(pumpStatus), DeviceValueUOM::NONE, MAKE_CF_CB(set_pump)); - } else if (device_id >= 0x28 && device_id <= 0x29) { - register_telegram_type(device_id - 0x28 + 0x0331, "MMPLUSStatusMessage_WWC", false, MAKE_PF_CB(process_MMPLUSStatusMessage_WWC)); - register_telegram_type(device_id - 0x28 + 0x0313, "MMPLUSConfigMessage_WWC", true, MAKE_PF_CB(process_MMPLUSConfigMessage_WWC)); - // register_telegram_type(device_id - 0x28 + 0x033B, "MMPLUSSetMessage_WWC", true, MAKE_PF_CB(process_MMPLUSSetMessage_WWC)); - type_ = Type::WWC; - hc_ = device_id - 0x28 + 1; - uint8_t tag = DeviceValueTAG::TAG_WWC1 + hc_ - 1; - register_device_value(tag, &flowTempHc_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp), DeviceValueUOM::DEGREES); - register_device_value(tag, &pumpStatus_, DeviceValueType::BOOL, FL_(wwPumpStatus), DeviceValueUOM::NONE); - register_device_value(tag, &status_, DeviceValueType::INT, FL_(wwTempStatus), DeviceValueUOM::NONE); - - register_device_value(tag, &wwMaxTemp_, DeviceValueType::UINT, FL_(wwMaxTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwMaxTemp)); - register_device_value(tag, &wwDiffTemp_, DeviceValueType::INT, FL_(wwDiffTemp), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_wwDiffTemp)); - register_device_value(tag, - &wwDisinfectionTemp_, - DeviceValueType::UINT, - FL_(wwDisinfectionTemp), - DeviceValueUOM::DEGREES, - MAKE_CF_CB(set_wwDisinfectionTemp)); - register_device_value(tag, &wwReducedTemp_, DeviceValueType::UINT, FL_(wwRedTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwReducedTemp)); - register_device_value(tag, &wwRequiredTemp_, DeviceValueType::UINT, FL_(wwRequiredTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwRequiredTemp)); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, - &wwCircPump_, - DeviceValueType::BOOL, - FL_(wwCircPump), - DeviceValueUOM::NONE, - MAKE_CF_CB(set_wwCircPump)); - register_device_value(tag, &wwCircMode_, DeviceValueType::ENUM, FL_(enum_wwCircMode), FL_(wwCircMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwCircMode)); - } + register_telegram_type(device_id - 0x20 + 0x02D7, "MMPLUSStatusMessage_HC", false, MAKE_PF_CB(process_MMPLUSStatusMessage_HC)); + // register_telegram_type(device_id - 0x20 + 0x02E1, "MMPLUSSetMessage_HC", true, MAKE_PF_CB(process_MMPLUSSetMessage_HC)); + hc_ = device_id - 0x20 + 1; + uint8_t tag = DeviceValueTAG::TAG_HC1 + hc_ - 1; + register_device_value(tag, &flowTempHc_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(flowTempHc), DeviceValueUOM::DEGREES); + register_device_value(tag, &status_, DeviceValueType::UINT, FL_(mixerStatus), DeviceValueUOM::PERCENT); + register_device_value(tag, &flowSetTemp_, DeviceValueType::UINT, FL_(flowSetTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_flowSetTemp)); + register_device_value(tag, &pumpStatus_, DeviceValueType::BOOL, FL_(pumpStatus), DeviceValueUOM::NONE, MAKE_CF_CB(set_pump)); } // EMS 1.0 @@ -88,7 +43,6 @@ Mixer::Mixer(uint8_t device_type, uint8_t device_id, uint8_t product_id, const c register_telegram_type(0x00AA, "MMConfigMessage", true, MAKE_PF_CB(process_MMConfigMessage)); register_telegram_type(0x00AB, "MMStatusMessage", false, MAKE_PF_CB(process_MMStatusMessage)); register_telegram_type(0x00AC, "MMSetMessage", false, MAKE_PF_CB(process_MMSetMessage)); - type_ = Type::HC; hc_ = device_id - 0x20 + 1; uint8_t tag = DeviceValueTAG::TAG_HC1 + hc_ - 1; register_device_value(tag, &flowTempHc_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(flowTempHc), DeviceValueUOM::DEGREES); @@ -109,48 +63,16 @@ Mixer::Mixer(uint8_t device_type, uint8_t device_id, uint8_t product_id, const c // HT3 if (flags == EMSdevice::EMS_DEVICE_FLAG_IPM) { - if (device_id >= 0x40) { // special DHW pos 10 - register_telegram_type(0x34, "UBAMonitorWW", false, MAKE_PF_CB(process_IPMMonitorWW)); - register_telegram_type(0x1E, "HydrTemp", false, MAKE_PF_CB(process_IPMHydrTemp)); - register_telegram_type(0x33, "UBAParameterWW", true, MAKE_PF_CB(process_IPMParameterWW)); - // register_telegram_type(0x10D, "wwNTCStatus", false, MAKE_PF_CB(process_wwNTCStatus)); - type_ = Type::WWC; - hc_ = device_id - 0x40 + 1; - uint8_t tag = DeviceValueTAG::TAG_WWC9 + hc_ - 1; - register_device_value(tag, &wwSelTemp_, DeviceValueType::UINT, FL_(wwSelTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwSelTemp)); - register_device_value(tag, &wwCurTemp_1_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwCurTemp), DeviceValueUOM::DEGREES); - register_device_value(tag, &wwCurTemp_2_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwCurTemp2), DeviceValueUOM::DEGREES); - register_device_value(tag, &HydrTemp_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(hydrTemp), DeviceValueUOM::DEGREES); - register_device_value(tag, &pumpStatus_, DeviceValueType::BOOL, FL_(pumpStatus), DeviceValueUOM::NONE); - register_device_value(tag, &wwFlowTempOffset_, DeviceValueType::UINT, FL_(wwFlowTempOffset), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_wwFlowTempOffset)); - register_device_value(tag, &wwHystOn_, DeviceValueType::INT, FL_(wwHystOn), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_wwHystOn)); - register_device_value(tag, &wwHystOff_, DeviceValueType::INT, FL_(wwHystOff), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_wwHystOff)); - register_device_value(tag, - &wwDisinfectionTemp_, - DeviceValueType::UINT, - FL_(wwDisinfectionTemp), - DeviceValueUOM::DEGREES, - MAKE_CF_CB(set_wwDisinfectionTemp)); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, - &wwCircPump_, - DeviceValueType::BOOL, - FL_(wwCircPump), - DeviceValueUOM::NONE, - MAKE_CF_CB(set_wwCircPump)); - register_device_value(tag, &wwCircMode_, DeviceValueType::ENUM, FL_(enum_wwCircMode), FL_(wwCircMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwCircMode)); - } else { - register_telegram_type(0x010C, "IPMStatusMessage", false, MAKE_PF_CB(process_IPMStatusMessage)); - register_telegram_type(0x011E, "IPMTempMessage", false, MAKE_PF_CB(process_IPMTempMessage)); - // register_telegram_type(0x0123, "IPMSetMessage", false, MAKE_PF_CB(process_IPMSetMessage)); - type_ = Type::HC; - hc_ = device_id - 0x20 + 1; - uint8_t tag = DeviceValueTAG::TAG_HC1 + hc_ - 1; - register_device_value(tag, &flowTempHc_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(flowTempHc), DeviceValueUOM::DEGREES); - register_device_value(tag, &status_, DeviceValueType::INT, FL_(mixerStatus), DeviceValueUOM::PERCENT); - register_device_value(tag, &flowSetTemp_, DeviceValueType::UINT, FL_(flowSetTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_flowSetTemp)); - register_device_value(tag, &pumpStatus_, DeviceValueType::BOOL, FL_(pumpStatus), DeviceValueUOM::NONE, MAKE_CF_CB(set_pump)); - register_device_value(tag, &flowTempVf_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(flowTempVf), DeviceValueUOM::DEGREES); - } + register_telegram_type(0x010C, "IPMStatusMessage", false, MAKE_PF_CB(process_IPMStatusMessage)); + register_telegram_type(0x011E, "IPMTempMessage", false, MAKE_PF_CB(process_IPMTempMessage)); + // register_telegram_type(0x0123, "IPMSetMessage", false, MAKE_PF_CB(process_IPMSetMessage)); + hc_ = device_id - 0x20 + 1; + uint8_t tag = DeviceValueTAG::TAG_HC1 + hc_ - 1; + register_device_value(tag, &flowTempHc_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(flowTempHc), DeviceValueUOM::DEGREES); + register_device_value(tag, &status_, DeviceValueType::UINT, FL_(mixerStatus), DeviceValueUOM::PERCENT); + register_device_value(tag, &flowSetTemp_, DeviceValueType::UINT, FL_(flowSetTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_flowSetTemp)); + register_device_value(tag, &pumpStatus_, DeviceValueType::BOOL, FL_(pumpStatus), DeviceValueUOM::NONE, MAKE_CF_CB(set_pump)); + register_device_value(tag, &flowTempVf_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(flowTempVf), DeviceValueUOM::DEGREES); } } @@ -164,15 +86,6 @@ void Mixer::process_MMPLUSStatusMessage_HC(std::shared_ptr teleg has_update(telegram, status_, 2); // valve status } -// Mixer warm water loading/DHW - 0x0331, 0x0332 -// e.g. A9 00 FF 00 02 32 02 6C 00 3C 00 3C 3C 46 02 03 03 00 3C // on 0x28 -// A8 00 FF 00 02 31 02 35 00 3C 00 3C 3C 46 02 03 03 00 3C // in 0x29 -void Mixer::process_MMPLUSStatusMessage_WWC(std::shared_ptr telegram) { - has_update(telegram, flowTempHc_, 0); // is * 10 - has_bitupdate(telegram, pumpStatus_, 2, 0); - has_update(telegram, status_, 11); // temp status -} - // Mixer IPM - 0x010C // e.g. A0 00 FF 00 00 0C 01 00 00 00 00 00 54 // A1 00 FF 00 00 0C 02 04 00 01 1D 00 82 @@ -200,15 +113,6 @@ void Mixer::process_IPMTempMessage(std::shared_ptr telegram) { has_update(telegram, flowTempVf_, 0); // TC1, is * 10 } -// Mixer MP100 for pools - 0x5BA -void Mixer::process_HpPoolStatus(std::shared_ptr telegram) { - has_update(telegram, poolTemp_, 0); - has_update(telegram, poolShunt_, 3); // 0-100% how much is the shunt open? - telegram->read_value(poolShuntStatus__, 2); - uint8_t pss = poolShunt_ == 100 ? 3 : (poolShunt_ == 0 ? 4 : poolShuntStatus__); - has_update(poolShuntStatus_, pss); -} - // Mixer on a MM10 - 0xAB // e.g. Mixer Module -> All, type 0xAB, telegram: 21 00 AB 00 2D 01 BE 64 04 01 00 (CRC=15) #data=7 // see also https://github.com/emsesp/EMS-ESP/issues/386 @@ -235,43 +139,6 @@ void Mixer::process_MMConfigMessage(std::shared_ptr telegram) { has_update(telegram, setValveTime_, 1); // valve runtime in 10 sec, max 120 s } -// Config message 0x313, has to be fetched -void Mixer::process_MMPLUSConfigMessage_WWC(std::shared_ptr telegram) { - has_update(telegram, wwRequiredTemp_, 4); - has_update(telegram, wwReducedTemp_, 5); - has_update(telegram, wwDiffTemp_, 7); - has_update(telegram, wwDisinfectionTemp_, 9); - has_update(telegram, wwMaxTemp_, 10); -} - -// 0x34 only 8 bytes long -// Mixer(0x41) -> All(0x00), UBAMonitorWW(0x34), data: 37 02 1E 02 1E 00 00 00 00 -void Mixer::process_IPMMonitorWW(std::shared_ptr telegram) { - has_update(telegram, wwSelTemp_, 0); - has_update(telegram, wwCurTemp_1_, 1); - has_update(telegram, wwCurTemp_2_, 3); - has_bitupdate(telegram, pumpStatus_, 5, 3); -} - -// Mixer(0x41) -> Me(0x0B), UBAParameterWW(0x33), data: 08 FF 46 FB FF 28 FF 07 46 00 FF 00 -void Mixer::process_IPMParameterWW(std::shared_ptr telegram) { - // has_update(telegram, wwActivated_, 1); // 0xFF means on - // has_update(telegram, wwSelTemp_, 2); - has_update(telegram, wwHystOn_, 3); // Hyst on (default -5) - has_update(telegram, wwHystOff_, 4); // Hyst off (default -1) - has_update(telegram, wwFlowTempOffset_, 5); // default 40 - has_update(telegram, wwCircPump_, 6); // 0xFF means on - has_update(telegram, wwCircMode_, 7); // 1=1x3min 6=6x3min 7=continuous - has_update(telegram, wwDisinfectionTemp_, 8); - // has_bitupdate(telegram, wwChargeType_, 10, 0); // 0 = charge pump, 0xff = 3-way valve -} - - -// 0x1E, only16 bit temperature -// Mixer(0x41) -> Boiler(0x08), HydrTemp(0x1E), data: 01 D8 -void Mixer::process_IPMHydrTemp(std::shared_ptr telegram) { - has_update(telegram, HydrTemp_, 0); -} #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" @@ -284,16 +151,6 @@ void Mixer::process_MMPLUSSetMessage_HC(std::shared_ptr telegram // pos2: pump } -// unknown, 2 examples from older threads -// Thermostat(0x10) -> Mixer(0x28), ?(0x33B), data: 01 01 00 -// Thermostat -> Mixing Module, type 0x023B, telegram: 90 28 FF 00 02 3B 00 02 00 (CRC=68) -void Mixer::process_MMPLUSSetMessage_WWC(std::shared_ptr telegram) { -} - -// MMPLUS telegram 0x345 unknown -// Solar Module -> Mixing Module, type 0x0245, telegram: B0 28 FF 00 02 45 64 01 01 (CRC=36) -// ? - // Mixer on a MM10 - 0xAC // e.g. Thermostat -> Mixer Module, type 0xAC, telegram: 10 21 AC 00 1E 64 01 AB void Mixer::process_MMSetMessage(std::shared_ptr telegram) { @@ -311,15 +168,6 @@ void Mixer::process_IPMSetMessage(std::shared_ptr telegram) { #pragma GCC diagnostic pop -bool Mixer::set_wwSelTemp(const char * value, const int8_t id) { - int temperature; - if (!Helpers::value2temperature(value, temperature)) { - return false; - } - write_command(0x35, 3, (uint8_t)temperature, 0x34); - return true; -} - bool Mixer::set_flowSetTemp(const char * value, const int8_t id) { int v; if (!Helpers::value2number(value, v)) { @@ -389,113 +237,4 @@ bool Mixer::set_setValveTime(const char * value, const int8_t id) { return false; } -bool Mixer::set_wwMaxTemp(const char * value, const int8_t id) { - uint8_t wwc = device_id() - 0x28; - float v; - if (!Helpers::value2temperature(value, v)) { - return false; - } - write_command(0x313 + wwc, 10, (uint8_t)v, 0x313 + wwc); - return true; -} - -bool Mixer::set_wwDiffTemp(const char * value, const int8_t id) { - uint8_t wwc = device_id() - 0x28; - float v; - if (!Helpers::value2temperature(value, v)) { - return false; - } - write_command(0x313 + wwc, 7, (int8_t)(v * 10), 0x313 + wwc); - return true; -} - -bool Mixer::set_wwReducedTemp(const char * value, const int8_t id) { - uint8_t wwc = device_id() - 0x28; - float v; - if (!Helpers::value2temperature(value, v)) { - return false; - } - write_command(0x313 + wwc, 5, (uint8_t)v, 0x313 + wwc); - return true; -} - -bool Mixer::set_wwRequiredTemp(const char * value, const int8_t id) { - uint8_t wwc = device_id() - 0x28; - float v; - if (!Helpers::value2temperature(value, v)) { - return false; - } - write_command(0x313 + wwc, 4, (uint8_t)v, 0x313 + wwc); - return true; -} - -bool Mixer::set_wwDisinfectionTemp(const char * value, const int8_t id) { - float v; - if (!Helpers::value2temperature(value, v)) { - return false; - } - if (flags() == EMSdevice::EMS_DEVICE_FLAG_IPM) { - write_command(0x33, 8, (uint8_t)v, 0x33); - } else { - uint8_t wwc = device_id() - 0x28; - write_command(0x313 + wwc, 9, (uint8_t)v, 0x313 + wwc); - } - return true; -} - -bool Mixer::set_wwCircPump(const char * value, const int8_t id) { - bool v; - if (!Helpers::value2bool(value, v)) { - return false; - } - if (flags() == EMSdevice::EMS_DEVICE_FLAG_IPM) { - write_command(0x33, 6, v ? 0xFF : 0x00, 0x33); - } else { - uint8_t wwc = device_id() - 0x28; - write_command(0x33B + wwc, 0, v ? 0x01 : 0x00, 0x33B + wwc); - } - return true; -} - -bool Mixer::set_wwCircMode(const char * value, const int8_t id) { - uint8_t n; - if (!Helpers::value2enum(value, n, FL_(enum_wwCircMode))) { - return false; - } - if (flags() == EMSdevice::EMS_DEVICE_FLAG_IPM) { - write_command(0x33, 7, n, 0x33); - } else { - uint8_t wwc = device_id() - 0x28; - write_command(0x313 + wwc, 0, n, 0x313 + wwc); - } - return true; -} - -bool Mixer::set_wwFlowTempOffset(const char * value, const int8_t id) { - int n; - if (!Helpers::value2number(value, n)) { - return false; - } - write_command(0x33, 5, n, 0x33); - return true; -} - -bool Mixer::set_wwHystOn(const char * value, const int8_t id) { - int n; - if (!Helpers::value2number(value, n)) { - return false; - } - write_command(0x33, 3, n, 0x33); - return true; -} - -bool Mixer::set_wwHystOff(const char * value, const int8_t id) { - int n; - if (!Helpers::value2number(value, n)) { - return false; - } - write_command(0x33, 4, n, 0x33); - return true; -} - } // namespace emsesp diff --git a/src/devices/mixer.h b/src/devices/mixer.h index b509cd3e6..cb19c9d7b 100644 --- a/src/devices/mixer.h +++ b/src/devices/mixer.h @@ -32,46 +32,18 @@ class Mixer : public EMSdevice { void process_MMPLUSStatusMessage_HC(std::shared_ptr telegram); void process_MMPLUSSetMessage_HC(std::shared_ptr telegram); - void process_MMPLUSStatusMessage_WWC(std::shared_ptr telegram); - void process_MMPLUSSetMessage_WWC(std::shared_ptr telegram); - void process_MMPLUSConfigMessage_WWC(std::shared_ptr telegram); void process_IPMStatusMessage(std::shared_ptr telegram); void process_IPMTempMessage(std::shared_ptr telegram); void process_IPMSetMessage(std::shared_ptr telegram); void process_MMStatusMessage(std::shared_ptr telegram); void process_MMConfigMessage(std::shared_ptr telegram); void process_MMSetMessage(std::shared_ptr telegram); - void process_HpPoolStatus(std::shared_ptr telegram); - - void process_IPMMonitorWW(std::shared_ptr telegram); - void process_IPMHydrTemp(std::shared_ptr telegram); - void process_IPMParameterWW(std::shared_ptr telegram); bool set_flowSetTemp(const char * value, const int8_t id); bool set_pump(const char * value, const int8_t id); bool set_activated(const char * value, const int8_t id); bool set_setValveTime(const char * value, const int8_t id); - bool set_wwMaxTemp(const char * value, const int8_t id); - bool set_wwDiffTemp(const char * value, const int8_t id); - bool set_wwReducedTemp(const char * value, const int8_t id); - bool set_wwRequiredTemp(const char * value, const int8_t id); - bool set_wwDisinfectionTemp(const char * value, const int8_t id); - bool set_wwCircPump(const char * value, const int8_t id); - bool set_wwCircMode(const char * value, const int8_t id); - - bool set_wwSelTemp(const char * value, const int8_t id); - bool set_wwFlowTempOffset(const char * value, const int8_t id); - bool set_wwHystOn(const char * value, const int8_t id); - bool set_wwHystOff(const char * value, const int8_t id); - - enum class Type { - NONE, - HC, // heating circuit - WWC, // warm water circuit - MP // pool - }; - private: uint16_t flowTempHc_; uint16_t flowTempVf_; @@ -81,31 +53,7 @@ class Mixer : public EMSdevice { uint8_t activated_; uint8_t setValveTime_; - // MM100wwParam - 0x0313, 0x033B - uint8_t wwMaxTemp_; - uint8_t wwRequiredTemp_; - uint8_t wwReducedTemp_; - uint8_t wwDiffTemp_; - uint8_t wwDisinfectionTemp_; - uint8_t wwCircPump_; - uint8_t wwCircMode_; - - // MP100 pool - int16_t poolTemp_; - uint8_t poolShuntStatus_; - uint8_t poolShunt_; - - Type type_ = Type::NONE; uint16_t hc_ = EMS_VALUE_USHORT_NOTSET; - uint8_t poolShuntStatus__ = EMS_VALUE_UINT_NOTSET; // temp value - - uint8_t wwSelTemp_; - uint16_t wwCurTemp_1_; - uint16_t wwCurTemp_2_; - uint16_t HydrTemp_; - int8_t wwHystOn_; // Hyst on (default -5) - int8_t wwHystOff_; // Hyst off (default -1) - uint8_t wwFlowTempOffset_; // default 40 }; } // namespace emsesp diff --git a/src/devices/pool.cpp b/src/devices/pool.cpp new file mode 100644 index 000000000..16b1cd232 --- /dev/null +++ b/src/devices/pool.cpp @@ -0,0 +1,50 @@ +/* + * EMS-ESP - https://github.com/emsesp/EMS-ESP + * Copyright 2020-2023 Paul Derbyshire + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "pool.h" + +namespace emsesp { + +REGISTER_FACTORY(Pool, EMSdevice::DeviceType::POOL); + +uuid::log::Logger Pool::logger_{F_(pool), uuid::log::Facility::CONSOLE}; + +Pool::Pool(uint8_t device_type, uint8_t device_id, uint8_t product_id, const char * version, const char * name, uint8_t flags, uint8_t brand) + : EMSdevice(device_type, device_id, product_id, version, name, flags, brand) { + // Pool module + register_telegram_type(0x5BA, "HpPoolStatus", true, MAKE_PF_CB(process_HpPoolStatus)); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &poolTemp_, + DeviceValueType::SHORT, + DeviceValueNumOp::DV_NUMOP_DIV10, + FL_(poolTemp), + DeviceValueUOM::DEGREES); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &poolShuntStatus_, DeviceValueType::ENUM, FL_(enum_shunt), FL_(poolShuntStatus), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &poolShunt_, DeviceValueType::UINT, FL_(poolShunt), DeviceValueUOM::PERCENT); +} + +// Mixer MP100 for pools - 0x5BA +void Pool::process_HpPoolStatus(std::shared_ptr telegram) { + has_update(telegram, poolTemp_, 0); + has_update(telegram, poolShunt_, 3); // 0-100% how much is the shunt open? + telegram->read_value(poolShuntStatus__, 2); + uint8_t pss = poolShunt_ == 100 ? 3 : (poolShunt_ == 0 ? 4 : poolShuntStatus__); + has_update(poolShuntStatus_, pss); +} + +} // namespace emsesp diff --git a/src/devices/pool.h b/src/devices/pool.h new file mode 100644 index 000000000..dc4092eb1 --- /dev/null +++ b/src/devices/pool.h @@ -0,0 +1,46 @@ +/* + * EMS-ESP - https://github.com/emsesp/EMS-ESP + * Copyright 2020-2023 Paul Derbyshire + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef EMSESP_POOL_H +#define EMSESP_POOL_H + +#include "emsesp.h" + +namespace emsesp { + +class Pool : public EMSdevice { + public: + Pool(uint8_t device_type, uint8_t device_id, uint8_t product_id, const char * version, const char * name, uint8_t flags, uint8_t brand); + + private: + static uuid::log::Logger logger_; + + void process_HpPoolStatus(std::shared_ptr telegram); + + private: + // MP100 pool + int16_t poolTemp_; + uint8_t poolShuntStatus_; + uint8_t poolShunt_; + + uint8_t poolShuntStatus__ = EMS_VALUE_UINT_NOTSET; // temp value +}; + +} // namespace emsesp + +#endif diff --git a/src/devices/solar.cpp b/src/devices/solar.cpp index 53e1547fc..08e5c9fab 100644 --- a/src/devices/solar.cpp +++ b/src/devices/solar.cpp @@ -34,32 +34,22 @@ Solar::Solar(uint8_t device_type, uint8_t device_id, uint8_t product_id, const c } if (flags == EMSdevice::EMS_DEVICE_FLAG_SM100) { - if (device_id == 0x2A) { // SM100 DHW - register_telegram_type(0x07D6, "SM100wwTemperature", false, MAKE_PF_CB(process_SM100wwTemperature)); - register_telegram_type(0x07AA, "SM100wwStatus", false, MAKE_PF_CB(process_SM100wwStatus)); - register_telegram_type(0x07AB, "SM100wwCommand", false, MAKE_PF_CB(process_SM100wwCommand)); - register_telegram_type(0x07A5, "SM100wwCirc", true, MAKE_PF_CB(process_SM100wwCirc)); - register_telegram_type(0x07A6, "SM100wwParam", true, MAKE_PF_CB(process_SM100wwParam)); - register_telegram_type(0x07AE, "SM100wwKeepWarm", true, MAKE_PF_CB(process_SM100wwKeepWarm)); - register_telegram_type(0x07E0, "SM100wwStatus2", true, MAKE_PF_CB(process_SM100wwStatus2)); - } else { - // F9 is not a telegram type, it's a flag for configure - // register_telegram_type(0xF9, "ParamCfg", false, MAKE_PF_CB(process_SM100ParamCfg)); - register_telegram_type(0x0358, "SM100SystemConfig", true, MAKE_PF_CB(process_SM100SystemConfig)); - register_telegram_type(0x035A, "SM100CircuitConfig", true, MAKE_PF_CB(process_SM100CircuitConfig)); - register_telegram_type(0x035D, "SM100Circuit2Config", true, MAKE_PF_CB(process_SM100Circuit2Config)); - register_telegram_type(0x0362, "SM100Monitor", false, MAKE_PF_CB(process_SM100Monitor)); - register_telegram_type(0x0363, "SM100Monitor2", false, MAKE_PF_CB(process_SM100Monitor2)); - register_telegram_type(0x0366, "SM100Config", false, MAKE_PF_CB(process_SM100Config)); - register_telegram_type(0x0364, "SM100Status", false, MAKE_PF_CB(process_SM100Status)); - register_telegram_type(0x036A, "SM100Status2", false, MAKE_PF_CB(process_SM100Status2)); - register_telegram_type(0x0380, "SM100CollectorConfig", true, MAKE_PF_CB(process_SM100CollectorConfig)); - register_telegram_type(0x038E, "SM100Energy", true, MAKE_PF_CB(process_SM100Energy)); - register_telegram_type(0x0391, "SM100Time", true, MAKE_PF_CB(process_SM100Time)); - register_telegram_type(0x035F, "SM100Config1", true, MAKE_PF_CB(process_SM100Config1)); - register_telegram_type(0x035C, "SM100HeatAssist", true, MAKE_PF_CB(process_SM100HeatAssist)); - register_telegram_type(0x0361, "SM100Differential", true, MAKE_PF_CB(process_SM100Differential)); - } + // F9 is not a telegram type, it's a flag for configure + // register_telegram_type(0xF9, "ParamCfg", false, MAKE_PF_CB(process_SM100ParamCfg)); + register_telegram_type(0x0358, "SM100SystemConfig", true, MAKE_PF_CB(process_SM100SystemConfig)); + register_telegram_type(0x035A, "SM100CircuitConfig", true, MAKE_PF_CB(process_SM100CircuitConfig)); + register_telegram_type(0x035D, "SM100Circuit2Config", true, MAKE_PF_CB(process_SM100Circuit2Config)); + register_telegram_type(0x0362, "SM100Monitor", false, MAKE_PF_CB(process_SM100Monitor)); + register_telegram_type(0x0363, "SM100Monitor2", false, MAKE_PF_CB(process_SM100Monitor2)); + register_telegram_type(0x0366, "SM100Config", false, MAKE_PF_CB(process_SM100Config)); + register_telegram_type(0x0364, "SM100Status", false, MAKE_PF_CB(process_SM100Status)); + register_telegram_type(0x036A, "SM100Status2", false, MAKE_PF_CB(process_SM100Status2)); + register_telegram_type(0x0380, "SM100CollectorConfig", true, MAKE_PF_CB(process_SM100CollectorConfig)); + register_telegram_type(0x038E, "SM100Energy", true, MAKE_PF_CB(process_SM100Energy)); + register_telegram_type(0x0391, "SM100Time", true, MAKE_PF_CB(process_SM100Time)); + register_telegram_type(0x035F, "SM100Config1", true, MAKE_PF_CB(process_SM100Config1)); + register_telegram_type(0x035C, "SM100HeatAssist", true, MAKE_PF_CB(process_SM100HeatAssist)); + register_telegram_type(0x0361, "SM100Differential", true, MAKE_PF_CB(process_SM100Differential)); } if (flags == EMSdevice::EMS_DEVICE_FLAG_ISM) { @@ -69,94 +59,6 @@ Solar::Solar(uint8_t device_type, uint8_t device_id, uint8_t product_id, const c } // device values... - // special case for a SM100 DHW device_id with 0x2A where it's not actual a solar module - if (device_id == 0x2A) { - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, - &wwTemp_1_, - DeviceValueType::USHORT, - DeviceValueNumOp::DV_NUMOP_DIV10, - FL_(wwTemp1), - DeviceValueUOM::DEGREES); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, - &wwTemp_3_, - DeviceValueType::USHORT, - DeviceValueNumOp::DV_NUMOP_DIV10, - FL_(wwTemp3), - DeviceValueUOM::DEGREES); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, - &wwTemp_4_, - DeviceValueType::USHORT, - DeviceValueNumOp::DV_NUMOP_DIV10, - FL_(wwTemp4), - DeviceValueUOM::DEGREES); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, - &wwTemp_5_, - DeviceValueType::USHORT, - DeviceValueNumOp::DV_NUMOP_DIV10, - FL_(wwTemp5), - DeviceValueUOM::DEGREES); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, - &wwTemp_7_, - DeviceValueType::USHORT, - DeviceValueNumOp::DV_NUMOP_DIV10, - FL_(wwTemp7), - DeviceValueUOM::DEGREES); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwPump_, DeviceValueType::BOOL, FL_(wwPump), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, - &wwMaxTemp_, - DeviceValueType::UINT, - FL_(wwMaxTemp), - DeviceValueUOM::DEGREES, - MAKE_CF_CB(set_wwMaxTemp)); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, - &wwSelTemp_, - DeviceValueType::UINT, - FL_(wwSelTemp), - DeviceValueUOM::DEGREES, - MAKE_CF_CB(set_wwSelTemp)); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, - &wwRedTemp_, - DeviceValueType::UINT, - FL_(wwRedTemp), - DeviceValueUOM::DEGREES, - MAKE_CF_CB(set_wwRedTemp)); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, - &wwDailyTemp_, - DeviceValueType::UINT, - FL_(wwDailyTemp), - DeviceValueUOM::DEGREES, - MAKE_CF_CB(set_wwDailyTemp)); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, - &wwDisinfectionTemp_, - DeviceValueType::UINT, - FL_(wwDisinfectionTemp), - DeviceValueUOM::DEGREES, - MAKE_CF_CB(set_wwDisinfectionTemp)); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwCirc_, DeviceValueType::BOOL, FL_(wwCirc), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwCirc)); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, - &wwCircMode_, - DeviceValueType::ENUM, - FL_(enum_wwCircMode), - FL_(wwCircMode), - DeviceValueUOM::NONE, - MAKE_CF_CB(set_wwCircMode)); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, - &wwKeepWarm_, - DeviceValueType::BOOL, - FL_(wwKeepWarm), - DeviceValueUOM::NONE, - MAKE_CF_CB(set_wwKeepWarm)); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwStatus2_, DeviceValueType::ENUM, FL_(enum_wwStatus2), FL_(wwStatus2), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwPumpMod_, DeviceValueType::UINT, FL_(wwPumpMod), DeviceValueUOM::PERCENT); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, - &wwFlow_, - DeviceValueType::UINT, - DeviceValueNumOp::DV_NUMOP_DIV10, - FL_(wwFlow), - DeviceValueUOM::LMIN); - return; - } - // common solar values for all modules (except dhw) register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &collectorTemp_, @@ -690,58 +592,6 @@ void Solar::process_SM100Monitor(std::shared_ptr telegram) { has_update(telegram, retHeatAssist_, 10); // is *10 - TS15: return temperature heating assistance } -// SM100wwTemperature - 0x07D6 -// Solar Module(0x2A) -> (0x00), (0x7D6), data: 01 C1 00 00 02 5B 01 AF 01 AD 80 00 01 90 -void Solar::process_SM100wwTemperature(std::shared_ptr telegram) { - has_update(telegram, wwTemp_1_, 0); // is *10 - has_update(telegram, wwTemp_3_, 4); // is *10 - has_update(telegram, wwTemp_4_, 6); // is *10 - has_update(telegram, wwTemp_5_, 8); // is *10 - has_update(telegram, wwTemp_7_, 12); // is *10 -} - -// SM100wwStatus - 0x07AA -// Solar Module(0x2A) -> (0x00), (0x7AA), data: 64 00 04 00 03 00 28 01 0F -void Solar::process_SM100wwStatus(std::shared_ptr telegram) { - has_update(telegram, wwPump_, 0); -} - -// SM100wwParam - 0x07A6, Solar Module(0x2A) -> (0x00) -// data: FF 05 0F 5F 00 01 3C 3C 3C 3C 28 12 46 01 3C 1E 03 07 3C 00 0F 00 05 -void Solar::process_SM100wwParam(std::shared_ptr telegram) { - has_update(telegram, wwMaxTemp_, 8); - has_update(telegram, wwSelTemp_, 9); - has_update(telegram, wwRedTemp_, 10); - has_update(telegram, wwDailyTemp_, 6); - has_update(telegram, wwDisinfectionTemp_, 12); - // (daily heating time thermostat 2F5, offset 9, offset 8 on/off) -} - -// SM100wwCirc - 0x07A5 -// Solar Module(0x2A) -> (0x00), (0x7A5), data: -void Solar::process_SM100wwCirc(std::shared_ptr telegram) { - has_update(telegram, wwCirc_, 0); - has_update(telegram, wwCircMode_, 3); -} - -// SM100wwKeepWarm - 0x7AE, keepWarm -// Thermostat(0x10) -> Solar(0x2A), ?(0x7AE), data: FF -void Solar::process_SM100wwKeepWarm(std::shared_ptr telegram) { - has_update(telegram, wwKeepWarm_, 0); -} - -/* -// SM100ww? - 0x7E0, some kind of status -// data: 00 00 46 00 00 01 06 0E 06 0E 00 00 00 00 00 03 03 03 03 -// publishes single values offset 1/2(16bit), offset 5, offset 6, offset 7, offset 8, offset 9, -// status2 = 03:"no heat", 06:"heat request", 08:"disinfecting", 09:"hold" -*/ -void Solar::process_SM100wwStatus2(std::shared_ptr telegram) { - has_update(telegram, wwFlow_, 7); - has_update(telegram, wwStatus2_, 8); - has_update(telegram, wwPumpMod_, 9); -} - // SM100Monitor2 - 0x0363 Heatcounter // e.g. B0 00 FF 00 02 63 80 00 80 00 00 00 80 00 80 00 80 00 00 80 00 5A // Solar(0x30) -> All(0x00), SM100Monitor2(0x363), data: 01 E1 01 6B 00 00 01 5D 02 8E 80 00 0F 80 00 @@ -753,17 +603,6 @@ void Solar::process_SM100Monitor2(std::shared_ptr telegram) { has_update(telegram->read_value(swapFlowTemp_, 8)); // is *10 } -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" - -// SM100wwCommand - 0x07AB -// Thermostat(0x10) -> Solar Module(0x2A), (0x7AB), data: 01 00 01 -void Solar::process_SM100wwCommand(std::shared_ptr telegram) { - // not implemented yet -} - -#pragma GCC diagnostic pop - // SM100Config - 0x0366 // e.g. B0 00 FF 00 02 66 01 62 00 13 40 14 void Solar::process_SM100Config(std::shared_ptr telegram) { @@ -1249,76 +1088,4 @@ bool Solar::set_diffControl(const char * value, const int8_t id) { return true; } -bool Solar::set_wwSelTemp(const char * value, const int8_t id) { - int temperature; - if (!Helpers::value2temperature(value, temperature)) { - return false; - } - write_command(0x7A6, 9, (uint8_t)temperature, 0x7A6); - return true; -} - -bool Solar::set_wwMaxTemp(const char * value, const int8_t id) { - int temperature; - if (!Helpers::value2temperature(value, temperature)) { - return false; - } - write_command(0x7A6, 8, (uint8_t)temperature, 0x7A6); - return true; -} - -bool Solar::set_wwRedTemp(const char * value, const int8_t id) { - int temperature; - if (!Helpers::value2temperature(value, temperature)) { - return false; - } - write_command(0x7A6, 10, (uint8_t)temperature, 0x7A6); - return true; -} - -bool Solar::set_wwDailyTemp(const char * value, const int8_t id) { - int temperature; - if (!Helpers::value2temperature(value, temperature)) { - return false; - } - write_command(0x7A6, 6, (uint8_t)temperature, 0x7A6); - return true; -} - -bool Solar::set_wwDisinfectionTemp(const char * value, const int8_t id) { - int temperature; - if (!Helpers::value2temperature(value, temperature)) { - return false; - } - write_command(0x7A6, 12, (uint8_t)temperature, 0x7A6); - return true; -} - -bool Solar::set_wwCirc(const char * value, const int8_t id) { - bool b; - if (!Helpers::value2bool(value, b)) { - return false; - } - write_command(0x7A5, 0, b ? 0xFF : 0x00, 0x7A5); - return true; -} - -bool Solar::set_wwCircMode(const char * value, const int8_t id) { - uint8_t num; - if (!Helpers::value2enum(value, num, FL_(enum_wwCircMode))) { - return false; - } - write_command(0x7A5, 3, num, 0x7A5); - return true; -} - -bool Solar::set_wwKeepWarm(const char * value, const int8_t id) { - bool b; - if (!Helpers::value2bool(value, b)) { - return false; - } - write_command(0x7AE, 0, b ? 0xFF : 0x00, 0x7AE); - return true; -} - } // namespace emsesp diff --git a/src/devices/solar.h b/src/devices/solar.h index 16bb379bf..ef69095d1 100644 --- a/src/devices/solar.h +++ b/src/devices/solar.h @@ -114,35 +114,6 @@ class Solar : public EMSdevice { uint16_t collector2Area_; // Area of collector field 2 uint8_t collector2Type_; // Type of collector field 2, 01=flat, 02=vacuum - // SM100wwTemperature - 0x07D6 - uint16_t wwTemp_1_; - uint16_t wwTemp_3_; - uint16_t wwTemp_4_; - uint16_t wwTemp_5_; - uint16_t wwTemp_7_; - - // SM100wwStatus - 0x07AA - uint8_t wwPump_; - - // SM100wwParam - 0x07A6 - uint8_t wwMaxTemp_; - uint8_t wwSelTemp_; - uint8_t wwRedTemp_; - uint8_t wwDailyTemp_; - uint8_t wwDisinfectionTemp_; - - // SM100wwKeepWarm - 0x07AE - uint8_t wwKeepWarm_; - - // SM100wwCirc - 0x07A5 - uint8_t wwCirc_; - uint8_t wwCircMode_; - - // SM100wwStatus2 - 0x07E0 - uint8_t wwFlow_; - uint8_t wwPumpMod_; - uint8_t wwStatus2_; - // SM10Config - 0x96 uint8_t wwMinTemp_; uint8_t maxFlow_; // set this to calculate power @@ -178,14 +149,6 @@ class Solar : public EMSdevice { void process_SM100HeatAssist(std::shared_ptr telegram); void process_SM100Differential(std::shared_ptr telegram); - void process_SM100wwTemperature(std::shared_ptr telegram); - void process_SM100wwStatus(std::shared_ptr telegram); - void process_SM100wwStatus2(std::shared_ptr telegram); - void process_SM100wwCommand(std::shared_ptr telegram); - void process_SM100wwCirc(std::shared_ptr telegram); - void process_SM100wwParam(std::shared_ptr telegram); - void process_SM100wwKeepWarm(std::shared_ptr telegram); - void process_ISM1StatusMessage(std::shared_ptr telegram); void process_ISM1Set(std::shared_ptr telegram); void process_ISM2StatusMessage(std::shared_ptr telegram); @@ -226,14 +189,6 @@ class Solar : public EMSdevice { bool set_heatAssist(const char * value, const int8_t id); bool set_diffControl(const char * value, const int8_t id); - bool set_wwSelTemp(const char * value, const int8_t id); - bool set_wwMaxTemp(const char * value, const int8_t id); - bool set_wwRedTemp(const char * value, const int8_t id); - bool set_wwCirc(const char * value, const int8_t id); - bool set_wwCircMode(const char * value, const int8_t id); - bool set_wwKeepWarm(const char * value, const int8_t id); - bool set_wwDisinfectionTemp(const char * value, const int8_t id); - bool set_wwDailyTemp(const char * value, const int8_t id); }; } // namespace emsesp diff --git a/src/devices/water.cpp b/src/devices/water.cpp new file mode 100644 index 000000000..486af763b --- /dev/null +++ b/src/devices/water.cpp @@ -0,0 +1,392 @@ +/* + * EMS-ESP - https://github.com/emsesp/EMS-ESP + * Copyright 2020-2023 Paul Derbyshire + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "water.h" + +namespace emsesp { + +REGISTER_FACTORY(Water, EMSdevice::DeviceType::WATER); + +uuid::log::Logger Water::logger_{F_(water), uuid::log::Facility::CONSOLE}; + +Water::Water(uint8_t device_type, uint8_t device_id, uint8_t product_id, const char * version, const char * name, uint8_t flags, uint8_t brand) + : EMSdevice(device_type, device_id, product_id, version, name, flags, brand) { + uint8_t tag = DeviceValueTAG::TAG_WWC1 + device_id - EMSdevice::EMS_DEVICE_ID_DHW1; + if (device_id == 0x2A) { // SM100, DHW3 + wwc_ = 2; + // telegram handlers + register_telegram_type(0x07D6, "SM100wwTemperature", false, MAKE_PF_CB(process_SM100wwTemperature)); + register_telegram_type(0x07AA, "SM100wwStatus", false, MAKE_PF_CB(process_SM100wwStatus)); + register_telegram_type(0x07AB, "SM100wwCommand", false, MAKE_PF_CB(process_SM100wwCommand)); + register_telegram_type(0x07A5, "SM100wwCirc", true, MAKE_PF_CB(process_SM100wwCirc)); + register_telegram_type(0x07A6, "SM100wwParam", true, MAKE_PF_CB(process_SM100wwParam)); + register_telegram_type(0x07AE, "SM100wwKeepWarm", true, MAKE_PF_CB(process_SM100wwKeepWarm)); + register_telegram_type(0x07E0, "SM100wwStatus2", true, MAKE_PF_CB(process_SM100wwStatus2)); + // device values... + register_device_value(tag, &wwTemp_1_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp1), DeviceValueUOM::DEGREES); + register_device_value(tag, &wwTemp_2_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp2), DeviceValueUOM::DEGREES); + register_device_value(tag, &wwTemp_3_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp3), DeviceValueUOM::DEGREES); + register_device_value(tag, &wwTemp_4_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp4), DeviceValueUOM::DEGREES); + register_device_value(tag, &wwTemp_5_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp5), DeviceValueUOM::DEGREES); + register_device_value(tag, &wwTemp_6_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp6), DeviceValueUOM::DEGREES); + register_device_value(tag, &wwTemp_7_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp7), DeviceValueUOM::DEGREES); + register_device_value(tag, &wwPump_, DeviceValueType::BOOL, FL_(wwPump), DeviceValueUOM::NONE); + register_device_value(tag, &wwMaxTemp_, DeviceValueType::UINT, FL_(wwMaxTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwMaxTemp)); + register_device_value(tag, &wwSelTemp_, DeviceValueType::UINT, FL_(wwSelTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwSelTemp)); + register_device_value(tag, &wwRedTemp_, DeviceValueType::UINT, FL_(wwRedTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwRedTemp)); + register_device_value(tag, &wwDailyTemp_, DeviceValueType::UINT, FL_(wwDailyTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwDailyTemp)); + register_device_value(tag, &wwDisinfectionTemp_, DeviceValueType::UINT, FL_(wwDisinfectionTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwDisinfectionTemp)); + register_device_value(tag, &wwCirc_, DeviceValueType::BOOL, FL_(wwCirc), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwCirc)); + register_device_value(tag, &wwCircMode_, DeviceValueType::ENUM, FL_(enum_wwCircMode), FL_(wwCircMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwCircMode)); + register_device_value(tag, &wwKeepWarm_, DeviceValueType::BOOL, FL_(wwKeepWarm), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwKeepWarm)); + register_device_value(tag, &wwStatus2_, DeviceValueType::ENUM, FL_(enum_wwStatus2), FL_(wwStatus2), DeviceValueUOM::NONE); + register_device_value(tag, &wwPumpMod_, DeviceValueType::UINT, FL_(wwPumpMod), DeviceValueUOM::PERCENT); + register_device_value(tag, &wwFlow_, DeviceValueType::UINT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwFlow), DeviceValueUOM::LMIN); + + } else if (device_id >= EMSdevice::EMS_DEVICE_ID_DHW1 && device_id <= EMSdevice::EMS_DEVICE_ID_DHW2) { + wwc_ = device_id - EMSdevice::EMS_DEVICE_ID_DHW1; + register_telegram_type(0x331 + wwc_, "MMPLUSStatusMessage_WWC", false, MAKE_PF_CB(process_MMPLUSStatusMessage_WWC)); + register_telegram_type(0x313 + wwc_, "MMPLUSConfigMessage_WWC", true, MAKE_PF_CB(process_MMPLUSConfigMessage_WWC)); + // register_telegram_type(0x33B + type_offset, "MMPLUSSetMessage_WWC", true, MAKE_PF_CB(process_MMPLUSSetMessage_WWC)); + // device values... + register_device_value(tag, &wwFlowTemp_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp), DeviceValueUOM::DEGREES); + register_device_value(tag, &wwStatus_, DeviceValueType::INT, FL_(wwTempStatus), DeviceValueUOM::NONE); + register_device_value(tag, &wwPump_, DeviceValueType::BOOL, FL_(wwPump), DeviceValueUOM::NONE); + register_device_value(tag, &wwMaxTemp_, DeviceValueType::UINT, FL_(wwMaxTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwMaxTemp)); + register_device_value(tag, &wwDiffTemp_, DeviceValueType::INT, FL_(wwDiffTemp), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_wwDiffTemp)); + register_device_value(tag, &wwDisinfectionTemp_, DeviceValueType::UINT, FL_(wwDisinfectionTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwDisinfectionTemp)); + register_device_value(tag, &wwRedTemp_, DeviceValueType::UINT, FL_(wwRedTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwRedTemp)); + register_device_value(tag, &wwRequiredTemp_, DeviceValueType::UINT, FL_(wwRequiredTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwRequiredTemp)); + register_device_value(tag, &wwCirc_, DeviceValueType::BOOL, FL_(wwCirc), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwCirc)); + register_device_value(tag, &wwCircMode_, DeviceValueType::ENUM, FL_(enum_wwCircMode), FL_(wwCircMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwCircMode)); + } else if (device_id == 0x40) { // flags == EMSdevice::EMS_DEVICE_FLAG_IPM, special DHW pos 10 + wwc_ = 0; + tag = DeviceValueTAG::TAG_WWC1; + register_telegram_type(0x34, "UBAMonitorWW", false, MAKE_PF_CB(process_IPMMonitorWW)); + register_telegram_type(0x1E, "HydrTemp", false, MAKE_PF_CB(process_IPMHydrTemp)); + register_telegram_type(0x33, "UBAParameterWW", true, MAKE_PF_CB(process_IPMParameterWW)); + // register_telegram_type(0x10D, "wwNTCStatus", false, MAKE_PF_CB(process_wwNTCStatus)); + // device values... + register_device_value(tag, &wwSelTemp_, DeviceValueType::UINT, FL_(wwSelTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwSelTemp)); + register_device_value(tag, &wwTemp_1_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp1), DeviceValueUOM::DEGREES); + register_device_value(tag, &wwTemp_2_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp2), DeviceValueUOM::DEGREES); + register_device_value(tag, &HydrTemp_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(hydrTemp), DeviceValueUOM::DEGREES); + register_device_value(tag, &wwPump_, DeviceValueType::BOOL, FL_(wwPump), DeviceValueUOM::NONE); + register_device_value(tag, &wwFlowTempOffset_, DeviceValueType::UINT, FL_(wwFlowTempOffset), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_wwFlowTempOffset)); + register_device_value(tag, &wwHystOn_, DeviceValueType::INT, FL_(wwHystOn), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_wwHystOn)); + register_device_value(tag, &wwHystOff_, DeviceValueType::INT, FL_(wwHystOff), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_wwHystOff)); + register_device_value(tag, &wwDisinfectionTemp_, DeviceValueType::UINT, FL_(wwDisinfectionTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwDisinfectionTemp)); + register_device_value(tag, &wwCirc_, DeviceValueType::BOOL, FL_(wwCirc), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwCirc)); + register_device_value(tag, &wwCircMode_, DeviceValueType::ENUM, FL_(enum_wwCircMode), FL_(wwCircMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwCircMode)); + } +} + +// SM100wwTemperature - 0x07D6 +// Solar Module(0x2A) -> (0x00), (0x7D6), data: 01 C1 00 00 02 5B 01 AF 01 AD 80 00 01 90 +void Water::process_SM100wwTemperature(std::shared_ptr telegram) { + has_update(telegram, wwTemp_1_, 0); // is *10 + has_update(telegram, wwTemp_2_, 2); // is *10 + has_update(telegram, wwTemp_3_, 4); // is *10 + has_update(telegram, wwTemp_4_, 6); // is *10 + has_update(telegram, wwTemp_5_, 8); // is *10 + has_update(telegram, wwTemp_6_, 10); // is *10 + has_update(telegram, wwTemp_7_, 12); // is *10 +} + +// SM100wwStatus - 0x07AA +// Solar Module(0x2A) -> (0x00), (0x7AA), data: 64 00 04 00 03 00 28 01 0F +void Water::process_SM100wwStatus(std::shared_ptr telegram) { + has_update(telegram, wwPump_, 0); +} + +// SM100wwParam - 0x07A6, Solar Module(0x2A) -> (0x00) +// data: FF 05 0F 5F 00 01 3C 3C 3C 3C 28 12 46 01 3C 1E 03 07 3C 00 0F 00 05 +void Water::process_SM100wwParam(std::shared_ptr telegram) { + has_update(telegram, wwMaxTemp_, 8); + has_update(telegram, wwSelTemp_, 9); + has_update(telegram, wwRedTemp_, 10); + has_update(telegram, wwDailyTemp_, 6); + has_update(telegram, wwDisinfectionTemp_, 12); + // (daily heating time thermostat 2F5, offset 9, offset 8 on/off) +} + +// SM100wwCirc - 0x07A5 +// Solar Module(0x2A) -> (0x00), (0x7A5), data: +void Water::process_SM100wwCirc(std::shared_ptr telegram) { + has_update(telegram, wwCirc_, 0); + has_update(telegram, wwCircMode_, 3); +} + +// SM100wwKeepWarm - 0x7AE, keepWarm +// Thermostat(0x10) -> Solar(0x2A), ?(0x7AE), data: FF +void Water::process_SM100wwKeepWarm(std::shared_ptr telegram) { + has_update(telegram, wwKeepWarm_, 0); +} + +/* +// SM100ww? - 0x7E0, some kind of status +// data: 00 00 46 00 00 01 06 0E 06 0E 00 00 00 00 00 03 03 03 03 +// publishes single values offset 1/2(16bit), offset 5, offset 6, offset 7, offset 8, offset 9, +// status2 = 03:"no heat", 06:"heat request", 08:"disinfecting", 09:"hold" +*/ +void Water::process_SM100wwStatus2(std::shared_ptr telegram) { + has_update(telegram, wwFlow_, 7); + has_update(telegram, wwStatus2_, 8); + has_update(telegram, wwPumpMod_, 9); +} + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wunused-parameter" +// SM100wwCommand - 0x07AB +// Thermostat(0x10) -> Solar Module(0x2A), (0x7AB), data: 01 00 01 +void Water::process_SM100wwCommand(std::shared_ptr telegram) { + // not implemented yet +} +#pragma GCC diagnostic pop + +/* + * MM100 messages + */ + +// Mixer warm water loading/DHW - 0x0331, 0x0332 +// e.g. A9 00 FF 00 02 32 02 6C 00 3C 00 3C 3C 46 02 03 03 00 3C // on 0x28 +// A8 00 FF 00 02 31 02 35 00 3C 00 3C 3C 46 02 03 03 00 3C // in 0x29 +void Water::process_MMPLUSStatusMessage_WWC(std::shared_ptr telegram) { + has_update(telegram, wwFlowTemp_, 0); // is * 10 + has_bitupdate(telegram, wwPump_, 2, 0); + has_update(telegram, wwStatus_, 11); // temp status +} + +// Config message 0x313, has to be fetched +void Water::process_MMPLUSConfigMessage_WWC(std::shared_ptr telegram) { + has_update(telegram, wwRequiredTemp_, 4); + has_update(telegram, wwRedTemp_, 5); + has_update(telegram, wwDiffTemp_, 7); + has_update(telegram, wwDisinfectionTemp_, 9); + has_update(telegram, wwMaxTemp_, 10); +} + +// unknown, 2 examples from older threads +// Thermostat(0x10) -> Mixer(0x28), ?(0x33B), data: 01 01 00 +// Thermostat -> Mixing Module, type 0x023B, telegram: 90 28 FF 00 02 3B 00 02 00 (CRC=68) +void Water::process_MMPLUSSetMessage_WWC(std::shared_ptr telegram) { +} + +// MMPLUS telegram 0x345 unknown +// Solar Module -> Mixing Module, type 0x0245, telegram: B0 28 FF 00 02 45 64 01 01 (CRC=36) +// ? + +/* + * IPM messages + */ + +// 0x34 only 8 bytes long +// Mixer(0x41) -> All(0x00), UBAMonitorWW(0x34), data: 37 02 1E 02 1E 00 00 00 00 +void Water::process_IPMMonitorWW(std::shared_ptr telegram) { + has_update(telegram, wwSelTemp_, 0); + has_update(telegram, wwTemp_1_, 1); + has_update(telegram, wwTemp_2_, 3); + has_bitupdate(telegram, wwPump_, 5, 3); +} + +// Mixer(0x41) -> Me(0x0B), UBAParameterWW(0x33), data: 08 FF 46 FB FF 28 FF 07 46 00 FF 00 +void Water::process_IPMParameterWW(std::shared_ptr telegram) { + // has_update(telegram, wwActivated_, 1); // 0xFF means on + // has_update(telegram, wwSelTemp_, 2); + has_update(telegram, wwHystOn_, 3); // Hyst on (default -5) + has_update(telegram, wwHystOff_, 4); // Hyst off (default -1) + has_update(telegram, wwFlowTempOffset_, 5); // default 40 + has_update(telegram, wwCirc_, 6); // 0xFF means on + has_update(telegram, wwCircMode_, 7); // 1=1x3min 6=6x3min 7=continuous + has_update(telegram, wwDisinfectionTemp_, 8); + // has_bitupdate(telegram, wwChargeType_, 10, 0); // 0 = charge pump, 0xff = 3-way valve +} + + +// 0x1E, only16 bit temperature +// Mixer(0x41) -> Boiler(0x08), HydrTemp(0x1E), data: 01 D8 +void Water::process_IPMHydrTemp(std::shared_ptr telegram) { + has_update(telegram, HydrTemp_, 0); +} + +/* + * Settings + */ + +bool Water::set_wwSelTemp(const char * value, const int8_t id) { + int temperature; + if (!Helpers::value2temperature(value, temperature)) { + return false; + } + if (flags() == EMSdevice::EMS_DEVICE_FLAG_IPM) { + write_command(0x35, 3, (uint8_t)temperature, 0x34); + } else if (flags() == EMSdevice::EMS_DEVICE_FLAG_MMPLUS) { + return false; + } else { // SM100 + write_command(0x7A6, 9, (uint8_t)temperature, 0x7A6); + } + return true; +} + +bool Water::set_wwMaxTemp(const char * value, const int8_t id) { + int temperature; + if (!Helpers::value2temperature(value, temperature)) { + return false; + } + if (flags() == EMSdevice::EMS_DEVICE_FLAG_IPM) { + return false; + } else if (flags() == EMSdevice::EMS_DEVICE_FLAG_MMPLUS) { + write_command(0x313 + wwc_, 10, (uint8_t)temperature, 0x313 + wwc_); + } else { // SM100 + write_command(0x7A6, 8, (uint8_t)temperature, 0x7A6); + } + return true; +} + +bool Water::set_wwRedTemp(const char * value, const int8_t id) { + int temperature; + if (!Helpers::value2temperature(value, temperature)) { + return false; + } + if (flags() == EMSdevice::EMS_DEVICE_FLAG_IPM) { + return false; + } else if (flags() == EMSdevice::EMS_DEVICE_FLAG_MMPLUS) { + write_command(0x313 + wwc_, 5, (uint8_t)temperature, 0x313 + wwc_); + } else { // SM100 + write_command(0x7A6, 10, (uint8_t)temperature, 0x7A6); + } + return true; +} + +bool Water::set_wwDailyTemp(const char * value, const int8_t id) { + int temperature; + if (!Helpers::value2temperature(value, temperature)) { + return false; + } + write_command(0x7A6, 6, (uint8_t)temperature, 0x7A6); + return true; +} + +bool Water::set_wwDisinfectionTemp(const char * value, const int8_t id) { + int temperature; + if (!Helpers::value2temperature(value, temperature)) { + return false; + } + if (flags() == EMSdevice::EMS_DEVICE_FLAG_IPM) { + write_command(0x33, 8, (uint8_t)temperature, 0x33); + } else if (flags() == EMSdevice::EMS_DEVICE_FLAG_MMPLUS) { + write_command(0x313 + wwc_, 9, (uint8_t)temperature, 0x313 + wwc_); + } else { // SM100 + write_command(0x7A6, 12, (uint8_t)temperature, 0x7A6); + } + return true; +} + +bool Water::set_wwCirc(const char * value, const int8_t id) { + bool b; + if (!Helpers::value2bool(value, b)) { + return false; + } + if (flags() == EMSdevice::EMS_DEVICE_FLAG_IPM) { + write_command(0x33, 6, b ? 0xFF : 0x00, 0x33); + } else if (flags() == EMSdevice::EMS_DEVICE_FLAG_MMPLUS) { + write_command(0x33B + wwc_, 0, b ? 0x01 : 0x00, 0x33B + wwc_); + } else { // SM100 + write_command(0x7A5, 0, b ? 0xFF : 0x00, 0x7A5); + } + return true; +} + +bool Water::set_wwCircMode(const char * value, const int8_t id) { + uint8_t num; + if (!Helpers::value2enum(value, num, FL_(enum_wwCircMode))) { + return false; + } + if (flags() == EMSdevice::EMS_DEVICE_FLAG_IPM) { + write_command(0x33, 7, num, 0x33); + } else if (flags() == EMSdevice::EMS_DEVICE_FLAG_MMPLUS) { + write_command(0x313 + wwc_, 0, num, 0x313 + wwc_); + } else { // SM100 + write_command(0x7A5, 3, num, 0x7A5); + } + return true; +} + +bool Water::set_wwKeepWarm(const char * value, const int8_t id) { + bool b; + if (!Helpers::value2bool(value, b)) { + return false; + } + write_command(0x7AE, 0, b ? 0xFF : 0x00, 0x7AE); + return true; +} + +bool Water::set_wwDiffTemp(const char * value, const int8_t id) { + uint8_t wwc = device_id() - 0x28; + float v; + if (!Helpers::value2temperature(value, v)) { + return false; + } + if (flags() == EMSdevice::EMS_DEVICE_FLAG_MMPLUS) { + write_command(0x313 + wwc, 7, (int8_t)(v * 10), 0x313 + wwc); + return true; + } + return false; +} + +bool Water::set_wwRequiredTemp(const char * value, const int8_t id) { + uint8_t wwc = device_id() - 0x28; + float v; + if (!Helpers::value2temperature(value, v)) { + return false; + } + if (flags() == EMSdevice::EMS_DEVICE_FLAG_MMPLUS) { + write_command(0x313 + wwc, 4, (uint8_t)v, 0x313 + wwc); + return true; + } + return false; +} + + +bool Water::set_wwFlowTempOffset(const char * value, const int8_t id) { + int n; + if (!Helpers::value2number(value, n)) { + return false; + } + write_command(0x33, 5, n, 0x33); + return true; +} + +bool Water::set_wwHystOn(const char * value, const int8_t id) { + int n; + if (!Helpers::value2number(value, n)) { + return false; + } + write_command(0x33, 3, n, 0x33); + return true; +} + +bool Water::set_wwHystOff(const char * value, const int8_t id) { + int n; + if (!Helpers::value2number(value, n)) { + return false; + } + write_command(0x33, 4, n, 0x33); + return true; +} +} // namespace emsesp diff --git a/src/devices/water.h b/src/devices/water.h new file mode 100644 index 000000000..c39c252fe --- /dev/null +++ b/src/devices/water.h @@ -0,0 +1,115 @@ +/* + * EMS-ESP - https://github.com/emsesp/EMS-ESP + * Copyright 2020-2023 Paul Derbyshire + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef EMSESP_WATER_H +#define EMSESP_WATER_H + +#include "emsesp.h" + +namespace emsesp { + +class Water : public EMSdevice { + public: + Water(uint8_t device_type, uint8_t device_id, uint8_t product_id, const char * version, const char * name, uint8_t flags, uint8_t brand); + + private: + static uuid::log::Logger logger_; + + uint8_t wwc_; + + // SM100wwTemperature - 0x07D6 + uint16_t wwTemp_1_; + uint16_t wwTemp_2_; + uint16_t wwTemp_3_; + uint16_t wwTemp_4_; + uint16_t wwTemp_5_; + uint16_t wwTemp_6_; + uint16_t wwTemp_7_; + + // SM100wwStatus - 0x07AA + uint8_t wwPump_; + + // SM100wwParam - 0x07A6 + uint8_t wwMaxTemp_; + uint8_t wwSelTemp_; + uint8_t wwRedTemp_; + uint8_t wwDailyTemp_; + uint8_t wwDisinfectionTemp_; + + // SM100wwKeepWarm - 0x07AE + uint8_t wwKeepWarm_; + + // SM100wwCirc - 0x07A5 + uint8_t wwCirc_; + uint8_t wwCircMode_; + + // SM100wwStatus2 - 0x07E0 + uint8_t wwFlow_; + uint8_t wwPumpMod_; + uint8_t wwStatus2_; + + // mixer + uint8_t wwStatus_; + uint16_t wwFlowTemp_; + int8_t wwDiffTemp_; + uint8_t wwRequiredTemp_; + + // IPM + uint16_t HydrTemp_; + int8_t wwHystOn_; // Hyst on (default -5) + int8_t wwHystOff_; // Hyst off (default -1) + uint8_t wwFlowTempOffset_; // default 40 + + + void process_SM100wwTemperature(std::shared_ptr telegram); + void process_SM100wwStatus(std::shared_ptr telegram); + void process_SM100wwStatus2(std::shared_ptr telegram); + void process_SM100wwCommand(std::shared_ptr telegram); + void process_SM100wwCirc(std::shared_ptr telegram); + void process_SM100wwParam(std::shared_ptr telegram); + void process_SM100wwKeepWarm(std::shared_ptr telegram); + + void process_MMPLUSStatusMessage_WWC(std::shared_ptr telegram); + void process_MMPLUSSetMessage_WWC(std::shared_ptr telegram); + void process_MMPLUSConfigMessage_WWC(std::shared_ptr telegram); + + void process_IPMMonitorWW(std::shared_ptr telegram); + void process_IPMHydrTemp(std::shared_ptr telegram); + void process_IPMParameterWW(std::shared_ptr telegram); + + + bool set_wwSelTemp(const char * value, const int8_t id); + bool set_wwMaxTemp(const char * value, const int8_t id); + bool set_wwRedTemp(const char * value, const int8_t id); + bool set_wwCirc(const char * value, const int8_t id); + bool set_wwCircMode(const char * value, const int8_t id); + bool set_wwKeepWarm(const char * value, const int8_t id); + bool set_wwDisinfectionTemp(const char * value, const int8_t id); + bool set_wwDailyTemp(const char * value, const int8_t id); + + bool set_wwDiffTemp(const char * value, const int8_t id); + bool set_wwRequiredTemp(const char * value, const int8_t id); + + bool set_wwFlowTempOffset(const char * value, const int8_t id); + bool set_wwHystOn(const char * value, const int8_t id); + bool set_wwHystOff(const char * value, const int8_t id); +}; + +} // namespace emsesp + +#endif diff --git a/src/emsdevice.cpp b/src/emsdevice.cpp index af78b4648..2d056996e 100644 --- a/src/emsdevice.cpp +++ b/src/emsdevice.cpp @@ -107,6 +107,8 @@ const char * EMSdevice::device_type_2_device_name(const uint8_t device_type) { return F_(system); case DeviceType::SCHEDULER: return F_(scheduler); + case DeviceType::CUSTOM: + return F_(custom); case DeviceType::BOILER: return F_(boiler); case DeviceType::THERMOSTAT: @@ -135,10 +137,12 @@ const char * EMSdevice::device_type_2_device_name(const uint8_t device_type) { return F_(extension); case DeviceType::HEATSOURCE: return F_(heatsource); - case DeviceType::CUSTOM: - return F_(custom); case DeviceType::VENTILATION: return F_(ventilation); + case DeviceType::WATER: + return F_(water); + case DeviceType::POOL: + return F_(pool); default: return Helpers::translated_word(FL_(unknown), true); } @@ -174,6 +178,10 @@ const char * EMSdevice::device_type_2_device_name_translated() { return Helpers::translated_word(FL_(heatsource_device)); case DeviceType::VENTILATION: return Helpers::translated_word(FL_(ventilation_device)); + case DeviceType::WATER: + return Helpers::translated_word(FL_(water_device)); + case DeviceType::POOL: + return Helpers::translated_word(FL_(pool_device)); default: break; } @@ -241,6 +249,12 @@ uint8_t EMSdevice::device_name_2_device_type(const char * topic) { if (!strcmp(lowtopic, F_(ventilation))) { return DeviceType::VENTILATION; } + if (!strcmp(lowtopic, F_(water))) { + return DeviceType::WATER; + } + if (!strcmp(lowtopic, F_(pool))) { + return DeviceType::POOL; + } return DeviceType::UNKNOWN; } diff --git a/src/emsdevice.h b/src/emsdevice.h index 93986a76e..0f917fdc9 100644 --- a/src/emsdevice.h +++ b/src/emsdevice.h @@ -339,7 +339,9 @@ class EMSdevice { SYSTEM = 0, // this is us (EMS-ESP) TEMPERATURESENSOR, // for internal temperature sensors ANALOGSENSOR, // for internal analog sensors - SCHEDULER, + SCHEDULER, // for internal schedule + CUSTOM, // for user defined entities + BOILER, THERMOSTAT, MIXER, @@ -353,8 +355,9 @@ class EMSdevice { EXTENSION, GENERIC, HEATSOURCE, - CUSTOM, VENTILATION, + WATER, + POOL, UNKNOWN }; @@ -379,8 +382,11 @@ class EMSdevice { static constexpr uint8_t EMS_DEVICE_ID_MODEM = 0x48; static constexpr uint8_t EMS_DEVICE_ID_RFSENSOR = 0x40; // RF sensor only sending, no reply static constexpr uint8_t EMS_DEVICE_ID_RFBASE = 0x50; - static constexpr uint8_t EMS_DEVICE_ID_ROOMTHERMOSTAT = 0x17; // TADO using this with no version reply - static constexpr uint8_t EMS_DEVICE_ID_TADO_OLD = 0x19; // TADO using this with no broadcast and version + static constexpr uint8_t EMS_DEVICE_ID_ROOMTHERMOSTAT = 0x17; // TADO using this with no version reply #174 + static constexpr uint8_t EMS_DEVICE_ID_TADO_OLD = 0x19; // older TADO using this with no version reply, #1031 + static constexpr uint8_t EMS_DEVICE_ID_DHW1 = 0x28; // MM100 module as water station + static constexpr uint8_t EMS_DEVICE_ID_DHW2 = 0x29; // MM100 module as water station + static constexpr uint8_t EMS_DEVICE_ID_DHW8 = 0x2F; // last DHW module id? // generic type IDs static constexpr uint16_t EMS_TYPE_VERSION = 0x02; // type ID for Version information. Generic across all EMS devices. diff --git a/src/emsesp.cpp b/src/emsesp.cpp index 0f50df108..273027ccc 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -480,6 +480,7 @@ void EMSESP::publish_all(bool force) { publish_device_values(EMSdevice::DeviceType::THERMOSTAT); publish_device_values(EMSdevice::DeviceType::SOLAR); publish_device_values(EMSdevice::DeviceType::MIXER); + publish_device_values(EMSdevice::DeviceType::WATER); publish_other_values(); // switch and heat pump, ... webSchedulerService.publish(); webCustomEntityService.publish(); @@ -513,14 +514,17 @@ void EMSESP::publish_all_loop() { publish_device_values(EMSdevice::DeviceType::MIXER); break; case 5: + publish_device_values(EMSdevice::DeviceType::WATER); + break; + case 6: publish_other_values(); // switch and heat pump webSchedulerService.publish(true); webCustomEntityService.publish(true); break; - case 6: + case 7: publish_sensor_values(true, true); break; - case 7: + case 8: if (Mqtt::ha_enabled()) { Mqtt::ha_status(); } @@ -602,6 +606,7 @@ void EMSESP::publish_other_values() { publish_device_values(EMSdevice::DeviceType::VENTILATION); publish_device_values(EMSdevice::DeviceType::EXTENSION); publish_device_values(EMSdevice::DeviceType::ALERT); + publish_device_values(EMSdevice::DeviceType::POOL); // other devices without values yet // publish_device_values(EMSdevice::DeviceType::GATEWAY); // publish_device_values(EMSdevice::DeviceType::CONNECT); @@ -1080,7 +1085,7 @@ bool EMSESP::add_device(const uint8_t device_id, const uint8_t product_id, const auto device_type = device_p->device_type; auto flags = device_p->flags; - // check for integrated modules with same product id + // check for integrated modules with same product id, but different function (device_id) if (device_type == DeviceType::HEATPUMP) { if (device_id == EMSdevice::EMS_DEVICE_ID_MODEM) { device_type = DeviceType::GATEWAY; @@ -1090,6 +1095,9 @@ bool EMSESP::add_device(const uint8_t device_id, const uint8_t product_id, const name = "Wireless sensor base"; } } + if (device_id >= EMSdevice::EMS_DEVICE_ID_DHW1 && device_id <= EMSdevice::EMS_DEVICE_ID_DHW8) { + device_type = DeviceType::WATER; + } // empty reply to version, read a generic device from database if (product_id == 0) { diff --git a/src/locale_common.h b/src/locale_common.h index 7d8a5db83..1184a2269 100644 --- a/src/locale_common.h +++ b/src/locale_common.h @@ -102,6 +102,8 @@ MAKE_WORD(heatsource) MAKE_WORD(scheduler) MAKE_WORD(custom) MAKE_WORD(ventilation) +MAKE_WORD(water) +MAKE_WORD(pool) // brands MAKE_WORD_CUSTOM(bosch, "Bosch") diff --git a/src/locale_translations.h b/src/locale_translations.h index 98d9c1a65..2c2cf4a49 100644 --- a/src/locale_translations.h +++ b/src/locale_translations.h @@ -54,6 +54,8 @@ MAKE_WORD_TRANSLATION(unknown_device, "Unknown", "Unbekannt", "Onbekend", "Okän MAKE_WORD_TRANSLATION(custom_device, "Custom", "Nutzerdefiniert", "Aangepast", "", "Niestandardowe", "", "", "Özel", "Personalizzato") // TODO translate MAKE_WORD_TRANSLATION(custom_device_name, "User defined entities", "Nutzer deklarierte Entitäten", "Gebruiker gedefineerd", "", "Encje zdefiniowane przez użytkownika", "", "", "Kullanıcı tarafından tanımlanmış varlıklar", "Entità definita da utente") // TODO translate MAKE_WORD_TRANSLATION(ventilation_device, "Ventilation", "Lüftung", "Ventilatie", "", "", "", "", "Havalandırma", "Ventilazione") // TODO translate +MAKE_WORD_TRANSLATION(water_device, "Water Module", "Wassermodul", "", "", "", "", "", "", "") // TODO translate +MAKE_WORD_TRANSLATION(pool_device, "Pool Module", "Poolmodul", "", "", "", "", "", "", "") // TODO translate // commands // TODO translate @@ -687,10 +689,6 @@ MAKE_TRANSLATION(pumpStatus, "pumpstatus", "pump status (PC1)", "Pumpenstatus HK MAKE_TRANSLATION(mixerStatus, "valvestatus", "mixing valve actuator (VC1)", "Mischerventil Position (VC1)", "positie mixerklep (VC1)", "Shuntventil Status (VC1)", "siłownik zaworu mieszającego (VC1)", "shuntventil status (VC1)", "actionnement vanne mélangeur (VC1)", "karışım vanası aktüatörü (VC1)", "posizione valvola miscela (VC1)") MAKE_TRANSLATION(flowTempVf, "flowtempvf", "flow temperature in header (T0/Vf)", "Vorlauftemperatur am Verteiler (T0/Vf)", "aanvoertemperatuur verdeler (T0/Vf)", "Flödestemperatur Fördelare (T0/Vf)", "temperatura zasilania na rozdzielaczu (T0/Vf)", "turtemperatur ved fordeleren (T0/Vf)", "température départ collecteur (T0/Vf)", "başlıkta akış sıcaklığı", "Temperatura di mandata al distributore (T0/Vf)") MAKE_TRANSLATION(mixerSetTime, "valvesettime", "time to set valve", "Zeit zum Einstellen des Ventils", "Inschakeltijd mengklep", "Inställningstid Ventil", "czas na ustawienie zaworu", "instillningstid ventil", "délai activation vanne", "vana ayar zamanı", "ritardo attivazione valvola") -// mixer prefixed with wwc -MAKE_TRANSLATION(wwPumpStatus, "pumpstatus", "pump status in assigned wwc (PC1)", "Pumpenstatus des wwk (PC1)", "Pompstatus in WW circuit (PC1)", "Pumpstatus i VV-krets (PC1)", "stan pompy w obwodzie c.w.u. (PC1)", "Pumpestatus i VV-krets (PC1)", "état pompe wwc (PC1)", "Kullanım suyu devresindeki(PC1) pompa durumu", "stato pompa assegnato nel ciruito WW (PC1)") -MAKE_TRANSLATION(wwTempStatus, "wwtempstatus", "temperature switch in assigned wwc (MC1)", "Temperaturschalter des wwk (MC1)", "Temperatuurschakeling in WW circuit (MC1)", "Temperaturventil i VV-krets (MC1)", "temperatura w obwodzie c.w.u. (MC1)", "temperaturventil i VV-krets (MC1)", "température bascule wwc (MC1).", "atanmış sıcak su devresinde sıcaklık", "interruttore di temperatura del wwk (MC1)") -MAKE_TRANSLATION(wwTemp, "wwtemp", "current temperature", "aktuelle Temperatur", "huidige temperatuur", "Aktuell Temperatur", "temperatura c.w.u.", "aktuell temperatur", "température actuelle", "güncel sıcaklık", "temperatura attuale") // mixer pool MAKE_TRANSLATION(poolSetTemp, "poolsettemp", "pool set temperature", "Pool Solltemperatur", "Streeftemperatuur zwembad", "Pool Temperatur Börvärde", "zadana temperatura basenu", "valgt temp basseng", "température consigne piscine", "hedef havuz sıcaklığı", "temperatura nominale piscina") MAKE_TRANSLATION(poolTemp, "pooltemp", "pool temperature", "Pool Temperatur", "Zwembadtemperatuur", "Pooltemperatur", "temperatura basenu", "bassengtemperatur", "température piscine", "havuz sıcaklığı", "temperatura piscina") @@ -737,10 +735,12 @@ MAKE_TRANSLATION(energyToday, "energytoday", "total energy today", "Energie heut // solar ww MAKE_TRANSLATION(wwTemp1, "wwtemp1", "temperature 1", "Temperatur 1", "Temperatuur 1", "Temperatur 1", "temperatura 1", "temperatur 1", "température 1", "sıcaklık 1", "Temperatura 1") -MAKE_TRANSLATION(wwTemp3, "wwtemp3", "temperature 3", "Temperatur 3", "Temperatuur 2", "Temperatur 2", "temperatura 2", "Temperatur 3", "température 3", "sıcaklık 3", "Temperatura 3") -MAKE_TRANSLATION(wwTemp4, "wwtemp4", "temperature 4", "Temperatur 4", "Temperatuur 3", "Temperatur 3", "temperatura 3", "Temperatur 4", "température 4", "sıcaklık 4", "Temperatura 4") -MAKE_TRANSLATION(wwTemp5, "wwtemp5", "temperature 5", "Temperatur 5", "Temperatuur 5", "Temperatur 4", "temperatura 4", "Temperatur 5", "température 5", "sıcaklık 5", "Temperatura 5") -MAKE_TRANSLATION(wwTemp7, "wwtemp7", "temperature 7", "Temperatur 7", "Temperatuur 7", "Temperatur 5", "temperatura 5", "Temperatur 7", "température 7", "sıcaklık 7", "Temperatura 7") +MAKE_TRANSLATION(wwTemp2, "wwtemp2", "temperature 2", "Temperatur 2", "Temperatuur 2", "Temperatur 2", "temperatura 2", "temperatur 2", "température 2", "sıcaklık 2", "Temperatura 2") +MAKE_TRANSLATION(wwTemp3, "wwtemp3", "temperature 3", "Temperatur 3", "Temperatuur 3", "Temperatur 3", "temperatura 3", "Temperatur 3", "température 3", "sıcaklık 3", "Temperatura 3") +MAKE_TRANSLATION(wwTemp4, "wwtemp4", "temperature 4", "Temperatur 4", "Temperatuur 4", "Temperatur 4", "temperatura 4", "Temperatur 4", "température 4", "sıcaklık 4", "Temperatura 4") +MAKE_TRANSLATION(wwTemp5, "wwtemp5", "temperature 5", "Temperatur 5", "Temperatuur 5", "Temperatur 5", "temperatura 5", "Temperatur 5", "température 5", "sıcaklık 5", "Temperatura 5") +MAKE_TRANSLATION(wwTemp6, "wwtemp6", "temperature 1", "Temperatur 6", "Temperatuur 6", "Temperatur 6", "temperatura 6", "temperatur 6", "température 6", "sıcaklık 6", "Temperatura 6") +MAKE_TRANSLATION(wwTemp7, "wwtemp7", "temperature 7", "Temperatur 7", "Temperatuur 7", "Temperatur 7", "temperatura 7", "Temperatur 7", "température 7", "sıcaklık 7", "Temperatura 7") MAKE_TRANSLATION(wwPump, "wwpump", "pump", "Pumpe", "Pomp", "Pump", "pompa", "pumpe", "pompe", "pompa", "Pompa") // solar ww and mixer wwc MAKE_TRANSLATION(wwMinTemp, "wwmintemp", "minimum temperature", "minimale Temperatur", "Minimale temperatuur", "Min Temperatur", "temperatura minimalna", "min temperatur", "température min", "minimum sıcaklık", "temperatura minima") @@ -753,6 +753,9 @@ MAKE_TRANSLATION(wwFlow, "wwflow", "flow rate", "Volumenstrom", "Doorstroomsnelh // extra mixer ww MAKE_TRANSLATION(wwRequiredTemp, "wwrequiredtemp", "required temperature", "benötigte Temperatur", "Benodigde temperatuur", "Nödvändig Temperatur", "temperatura wymagana", "nødvendig temperatur", "température requise", "gerekli sıcaklık", "temperatura richiesta") MAKE_TRANSLATION(wwDiffTemp, "wwdifftemp", "start differential temperature", "Start Differential Temperatur", "Start differentiele temperatuur", "Start Differentialtemperatur", "start temperatury różnicowej", "start differensialtemperatur", "température différentielle de départ", "diferansiyel sıcaklık", "avvia temperatura differenziale") +MAKE_TRANSLATION(wwPumpStatus, "pumpstatus", "pump status in assigned wwc (PC1)", "Pumpenstatus des wwk (PC1)", "Pompstatus in WW circuit (PC1)", "Pumpstatus i VV-krets (PC1)", "stan pompy w obwodzie c.w.u. (PC1)", "Pumpestatus i VV-krets (PC1)", "état pompe wwc (PC1)", "Kullanım suyu devresindeki(PC1) pompa durumu", "stato pompa assegnato nel ciruito WW (PC1)") +MAKE_TRANSLATION(wwTempStatus, "wwtempstatus", "temperature switch in assigned wwc (MC1)", "Temperaturschalter des wwk (MC1)", "Temperatuurschakeling in WW circuit (MC1)", "Temperaturventil i VV-krets (MC1)", "temperatura w obwodzie c.w.u. (MC1)", "temperaturventil i VV-krets (MC1)", "température bascule wwc (MC1).", "atanmış sıcak su devresinde sıcaklık", "interruttore di temperatura del wwk (MC1)") +MAKE_TRANSLATION(wwTemp, "wwtemp", "current temperature", "aktuelle Temperatur", "huidige temperatuur", "Aktuell Temperatur", "temperatura c.w.u.", "aktuell temperatur", "température actuelle", "güncel sıcaklık", "temperatura attuale") // SM100 MAKE_TRANSLATION(heatTransferSystem, "heattransfersystem", "heattransfer system", "Wärmeübertragungs-System", "Warmteoverdrachtssysteem", "Värmeöverföringssystem", "system wymiany ciepła", "varmeoverføringssystem", "système de transfert de chaleur", "ıs transfer sistemi", "sistema di trasferimento del calore") diff --git a/src/mqtt.cpp b/src/mqtt.cpp index d700f4f32..2735bbbc0 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -34,6 +34,7 @@ uint32_t Mqtt::publish_time_boiler_; uint32_t Mqtt::publish_time_thermostat_; uint32_t Mqtt::publish_time_solar_; uint32_t Mqtt::publish_time_mixer_; +uint32_t Mqtt::publish_time_water_; uint32_t Mqtt::publish_time_sensor_; uint32_t Mqtt::publish_time_other_; uint32_t Mqtt::publish_time_heartbeat_; @@ -170,6 +171,11 @@ void Mqtt::loop() { EMSESP::publish_device_values(EMSdevice::DeviceType::MIXER); } else + if (publish_time_water_ && (currentMillis - last_publish_mixer_ > publish_time_water_)) { + last_publish_water_ = (currentMillis / publish_time_water_) * publish_time_water_; + EMSESP::publish_device_values(EMSdevice::DeviceType::WATER); + } else + if (publish_time_other_ && (currentMillis - last_publish_other_ > publish_time_other_)) { last_publish_other_ = (currentMillis / publish_time_other_) * publish_time_other_; EMSESP::publish_other_values(); // switch and heatpump @@ -330,6 +336,7 @@ void Mqtt::reset_mqtt() { } } +// load the settings from service void Mqtt::load_settings() { EMSESP::esp8266React.getMqttSettingsService()->read([&](MqttSettings & mqttSettings) { mqtt_base_ = mqttSettings.base.c_str(); // Convert String to std::string @@ -350,6 +357,7 @@ void Mqtt::load_settings() { publish_time_thermostat_ = mqttSettings.publish_time_thermostat * 1000; publish_time_solar_ = mqttSettings.publish_time_solar * 1000; publish_time_mixer_ = mqttSettings.publish_time_mixer * 1000; + publish_time_water_ = mqttSettings.publish_time_water * 1000; publish_time_other_ = mqttSettings.publish_time_other * 1000; publish_time_sensor_ = mqttSettings.publish_time_sensor * 1000; publish_time_heartbeat_ = mqttSettings.publish_time_heartbeat * 1000; @@ -361,6 +369,7 @@ void Mqtt::load_settings() { std::replace(mqtt_basename_.begin(), mqtt_basename_.end(), '/', '_'); } +// start mqtt void Mqtt::start() { mqttClient_ = EMSESP::esp8266React.getMqttClient(); @@ -412,6 +421,10 @@ void Mqtt::set_publish_time_mixer(uint16_t publish_time) { publish_time_mixer_ = publish_time * 1000; // convert to milliseconds } +void Mqtt::set_publish_time_water(uint16_t publish_time) { + publish_time_water_ = publish_time * 1000; // convert to milliseconds +} + void Mqtt::set_publish_time_other(uint16_t publish_time) { publish_time_other_ = publish_time * 1000; // convert to milliseconds } @@ -444,6 +457,10 @@ bool Mqtt::get_publish_onchange(uint8_t device_type) { if (!publish_time_mixer_) { return true; } + } else if (device_type == EMSdevice::DeviceType::WATER) { + if (!publish_time_water_) { + return true; + } } else if (!publish_time_other_) { return true; } diff --git a/src/mqtt.h b/src/mqtt.h index d02fff23c..b128f2621 100644 --- a/src/mqtt.h +++ b/src/mqtt.h @@ -47,6 +47,7 @@ class Mqtt { void set_publish_time_thermostat(uint16_t publish_time); void set_publish_time_solar(uint16_t publish_time); void set_publish_time_mixer(uint16_t publish_time); + void set_publish_time_water(uint16_t publish_time); void set_publish_time_other(uint16_t publish_time); void set_publish_time_sensor(uint16_t publish_time); void set_publish_time_heartbeat(uint16_t publish_time); @@ -253,6 +254,7 @@ class Mqtt { uint32_t last_publish_thermostat_ = 0; uint32_t last_publish_solar_ = 0; uint32_t last_publish_mixer_ = 0; + uint32_t last_publish_water_ = 0; uint32_t last_publish_other_ = 0; uint32_t last_publish_sensor_ = 0; uint32_t last_publish_heartbeat_ = 0; @@ -279,6 +281,7 @@ class Mqtt { static uint32_t publish_time_thermostat_; static uint32_t publish_time_solar_; static uint32_t publish_time_mixer_; + static uint32_t publish_time_water_; static uint32_t publish_time_other_; static uint32_t publish_time_sensor_; static uint32_t publish_time_heartbeat_; diff --git a/src/version.h b/src/version.h index 6aabb9bbe..3aeb319d6 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.6.3-dev.5b" +#define EMSESP_APP_VERSION "3.6.3-dev.6a" From d105c18bf76f98e96e1a836fc8a96fd75d16c28e Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sat, 4 Nov 2023 17:00:33 +0100 Subject: [PATCH 02/91] fix typos, double entities, publish time water --- src/devices/solar.cpp | 2 -- src/mqtt.cpp | 3 ++- src/system.cpp | 1 + src/version.h | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/devices/solar.cpp b/src/devices/solar.cpp index 08e5c9fab..cf196cd1f 100644 --- a/src/devices/solar.cpp +++ b/src/devices/solar.cpp @@ -220,8 +220,6 @@ Solar::Solar(uint8_t device_type, uint8_t device_id, uint8_t product_id, const c register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &cylPumpMod_, DeviceValueType::UINT, FL_(cylPumpMod), DeviceValueUOM::PERCENT); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &valveStatus_, DeviceValueType::BOOL, FL_(valveStatus), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &vs1Status_, DeviceValueType::BOOL, FL_(vs1Status), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &cylHeated_, DeviceValueType::BOOL, FL_(cylHeated), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &collectorShutdown_, DeviceValueType::BOOL, FL_(collectorShutdown), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &collectorMaxTemp_, DeviceValueType::UINT, diff --git a/src/mqtt.cpp b/src/mqtt.cpp index 2735bbbc0..d12829d8a 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -171,7 +171,7 @@ void Mqtt::loop() { EMSESP::publish_device_values(EMSdevice::DeviceType::MIXER); } else - if (publish_time_water_ && (currentMillis - last_publish_mixer_ > publish_time_water_)) { + if (publish_time_water_ && (currentMillis - last_publish_water_ > publish_time_water_)) { last_publish_water_ = (currentMillis / publish_time_water_) * publish_time_water_; EMSESP::publish_device_values(EMSdevice::DeviceType::WATER); } else @@ -180,6 +180,7 @@ void Mqtt::loop() { last_publish_other_ = (currentMillis / publish_time_other_) * publish_time_other_; EMSESP::publish_other_values(); // switch and heatpump EMSESP::webSchedulerService.publish(); + EMSESP::webCustomEntityService.publish(); } else if (publish_time_sensor_ && (currentMillis - last_publish_sensor_ > publish_time_sensor_)) { diff --git a/src/system.cpp b/src/system.cpp index b193deed2..f2b0efd9e 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -1276,6 +1276,7 @@ bool System::command_info(const char * value, const int8_t id, JsonObject & outp node["publish time thermostat"] = settings.publish_time_thermostat; node["publish time solar"] = settings.publish_time_solar; node["publish time mixer"] = settings.publish_time_mixer; + node["publish time water"] = settings.publish_time_water; node["publish time other"] = settings.publish_time_other; node["publish time sensor"] = settings.publish_time_sensor; node["publish single"] = settings.publish_single; diff --git a/src/version.h b/src/version.h index 3aeb319d6..bc84578b1 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.6.3-dev.6a" +#define EMSESP_APP_VERSION "3.6.3-dev.6b" From ab6cf7882211ec49b5e85da7690244e0679d4a57 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sat, 4 Nov 2023 18:17:33 +0100 Subject: [PATCH 03/91] warning in log on tx-queue overflow --- src/telegram.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/telegram.cpp b/src/telegram.cpp index ac9ff25b5..03bdcd3e4 100644 --- a/src/telegram.cpp +++ b/src/telegram.cpp @@ -445,6 +445,7 @@ void TxService::add(const uint8_t operation, // if the queue is full, make room by removing the last one if (tx_telegrams_.size() >= MAX_TX_TELEGRAMS) { + LOG_WARNING("Tx queue overflow, skip one message"); if (tx_telegrams_.front().telegram_->operation == Telegram::Operation::TX_WRITE) { telegram_write_fail_count_++; } else { @@ -528,6 +529,7 @@ void TxService::add(uint8_t operation, const uint8_t * data, const uint8_t lengt // if the queue is full, make room by removing the last one if (tx_telegrams_.size() >= MAX_TX_TELEGRAMS) { + LOG_WARNING("Tx queue overflow, skip one message"); if (tx_telegrams_.front().telegram_->operation == Telegram::Operation::TX_WRITE) { telegram_write_fail_count_++; } else { From 4e4258f9dcb3d8f324aec18c49bed55c08b1f405 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sat, 4 Nov 2023 18:56:49 +0100 Subject: [PATCH 04/91] enlarge tx queue to 100 --- src/telegram.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/telegram.h b/src/telegram.h index 96f1dd6ab..28e12c630 100644 --- a/src/telegram.h +++ b/src/telegram.h @@ -33,8 +33,8 @@ #include "helpers.h" -#define MAX_RX_TELEGRAMS 10 // size of Rx queue -#define MAX_TX_TELEGRAMS 50 // size of Tx queue +#define MAX_RX_TELEGRAMS 10 // size of Rx queue +#define MAX_TX_TELEGRAMS 100 // size of Tx queue // default values for null values static constexpr uint8_t EMS_VALUE_BOOL = 0xFF; // used to mark that something is a boolean From d18fd4948c319d1cf1b99b8dcce328cdaac7fd34 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 5 Nov 2023 14:19:46 +0100 Subject: [PATCH 05/91] update packages --- interface/package.json | 2 +- interface/yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/interface/package.json b/interface/package.json index 702e68c46..55aa635ae 100644 --- a/interface/package.json +++ b/interface/package.json @@ -29,7 +29,7 @@ "@types/imagemin": "^8.0.3", "@types/lodash-es": "^4.17.10", "@types/node": "^20.8.10", - "@types/react": "^18.2.34", + "@types/react": "^18.2.35", "@types/react-dom": "^18.2.14", "@types/react-router-dom": "^5.3.3", "alova": "^2.13.1", diff --git a/interface/yarn.lock b/interface/yarn.lock index 8d8492cc3..8aaf2043c 100644 --- a/interface/yarn.lock +++ b/interface/yarn.lock @@ -1370,14 +1370,14 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:^18.2.34": - version: 18.2.34 - resolution: "@types/react@npm:18.2.34" +"@types/react@npm:^18.2.35": + version: 18.2.35 + resolution: "@types/react@npm:18.2.35" dependencies: "@types/prop-types": "npm:*" "@types/scheduler": "npm:*" csstype: "npm:^3.0.2" - checksum: 6d16f86b384e829edc3710b1dd9ec4eb1d6b26bc079c5cf605bd0cbf77ae6224f15c76949afadb7f53df4544cfe4025c1111fbe36732cd7f660a320fbc2e5866 + checksum: 3c8c752d21856f74ddb96b9dd13cdd70c0ce1522808f20511f0220f392ea727fae9388db4da3ebe317d9bac98a0d930566d4277b22e92c1cad414429739e1d76 languageName: node linkType: hard @@ -1558,7 +1558,7 @@ __metadata: "@types/imagemin": "npm:^8.0.3" "@types/lodash-es": "npm:^4.17.10" "@types/node": "npm:^20.8.10" - "@types/react": "npm:^18.2.34" + "@types/react": "npm:^18.2.35" "@types/react-dom": "npm:^18.2.14" "@types/react-router-dom": "npm:^5.3.3" "@typescript-eslint/eslint-plugin": "npm:^6.9.1" From adcc59642c38664571daf25d05e9d41603e1a291 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 5 Nov 2023 14:20:13 +0100 Subject: [PATCH 06/91] cleanup publishing --- src/emsesp.cpp | 5 +---- src/mqtt.cpp | 2 -- src/system.cpp | 3 +++ 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/emsesp.cpp b/src/emsesp.cpp index 273027ccc..451bfe140 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -482,8 +482,6 @@ void EMSESP::publish_all(bool force) { publish_device_values(EMSdevice::DeviceType::MIXER); publish_device_values(EMSdevice::DeviceType::WATER); publish_other_values(); // switch and heat pump, ... - webSchedulerService.publish(); - webCustomEntityService.publish(); publish_sensor_values(true); // includes temperature and analog sensors system_.send_heartbeat(); } @@ -518,8 +516,6 @@ void EMSESP::publish_all_loop() { break; case 6: publish_other_values(); // switch and heat pump - webSchedulerService.publish(true); - webCustomEntityService.publish(true); break; case 7: publish_sensor_values(true, true); @@ -611,6 +607,7 @@ void EMSESP::publish_other_values() { // publish_device_values(EMSdevice::DeviceType::GATEWAY); // publish_device_values(EMSdevice::DeviceType::CONNECT); // publish_device_values(EMSdevice::DeviceType::GENERIC); + webSchedulerService.publish(); webCustomEntityService.publish(); } diff --git a/src/mqtt.cpp b/src/mqtt.cpp index d12829d8a..1b42ce084 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -179,8 +179,6 @@ void Mqtt::loop() { if (publish_time_other_ && (currentMillis - last_publish_other_ > publish_time_other_)) { last_publish_other_ = (currentMillis / publish_time_other_) * publish_time_other_; EMSESP::publish_other_values(); // switch and heatpump - EMSESP::webSchedulerService.publish(); - EMSESP::webCustomEntityService.publish(); } else if (publish_time_sensor_ && (currentMillis - last_publish_sensor_ > publish_time_sensor_)) { diff --git a/src/system.cpp b/src/system.cpp index f2b0efd9e..c6c9fe98d 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -153,6 +153,9 @@ bool System::command_publish(const char * value, const int8_t id) { } else if (value_s == (F_(mixer))) { EMSESP::publish_device_values(EMSdevice::DeviceType::MIXER); return true; + } else if (value_s == (F_(water))) { + EMSESP::publish_device_values(EMSdevice::DeviceType::WATER); + return true; } else if (value_s == "other") { EMSESP::publish_other_values(); // switch and heat pump return true; From fa4763309d29ff3a04548641a1ca7fa7d089ff70 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 5 Nov 2023 14:21:56 +0100 Subject: [PATCH 07/91] merge pl translations --- interface/src/i18n/pl/index.ts | 26 ++--- src/locale_translations.h | 177 +++++++++++++++++---------------- 2 files changed, 103 insertions(+), 100 deletions(-) diff --git a/interface/src/i18n/pl/index.ts b/interface/src/i18n/pl/index.ts index 50db4bf66..be4ce3f02 100644 --- a/interface/src/i18n/pl/index.ts +++ b/interface/src/i18n/pl/index.ts @@ -126,7 +126,7 @@ const pl: BaseTranslation = { BYPASS_TOKEN: 'Pomiń autoryzację tokenem w wywołaniach API', READONLY: 'Tryb pracy "tylko do odczytu" (blokuje wszystkie komendy zapisu na magistralę EMS)', UNDERCLOCK_CPU: 'Obniż taktowanie CPU', - HEATINGOFF: 'Start boiler with forced heating off', // TODO translate + HEATINGOFF: 'Uruchom boiler z wymuszonym wyłączonym grzaniem', ENABLE_SHOWER_TIMER: 'Aktywuj minutnik prysznica', ENABLE_SHOWER_ALERT: 'Aktywuj alarm prysznica', TRIGGER_TIME: 'Wyzwalaj po czasie', @@ -246,7 +246,7 @@ const pl: BaseTranslation = { MQTT_INT_THERMOSTATS: 'Termostaty', MQTT_INT_SOLAR: 'Panele solarne', MQTT_INT_MIXER: 'Mieszacze', - MQTT_INT_WATER: 'Water Modules', // TODO translate + MQTT_INT_WATER: 'Woda', MQTT_QUEUE: 'Kolejka MQTT', DEFAULT: '{{Pozostałe|Domyślna|}}', MQTT_ENTITY_FORMAT: 'Format "Entity ID"', @@ -282,15 +282,15 @@ const pl: BaseTranslation = { SCAN_AGAIN: 'Skanuj ponownie', NETWORK_SCANNER: 'Skaner sieci WiFi', NETWORK_NO_WIFI: 'Brak sieci WiFi w zasięgu', - NETWORK_BLANK_SSID: 'pozostaw puste aby wyłączyć WiFi', // and enable ETH // TODO translate - NETWORK_BLANK_BSSID: 'leave blank to use only SSID', // TODO translate + NETWORK_BLANK_SSID: 'pozostaw puste aby wyłączyć WiFi i włączyć ETH', + NETWORK_BLANK_BSSID: 'pozostaw puste aby używać tylko SSID', TX_POWER: 'Moc nadawania', HOSTNAME: 'Nazwa w sieci', NETWORK_DISABLE_SLEEP: 'Wyłącz tryb uśpienia WiFi', NETWORK_LOW_BAND: 'Używaj mniejszej szerokości pasma WiFi (20MHz)', NETWORK_USE_DNS: 'Włącz wsparcie dla mDNS', NETWORK_ENABLE_CORS: 'Włącz wsparcie dla CORS', - NETWORK_CORS_ORIGIN: 'CORS origin', + NETWORK_CORS_ORIGIN: 'CORS Origin', NETWORK_ENABLE_IPV6: 'Włącz wsparcie dla IPv6', NETWORK_FIXED_IP: 'Użyj stałego adresu IP', NETWORK_GATEWAY: 'Brama', @@ -324,14 +324,14 @@ const pl: BaseTranslation = { WRITEABLE: 'zapisywalna', SHOWING: 'Wyświetlane', SEARCH: 'Szukaj', - CERT: 'TLS root certificate (leave blank to disable TLS)', // TODO translate - ON: 'On', // TODO translate - OFF: 'Off', // TODO translate - POLARITY: 'Polarity', // TODO translate - ACTIVEHIGH: 'Active High', // TODO translate - ACTIVELOW: 'Active Low', // TODO translate - UNCHANGED: 'Unchanged', // TODO translate - ALWAYS: 'Always' // TODO translate + CERT: 'Certyfikat główny TLS (pozostaw puste zby wyłączyć TLS)', + ON: 'włączony', + OFF: 'wyłączony', + POLARITY: 'Typ przekaźnika', + ACTIVEHIGH: 'Wyzwalany stanem wysokim', + ACTIVELOW: 'Wyzwalany stanem niskim', + UNCHANGED: 'Zachowaj stan', + ALWAYS: 'Zawsze' }; export default pl; diff --git a/src/locale_translations.h b/src/locale_translations.h index 2c2cf4a49..11619e8a5 100644 --- a/src/locale_translations.h +++ b/src/locale_translations.h @@ -37,25 +37,25 @@ // device types, as display in Web and Console MAKE_WORD_TRANSLATION(boiler_device, "Boiler", "Kessel", "CV ketel", "Värmepanna", "Kocioł", "Varmekjele", "", "Kazan", "Caldaia") // TODO translate -MAKE_WORD_TRANSLATION(thermostat_device, "Thermostat", "Thermostat", "Thermostaat", "Termostat", "Termostat", "Termostat", "", "Termostat", "Termostato") // TODO translate -MAKE_WORD_TRANSLATION(heatpump_device, "Heat Pump", "Wärmepumpe", "Warmtepomp", "Värmepump", "Pompa ciepła", "Varmepumpe", "", "Isı Pompası", "Pompa di Calore") // TODO translate -MAKE_WORD_TRANSLATION(solar_device, "Solar Module", "Solarmodul", "Solar Module", "Solmodul", "Moduł solarny", "Solmodul", "", "Güneş Enerjisi Cihazı", "Modulo Solare") // TODO translate -MAKE_WORD_TRANSLATION(connect_device, "Connect Module", "Verbindungsmodul", "Connect Module", "Uppkopplingsmodul", "Moduł przyłączeń", "Sammenkoblingsmodul", "", "Güneş Enerjisi Cihazı", "Modulo connessione") // TODO translate -MAKE_WORD_TRANSLATION(mixer_device, "Mixer Module", "Mischermodul", "Mixer Module", "Blandningsmodul", "Moduł mieszacza", "Miksermodul", "", "Karışım Cihazı", "Modulo Miscela") // TODO translate -MAKE_WORD_TRANSLATION(controller_device, "Controller Module", "Kontrollmodul", "Controller Module", "Styrmodul", "Moduł sterujący", "Styremodul", "", "Kontrol Ünitesi", "Modulo Controllo") // TODO translate -MAKE_WORD_TRANSLATION(switch_device, "Switch Module", "Schaltmodul", "Switch Module", "Relämodul", "Moduł przełączający", "Switch modul", "", "Anahtar", "Modulo Switch") // TODO translate -MAKE_WORD_TRANSLATION(gateway_device, "Gateway Module", "Gateway Modul", "Gateway Module", "Gateway", "Moduł IP", "Gateway", "", "Ağ Geçidi", "Modulo Gateway") // TODO translate -MAKE_WORD_TRANSLATION(alert_device, "Alert Module", "Alarmmodul", "Alert Module", "Larmmodul", "Moduł alarmowy", "Alarmmodul", "", "Alarm Cihazı", "Module Avviso") // TODO translate -//MAKE_WORD_TRANSLATION(pump_device, "Pump Module", "Pumpenmodul", "Pump Module", "Pumpmodul", "Moduł pompy", "Pumpemodul", "", "Pompa", "Module Pompa") // TODO translate -MAKE_WORD_TRANSLATION(extension_device, "Extension Module", "Erweiterungsnmodul", "Module", "Modul", "Moduł", "Modul", "", "", "Module") // TODO translate -MAKE_WORD_TRANSLATION(heatsource_device, "Heatsource", "Heizquelle", "Heatsource", "Värmekälla", "Źródło ciepła", "Varmekilde", "", "Isı Kaynağı", "Fonte di calore") // TODO translate +MAKE_WORD_TRANSLATION(thermostat_device, "Thermostat", "Thermostat", "Thermostaat", "Termostat", "Termostat", "Termostat", "", "Termostat", "Termostato") // TODO translate +MAKE_WORD_TRANSLATION(heatpump_device, "Heat Pump", "Wärmepumpe", "Warmtepomp", "Värmepump", "Pompa ciepła", "Varmepumpe", "", "Isı Pompası", "Pompa di Calore") // TODO translate +MAKE_WORD_TRANSLATION(solar_device, "Solar Module", "Solarmodul", "Solar Module", "Solmodul", "Moduł solarny", "Solmodul", "", "Güneş Enerjisi Cihazı", "Modulo Solare") // TODO translate +MAKE_WORD_TRANSLATION(connect_device, "Connect Module", "Verbindungsmodul", "Connect Module", "Uppkopplingsmodul", "Moduł przyłączeń", "Sammenkoblingsmodul", "", "Güneş Enerjisi Cihazı", "Modulo connessione") // TODO translate +MAKE_WORD_TRANSLATION(mixer_device, "Mixer Module", "Mischermodul", "Mixer Module", "Blandningsmodul", "Moduł mieszacza", "Miksermodul", "", "Karışım Cihazı", "Modulo Miscela") // TODO translate +MAKE_WORD_TRANSLATION(controller_device, "Controller Module", "Kontrollmodul", "Controller Module", "Styrmodul", "Moduł sterujący", "Styremodul", "", "Kontrol Ünitesi", "Modulo Controllo") // TODO translate +MAKE_WORD_TRANSLATION(switch_device, "Switch Module", "Schaltmodul", "Switch Module", "Relämodul", "Moduł przełączający", "Switch modul", "", "Anahtar", "Modulo Switch") // TODO translate +MAKE_WORD_TRANSLATION(gateway_device, "Gateway Module", "Gateway Modul", "Gateway Module", "Gateway", "Moduł IP", "Gateway", "", "Ağ Geçidi", "Modulo Gateway") // TODO translate +MAKE_WORD_TRANSLATION(alert_device, "Alert Module", "Alarmmodul", "Alert Module", "Larmmodul", "Moduł alarmowy", "Alarmmodul", "", "Alarm Cihazı", "Module Avviso") // TODO translate +//MAKE_WORD_TRANSLATION(pump_device, "Pump Module", "Pumpenmodul", "Pump Module", "Pumpmodul", "Moduł pompy", "Pumpemodul", "", "Pompa", "Module Pompa") // TODO translate +MAKE_WORD_TRANSLATION(extension_device, "Extension Module", "Erweiterungsnmodul", "Module", "Modul", "Moduł rozszerzeń", "Modul", "", "", "Module") // TODO translate +MAKE_WORD_TRANSLATION(heatsource_device, "Heatsource", "Heizquelle", "Heatsource", "Värmekälla", "Źródło ciepła", "Varmekilde", "", "Isı Kaynağı", "Fonte di calore") // TODO translate MAKE_WORD_TRANSLATION(sensors_device, "Sensors", "Sensoren", "Sensoren", "Sensorer", "Czujniki", "Sensorer", "Capteurs", "Sensör Cihazı", "Sensori") MAKE_WORD_TRANSLATION(unknown_device, "Unknown", "Unbekannt", "Onbekend", "Okänt", "Nieznane urządzenie", "Ukjent", "Inconnu", "Bilinmeyen", "Sconosciuto") MAKE_WORD_TRANSLATION(custom_device, "Custom", "Nutzerdefiniert", "Aangepast", "", "Niestandardowe", "", "", "Özel", "Personalizzato") // TODO translate MAKE_WORD_TRANSLATION(custom_device_name, "User defined entities", "Nutzer deklarierte Entitäten", "Gebruiker gedefineerd", "", "Encje zdefiniowane przez użytkownika", "", "", "Kullanıcı tarafından tanımlanmış varlıklar", "Entità definita da utente") // TODO translate -MAKE_WORD_TRANSLATION(ventilation_device, "Ventilation", "Lüftung", "Ventilatie", "", "", "", "", "Havalandırma", "Ventilazione") // TODO translate -MAKE_WORD_TRANSLATION(water_device, "Water Module", "Wassermodul", "", "", "", "", "", "", "") // TODO translate -MAKE_WORD_TRANSLATION(pool_device, "Pool Module", "Poolmodul", "", "", "", "", "", "", "") // TODO translate +MAKE_WORD_TRANSLATION(ventilation_device, "Ventilation", "Lüftung", "Ventilatie", "", "Wentylacja", "", "", "Havalandırma", "Ventilazione") // TODO translate +MAKE_WORD_TRANSLATION(water_device, "Water Module", "Wassermodul", "", "", "Moduł wodny", "", "", "", "") // TODO translate +MAKE_WORD_TRANSLATION(pool_device, "Pool Module", "Poolmodul", "", "", "Moduł basenu", "", "", "", "") // TODO translate // commands // TODO translate @@ -72,8 +72,8 @@ MAKE_WORD_TRANSLATION(publish_cmd, "publish all to MQTT", "Publiziere MQTT", "pu MAKE_WORD_TRANSLATION(system_info_cmd, "show system status", "Zeige System-Status", "toon systeemstatus", "", "pokaż status systemu", "vis system status", "", "Sistem Durumunu Göster", "visualizza stati di sistema") // TODO translate MAKE_WORD_TRANSLATION(schedule_cmd, "enable schedule item", "Aktiviere Zeitplan", "activeer tijdschema item", "", "aktywuj wybrany harmonogram", "", "", "program öğesini etkinleştir", "abilitare l'elemento programmato") // TODO translate MAKE_WORD_TRANSLATION(entity_cmd, "set custom value on ems", "Sende eigene Entitäten zu EMS", "verstuur custom waarde naar EMS", "", "wyślij własną wartość na EMS", "", "", "emp üzerinde özel değer ayarla", "imposta valori personalizzati su EMS") // TODO translate -MAKE_WORD_TRANSLATION(commands_response, "get response","Hole Antwort","Verzoek om antwoord", "", "", "", "gelen cevap", "") // TODO translate -MAKE_WORD_TRANSLATION(coldshot_cmd, "send a cold shot of water", "", "", "", "", "", "", "soğuk su gönder", "") // TODO translate +MAKE_WORD_TRANSLATION(commands_response, "get response","Hole Antwort","Verzoek om antwoord", "", "", "", "uzyskaj odpowiedź", "", "", "gelen cevap", "") // TODO translate +MAKE_WORD_TRANSLATION(coldshot_cmd, "send a cold shot of water", "", "", "", "uruchom tryśnięcie zimnej wody", "", "", "soğuk su gönder", "") // TODO translate // tags MAKE_WORD_TRANSLATION(tag_boiler_data_ww, "dhw", "WW", "dhw", "VV", "CWU", "dhw", "ecs", "SKS", "dhw") @@ -185,16 +185,16 @@ MAKE_WORD_TRANSLATION(layeredbuffer, "layered buffer", "Schichtspeicher", "gelaa MAKE_WORD_TRANSLATION(maintenance, "maintenance", "Wartung", "onderhoud", "Underhåll", "przegląd", "vedlikehold", "maintenance", "bakım", "servizio") MAKE_WORD_TRANSLATION(heating, "heating", "Heizen", "verwarmen", "Uppvärmning", "ogrzewanie", "oppvarming", "chauffage", "ısıtma", "riscaldamento") MAKE_WORD_TRANSLATION(cooling, "cooling", "Kühlen", "koelen", "Kyler", "chłodzenie", "kjøling", "refroidissement", "soğuma", "raffreddamento") -MAKE_WORD_TRANSLATION(heatandcool, "heating&cooling", "Heizen&Kühlen", "verwarmen&koelen", "Uppvärmning&Kyler", "", "", "", "ısıtma&soğutma", "") // TODO translate +MAKE_WORD_TRANSLATION(heatandcool, "heating&cooling", "Heizen&Kühlen", "verwarmen&koelen", "Uppvärmning&Kyler", "ogrzewanie i chłodzenie", "", "", "ısıtma&soğutma", "") // TODO translate MAKE_WORD_TRANSLATION(disinfecting, "disinfecting", "Desinfizieren", "desinfecteren", "Desinficerar", "dezynfekcja termiczna", "desinfisering", "désinfection", "dezenfeksiyon", "disinfezione") MAKE_WORD_TRANSLATION(no_heat, "no heat", "keine Wärme", "geen warmte", "Ingen värme", "brak ciepła", "ingen varme", "pas de chauffage", "ısınma yok", "nessun calore") MAKE_WORD_TRANSLATION(heatrequest, "heat request", "Wärmeanforderung", "verwarmingsverzoek", "Värmeförfrågan", "zapotrzebowanie na ciepło", "varmeforespørsel", "demande de chauffage", "ısınma ihtiyacı", "richiesta calore") MAKE_WORD_TRANSLATION(valve, "valve", "Ventil", "klep", "Ventil", "zawór", "ventil", "valve", "vana", "valvola") MAKE_WORD_TRANSLATION(proportional, "proportional", "proportional", "proportioneel", "", "proporcjonalny", "proposjonal", "", "oransal", "proporzionale") // TODO translate -MAKE_WORD_TRANSLATION(deltaP1, "deltaP-1", "deltaP-1", "deltaP-1", "", "", "deltaP-1", "", "deltaP-1", "deltaP-1") // TODO translate -MAKE_WORD_TRANSLATION(deltaP2, "deltaP-2", "deltaP-2", "deltaP-2", "", "", "deltaP-2", "", "deltaP-2", "deltaP-2") // TODO translate -MAKE_WORD_TRANSLATION(deltaP3, "deltaP-3", "deltaP-3", "deltaP-3", "", "", "deltaP-3", "", "deltaP-3", "deltaP-3") // TODO translate -MAKE_WORD_TRANSLATION(deltaP4, "deltaP-4", "deltaP-4", "deltaP-4", "", "", "deltaP-4", "", "deltaP-4", "deltaP-4") // TODO translate +MAKE_WORD_TRANSLATION(deltaP1, "deltaP-1", "deltaP-1", "deltaP-1", "", "delta P-1", "deltaP-1", "", "deltaP-1", "deltaP-1") // TODO translate +MAKE_WORD_TRANSLATION(deltaP2, "deltaP-2", "deltaP-2", "deltaP-2", "", "delta P-2", "deltaP-2", "", "deltaP-2", "deltaP-2") // TODO translate +MAKE_WORD_TRANSLATION(deltaP3, "deltaP-3", "deltaP-3", "deltaP-3", "", "delta P-3", "deltaP-3", "", "deltaP-3", "deltaP-3") // TODO translate +MAKE_WORD_TRANSLATION(deltaP4, "deltaP-4", "deltaP-4", "deltaP-4", "", "delta P-4", "deltaP-4", "", "deltaP-4", "deltaP-4") // TODO translate // heatpump MAKE_WORD_TRANSLATION(none, "none", "keine", "geen", "ingen", "brak", "ingen", "aucun", "hiçbiri", "nessuno") @@ -207,6 +207,8 @@ MAKE_WORD_TRANSLATION(boiler_only, "boiler only", "nur Kessel", "uitsluitend cv MAKE_WORD_TRANSLATION(reduced_output, "reduced output", "Reduzierte Leistung", "gereduceerde output", "Reducerad produktion", "zmniejszona wydajność", "redusert ytelse", "sortie réduite", "düşürülmüş çıkış", "riduzione uscita") MAKE_WORD_TRANSLATION(switchoff, "switch off hp", "WP ausschalten", "WP uitschakelen", "Värmepump avstängd", "wyłącz pompę ciepła", "slå av varmepumpe", "éteindre la PAC", "ısı pompasını kapat", "spegnimento pompa calore") MAKE_WORD_TRANSLATION(perm, "perm. reduced", "perm. reduziert", "permanent gereduceerd", "Permanent reducerad", "stale zmniejszona wydajność", "permanent redusert", "réduction permanente", "sürekli azaltılmış", "riduzione permanente") +MAKE_WORD_TRANSLATION(heat_ww, "heating & dhw", "Heizen & Warmwasser", "", "", "", "", "", "", "") +MAKE_WORD_TRANSLATION(cool_defrost, "cooling & defrost", "Kühlen & Abtauen", "", "", "", "", "", "", "") // thermostat MAKE_WORD_TRANSLATION(seltemp, "selTemp", "Solltemperatur", "doeltemperatuur", "Börtemperatur", "temperatura zadana", "innstilt temperatur", "consigne température", "ayarlanmış sıcaklık", "temperatura di consegna") @@ -244,7 +246,7 @@ MAKE_WORD_TRANSLATION(defrost, "defrost", "Abtauen", "ontdooien", "avfrostning", MAKE_WORD_TRANSLATION(comfort, "comfort", "Komfort", "comfort", "Komfort", "komfort", "komfort", "comfort", "konfor", "comfort") MAKE_WORD_TRANSLATION(night, "night", "Nacht", "nacht", "Natt", "noc", "natt", "nuit", "gece", "notte") MAKE_WORD_TRANSLATION(day, "day", "Tag", "dag", "Dag", "dzień", "dag", "jour", "gün", "giorno") -MAKE_WORD_TRANSLATION(holiday, "holiday", "Urlaub", "vakantie", "Helgdag", "urlop?", "ferie", "vacances", "tatil", "vacanza") +MAKE_WORD_TRANSLATION(holiday, "holiday", "Urlaub", "vakantie", "Helgdag", "urlop", "ferie", "vacances", "tatil", "vacanza") MAKE_WORD_TRANSLATION(reduce, "reduce", "reduziert", "gereduceerd", "Reducera", "zredukowany", "redusere", "réduit", "düşür", "riduzione") MAKE_WORD_TRANSLATION(noreduce, "no reduce", "unreduziert", "niet gereduceerd", "oreducerad", "bez redukcji", "ingen reduksjon", "pas de réduction", "düşürme", "non ridurre") MAKE_WORD_TRANSLATION(offset, "offset", "Anhebung", "offset", "Förskutning", "przesunięcie", "kompensasjon", "offset", "kompansasyon", "offset") @@ -275,18 +277,18 @@ MAKE_WORD_TRANSLATION(cyl1, "cyl 1", "Zyl_1", "Cil 1", "Cyl 1", "cyl 1", "cyl 1" MAKE_WORD_TRANSLATION(cyl2, "cyl 2", "Zyl_2", "Cil 2", "Cyl 2", "cyl 2", "cyl 2", "cyl 2", "cly 1", "Cil 2") // ventilation -MAKE_WORD_TRANSLATION(demand, "demand", "Bedarf", "vereist", "", "", "", "", "talep", "richiesta") // TODO translate -MAKE_WORD_TRANSLATION(intense, "intense", "Intensiv", "intensief", "", "", "", "", "yoğun", "intensivo") // TODO translate -MAKE_WORD_TRANSLATION(sleep, "sleep", "Einschlafen", "slaapmodus", "", "", "", "", "uyku", "notturno") // TODO translate -MAKE_WORD_TRANSLATION(partymode, "party", "Party", "party", "", "", "", "", "parti", "festa") // TODO translate -MAKE_WORD_TRANSLATION(fireplace, "fireplace", "Kamin", "haard", "", "", "", "", "şömine", "camino") // TODO translate +MAKE_WORD_TRANSLATION(demand, "demand", "Bedarf", "vereist", "", "zapotrzebowanie", "", "", "talep", "richiesta") // TODO translate +MAKE_WORD_TRANSLATION(intense, "intense", "Intensiv", "intensief", "", "intensywne", "", "", "yoğun", "intensivo") // TODO translate +MAKE_WORD_TRANSLATION(sleep, "sleep", "Einschlafen", "slaapmodus", "", "sen", "", "", "uyku", "notturno") // TODO translate +MAKE_WORD_TRANSLATION(partymode, "party", "Party", "party", "", "impreza", "", "", "parti", "festa") // TODO translate +MAKE_WORD_TRANSLATION(fireplace, "fireplace", "Kamin", "haard", "", "kominek", "", "", "şömine", "camino") // TODO translate // MQTT Discovery - this is special device entity for 'climate' MAKE_TRANSLATION(haclimate, "haclimate", "Discovery current room temperature", "Discovery Temperatur", "Discovery huidige kamertemperatuur", "", "termostat w HA", "HA Avlest temp", "", "Güncel osa sıcaklığı", "verifica temperatura ambiente attuale") // TODO translate // Entity translations: tag, mqtt, en, de, nl, sv, pl, no, fr, tr, it // Boiler -MAKE_TRANSLATION(forceHeatingOff, "heatingoff", "force heating off", "Heizen abschalten", "", "", "", "", "", "", "") // TODO translate +MAKE_TRANSLATION(forceHeatingOff, "heatingoff", "force heating off", "Heizen abschalten", "", "", "wymuś wyłączenie grzania", "", "", "", "") // TODO translate MAKE_TRANSLATION(wwtapactivated, "wwtapactivated", "turn on/off", "Durchlauferhitzer aktiv", "zet aan/uit", "på/av", "system przygotowywania", "Varmtvann active", "ecs activée", "aç/kapa", "commuta on/off") MAKE_TRANSLATION(reset, "reset", "reset", "Reset", "Reset", "Nollställ", "kasowanie komunikatu", "nullstill", "reset", "Sıfırla", "Reset") MAKE_TRANSLATION(oilPreHeat, "oilpreheat", "oil preheating", "Ölvorwärmung", "Olie voorverwarming", "Förvärmning olja", "podgrzewanie oleju", "oljeforvarming", "préchauffage de l'huile", "Yakıt Ön ısıtma devrede", "preriscaldamento olio") @@ -340,8 +342,8 @@ MAKE_TRANSLATION(maintenanceTime, "maintenancetime", "time to next maintenance", MAKE_TRANSLATION(emergencyOps, "emergencyops", "emergency operation", "Notoperation", "Noodoperatie", "Nöddrift", "praca w trybie awaryjnym", "nøddrift", "opération d'urgence", "acil durum çalışması", "operazione di emergenza") MAKE_TRANSLATION(emergencyTemp, "emergencytemp", "emergency temperature", "Nottemperatur", "Noodtemperatuur", "Nöddrift temperatur", "temperatura w trybie awaryjnym", "nødtemperatur", "température d'urgence", "acil durum sıcaklığı", "temperatura di emergenza") MAKE_TRANSLATION(pumpMode, "pumpmode", "boiler pump mode", "Kesselpumpen Modus", "Ketelpomp modus", "", "tryb pracy pompy kotła", "pumpemodus", "", "pompa modu", "modalità pompa caldaia") // TODO translate -MAKE_TRANSLATION(headertemp, "headertemp", "low loss header", "Hydr. Weiche", "open verdeler", "", "", "", " bouteille de déc. hydr.", "isı bloğu gidiş suyu sıc.", "comp. idr.") // TODO translate -MAKE_TRANSLATION(heatblock, "heatblock", "heating block", "Wärmezelle", "Aanvoertemp. warmtecel", "", "", "", "départ corps de chauffe", "Hid.denge kabı sıcaklığı", "mandata scamb. pr.") // TODO translate +MAKE_TRANSLATION(headertemp, "headertemp", "low loss header", "Hydr. Weiche", "open verdeler", "", "sprzęgło hydrauliczne", "", "bouteille de déc. hydr.", "isı bloğu gidiş suyu sıc.", "comp. idr.") // TODO translate +MAKE_TRANSLATION(heatblock, "heatblock", "heating block", "Wärmezelle", "Aanvoertemp. warmtecel", "", "blok grzewczy", "", "départ corps de chauffe", "Hid.denge kabı sıcaklığı", "mandata scamb. pr.") // TODO translate // heatpump/compress specific MAKE_TRANSLATION(upTimeControl, "uptimecontrol", "total operating time heat", "Betriebszeit Heizen gesamt", "Totale bedrijfstijd", "Total tid uppvärmning", "łączny czas generowania ciepła", "total driftstid", "durée totale de fonctionnement chauffage", "ısınma toplam işletme süresi", "Tempo di funzionamento totale riscaldamento") @@ -355,10 +357,10 @@ MAKE_TRANSLATION(coolingStarts, "coolingstarts", "cooling control starts", "Küh MAKE_TRANSLATION(poolStarts, "poolstarts", "pool control starts", "Pool Starts", "Starts zwembadbedrijf", "Kompressorstarter Pool", "liczba załączeń podgrzewania basenu", "kompressorstarter basseng", "démarrages contrôle piscine", "havuz kontrolü toplam başlatma", "avvio controllato piscina") MAKE_TRANSLATION(nrgConsTotal, "nrgconstotal", "total energy consumption", "Energieverbrauch gesamt", "Energieverbrauch gesamt", "Energiförbrukning totalt", "energia pobrana (sumarycznie)", "energiforbruk totalt", "consommation totale énergie", "toplam enerji tüketimi", "totale energia consumata") MAKE_TRANSLATION(nrgConsCompTotal, "nrgconscomptotal", "total energy consumption compressor", "Energieverbrauch Kompressor gesamt", "Energieverbruik compressor totaal", "Energiförbrukning kompressor", "energia pobrana przez sprężarkę", "energiforbruk kompressor", "consommation totale énergie compresseur", "ısı pompası toplam enerji tüketimi", "totale energia consumata compressore") -MAKE_TRANSLATION(nrgConsCompHeating, "nrgconscompheating", "energy consumption compressor heating", "Energieverbrauch Kompressor heizen", "Energieverbruik compressor verwarmingsbedrijf", "Energiförbrukning uppvärmning", "energia pobrana przez sprężarkę na ogrzewanie", "energiforbruk oppvarming", "consommation énergie compresseur chauffage", "ısı pompası ısıtma toplam enerji tüketimi", "consumo energia compressore riscaldamento") -MAKE_TRANSLATION(nrgConsCompWw, "nrgconscompww", "energy consumption compressor", "Energieverbrauch Kompressor", "Energieverbruik compressor", "Energiförbrukning", "energia pobrana przez sprężarkę na c.w.u.", "energiforbruk", "consommation énergie compresseur", "ısı pompası sıcak kullanım suyu toplam enerji tüketimi", "consumo energia compressore") -MAKE_TRANSLATION(nrgConsCompCooling, "nrgconscompcooling", "energy consumption compressor cooling", "Energieverbrauch Kompressor kühlen", "Energieverbruik compressor koelbedrijf", "Energiförbrukning kyla", "energia pobrana przez sprężarkę na chłodzenie", "energiforbruk kjøling", "consommation énergie compresseur refroidissement", "ısı pompası soğutma toplam enerji tüketimi", "consumo energia compressore raffreddamento") -MAKE_TRANSLATION(nrgConsCompPool, "nrgconscomppool", "energy consumption compressor pool", "Energieverbrauch Kompressor Pool", "Energiebedrijf compressor zwembadbedrijf", "Energiförbrukning pool", "energia pobrana przez sprężarkę na podgrzewanie basenu", "energiforbruk basseng", "consommation énergie compresseur piscine", "ısı pompası havuz toplam enerji tüketimi", "consumo energia compressore piscina") +MAKE_TRANSLATION(nrgConsCompHeating, "nrgconscompheating", "energy consumption compressor heating", "Energieverbrauch Kompressor heizen", "Energieverbruik compressor verwarmingsbedrijf", "Energiförbrukning uppvärmning", "energia pobrana przez sprężarkę na ogrzewanie", "energiforbruk oppvarming", "consommation énergie compresseur chauffage", "ısı pompası ısıtma toplam enerji tüketimi", "consumo energia compressore riscaldamento") +MAKE_TRANSLATION(nrgConsCompWw, "nrgconscompww", "energy consumption compressor", "Energieverbrauch Kompressor", "Energieverbruik compressor", "Energiförbrukning", "energia pobrana przez sprężarkę na c.w.u.", "energiforbruk", "consommation énergie compresseur", "ısı pompası sıcak kullanım suyu toplam enerji tüketimi", "consumo energia compressore") +MAKE_TRANSLATION(nrgConsCompCooling, "nrgconscompcooling", "energy consumption compressor cooling", "Energieverbrauch Kompressor kühlen", "Energieverbruik compressor koelbedrijf", "Energiförbrukning kyla", "energia pobrana przez sprężarkę na chłodzenie", "energiforbruk kjøling", "consommation énergie compresseur refroidissement", "ısı pompası soğutma toplam enerji tüketimi", "consumo energia compressore raffreddamento") +MAKE_TRANSLATION(nrgConsCompPool, "nrgconscomppool", "energy consumption compressor pool", "Energieverbrauch Kompressor Pool", "Energiebedrijf compressor zwembadbedrijf", "Energiförbrukning pool", "energia pobrana przez sprężarkę na podgrzewanie basenu", "energiforbruk basseng", "consommation énergie compresseur piscine", "ısı pompası havuz toplam enerji tüketimi", "consumo energia compressore piscina") MAKE_TRANSLATION(nrgSuppTotal, "nrgsupptotal", "total energy supplied", "gesamte Energieabgabe", "Totaal opgewekte energie", "Genererad energi", "energia oddana (sumarycznie)", "tilført energi", "énergie totale fournie", "sağlanan toplam enerji", "totale energia fornita") MAKE_TRANSLATION(nrgSuppHeating, "nrgsuppheating", "total energy supplied heating", "gesamte Energieabgabe heizen", "Opgewekte energie verwarmingsbedrijf", "Genererad energi Uppvärmning", "energia oddana na ogrzewanie", "tilført energi oppvarming", "énergie totale fournie chauffage", "ısıtma sağlanan toplam enerji", "energia totale fornita - riscaldamento") MAKE_TRANSLATION(nrgSuppWw, "nrgsuppww", "total energy warm supplied", "gesamte Energieabgabe", "Opgewekte energie", "Genererad energi", "energia oddana na c.w.u.", "tilført energi", "énergie chaude totale fournie", "sıcak kullanım suyu sağlanan toplam enerji", "totale energia calorica fornita") @@ -370,18 +372,18 @@ MAKE_TRANSLATION(auxElecHeatNrgConsWW, "auxelecheatnrgconsww", "aux elec. heater MAKE_TRANSLATION(auxElecHeatNrgConsPool, "auxelecheatnrgconspool", "aux elec. heater energy consumption pool", "Energieverbrauch el. Zusatzheizung Pool", "Energieverbruik electrisch verwarmingselement voor zwembadbedrijf", "Energiförbrukning Eltillskott Pool", "energia pobrana przez grzałki na podgrzewanie basenu", "energiforbruk el. tilleggsvarme basseng", "consommation énergie electrique auxiliaire chauffage piscine", "ilave elektrikli ısıtıcı havuz toplam enerji tüketimi", "consumo di energia riscaldamento elettrico ausiliario piscina") MAKE_TRANSLATION(hpCompOn, "hpcompon", "hp compressor", "WP Kompressor", "WP compressor", "VP Kompressor", "sprężarka pompy ciepła", "vp kompressor", "compresseur pompe à chaleur", "hp ısı pompası", "compressore pompa calore") -MAKE_TRANSLATION(hpHeatingOn, "hpheatingon", "hp heating", "WP Heizen", "WP verwarmingsbedrijf", "VP Uppvärmning", "pompa ciepła, ogrzewanie", "vp oppvarmning", "hp ısınıyor", "riscaldamento pompa calore") -MAKE_TRANSLATION(hpCoolingOn, "hpcoolingon", "hp cooling", "WP Kühlen", "WP koelbedrijf", "VP Kyla", "pompa ciepła, chłodzenie", "vp kjøling", "hp soğuyor", "raffreddamento pompa calore") MAKE_TRANSLATION(coolingOn, "coolingon", "cooling", "Kühlen", "koelbedrijf", "Kyla", "chłodzenie", "kjøling", "refroidissement", "hp sıcak kullanım suyu", "") // TODO translate -MAKE_TRANSLATION(hpWwOn, "hpwwon", "hp", "WP", "WP", "VP", "pompa ciepła", "vp", "hp", "pompa calore") -MAKE_TRANSLATION(hpPoolOn, "hppoolon", "hp pool", "WP Pool", "WP zwembadbedrijf", "VP Pool", "pompa ciepła, podgrzewanie basenu", "vp basseng", "tuzlu su pompası hızı", "pompa calore piscina") +// MAKE_TRANSLATION(hpHeatingOn, "hpheatingon", "hp heating", "WP Heizen", "WP verwarmingsbedrijf", "VP Uppvärmning", "pompa ciepła, ogrzewanie", "vp oppvarmning", "", "hp ısınıyor", "riscaldamento pompa calore") // TODO translate +// MAKE_TRANSLATION(hpCoolingOn, "hpcoolingon", "hp cooling", "WP Kühlen", "WP koelbedrijf", "VP Kyla", "pompa ciepła, chłodzenie", "vp kjøling", "", "hp soğuyor", "raffreddamento pompa calore") // TODO translate +// MAKE_TRANSLATION(hpWwOn, "hpwwon", "hp", "WP", "WP", "VP", "pompa ciepła", "vp", "pompe à chaleur", "hp", "pompa calore") +// MAKE_TRANSLATION(hpPoolOn, "hppoolon", "hp pool", "WP Pool", "WP zwembadbedrijf", "VP Pool", "pompa ciepła, podgrzewanie basenu", "vp basseng", "", "tuzlu su pompası hızı", "pompa calore piscina") MAKE_TRANSLATION(hpBrinePumpSpd, "hpbrinepumpspd", "brine pump speed", "Solepumpen-Geschw.", "Snelheid pekelpomp", "Hastighet Brine-pump", "wysterowanie pompy glikolu", "hastighet brine-pumpe", "vitesse pompe à saumure", "ısı pompası hızı", "velocità pompa sbrinamento") MAKE_TRANSLATION(hpCompSpd, "hpcompspd", "compressor speed", "Kompressor-Geschw.", "Snelheid compressor", "Kompressorhastighet", "wysterowanie sprężarki", "kompressorhastighet", "vitesse du compresseur", "sirkülasyon pompası hızı", "velocità compressore") MAKE_TRANSLATION(hpCircSpd, "hpcircspd", "circulation pump speed", "Zirkulationspumpen-Geschw.", "Snelheid circulatiepomp", "Hastighet Cirkulationspump", "wysterowanie pompy obiegu grzewczego", "hastighet sirkulationspumpe", "vitesse pompe à circulation", "evaporatör tuzlu su giişi", "velocità pompa circolazione") MAKE_TRANSLATION(hpBrineIn, "hpbrinein", "brine in/evaporator", "Sole in/Verdampfer", "pekel in/verdamper", "Brine in (förangare)", "temperatura glikolu na wejściu kolektora (TB0)", "brine in/fordamper", "entrée saumure/évaporateur", "kondenser tuzlu su çıkışı", "salamoia nell evaporatore") MAKE_TRANSLATION(hpBrineOut, "hpbrineout", "brine out/condenser", "Sole aus/Kondensator", "pekel uit/condensor", "Brine ut (kondensor)", "temperatura glikolu na wyjściu kolektora (TB1)", "Brine ut/kondensor", "sortie saumure/condenseur", "anahtar valfi", "salamoia nell uscita evaporatore") MAKE_TRANSLATION(hpSwitchValve, "hpswitchvalve", "switch valve", "Schaltventil", "schakelklep", "Växelventil", "zawór przełączający", "skifteventil", "valve de commutation", "ısı pompası aktivitesi", "valvola commutazione pompa di calore") -MAKE_TRANSLATION(hpActivity, "hpactivity", "compressor activity", "Kompressoraktivität", "Compressoractiviteit", "Kompressoraktivitet", "pompa ciepła, aktywność sprężarki", "kompressoraktivitet", "hp ısı pompası", "attività compressore") +MAKE_TRANSLATION(hpActivity, "hpactivity", "compressor activity", "Kompressoraktivität", "Compressoractiviteit", "Kompressoraktivitet", "pompa ciepła, aktywność sprężarki", "kompressoraktivitet", "", "hp ısı pompası", "attività compressore") MAKE_TRANSLATION(hpPower, "hppower", "compressor power output", "Kompressorleistung", "Compressorvermogen", "Kompressoreffekt", "moc wyjściowa sprężarki", "kompressoreffekt", "puissance de sortie compresseur", "ısı pompası güç çıkışı", "potenza uscita compressore") MAKE_TRANSLATION(hpTc0, "hptc0", "heat carrier return (TC0)", "Kältemittel Rücklauf (TC0)", "Koudemiddel retour (TC0)", "Värmebärare Retur (TC0)", "temperatura nośnika ciepła na powrocie (TC0)", "kjølemiddel retur (TC0)", "retour caloporteur (TC0)", "sıcak su dönüşü (TC0)", "ritorno del refrigerante (TC0)") @@ -396,8 +398,8 @@ MAKE_TRANSLATION(hpTr7, "hptr7", "refrigerant temperature gas side (condenser in MAKE_TRANSLATION(hpTl2, "hptl2", "air inlet temperature (TL2)", "Außenluft-Einlasstemperatur (TL2)", "Temperatuur luchtinlaat (TL2)", "Luftintagstemperatur (TL2)", "temperatura wlotu powietrza (TL2)", "luftinntakstemperatur (TL2)", "température entrée air (TL2)", "hava giriş sıcaklığı (TL2)", "temperatura ingresso aria (TL2)") MAKE_TRANSLATION(hpPl1, "hppl1", "low pressure side temperature (PL1)", "Niederdruckfühler (PL1)", "Temperatuur lage drukzijde (PL1)", "Temperatur Lågtryckssidan (PL1)", "temperatura po stronie niskiego ciśnienia (PL1)", "temperatur lavtrykksiden (PL1)", "température côté basse pression (PL1)", "düşük basınç tarafı sıcaklığı (PL1)", "temperatura lato bassa pressione (PL1)") MAKE_TRANSLATION(hpPh1, "hpph1", "high pressure side temperature (PH1)", "Hochdruckfühler (PH1)", "Temperatuur hoge drukzijde (PH1)", "Temperatur Högtryckssidan (PH1)", "temperatura po stronie wysokiego ciśnienia (PH1)", "Temperatur Høytrykksiden (PH1)", "température côté bhauteasse pression (PH1)", "yüksek basınç tarafı sıcaklığı (PH1)", "temperatura lato alta pressione (PH1)") -MAKE_TRANSLATION(hpTa4, "hpta4", "drain pan temp (TA4)", "Kondensatorwanne (TA4)", "Temperatuur condensorafvoerbak (TA4)", " (TA4)", "temperatura ociekacza (TA4)", "kondens temperatur (TA4)", " (TA4)", "tahliye sıcaklığı (TA4)", "temperatura condensatore (TA4)") // TODO translate -MAKE_TRANSLATION(hpTw1, "hptw1", "reservoir temp (TW1)", "WW Reservoir (TW1)", "(TW1)", "(TW1)", "(TW1)", "(TW1)", "(TW1)", "(TW1)", "(TW1)") // TODO translate +MAKE_TRANSLATION(hpTa4, "hpta4", "drain pan temp (TA4)", "Kondensatorwanne (TA4)", "Temperatuur condensorafvoerbak (TA4)", " (TA4)", "temperatura ociekacza (TA4)", "kondens temperatur (TA4)", " (TA4)", "tahliye sıcaklığı (TA4)", "temperatura condensatore (TA4)") // TODO translate +MAKE_TRANSLATION(hpTw1, "hptw1", "reservoir temp (TW1)", "WW Reservoir (TW1)", "(TW1)", "(TW1)", "temperatura zbiornika (TW1)", "(TW1)", "(TW1)", "(TW1)", "(TW1)") // TODO translate MAKE_TRANSLATION(hpInput1, "hpin1", "input 1 state", "Eingang 1 Status", "Status input 1", "Status Ingång 1", "stan wejścia 1", "status inggang 1", "état entrée 1", "giriş 1 durumu", "stato ingresso 1") MAKE_TRANSLATION(hpInput2, "hpin2", "input 2 state", "Eingang 2 Status", "Status input 2", "Status Ingång 2", "stan wejścia 2", "status inggang 2", "état entrée 2", "giriş 2 durumu", "stato ingresso 2") @@ -415,7 +417,7 @@ MAKE_TRANSLATION(auxHeaterOff, "auxheateroff", "disable aux heater", "Verbiete Z MAKE_TRANSLATION(auxHeaterStatus, "auxheaterstatus", "aux heater status", "Status Zusatzheizer", "Bijverwarming", "Eltillskott Status", "status dogrzewacza", "status el. tillegsvarme", "Chauffage auxiliaire", "ilave ısıtıcı durumu", "stato riscaldatori addizionali") MAKE_TRANSLATION(auxHeaterOnly, "auxheateronly", "aux heater only", "nur Zusatzheizer", "Alleen bijverwarming", "Eltillskott Enbart", "tylko dogrzewacz", "kun el tilleggsvarme", "Que chauffage auxiliaire", "sadece ilave ısıtıvcı", "solo riscaldatori addizionali") MAKE_TRANSLATION(auxHeaterDelay, "auxheaterdelay", "aux heater on delay", "Zusatzheizer verzögert ein", "Bijverw. vertraagd aan", "Eltillskottfördröjning på", "opóźnienie włączenia dogrzewacza", "Tilleggsvarmer forsinket på", "Chauff app tempo marche", "ilave ısıtıcı beklemede", "ritardo riscaldatori addizionali") -MAKE_TRANSLATION(silentMode, "silentmode", "silent mode", "Silentmodus", "Stiller gebruik", "Tyst läge", "tryb cichy", "stille modus", "Fct silencieux", "sessiz mod", "modalità silenziosa") +MAKE_TRANSLATION(silentMode, "silentmode", "silent mode", "Silentmodus", "Stiller gebruik", "Tyst läge", "tryb cichy", "stille modus", "Fct silencieux", "sessiz mod", "modalità silenziosa") MAKE_TRANSLATION(minTempSilent, "mintempsilent", "min outside temp for silent mode", "Minimale Aussentemperatur Silentmodus", "Stiller gebruik min. buitentemp", "Tyst läge min temp", "minimalna temperatura zewnętrzna dla trybu cichego", "atille modus min temp", "Fct silencieux: Temp. extérieure min.", "sessiz mod için min. dış ortam sıcaklığı", "modalità silenziosa temperatura esterna minima") MAKE_TRANSLATION(tempParMode, "tempparmode", "outside temp parallel mode", "Aussentemperatur Parallelmodus", "Buitentemp. parallelbedr", "Parallelläge Utomhustemp.", "maksymalna temperatura zewnętrzna dla dogrzewacza", "", "Temp. ext. fct parallèle", "paralel mod dış ortam sıcaklığı", "modalità parallela temperatura esterna") // TODO translate MAKE_TRANSLATION(auxHeatMixValve, "auxheatmix", "aux heater mixing valve", "Mischer Zusatzheizer", "Bijverwarming menger", "Eltilskott Blandarventil", "mieszacz dogrzewacza", "eltilskudd blandeventil", "Chauffage auxiliaire mélangeur", "ilave ısıtıcı karışım vanası", "miscela riscaldatori addizionali") @@ -432,8 +434,8 @@ MAKE_TRANSLATION(wwEcoOffTemp, "wwecooff", "eco switch off", "ECO Ausschalttemp" MAKE_TRANSLATION(wwEcoPlusOffTemp, "wwecoplusoff", "eco+ switch off", "ECO+ Ausschalttemp", "Eco+ Uitschakeltemp.", "Eko+ avstängningstemp.", "temperatura wyłączania w trybie eko+", "Øko+ avstengningstemp.", "Eco+ Temp. d'arrêt", "eko+ kapalı", "spegnimento modalità ECO+") MAKE_TRANSLATION(auxHeatMode, "auxheatrmode", "aux heater mode", "Modus Zusatzheizer", "Modus bijverwarmer", "", "tryb pracy dogrzewacza po blokadzie z Zakładu Energetycznego", "tilleggsvarmer modus", "", "ilave ısıtıcı modu", "modalità riscaldatore addizionale") // TODO translate -MAKE_TRANSLATION(auxMaxLimit, "auxmaxlimit", "aux heater max limit", "Zusatzheizer max. Grenze", "Bijverwarmer grensinstelling maximaal", "", "dogrzewacz, maksymalny limit", "tillegsvarme maksgrense", "ilave ısıtıcı maks limit", "limite massimo riscaldatore addizionale") // TODO translate -MAKE_TRANSLATION(auxLimitStart, "auxlimitstart", "aux heater limit start", "Zusatzheizer Grenze Start", "Bijverwarmer grens voor start", "", "dogrzewacz, początek ograniczenia", "tillegsvarme startgrense", "ilave ısıtıcı limir başlangıcı", "avvio limite massimo riscaldatore addizionale") // TODO translate +MAKE_TRANSLATION(auxMaxLimit, "auxmaxlimit", "aux heater max limit", "Zusatzheizer max. Grenze", "Bijverwarmer grensinstelling maximaal", "", "dogrzewacz, maksymalny limit", "tillegsvarme maksgrense", "", "ilave ısıtıcı maks limit", "limite massimo riscaldatore addizionale") // TODO translate +MAKE_TRANSLATION(auxLimitStart, "auxlimitstart", "aux heater limit start", "Zusatzheizer Grenze Start", "Bijverwarmer grens voor start", "", "dogrzewacz, początek ograniczenia", "tillegsvarme startgrense", "", "ilave ısıtıcı limir başlangıcı", "avvio limite massimo riscaldatore addizionale") // TODO translate MAKE_TRANSLATION(manDefrost, "mandefrost", "manual defrost", "Manuelle Enteisung", "Handmatige ontdooicyclus", "", "ręczne odladzanie", "manuell avisning", "", "manuel buz çözme", "sbrinamento manuale") // TODO translate MAKE_TRANSLATION(pvCooling, "pvcooling", "Cooling only with PV", "Kühlen nur mit PV", "Koelen alleen met solar PV", "", "chłodzenie tylko z PV", "kjøling med solpanel", "", "sadece PV ile soğutma", "solo raffrescamento con solare") // TODO translate MAKE_TRANSLATION(hpCircPumpWw, "hpcircpumpww", "circulation pump available during dhw", "Zirkulation möglich bei WW-Bereitung", "Circulatiepomp WP beschikbaar tijdens ww", "", "pompa cyrkulacji dostępna w trakcie c.w.u.", "sirkulasjonspumpe tilgjengelig under varmtvann", "", "SKS esnasında sirkülasyon pompasu uygun", "pompa di circolazione disponibile durante ACS") // TODO translate @@ -442,6 +444,7 @@ MAKE_TRANSLATION(VC0valve, "vc0valve", "VC0 valve", "VC0 Ventil", "Klep VC0", "" MAKE_TRANSLATION(primePump, "primepump", "primary heatpump", "Hauptpumpe", "Hoofdpomp", "", "główna pompa ciepła", "primærpumpe", "", "ana ısı pompası", "pompa principale riscaldamento") // TODO translate MAKE_TRANSLATION(primePumpMod, "primepumpmod", "primary heatpump modulation", "Modulation Hauptpumpe", "Modulatie hoofdpomp", "", "wysterowanie głównej pompy ciepła", "primærpumpelast", "", "ana ısı pompası modülasyon", "pompa principale modulazione riscaldamento") // TODO translate MAKE_TRANSLATION(hp3wayValve, "hp3way", "3-way valve", "3-Wege-Ventil", "3-weg klep", "", "zawór 3-drogowy pompy ciepła", "3-veisventil", "", "3 yollu vana", "valvola 3-vie") // TODO translate +MAKE_TRANSLATION(hp4wayValve, "hp4way", "4-way valve", "4-Wege-Ventil", "4-weg klep", "", "zawór 4-drogowy pompy ciepła", "4-veisventil", "", "4 yollu vana", "valvola 4-vie") // TODO translate MAKE_TRANSLATION(elHeatStep1, "elheatstep1", "el. heater step 1", "El. Heizer Stufe 1", "Electrische bijverwarmer niveau 1", "", "dogrzewacz poziom 1", "el-kolbe steg 1", "", "el.ısıtıcı adım 1", "riscaldatore elettrico livello 1") // TODO translate MAKE_TRANSLATION(elHeatStep2, "elheatstep2", "el. heater step 2", "El. Heizer Stufe 2", "Electrische bijverwarmer niveau 2", "", "dogrzewacz poziom 2", "el-kolbe steg 2", "", "el.ısıtıcı adım 2", "riscaldatore elettrico livello 2") // TODO translate MAKE_TRANSLATION(elHeatStep3, "elheatstep3", "el. heater step 3", "El. Heizer Stufe 3", "Electrische bijverwarmer niveau 3", "", "dogrzewacz poziom 3", "el-kolbe steg 3", "", "el.ısıtıcı adım 3", "riscaldatore elettrico livello 3") // TODO translate @@ -508,20 +511,20 @@ MAKE_TRANSLATION(blockHyst, "blockhyst", "hyst. for boiler block", "Hysterese Sp MAKE_TRANSLATION(releaseWait, "releasewait", "boiler release wait time", "Wartezeit Kessel-Freigabe", "Wachttijd ketel vrijgave", "Väntetid Frisläppning", "czas oczekiwania na zwolnienie kotła", "kjele frigjøringsventetid", "temps attente libération chaudière", "kazan tahliyesi bekleme süresi", "tempo di attesa sblocco caldaia") // energy -MAKE_TRANSLATION(nrgTotal, "nrgtotal", "total energy", "Energie gesamt", "", "", "", "", "", "", "") // TODO translate -MAKE_TRANSLATION(nrgHeat, "nrgheat", "energy heating", "Energie Heizen", "", "", "", "", "", "ısıtma enerjisi", "") // TODO translate -MAKE_TRANSLATION(nrgWw, "nrgww", "energy", "Energie", "", "", "", "", "", "sıcak kullanım suyu enerjisi", "") // TODO translate -MAKE_TRANSLATION(nomPower, "nompower", "nominal Power", "Brennerleistung", "", "", "", "", "", "nominal güç", "") // TODO translate -MAKE_TRANSLATION(meterTotal, "metertotal", "meter total", "Messung gesamt", "", "", "", "", "", "", "") // TODO translate -MAKE_TRANSLATION(meterComp, "metercomp", "meter compressor", "Messung Kompressor", "", "", "", "", "", "", "") // TODO translate -MAKE_TRANSLATION(meterEHeat, "metereheat", "meter e-heater", "Messung E-Heizer", "", "", "", "", "", "", "") // TODO translate +MAKE_TRANSLATION(nrgTotal, "nrgtotal", "total energy", "Energie gesamt", "", "", "całkowita energia", "", "", "", "") // TODO translate +MAKE_TRANSLATION(nrgHeat, "nrgheat", "energy heating", "Energie Heizen", "", "", "energia grzania", "", "", "ısıtma enerjisi", "") // TODO translate +MAKE_TRANSLATION(nrgWw, "nrgww", "energy", "Energie", "", "", "energia", "", "", "sıcak kullanım suyu enerjisi", "") // TODO translate +MAKE_TRANSLATION(nomPower, "nompower", "nominal Power", "Brennerleistung", "", "", "moc nominalna", "", "", "nominal güç", "") // TODO translate +MAKE_TRANSLATION(meterTotal, "metertotal", "meter total", "Messung gesamt", "", "", "licznik całkowity", "", "", "", "") // TODO translate +MAKE_TRANSLATION(meterComp, "metercomp", "meter compressor", "Messung Kompressor", "", "", "licznik sprężarki", "", "", "", "") // TODO translate +MAKE_TRANSLATION(meterEHeat, "metereheat", "meter e-heater", "Messung E-Heizer", "", "", "licznik e-heater", "", "", "", "") // TODO translate // HIU -MAKE_TRANSLATION(netFlowTemp, "netflowtemp", "heat network flow temp", "System Vorlauftemperatur", "Netto aanvoertemperatuur", "", "", "", "", "ısıtma şebekesi akış derecesi", "temperatura di mandata della rete di riscaldamento") // TODO translate -// MAKE_TRANSLATION(cwFlowRate, "cwflowrate", "cold water flow rate", "Kaltwasser Durchfluss", "Stroomsnelheid koud water ", "", "", "", "", "soğuk su akış hızı", "portata acqua fredda") // TODO translate -MAKE_TRANSLATION(keepWarmTemp, "keepwarmtemp", "keep warm temperature","Warmhaltetemperatur", "Warmhoudtemperatuur", "", "", "", "", "sıcaklığı koruma derecesi", "mantenere la temperatura calda") // TODO translate -MAKE_TRANSLATION(heatValve, "heatvalve", "heating valve", "Ventil Heizen", "", "", "", "", "", "", "") // TODO translate -MAKE_TRANSLATION(wwValve, "wwvalve", "valve", "Ventil", "", "", "", "", "", "", "") // TODO translate +MAKE_TRANSLATION(netFlowTemp, "netflowtemp", "heat network flow temp", "System Vorlauftemperatur", "Netto aanvoertemperatuur", "", "temp. zasilania sieci cieplnej", "", "", "ısıtma şebekesi akış derecesi", "temperatura di mandata della rete di riscaldamento") // TODO translate +// MAKE_TRANSLATION(cwFlowRate, "cwflowrate", "cold water flow rate", "Kaltwasser Durchfluss", "Stroomsnelheid koud water ", "", "przepływ zimnej wody", "", "", "soğuk su akış hızı", "portata acqua fredda") // TODO translate +MAKE_TRANSLATION(keepWarmTemp, "keepwarmtemp", "keep warm temperature","Warmhaltetemperatur", "Warmhoudtemperatuur", "", "", "temperatura utrzymania ciepłej wody", "", "sıcaklığı koruma derecesi", "mantenere la temperatura calda") // TODO translate +MAKE_TRANSLATION(heatValve, "heatvalve", "heating valve", "Ventil Heizen", "", "", "zawór grzeczy", "", "", "", "") // TODO translate +MAKE_TRANSLATION(wwValve, "wwvalve", "valve", "Ventil", "", "", "zawór", "", "", "", "") // TODO translate // the following are dhw for the boiler and automatically tagged with 'dhw' MAKE_TRANSLATION(wwSelTemp, "wwseltemp", "selected temperature", "gewählte Temperatur", "Geselecteerd temperatuur", "Vald Temperatur", "temperatura wyższa/komfort", "valgt temperatur", "température sélectionnée", "seçili sıcaklık", "temperatura selezionata") @@ -661,7 +664,7 @@ MAKE_TRANSLATION(vacreducetemp, "vacreducetemp", "vacations off/reduce switch te MAKE_TRANSLATION(vacreducemode, "vacreducemode", "vacations reduce mode", "Urlaub Absenkmodus", "Vakantie afschakelmodus", "Helg reduceringsläge", "redukcja w trakcie urlopu", "ferieavstengningsmodus", "mode réduction vacances", "tail düşürme modu", "modalita riduzione vacanze") MAKE_TRANSLATION(nofrostmode, "nofrostmode", "nofrost mode", "Frostschutz Modus", "Vorstbeveiligingsmodus", "Frostskyddsläge", "temperatura wiodąca dla ochrony przed zamarzaniem", "frostbeskyttelsesmodus", "mode protection gel", "donma koruması modu", "Modalità protezione antigelo") MAKE_TRANSLATION(remotetemp, "remotetemp", "room temperature from remote", "Raumtemperatur Remote", "Ruimtetemperatuur van afstandsbediening", "Rumstemperatur från fjärr", "temperatura w pomieszczeniu (z termostatu)", "romstemperatur fra fjernbetjening", "température pièce depuis télécommande", "uzaktan oda sıcaklığı", "temperatura ambiente da remoto") -MAKE_TRANSLATION(remotehum, "remotehum", "room humidity from remote", "Raumfeuchte Remote", "", "", "", "", "", "uzaktan kumandadan oda nemi", "") // TODO translate +MAKE_TRANSLATION(remotehum, "remotehum", "room humidity from remote", "Raumfeuchte Remote", "", "", "wilgotność w pomieszczeniu (z termostatu)", "", "", "uzaktan kumandadan oda nemi", "") // TODO translate MAKE_TRANSLATION(wwHolidays, "wwholidays", "holiday dates", "Feiertage", "Feestdagen", "Helgdagar", "dni świąteczne", "feriedager varmtvann", "dates vacances", "tatil günleri", "feste pubbliche") MAKE_TRANSLATION(wwVacations, "wwvacations", "vacation dates", "Urlaubstage", "Vakantiedagen", "Semesterdatum Varmvatten", "dni urlopowe", "ferie dato varmtvann", "dates vacances", "izin günleri", "date vacanze") MAKE_TRANSLATION(holidays, "holidays", "holiday dates", "Feiertage", "Feestdagen", "Helgdatum", "święta", "helligdager", "dates vacances", "tatil günleri", "date feste pubbliche") @@ -672,16 +675,16 @@ MAKE_TRANSLATION(reducehours, "reducehours", "duration for nighttemp", "Dauer Na MAKE_TRANSLATION(reduceminutes, "reduceminutes", "remaining time for nightmode", "Restzeit Nachttemp.", "Resterende tijd nachtverlaging", "Återstående Tid Nattläge", "czas do końca trybu nocnego", "gjenværende tid i nattstilling", "temps restant mode nuit", "gece modu için kalan süre", "temperatura notturna residua") MAKE_TRANSLATION(switchonoptimization, "switchonoptimization", "switch-on optimization", "Einschaltoptimierung", "Inschakeloptimalisering", "Växlingsoptimering", "optymalizacja załączania", "slå på optimalisering", "optimisation mise en marche", "optimizasyonu aç", "ottimizzazione all'accensione") -MAKE_TRANSLATION(hpmode, "hpmode", "HP Mode", "WP Modus", "Modus warmtepomp", "", "", "", "", "yüksek güç modu", "Modalità Termopompa") // TODO translate -MAKE_TRANSLATION(dewoffset, "dewoffset", "dew point offset", "Taupunkt Differenz", "Offset dauwpunt", "", "", "", "", "çiğ noktası göreli", "differenza del punto di rugiada") // TODO translate -MAKE_TRANSLATION(roomtempdiff, "roomtempdiff", "room temp difference", "Raumtemperatur Differenz", "Verschiltemperatuur kamertemp", "", "", "", "", "oda sıcaklığı farkı", "differenza temperatura ambiente") // TODO translate -MAKE_TRANSLATION(hpminflowtemp, "hpminflowtemp", "HP min. flow temp.", "WP minimale Vorlauftemperatur", "Minimale aanvoertemperatuur WP", "", "", "", "", "yüksek güç minimum akış sıcaklığı", "temperatura minima di mandata") // TODO translate +MAKE_TRANSLATION(hpmode, "hpmode", "HP Mode", "WP Modus", "Modus warmtepomp", "", "tryb pracy pompy ciepła", "", "", "yüksek güç modu", "Modalità Termopompa") // TODO translate +MAKE_TRANSLATION(dewoffset, "dewoffset", "dew point offset", "Taupunkt Differenz", "Offset dauwpunt", "", "przesunięcie punktu rosy", "", "", "çiğ noktası göreli", "differenza del punto di rugiada") // TODO translate +MAKE_TRANSLATION(roomtempdiff, "roomtempdiff", "room temp difference", "Raumtemperatur Differenz", "Verschiltemperatuur kamertemp", "", "różnica temp. pomieszczenia", "", "", "oda sıcaklığı farkı", "differenza temperatura ambiente") // TODO translate +MAKE_TRANSLATION(hpminflowtemp, "hpminflowtemp", "HP min. flow temp.", "WP minimale Vorlauftemperatur", "Minimale aanvoertemperatuur WP", "", "pompa ciepła minimalna temp przepływu ", "", "", "yüksek güç minimum akış sıcaklığı", "temperatura minima di mandata") // TODO translate MAKE_TRANSLATION(hpcooling, "cooling", "cooling", "Kühlen", "Koelen", "Kyler", "chłodzenie", "kjøling", "refroidissement", "soğuma", "raffreddamento") // heatpump and RC100H MAKE_TRANSLATION(airHumidity, "airhumidity", "relative air humidity", "relative Luftfeuchte", "Relatieve luchtvochtigheid", "Relativ Luftfuktighet", "wilgotność względna w pomieszczeniu", "luftfuktighet", "humidité relative air", "havadaki bağıl nem", "umidità relativa aria") MAKE_TRANSLATION(dewTemperature, "dewtemperature", "dew point temperature", "Taupunkttemperatur", "Dauwpunttemperatuur", "Daggpunkt", "punkt rosy w pomieszczeniu", "duggtemperatur", "température point rosée", "çiğ noktası sıcaklığı", "temperatura del punto di rugiada") -MAKE_TRANSLATION(battery, "battery", "battery", "Batterie", "", "", "", "", "", "", "") +MAKE_TRANSLATION(battery, "battery", "battery", "Batterie", "", "", "bateria", "", "", "", "") // mixer MAKE_TRANSLATION(flowSetTemp, "flowsettemp", "setpoint flow temperature", "Sollwert Vorlauftemperatur", "Streefwaarde aanvoertemperatuur", "Vald flödestemperatur", "zadana temperatura zasilania", "valgt turtemperatur", "consigne température flux", "akış sıcaklığı ayarı", "Setpoint temperatura di mandata") MAKE_TRANSLATION(flowTempHc, "flowtemphc", "flow temperature (TC1)", "Vorlauftemperatur HK (TC1)", "Aanvoertemperatuut circuit (TC1)", "Flödestemperatur (TC1)", "temperatura zasilania (TC1)", "turtemperatur (TC1)", "température flux (TC1)", "akış sıcaklığı (TC1)", "temperatura di mandata (TC1)") @@ -797,36 +800,36 @@ MAKE_TRANSLATION(status, "status", "status", "Status", "Status", "Status", "stat MAKE_TRANSLATION(RFTemp, "rftemp", "RF room temperature sensor", "RF Raumtemperatur Sensor", "RF ruimtetemperatuur sensor", "RF Rumsgivare Temp", "bezprzewodowy czujnik temperatury pomieszczenia", "RF romsgiver temp", "capteur de température de pièce RF", "RF oda sıcaklık sensörü", "Sensore di temperatura ambiente RF") // ventilation -MAKE_TRANSLATION(outFresh, "outfresh", "outdoor fresh air", "Außenlufttemp.", "temperatuur buitenlucht", "", "", "", "", "dış ortam taze hava", "aria fresca esterna") // TODO translate -MAKE_TRANSLATION(inFresh, "infresh", "indoor fresh air", "Zulufttemp.", "temperatuur aanvoer", "", "", "", "", "iç ortam taze hava", "aria fresca interna") // TODO translate -MAKE_TRANSLATION(outEx, "outexhaust", "outdoor exhaust air", "Fortlufttemp.", "uitlaatemperatuur buiten", "", "", "", "", "dış ortam egsoz", "aria di scarico esterna") // TODO translate -MAKE_TRANSLATION(inEx, "inexhaust", "indoor exhaust air", "Ablufttemp.", "uitlaattemperatuur binnen", "", "", "", "", "iç ortam egsoz", "aria di scarico interna") // TODO translate -MAKE_TRANSLATION(ventMode, "ventmode", "ventilation mode", "Belüftungsmodus", "ventilatiemodus", "", "", "", "", "havalandırma modu", "modalità di ventilazione") // TODO translate -MAKE_TRANSLATION(ventInSpeed, "ventinspeed", "in blower speed", "Zuluft-Drehzahl", "toerental aanvoerventilator", "", "", "", "", "iç fan hızı", "velocità aria di alimentazione") // TODO translate -MAKE_TRANSLATION(ventOutSpeed, "ventoutspeed", "out blower speed", "Abluft-Drehzahl", "toerental afvoerventilator", "", "", "", "", "dış fan hızı", "velocità aria di scarico") // TODO translate -MAKE_TRANSLATION(airquality, "airquality", "air quality (voc)", "Luftqualität (VOC)", "luchtkwaliteit (VOC)", "", "", "", "", "hava kalitesi(voc)", "qualità aria (VOC)") // TODO translate +MAKE_TRANSLATION(outFresh, "outfresh", "outdoor fresh air", "Außenlufttemp.", "temperatuur buitenlucht", "", "świeże powietrze z zewnątrz", "", "", "dış ortam taze hava", "aria fresca esterna") // TODO translate +MAKE_TRANSLATION(inFresh, "infresh", "indoor fresh air", "Zulufttemp.", "temperatuur aanvoer", "", "nawiew", "", "", "iç ortam taze hava", "aria fresca interna") // TODO translate +MAKE_TRANSLATION(outEx, "outexhaust", "outdoor exhaust air", "Fortlufttemp.", "uitlaatemperatuur buiten", "", "zużyte powietrze z wewnątrz", "", "", "dış ortam egsoz", "aria di scarico esterna") // TODO translate +MAKE_TRANSLATION(inEx, "inexhaust", "indoor exhaust air", "Ablufttemp.", "uitlaattemperatuur binnen", "", "wywiew", "", "", "iç ortam egsoz", "aria di scarico interna") // TODO translate +MAKE_TRANSLATION(ventMode, "ventmode", "ventilation mode", "Belüftungsmodus", "ventilatiemodus", "", "tryb wentylacji", "", "", "havalandırma modu", "modalità di ventilazione") // TODO translate +MAKE_TRANSLATION(ventInSpeed, "ventinspeed", "in blower speed", "Zuluft-Drehzahl", "toerental aanvoerventilator", "", "prędkość wentylatora nawiewu", "", "", "iç fan hızı", "velocità aria di alimentazione") // TODO translate +MAKE_TRANSLATION(ventOutSpeed, "ventoutspeed", "out blower speed", "Abluft-Drehzahl", "toerental afvoerventilator", "", "prędjkość wentylatora wywiewu", "", "", "dış fan hızı", "velocità aria di scarico") // TODO translate +MAKE_TRANSLATION(airquality, "airquality", "air quality (voc)", "Luftqualität (VOC)", "luchtkwaliteit (VOC)", "", "jakość powietrza", "", "", "hava kalitesi(voc)", "qualità aria (VOC)") // TODO translate // EM100 -MAKE_TRANSLATION(minV, "minv", "min volt.", "min Spannung", "", "", "", "", "", "", "") // TODO translate -MAKE_TRANSLATION(maxV, "maxv", "max volt.", "max Spannung", "", "", "", "", "", "", "") // TODO translate -MAKE_TRANSLATION(minT, "mint", "min temp.", "min Temperatur", "", "", "", "", "", "", "") // TODO translate -MAKE_TRANSLATION(maxT, "maxt", "max temp.", "max Temperatur", "", "", "", "", "", "", "") // TODO translate -MAKE_TRANSLATION(setPoint, "setpoint", "set temp.", "Sollemperatur", "", "", "", "", "", "", "") // TODO translate -MAKE_TRANSLATION(setPower, "setpower", "request power", "Sollleistung", "", "", "", "", "", "", "") // TODO translate -MAKE_TRANSLATION(dip, "dip", "dip switch", "dip Schalter", "", "", "", "", "", "", "") // TODO translate -MAKE_TRANSLATION(outPower, "outpow", "output IO1", "Ausgang IO1", "", "", "", "", "", "", "") // TODO translate -MAKE_TRANSLATION(input, "input", "input", "Eingang", "", "", "", "", "", "", "") // TODO translate +MAKE_TRANSLATION(minV, "minv", "min volt.", "min Spannung", "", "", "minimalne napięcie", "", "", "", "") // TODO translate +MAKE_TRANSLATION(maxV, "maxv", "max volt.", "max Spannung", "", "", "maksymalne napięcie", "", "", "", "") // TODO translate +MAKE_TRANSLATION(minT, "mint", "min temp.", "min Temperatur", "", "", "minimalna temperatura", "", "", "", "") // TODO translate +MAKE_TRANSLATION(maxT, "maxt", "max temp.", "max Temperatur", "", "", "maksymalna temperatura", "", "", "", "") // TODO translate +MAKE_TRANSLATION(setPoint, "setpoint", "set temp.", "Sollemperatur", "", "", "temperatura nastawu", "", "", "", "") // TODO translate +MAKE_TRANSLATION(setPower, "setpower", "request power", "Sollleistung", "", "", "zadana moc", "", "", "", "") // TODO translate +MAKE_TRANSLATION(dip, "dip", "dip switch", "dip Schalter", "", "", "przełącznik DIP", "", "", "", "") // TODO translate +MAKE_TRANSLATION(outPower, "outpow", "output IO1", "Ausgang IO1", "", "", "wyjście IO1", "", "", "", "") // TODO translate +MAKE_TRANSLATION(input, "input", "input", "Eingang", "", "", "wejście", "", "", "", "") // TODO translate /* // unknown fields to track (SM10), only for testing // **** NO TRANSLATION NEEDED **** -MAKE_TRANSLATION(data11, "data11", "unknown datafield 11", "", "", "", "", "", "", "", "") -MAKE_TRANSLATION(data12, "data12", "unknown datafield 12", "", "", "", "", "", "", "", "") -MAKE_TRANSLATION(data8, "data8", "unknown datafield 8", "", "", "", "", "", "", "", "") -MAKE_TRANSLATION(data0, "data0", "unknown datafield 0", "", "", "", "", "", "", "", "") -MAKE_TRANSLATION(data1, "data1", "unknown datafield 1", "", "", "", "", "", "", "", "") -MAKE_TRANSLATION(setting3, "setting3", "unknown setting 3", "", "", "", "", "", "", "", "") -MAKE_TRANSLATION(setting4, "setting4", "unknown setting 4", "", "", "", "", "", "", "", "") +MAKE_TRANSLATION(data11, "data11", "unknown datafield 11", "", "", "", "nieznane pole danych 11", "", "", "", "") +MAKE_TRANSLATION(data12, "data12", "unknown datafield 12", "", "", "", "nieznane pole danych 12", "", "", "", "") +MAKE_TRANSLATION(data8, "data8", "unknown datafield 8", "", "", "", "nieznane pole danych 8", "", "", "", "") +MAKE_TRANSLATION(data0, "data0", "unknown datafield 0", "", "", "", "nieznane pole danych 0", "", "", "", "") +MAKE_TRANSLATION(data1, "data1", "unknown datafield 1", "", "", "", "nieznane pole danych 1", "", "", "", "") +MAKE_TRANSLATION(setting3, "setting3", "unknown setting 3", "", "", "", "nieznane ustawienie 3", "", "", "", "") +MAKE_TRANSLATION(setting4, "setting4", "unknown setting 4", "", "", "", "nieznane ustawienie 4", "", "", "", "") */ // clang-format on From 14b3b058fed37a3f73bef1699554655378e13e6d Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 5 Nov 2023 14:22:37 +0100 Subject: [PATCH 08/91] remove unused water values temp_2, temp_6 --- src/devices/water.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/devices/water.cpp b/src/devices/water.cpp index 486af763b..8147478f6 100644 --- a/src/devices/water.cpp +++ b/src/devices/water.cpp @@ -39,11 +39,11 @@ Water::Water(uint8_t device_type, uint8_t device_id, uint8_t product_id, const c register_telegram_type(0x07E0, "SM100wwStatus2", true, MAKE_PF_CB(process_SM100wwStatus2)); // device values... register_device_value(tag, &wwTemp_1_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp1), DeviceValueUOM::DEGREES); - register_device_value(tag, &wwTemp_2_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp2), DeviceValueUOM::DEGREES); + // register_device_value(tag, &wwTemp_2_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp2), DeviceValueUOM::DEGREES); register_device_value(tag, &wwTemp_3_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp3), DeviceValueUOM::DEGREES); register_device_value(tag, &wwTemp_4_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp4), DeviceValueUOM::DEGREES); register_device_value(tag, &wwTemp_5_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp5), DeviceValueUOM::DEGREES); - register_device_value(tag, &wwTemp_6_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp6), DeviceValueUOM::DEGREES); + // register_device_value(tag, &wwTemp_6_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp6), DeviceValueUOM::DEGREES); register_device_value(tag, &wwTemp_7_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp7), DeviceValueUOM::DEGREES); register_device_value(tag, &wwPump_, DeviceValueType::BOOL, FL_(wwPump), DeviceValueUOM::NONE); register_device_value(tag, &wwMaxTemp_, DeviceValueType::UINT, FL_(wwMaxTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwMaxTemp)); From b6543169dec7a92406048460125562df771a90b0 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 5 Nov 2023 14:23:40 +0100 Subject: [PATCH 09/91] boiler add input states, remove redundant activity states --- src/devices/boiler.cpp | 24 ++++++++++++------------ src/devices/boiler.h | 8 ++++---- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index ea7f9cc09..d68d7f0a4 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -470,10 +470,10 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpPower_, DeviceValueType::UINT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(hpPower), DeviceValueUOM::KW); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpCompOn_, DeviceValueType::BOOL, FL_(hpCompOn), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpActivity_, DeviceValueType::ENUM, FL_(enum_hpactivity), FL_(hpActivity), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpHeatingOn_, DeviceValueType::BOOL, FL_(hpHeatingOn), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpCoolingOn_, DeviceValueType::BOOL, FL_(hpCoolingOn), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &hpWwOn_, DeviceValueType::BOOL, FL_(hpWwOn), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpPoolOn_, DeviceValueType::BOOL, FL_(hpPoolOn), DeviceValueUOM::NONE); + // register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpHeatingOn_, DeviceValueType::BOOL, FL_(hpHeatingOn), DeviceValueUOM::NONE); + // register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpCoolingOn_, DeviceValueType::BOOL, FL_(hpCoolingOn), DeviceValueUOM::NONE); + // register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &hpWwOn_, DeviceValueType::BOOL, FL_(hpWwOn), DeviceValueUOM::NONE); + // register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpPoolOn_, DeviceValueType::BOOL, FL_(hpPoolOn), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpBrinePumpSpd_, DeviceValueType::UINT, FL_(hpBrinePumpSpd), DeviceValueUOM::PERCENT); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpSwitchValve_, DeviceValueType::BOOL, FL_(hpSwitchValve), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpCompSpd_, DeviceValueType::UINT, FL_(hpCompSpd), DeviceValueUOM::PERCENT); @@ -511,7 +511,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const FL_(poolSetTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_pool_temp)); - // register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpInput[0].state, DeviceValueType::BOOL, FL_(hpInput1), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpInput[0].state, DeviceValueType::BOOL, FL_(hpInput1), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpInput[0].option, DeviceValueType::STRING, @@ -519,7 +519,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const FL_(hpIn1Opt), DeviceValueUOM::NONE, MAKE_CF_CB(set_HpIn1Logic)); - // register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpInput[1].state, DeviceValueType::BOOL, FL_(hpInput2), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpInput[1].state, DeviceValueType::BOOL, FL_(hpInput2), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpInput[1].option, DeviceValueType::STRING, @@ -527,7 +527,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const FL_(hpIn2Opt), DeviceValueUOM::NONE, MAKE_CF_CB(set_HpIn2Logic)); - // register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpInput[2].state, DeviceValueType::BOOL, FL_(hpInput3), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpInput[2].state, DeviceValueType::BOOL, FL_(hpInput3), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpInput[2].option, DeviceValueType::STRING, @@ -535,7 +535,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const FL_(hpIn3Opt), DeviceValueUOM::NONE, MAKE_CF_CB(set_HpIn3Logic)); - // register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpInput[3].state, DeviceValueType::BOOL, FL_(hpInput4), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpInput[3].state, DeviceValueType::BOOL, FL_(hpInput4), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpInput[3].option, DeviceValueType::STRING, @@ -1515,10 +1515,10 @@ void Boiler::process_HpPower(std::shared_ptr telegram) { has_bitupdate(telegram, hpSwitchValve_, 0, 4); has_update(telegram, hpActivity_, 7); - has_update(hpHeatingOn_, hpActivity_ == 1 ? 0xFF : 0); - has_update(hpCoolingOn_, hpActivity_ == 2 ? 0xFF : 0); - has_update(hpWwOn_, hpActivity_ == 3 ? 0xFF : 0); - has_update(hpPoolOn_, hpActivity_ == 4 ? 0xFF : 0); + // has_update(hpHeatingOn_, hpActivity_ == 1 ? 0xFF : 0); + // has_update(hpCoolingOn_, hpActivity_ == 2 ? 0xFF : 0); + // has_update(hpWwOn_, hpActivity_ == 3 ? 0xFF : 0); + // has_update(hpPoolOn_, hpActivity_ == 4 ? 0xFF : 0); } // Heatpump temperatures - type 0x48F diff --git a/src/devices/boiler.h b/src/devices/boiler.h index b48d00ccf..ee663446d 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -192,10 +192,10 @@ class Boiler : public EMSdevice { uint16_t hpBrineOut_; uint8_t hpSwitchValve_; uint8_t hpActivity_; - uint8_t hpHeatingOn_; - uint8_t hpCoolingOn_; - uint8_t hpWwOn_; - uint8_t hpPoolOn_; + // uint8_t hpHeatingOn_; + // uint8_t hpCoolingOn_; + // uint8_t hpWwOn_; + // uint8_t hpPoolOn_; int16_t hpTc0_; int16_t hpTc1_; int16_t hpTc3_; From 037a9848bc5b66bcbbd40dbea6bae56f23aff8d7 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 5 Nov 2023 14:24:39 +0100 Subject: [PATCH 10/91] version 3.6.3-dev.6c --- src/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/version.h b/src/version.h index bc84578b1..1408b4ce6 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.6.3-dev.6b" +#define EMSESP_APP_VERSION "3.6.3-dev.6c" From 188bfa4525460244825288f46527f0bbec9b1004 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 5 Nov 2023 15:57:02 +0100 Subject: [PATCH 11/91] add hp 4-way valve --- src/devices/boiler.cpp | 2 ++ src/devices/boiler.h | 1 + src/locale_common.h | 1 + src/locale_translations.h | 2 +- 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index d68d7f0a4..b736c54de 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -511,6 +511,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const FL_(poolSetTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_pool_temp)); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hp4wayValve_, DeviceValueType::ENUM, FL_(enum_4way), FL_(hp4wayValve), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpInput[0].state, DeviceValueType::BOOL, FL_(hpInput1), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpInput[0].option, @@ -1551,6 +1552,7 @@ void Boiler::process_HpPool(std::shared_ptr telegram) { // Boiler(0x08) -> All(0x00), ?(0x04A2), data: 02 01 01 00 01 00 // Boiler(0x08) -W-> Me(0x0B), HpInput(0x04A2), data: 20 07 06 01 00 (from #802) void Boiler::process_HpInput(std::shared_ptr telegram) { + has_bitupdate(telegram, hp4wayValve_, 0, 7); has_update(telegram, hpInput[0].state, 2); has_update(telegram, hpInput[1].state, 3); has_update(telegram, hpInput[2].state, 4); diff --git a/src/devices/boiler.h b/src/devices/boiler.h index ee663446d..82af489a8 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -263,6 +263,7 @@ class Boiler : public EMSdevice { uint8_t primePump_; uint8_t primePumpMod_; uint8_t hp3wayValve_; + uint8_t hp4wayValve_; uint8_t elHeatStep1_; uint8_t elHeatStep2_; uint8_t elHeatStep3_; diff --git a/src/locale_common.h b/src/locale_common.h index 1184a2269..65119020f 100644 --- a/src/locale_common.h +++ b/src/locale_common.h @@ -343,6 +343,7 @@ MAKE_ENUM(enum_lowNoiseMode, FL_(off), FL_(reduced_output), FL_(switchoff), FL_( // heat pump MAKE_ENUM(enum_hpactivity, FL_(none), FL_(heating), FL_(cooling), FL_(hot_water), FL_(pool), FL_(unknown), FL_(defrost)) MAKE_ENUM(enum_silentMode, FL_(off), FL_(auto), FL_(on)) +MAKE_ENUM(enum_4way, FL_(heat_ww), FL_(cool_defrost)) // solar MAKE_ENUM(enum_solarmode, FL_(constant), FL_(pwm), FL_(analog)) diff --git a/src/locale_translations.h b/src/locale_translations.h index 11619e8a5..afc0acf73 100644 --- a/src/locale_translations.h +++ b/src/locale_translations.h @@ -444,7 +444,7 @@ MAKE_TRANSLATION(VC0valve, "vc0valve", "VC0 valve", "VC0 Ventil", "Klep VC0", "" MAKE_TRANSLATION(primePump, "primepump", "primary heatpump", "Hauptpumpe", "Hoofdpomp", "", "główna pompa ciepła", "primærpumpe", "", "ana ısı pompası", "pompa principale riscaldamento") // TODO translate MAKE_TRANSLATION(primePumpMod, "primepumpmod", "primary heatpump modulation", "Modulation Hauptpumpe", "Modulatie hoofdpomp", "", "wysterowanie głównej pompy ciepła", "primærpumpelast", "", "ana ısı pompası modülasyon", "pompa principale modulazione riscaldamento") // TODO translate MAKE_TRANSLATION(hp3wayValve, "hp3way", "3-way valve", "3-Wege-Ventil", "3-weg klep", "", "zawór 3-drogowy pompy ciepła", "3-veisventil", "", "3 yollu vana", "valvola 3-vie") // TODO translate -MAKE_TRANSLATION(hp4wayValve, "hp4way", "4-way valve", "4-Wege-Ventil", "4-weg klep", "", "zawór 4-drogowy pompy ciepła", "4-veisventil", "", "4 yollu vana", "valvola 4-vie") // TODO translate +MAKE_TRANSLATION(hp4wayValve, "hp4way", "4-way valve (VR4)", "4-Wege-Ventil (VR4)", "4-weg klep (VR4)", "(VR4)", "zawór 4-drogowy pompy ciepła (VR4)", "4-veisventil (VR4)", "(VR4)", "4 yollu vana (VR4)", "valvola 4-vie (VR4)") // TODO translate MAKE_TRANSLATION(elHeatStep1, "elheatstep1", "el. heater step 1", "El. Heizer Stufe 1", "Electrische bijverwarmer niveau 1", "", "dogrzewacz poziom 1", "el-kolbe steg 1", "", "el.ısıtıcı adım 1", "riscaldatore elettrico livello 1") // TODO translate MAKE_TRANSLATION(elHeatStep2, "elheatstep2", "el. heater step 2", "El. Heizer Stufe 2", "Electrische bijverwarmer niveau 2", "", "dogrzewacz poziom 2", "el-kolbe steg 2", "", "el.ısıtıcı adım 2", "riscaldatore elettrico livello 2") // TODO translate MAKE_TRANSLATION(elHeatStep3, "elheatstep3", "el. heater step 3", "El. Heizer Stufe 3", "Electrische bijverwarmer niveau 3", "", "dogrzewacz poziom 3", "el-kolbe steg 3", "", "el.ısıtıcı adım 3", "riscaldatore elettrico livello 3") // TODO translate From 338091578b1a5546ef2fc28bc54b8a246aec47ff Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Tue, 7 Nov 2023 07:06:05 +0100 Subject: [PATCH 12/91] wwEcoPlus, rename some water entities --- src/devices/boiler.h | 6 ++++-- src/devices/water.cpp | 11 ++++++----- src/devices/water.h | 1 + src/locale_translations.h | 9 +++++---- src/temperaturesensor.cpp | 16 ++++++++++------ 5 files changed, 26 insertions(+), 17 deletions(-) diff --git a/src/devices/boiler.h b/src/devices/boiler.h index 82af489a8..eecef4c48 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -53,10 +53,11 @@ class Boiler : public EMSdevice { // ww uint8_t wwSetTemp_; // DHW set temperature - uint8_t wwSelTemp_; // DHW selected temperature - uint8_t wwSelTempLow_; // DHW lower selected temperature + uint8_t wwSelTemp_; // DHW selected temperature (comfort) + uint8_t wwSelTempLow_; // DHW lower selected temperature (eco) uint8_t wwSelTempOff_; // DHW selected temperature for off position uint8_t wwSelTempSingle_; // DHW single charge temperature + uint8_t wwSelTempEcoplus_; // DHW ECO+ temperature uint8_t wwType_; // 0-off, 1-flow, 2-flowbuffer, 3-buffer, 4-layered buffer uint8_t wwComfort_; // WW comfort mode uint8_t wwComfort1_; // WW comfort mode RC310 @@ -356,6 +357,7 @@ class Boiler : public EMSdevice { bool set_ww_circulation_mode(const char * value, const int8_t id); bool set_ww_temp(const char * value, const int8_t id); bool set_ww_temp_low(const char * value, const int8_t id); + bool set_ww_temp_eco(const char * value, const int8_t id); bool set_ww_temp_single(const char * value, const int8_t id); bool set_ww_disinfect_temp(const char * value, const int8_t id); bool set_ww_maxpower(const char * value, const int8_t id); diff --git a/src/devices/water.cpp b/src/devices/water.cpp index 8147478f6..9279c4959 100644 --- a/src/devices/water.cpp +++ b/src/devices/water.cpp @@ -52,7 +52,7 @@ Water::Water(uint8_t device_type, uint8_t device_id, uint8_t product_id, const c register_device_value(tag, &wwDailyTemp_, DeviceValueType::UINT, FL_(wwDailyTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwDailyTemp)); register_device_value(tag, &wwDisinfectionTemp_, DeviceValueType::UINT, FL_(wwDisinfectionTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwDisinfectionTemp)); register_device_value(tag, &wwCirc_, DeviceValueType::BOOL, FL_(wwCirc), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwCirc)); - register_device_value(tag, &wwCircMode_, DeviceValueType::ENUM, FL_(enum_wwCircMode), FL_(wwCircMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwCircMode)); + register_device_value(tag, &wwCircMode_, DeviceValueType::ENUM, FL_(enum_freq), FL_(wwCircMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwCircMode)); register_device_value(tag, &wwKeepWarm_, DeviceValueType::BOOL, FL_(wwKeepWarm), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwKeepWarm)); register_device_value(tag, &wwStatus2_, DeviceValueType::ENUM, FL_(enum_wwStatus2), FL_(wwStatus2), DeviceValueUOM::NONE); register_device_value(tag, &wwPumpMod_, DeviceValueType::UINT, FL_(wwPumpMod), DeviceValueUOM::PERCENT); @@ -100,12 +100,13 @@ Water::Water(uint8_t device_type, uint8_t device_id, uint8_t product_id, const c // Solar Module(0x2A) -> (0x00), (0x7D6), data: 01 C1 00 00 02 5B 01 AF 01 AD 80 00 01 90 void Water::process_SM100wwTemperature(std::shared_ptr telegram) { has_update(telegram, wwTemp_1_, 0); // is *10 - has_update(telegram, wwTemp_2_, 2); // is *10 - has_update(telegram, wwTemp_3_, 4); // is *10 - has_update(telegram, wwTemp_4_, 6); // is *10 + has_update(telegram, wwTemp_2_, 2); // is *10 always zero + has_update(telegram, wwTemp_3_, 4); // is *10 TS21 + has_update(telegram, wwTemp_4_, 6); // is *10 cold water has_update(telegram, wwTemp_5_, 8); // is *10 - has_update(telegram, wwTemp_6_, 10); // is *10 + has_update(telegram, wwTemp_6_, 10); // is *10 always unset 8000 has_update(telegram, wwTemp_7_, 12); // is *10 + has_update(telegram, wwTemp_8_, 14); // is *10, return temp TS22 } // SM100wwStatus - 0x07AA diff --git a/src/devices/water.h b/src/devices/water.h index c39c252fe..795c39f27 100644 --- a/src/devices/water.h +++ b/src/devices/water.h @@ -40,6 +40,7 @@ class Water : public EMSdevice { uint16_t wwTemp_5_; uint16_t wwTemp_6_; uint16_t wwTemp_7_; + uint16_t wwTemp_8_; // SM100wwStatus - 0x07AA uint8_t wwPump_; diff --git a/src/locale_translations.h b/src/locale_translations.h index afc0acf73..e439bfb5b 100644 --- a/src/locale_translations.h +++ b/src/locale_translations.h @@ -383,7 +383,7 @@ MAKE_TRANSLATION(hpCircSpd, "hpcircspd", "circulation pump speed", "Zirkulations MAKE_TRANSLATION(hpBrineIn, "hpbrinein", "brine in/evaporator", "Sole in/Verdampfer", "pekel in/verdamper", "Brine in (förangare)", "temperatura glikolu na wejściu kolektora (TB0)", "brine in/fordamper", "entrée saumure/évaporateur", "kondenser tuzlu su çıkışı", "salamoia nell evaporatore") MAKE_TRANSLATION(hpBrineOut, "hpbrineout", "brine out/condenser", "Sole aus/Kondensator", "pekel uit/condensor", "Brine ut (kondensor)", "temperatura glikolu na wyjściu kolektora (TB1)", "Brine ut/kondensor", "sortie saumure/condenseur", "anahtar valfi", "salamoia nell uscita evaporatore") MAKE_TRANSLATION(hpSwitchValve, "hpswitchvalve", "switch valve", "Schaltventil", "schakelklep", "Växelventil", "zawór przełączający", "skifteventil", "valve de commutation", "ısı pompası aktivitesi", "valvola commutazione pompa di calore") -MAKE_TRANSLATION(hpActivity, "hpactivity", "compressor activity", "Kompressoraktivität", "Compressoractiviteit", "Kompressoraktivitet", "pompa ciepła, aktywność sprężarki", "kompressoraktivitet", "", "hp ısı pompası", "attività compressore") +MAKE_TRANSLATION(hpActivity, "hpactivity", "compressor activity", "Kompressor-Betriebsmodus", "Compressoractiviteit", "Kompressoraktivitet", "pompa ciepła, aktywność sprężarki", "kompressoraktivitet", "", "hp ısı pompası", "attività compressore") MAKE_TRANSLATION(hpPower, "hppower", "compressor power output", "Kompressorleistung", "Compressorvermogen", "Kompressoreffekt", "moc wyjściowa sprężarki", "kompressoreffekt", "puissance de sortie compresseur", "ısı pompası güç çıkışı", "potenza uscita compressore") MAKE_TRANSLATION(hpTc0, "hptc0", "heat carrier return (TC0)", "Kältemittel Rücklauf (TC0)", "Koudemiddel retour (TC0)", "Värmebärare Retur (TC0)", "temperatura nośnika ciepła na powrocie (TC0)", "kjølemiddel retur (TC0)", "retour caloporteur (TC0)", "sıcak su dönüşü (TC0)", "ritorno del refrigerante (TC0)") @@ -529,6 +529,7 @@ MAKE_TRANSLATION(wwValve, "wwvalve", "valve", "Ventil", "", "", "zawór", "", "" // the following are dhw for the boiler and automatically tagged with 'dhw' MAKE_TRANSLATION(wwSelTemp, "wwseltemp", "selected temperature", "gewählte Temperatur", "Geselecteerd temperatuur", "Vald Temperatur", "temperatura wyższa/komfort", "valgt temperatur", "température sélectionnée", "seçili sıcaklık", "temperatura selezionata") MAKE_TRANSLATION(wwSelTempLow, "wwseltemplow", "selected lower temperature", "untere Solltemperatur", "Onderste streeftemperatuur", "Vald lägstatemperatur", "temperatura niższa/eko", "valgt nedre temperatur", "température basse sélectionnée", "seçili düşük sıcaklık", "bassa temperatura selezionata") +MAKE_TRANSLATION(wwSelTempEco, "wwtempecoplus", "selected eco+ temperature", "ECO+ Solltemperatur", "eco+ streeftemperatuur", "eco+ lägstatemperatur", "temperatura niższa/eko+", "valgt eco+ temperatur", "température eco+ sélectionnée", "seçili eco+ sıcaklık", "eco+ temperatura selezionata") MAKE_TRANSLATION(wwSelTempOff, "wwseltempoff", "selected temperature for off", "Solltemperatur bei AUS", "Streeftemperatuur bij UIT", "Vald tempereatur för AV", "temperatura gdy grzanie wyłączone", "valgt tempereatur for av", "température sélectionnée pour arrêt", "kapanma için seçili sıcaklık", "temperatura selezionata per spegnimento") MAKE_TRANSLATION(wwSelTempSingle, "wwseltempsingle", "single charge temperature", "Solltemperatur Einmalladung", "Streeftemperatuur enkele lading", "Temperatur Engångsladdning", "temperatura dodatkowej ciepłej wody", "temp engangsoppvarming", "température charge unique", "tek şarj sıcaklığı", "temperatura singolaa carica") MAKE_TRANSLATION(wwCylMiddleTemp, "wwcylmiddletemp", "cylinder middle temperature (TS3)", "Speichertemperatur Mitte", "Buffer temperatuur midden", "Cylinder Temperatur Mitten (TS3)", "temperatura środka cylindra (TS3)", "vanntank midten temperatur (TS3)", "température moyenne ballon (TS3)", "Silindir orta sıcaklığı", "temperatura centrale accumulo (TS3)") @@ -737,10 +738,10 @@ MAKE_TRANSLATION(energyTotal, "energytotal", "total energy", "Gesamtenergie", "T MAKE_TRANSLATION(energyToday, "energytoday", "total energy today", "Energie heute", "Energie vandaag", "Total Energi Idag", "energia całkowita dzisiaj", "total energi i dag", "énergie totale aujourd'hui", "bugün toplam enerji", "totale energia giornaliera") // solar ww -MAKE_TRANSLATION(wwTemp1, "wwtemp1", "temperature 1", "Temperatur 1", "Temperatuur 1", "Temperatur 1", "temperatura 1", "temperatur 1", "température 1", "sıcaklık 1", "Temperatura 1") +MAKE_TRANSLATION(wwTemp1, "wwtemp1", "temperature 1(TS17)", "Temperatur 1", "Temperatuur 1", "Temperatur 1", "temperatura 1", "temperatur 1", "température 1", "sıcaklık 1", "Temperatura 1") MAKE_TRANSLATION(wwTemp2, "wwtemp2", "temperature 2", "Temperatur 2", "Temperatuur 2", "Temperatur 2", "temperatura 2", "temperatur 2", "température 2", "sıcaklık 2", "Temperatura 2") -MAKE_TRANSLATION(wwTemp3, "wwtemp3", "temperature 3", "Temperatur 3", "Temperatuur 3", "Temperatur 3", "temperatura 3", "Temperatur 3", "température 3", "sıcaklık 3", "Temperatura 3") -MAKE_TRANSLATION(wwTemp4, "wwtemp4", "temperature 4", "Temperatur 4", "Temperatuur 4", "Temperatur 4", "temperatura 4", "Temperatur 4", "température 4", "sıcaklık 4", "Temperatura 4") +MAKE_TRANSLATION(wwTemp3, "wwtemp3", "temperature 3 (TS21)", "Temperatur 3", "Temperatuur 3", "Temperatur 3", "temperatura 3", "Temperatur 3", "température 3", "sıcaklık 3", "Temperatura 3") +MAKE_TRANSLATION(wwTemp4, "wwtemp4", "cold water", "Temperatur 4", "Temperatuur 4", "Temperatur 4", "temperatura 4", "Temperatur 4", "température 4", "sıcaklık 4", "Temperatura 4") MAKE_TRANSLATION(wwTemp5, "wwtemp5", "temperature 5", "Temperatur 5", "Temperatuur 5", "Temperatur 5", "temperatura 5", "Temperatur 5", "température 5", "sıcaklık 5", "Temperatura 5") MAKE_TRANSLATION(wwTemp6, "wwtemp6", "temperature 1", "Temperatur 6", "Temperatuur 6", "Temperatur 6", "temperatura 6", "temperatur 6", "température 6", "sıcaklık 6", "Temperatura 6") MAKE_TRANSLATION(wwTemp7, "wwtemp7", "temperature 7", "Temperatur 7", "Temperatuur 7", "Temperatur 7", "temperatura 7", "Temperatur 7", "température 7", "sıcaklık 7", "Temperatura 7") diff --git a/src/temperaturesensor.cpp b/src/temperaturesensor.cpp index 4aa1d8cc7..42dfc8544 100644 --- a/src/temperaturesensor.cpp +++ b/src/temperaturesensor.cpp @@ -63,7 +63,9 @@ void TemperatureSensor::start() { [&](const char * value, const int8_t id, JsonObject & output) { return command_commands(value, id, output); }, FL_(commands_cmd)); - Mqtt::subscribe(EMSdevice::DeviceType::TEMPERATURESENSOR, "temperaturesensor/#", nullptr); // use empty function callback + char topic[Mqtt::MQTT_TOPIC_MAX_SIZE]; + snprintf(topic, sizeof(topic), "%s/#", F_(temperaturesensor)); + Mqtt::subscribe(EMSdevice::DeviceType::TEMPERATURESENSOR, topic, nullptr); // use empty function callback } // load settings @@ -511,7 +513,7 @@ void TemperatureSensor::publish_values(const bool force) { config["dev_cla"] = "temperature"; char stat_t[50]; - snprintf(stat_t, sizeof(stat_t), "%s/temperaturesensor_data", Mqtt::basename().c_str()); + snprintf(stat_t, sizeof(stat_t), "%s/%s_data", Mqtt::base().c_str(), F_(temperaturesensor)); // use base path config["stat_t"] = stat_t; config["unit_of_meas"] = EMSdevice::uom_to_string(DeviceValueUOM::DEGREES); @@ -529,9 +531,9 @@ void TemperatureSensor::publish_values(const bool force) { char uniq_s[70]; if (Mqtt::entity_format() == Mqtt::entityFormat::MULTI_SHORT) { - snprintf(uniq_s, sizeof(uniq_s), "%s_temperaturesensor_%s", Mqtt::basename().c_str(), sensor.id().c_str()); + snprintf(uniq_s, sizeof(uniq_s), "%s_%s_%s", Mqtt::basename().c_str(), F_(temperaturesensor), sensor.id().c_str()); } else { - snprintf(uniq_s, sizeof(uniq_s), "temperaturesensor_%s", sensor.id().c_str()); + snprintf(uniq_s, sizeof(uniq_s), "%s_%s", F_(temperaturesensor), sensor.id().c_str()); } config["obj_id"] = uniq_s; @@ -553,14 +555,16 @@ void TemperatureSensor::publish_values(const bool force) { std::string sensorid = sensor.id(); std::replace(sensorid.begin(), sensorid.end(), '-', '_'); - snprintf(topic, sizeof(topic), "sensor/%s/temperaturesensor_%s/config", Mqtt::basename().c_str(), sensorid.c_str()); + snprintf(topic, sizeof(topic), "sensor/%s/%s_%s/config", Mqtt::basename().c_str(), F_(temperaturesensor), sensorid.c_str()); sensor.ha_registered = Mqtt::queue_ha(topic, config.as()); } } } - Mqtt::queue_publish("temperaturesensor_data", doc.as()); + char topic[Mqtt::MQTT_TOPIC_MAX_SIZE]; + snprintf(topic, sizeof(topic), "%s_data", F_(temperaturesensor)); + Mqtt::queue_publish(topic, doc.as()); } From caca8bf8026a46c2300d4d073b9ed519cab44a31 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Tue, 7 Nov 2023 07:10:49 +0100 Subject: [PATCH 13/91] fix 4-way-valve enum --- src/locale_common.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locale_common.h b/src/locale_common.h index 65119020f..0cbae93b2 100644 --- a/src/locale_common.h +++ b/src/locale_common.h @@ -343,7 +343,7 @@ MAKE_ENUM(enum_lowNoiseMode, FL_(off), FL_(reduced_output), FL_(switchoff), FL_( // heat pump MAKE_ENUM(enum_hpactivity, FL_(none), FL_(heating), FL_(cooling), FL_(hot_water), FL_(pool), FL_(unknown), FL_(defrost)) MAKE_ENUM(enum_silentMode, FL_(off), FL_(auto), FL_(on)) -MAKE_ENUM(enum_4way, FL_(heat_ww), FL_(cool_defrost)) +MAKE_ENUM(enum_4way, FL_(cool_defrost), FL_(heat_ww)) // solar MAKE_ENUM(enum_solarmode, FL_(constant), FL_(pwm), FL_(analog)) From a8a12dd1f8e34a2e810dae353d6fe4b79b5ce0e7 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Tue, 7 Nov 2023 11:44:37 +0100 Subject: [PATCH 14/91] check second servicecode-char for nonascii 0xF0. --- src/devices/boiler.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index b736c54de..91b2d6750 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -1300,6 +1300,7 @@ void Boiler::process_UBAMonitorFastPlus(std::shared_ptr telegram telegram->read_value(serviceCode[0], 1); serviceCode[0] = (serviceCode[0] == (char)0xF0) ? '~' : serviceCode[0]; telegram->read_value(serviceCode[1], 2); + serviceCode[1] = (serviceCode[1] == (char)0xF0) ? '~' : serviceCode[1]; telegram->read_value(serviceCode[2], 3); serviceCode[3] = '\0'; has_update(serviceCode_, serviceCode, sizeof(serviceCode_)); From c3f487eced0b2a3c19e5f31f156e98e82921d810 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Tue, 7 Nov 2023 12:49:46 +0100 Subject: [PATCH 15/91] update packages --- interface/package.json | 12 +-- interface/yarn.lock | 213 +++++++++++++++++++++-------------------- 2 files changed, 117 insertions(+), 108 deletions(-) diff --git a/interface/package.json b/interface/package.json index 55aa635ae..d31feae48 100644 --- a/interface/package.json +++ b/interface/package.json @@ -24,12 +24,12 @@ "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", "@mui/icons-material": "^5.14.16", - "@mui/material": "^5.14.16", + "@mui/material": "^5.14.17", "@table-library/react-table-library": "4.1.7", - "@types/imagemin": "^8.0.3", - "@types/lodash-es": "^4.17.10", + "@types/imagemin": "^8.0.4", + "@types/lodash-es": "^4.17.11", "@types/node": "^20.8.10", - "@types/react": "^18.2.35", + "@types/react": "^18.2.36", "@types/react-dom": "^18.2.14", "@types/react-router-dom": "^5.3.3", "alova": "^2.13.1", @@ -51,8 +51,8 @@ "devDependencies": { "@preact/compat": "^17.1.2", "@preact/preset-vite": "^2.6.0", - "@typescript-eslint/eslint-plugin": "^6.9.1", - "@typescript-eslint/parser": "^6.9.1", + "@typescript-eslint/eslint-plugin": "^6.10.0", + "@typescript-eslint/parser": "^6.10.0", "concurrently": "^8.2.2", "eslint": "^8.53.0", "eslint-config-airbnb": "^19.0.4", diff --git a/interface/yarn.lock b/interface/yarn.lock index 8aaf2043c..79454544e 100644 --- a/interface/yarn.lock +++ b/interface/yarn.lock @@ -794,14 +794,14 @@ __metadata: languageName: node linkType: hard -"@mui/base@npm:5.0.0-beta.22": - version: 5.0.0-beta.22 - resolution: "@mui/base@npm:5.0.0-beta.22" +"@mui/base@npm:5.0.0-beta.23": + version: 5.0.0-beta.23 + resolution: "@mui/base@npm:5.0.0-beta.23" dependencies: "@babel/runtime": "npm:^7.23.2" "@floating-ui/react-dom": "npm:^2.0.2" "@mui/types": "npm:^7.2.8" - "@mui/utils": "npm:^5.14.16" + "@mui/utils": "npm:^5.14.17" "@popperjs/core": "npm:^2.11.8" clsx: "npm:^2.0.0" prop-types: "npm:^15.8.1" @@ -812,14 +812,14 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: e93199464a7934637b84f3c6cd96898587ab4d3fba8843ee99ea88c656a0cef6c778e3d0eb6d82a6f120f501371007baa72648743e2ebd37bffa9d162dd0f8a7 + checksum: 5219132b1e4ba027736cb8f2f22ecccc69a883016679f00db1cf79f82614b0cc6466b9f437bab67c043041ee9d5e01d84249896c2c8771a045da7e60639d4b44 languageName: node linkType: hard -"@mui/core-downloads-tracker@npm:^5.14.16": - version: 5.14.16 - resolution: "@mui/core-downloads-tracker@npm:5.14.16" - checksum: 26d691d20eabc7f0f23d4fc4bc21f247dde43ab86c5f3e57201ed63afbb67dba94e0b0e80cb8f2f0e6f6e1ba94e46853f0ca6ab593d558a749bde843ec1d4aa6 +"@mui/core-downloads-tracker@npm:^5.14.17": + version: 5.14.17 + resolution: "@mui/core-downloads-tracker@npm:5.14.17" + checksum: dfa5ffe6e370ad9490cbe03b964967271462f7fb74c09e29e6fe09042f15ddec9a976f5131ce01b003dba1d66b70a6af026b0a1929db50124c783d7df45b06b6 languageName: node linkType: hard @@ -839,16 +839,16 @@ __metadata: languageName: node linkType: hard -"@mui/material@npm:^5.14.16": - version: 5.14.16 - resolution: "@mui/material@npm:5.14.16" +"@mui/material@npm:^5.14.17": + version: 5.14.17 + resolution: "@mui/material@npm:5.14.17" dependencies: "@babel/runtime": "npm:^7.23.2" - "@mui/base": "npm:5.0.0-beta.22" - "@mui/core-downloads-tracker": "npm:^5.14.16" - "@mui/system": "npm:^5.14.16" + "@mui/base": "npm:5.0.0-beta.23" + "@mui/core-downloads-tracker": "npm:^5.14.17" + "@mui/system": "npm:^5.14.17" "@mui/types": "npm:^7.2.8" - "@mui/utils": "npm:^5.14.16" + "@mui/utils": "npm:^5.14.17" "@types/react-transition-group": "npm:^4.4.8" clsx: "npm:^2.0.0" csstype: "npm:^3.1.2" @@ -868,16 +868,16 @@ __metadata: optional: true "@types/react": optional: true - checksum: ce5b4c682cb3674513627b1555957a694f0586fc5bb7fcb1ad1de29472c7f2a743c6659f4b8394c3db2d9a42802e2dbc12b160fef76dabc9765b73d7d03152f9 + checksum: 498797747d532f3909611aac04b07ac4067a70d282a238b7cfbebb1cf2004df40c51c10d9c5b1786916dc4c4c1cd722880aad3200c70ba13fc2610bf7bb72bab languageName: node linkType: hard -"@mui/private-theming@npm:^5.14.16": - version: 5.14.16 - resolution: "@mui/private-theming@npm:5.14.16" +"@mui/private-theming@npm:^5.14.17": + version: 5.14.17 + resolution: "@mui/private-theming@npm:5.14.17" dependencies: "@babel/runtime": "npm:^7.23.2" - "@mui/utils": "npm:^5.14.16" + "@mui/utils": "npm:^5.14.17" prop-types: "npm:^15.8.1" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 @@ -885,13 +885,13 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 48cbc62d20caab7df48d97d3bff95f0b86679fcbe5494e5b36b34f5464787351e9beeb1f674a240e3f1586c61a23e3e710210a3a47d2ca4e208f7c14a49f2678 + checksum: a02bcf41de4d79f704b415e2d4346e84eb138e773a6ca622017d5631e25689eba2c860637cb8c8f0fd71032c52f2889a1b2ae33975929da77aca7cfe229aaf6b languageName: node linkType: hard -"@mui/styled-engine@npm:^5.14.16": - version: 5.14.16 - resolution: "@mui/styled-engine@npm:5.14.16" +"@mui/styled-engine@npm:^5.14.17": + version: 5.14.17 + resolution: "@mui/styled-engine@npm:5.14.17" dependencies: "@babel/runtime": "npm:^7.23.2" "@emotion/cache": "npm:^11.11.0" @@ -906,19 +906,19 @@ __metadata: optional: true "@emotion/styled": optional: true - checksum: 4fed894a3a795e84dec63d0962a64c371ff9bdf27f022a3e502c9edbcfae790f3fd271d833b65ed5f45b736b47eac900e5edba1b72e063ae103beb85c9c7f8e9 + checksum: 0a86748dc45caffc7effab8e73dde31962f2f7b0cce063591e9ce1c7c096b1c02eb35cb29090ea23913a4e600d3bad4547af6ce63a8c922991cb01cf5fb2d0c7 languageName: node linkType: hard -"@mui/system@npm:^5.14.16": - version: 5.14.16 - resolution: "@mui/system@npm:5.14.16" +"@mui/system@npm:^5.14.17": + version: 5.14.17 + resolution: "@mui/system@npm:5.14.17" dependencies: "@babel/runtime": "npm:^7.23.2" - "@mui/private-theming": "npm:^5.14.16" - "@mui/styled-engine": "npm:^5.14.16" + "@mui/private-theming": "npm:^5.14.17" + "@mui/styled-engine": "npm:^5.14.17" "@mui/types": "npm:^7.2.8" - "@mui/utils": "npm:^5.14.16" + "@mui/utils": "npm:^5.14.17" clsx: "npm:^2.0.0" csstype: "npm:^3.1.2" prop-types: "npm:^15.8.1" @@ -934,7 +934,7 @@ __metadata: optional: true "@types/react": optional: true - checksum: 6480e4bf2834a8234054106abce9f8369e562acd4a7974649528b221b844d5eb18c9137971a14bd36cf8af94d12010dac2af16c4df8f0448ae0443d540706958 + checksum: 351040cfd4a698328e050397a8895e24ad93c37a2a72d6f8f4c8a652e43315a8ada26cc2b5dfda93b8cdf61b6e481474a7af7948d2752351184b99079f2f9c7b languageName: node linkType: hard @@ -950,9 +950,9 @@ __metadata: languageName: node linkType: hard -"@mui/utils@npm:^5.14.16": - version: 5.14.16 - resolution: "@mui/utils@npm:5.14.16" +"@mui/utils@npm:^5.14.17": + version: 5.14.17 + resolution: "@mui/utils@npm:5.14.17" dependencies: "@babel/runtime": "npm:^7.23.2" "@types/prop-types": "npm:^15.7.9" @@ -964,7 +964,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 02eb4550ba2ab30f98934a108dec4cc97f040b1c1d9a44d6adf7162286169fd7bf224a85625ed0b3feec27fdf7033bd1d3bb2225a8dd93ffcbd160090d288ef5 + checksum: 98c8b38075a2e3c2882eee8dccbbd5648747af63688ff2200acb63a7c3589864b3ea8bc067380bb3e4f46b09cec8b0fa144309644c0b9166bf194f76d89bc6fe languageName: node linkType: hard @@ -1224,7 +1224,7 @@ __metadata: languageName: node linkType: hard -"@types/imagemin@npm:*, @types/imagemin@npm:^8.0.3": +"@types/imagemin@npm:*": version: 8.0.3 resolution: "@types/imagemin@npm:8.0.3" dependencies: @@ -1242,6 +1242,15 @@ __metadata: languageName: node linkType: hard +"@types/imagemin@npm:^8.0.4": + version: 8.0.4 + resolution: "@types/imagemin@npm:8.0.4" + dependencies: + "@types/node": "npm:*" + checksum: 29c490a18aced93634d9e0b7cb240041cb540bd0bc596c23af4e05be0a3db0681508599a8b6863b025cf91b0a6ca948496bebe041fcd8e90424594f1c562ca9b + languageName: node + linkType: hard + "@types/json-schema@npm:^7.0.12": version: 7.0.14 resolution: "@types/json-schema@npm:7.0.14" @@ -1265,12 +1274,12 @@ __metadata: languageName: node linkType: hard -"@types/lodash-es@npm:^4.17.10": - version: 4.17.10 - resolution: "@types/lodash-es@npm:4.17.10" +"@types/lodash-es@npm:^4.17.11": + version: 4.17.11 + resolution: "@types/lodash-es@npm:4.17.11" dependencies: "@types/lodash": "npm:*" - checksum: a6c68872425418491d693186238e22c9da0e88bdf7ffe2b26e5436a19027ffedabeaec162e336b3722d5c43411866e859beae76a1a8f737bb5b115d5a574f758 + checksum: 87516f652eb13a544590351dd1986df37929c83d3393491c1b5f0e8d36a604ed9c00d4da9c77df052f38affd9bac33a4534ec52f679989e38bedb595fbbc23bb languageName: node linkType: hard @@ -1370,14 +1379,14 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:^18.2.35": - version: 18.2.35 - resolution: "@types/react@npm:18.2.35" +"@types/react@npm:^18.2.36": + version: 18.2.36 + resolution: "@types/react@npm:18.2.36" dependencies: "@types/prop-types": "npm:*" "@types/scheduler": "npm:*" csstype: "npm:^3.0.2" - checksum: 3c8c752d21856f74ddb96b9dd13cdd70c0ce1522808f20511f0220f392ea727fae9388db4da3ebe317d9bac98a0d930566d4277b22e92c1cad414429739e1d76 + checksum: 4dac0a9f808b0da01029146efe7eeed454da68d01f0f73d417c95d691460f210b9baeb5fa756015f5a048825a1145a7dcb6c6d9c3e4e7876c683edf9892c383b languageName: node linkType: hard @@ -1413,15 +1422,15 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^6.9.1": - version: 6.9.1 - resolution: "@typescript-eslint/eslint-plugin@npm:6.9.1" +"@typescript-eslint/eslint-plugin@npm:^6.10.0": + version: 6.10.0 + resolution: "@typescript-eslint/eslint-plugin@npm:6.10.0" dependencies: "@eslint-community/regexpp": "npm:^4.5.1" - "@typescript-eslint/scope-manager": "npm:6.9.1" - "@typescript-eslint/type-utils": "npm:6.9.1" - "@typescript-eslint/utils": "npm:6.9.1" - "@typescript-eslint/visitor-keys": "npm:6.9.1" + "@typescript-eslint/scope-manager": "npm:6.10.0" + "@typescript-eslint/type-utils": "npm:6.10.0" + "@typescript-eslint/utils": "npm:6.10.0" + "@typescript-eslint/visitor-keys": "npm:6.10.0" debug: "npm:^4.3.4" graphemer: "npm:^1.4.0" ignore: "npm:^5.2.4" @@ -1434,44 +1443,44 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10a75e072be6645edd6fd74b200f3a3ee23e2ebb04a93d8e9be70f0a34dd94572146433a0a0f2732e9667ab8bdb2037d6d4261c10474fd94cfa9c56d02546215 + checksum: 54fd83cff912bae212934aae5abcb810cf182771778e1062f2aaf75989d300c5f23bdb03b8b3d587ece799dfabebfdc5cf6356e1ce07398011d728a3d0d0d381 languageName: node linkType: hard -"@typescript-eslint/parser@npm:^6.9.1": - version: 6.9.1 - resolution: "@typescript-eslint/parser@npm:6.9.1" +"@typescript-eslint/parser@npm:^6.10.0": + version: 6.10.0 + resolution: "@typescript-eslint/parser@npm:6.10.0" dependencies: - "@typescript-eslint/scope-manager": "npm:6.9.1" - "@typescript-eslint/types": "npm:6.9.1" - "@typescript-eslint/typescript-estree": "npm:6.9.1" - "@typescript-eslint/visitor-keys": "npm:6.9.1" + "@typescript-eslint/scope-manager": "npm:6.10.0" + "@typescript-eslint/types": "npm:6.10.0" + "@typescript-eslint/typescript-estree": "npm:6.10.0" + "@typescript-eslint/visitor-keys": "npm:6.10.0" debug: "npm:^4.3.4" peerDependencies: eslint: ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 855a62180ad54f5a05ae4f15742e810b811aeceacd5be5a3498aeb11bd5c7877d25d4f7dc56d010a7b3ad2992e85f31d41340fb46a7fd68fc682ae65d82304d1 + checksum: d24a981807ea1ee5e5bbd9be2996b06eb99908c717464c6274b596c094b0e2609c1d88fcb8bef3479a8e8d39bc61a7103651b23981e47a5d89f6dec77e3bec38 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:6.9.1": - version: 6.9.1 - resolution: "@typescript-eslint/scope-manager@npm:6.9.1" +"@typescript-eslint/scope-manager@npm:6.10.0": + version: 6.10.0 + resolution: "@typescript-eslint/scope-manager@npm:6.10.0" dependencies: - "@typescript-eslint/types": "npm:6.9.1" - "@typescript-eslint/visitor-keys": "npm:6.9.1" - checksum: a9ca328e42fbadaeffaed807c141d71f01d471b1aeeb1abbb107a0fe630963a33aeb6e215cb26874a01bee9589e8d773ad7a7fea7b14b9710d30dd1e0d6f6820 + "@typescript-eslint/types": "npm:6.10.0" + "@typescript-eslint/visitor-keys": "npm:6.10.0" + checksum: 518cd60f9e9f5eef24f566f6a43d05241593a4520db6a93df714adac7b04b8bc2a1a89764f7a0aa23432e35e5f57ab2a3129f8f67ef211fa808c6bda29c28c78 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:6.9.1": - version: 6.9.1 - resolution: "@typescript-eslint/type-utils@npm:6.9.1" +"@typescript-eslint/type-utils@npm:6.10.0": + version: 6.10.0 + resolution: "@typescript-eslint/type-utils@npm:6.10.0" dependencies: - "@typescript-eslint/typescript-estree": "npm:6.9.1" - "@typescript-eslint/utils": "npm:6.9.1" + "@typescript-eslint/typescript-estree": "npm:6.10.0" + "@typescript-eslint/utils": "npm:6.10.0" debug: "npm:^4.3.4" ts-api-utils: "npm:^1.0.1" peerDependencies: @@ -1479,23 +1488,23 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: cad9502565d9b0f203a4fa2a37f31cdde9734d050fa5324b7403d55d5125a891d0e8b6a8b2a1c0039b47b64f187219cc7fe37b905f48dee576b3b0e73f76a79c + checksum: e4e5b119730fe615a60fb9118ab408a471dab11304a70d469393a0aac6d06238377cd87693129160c600b7a03804e2552d3a7192d291ea3db10d2390983b3628 languageName: node linkType: hard -"@typescript-eslint/types@npm:6.9.1": - version: 6.9.1 - resolution: "@typescript-eslint/types@npm:6.9.1" - checksum: 28bf79fc9e30cafa1d747f20f95b2ce949816312bb9e1f4b0a4add6537fcf70a2b64c0da17b03c4cf70bf415263077de6edbd49ad08e482e9270454f2c61e1a3 +"@typescript-eslint/types@npm:6.10.0": + version: 6.10.0 + resolution: "@typescript-eslint/types@npm:6.10.0" + checksum: bc8faf3d00f1d4eaad0760f64a7e428646e65adc5322f41dc9a2d15d5df23e53b09605d69126c373630851cb258c15ba82cf66d949897d3758844964b0e98087 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:6.9.1": - version: 6.9.1 - resolution: "@typescript-eslint/typescript-estree@npm:6.9.1" +"@typescript-eslint/typescript-estree@npm:6.10.0": + version: 6.10.0 + resolution: "@typescript-eslint/typescript-estree@npm:6.10.0" dependencies: - "@typescript-eslint/types": "npm:6.9.1" - "@typescript-eslint/visitor-keys": "npm:6.9.1" + "@typescript-eslint/types": "npm:6.10.0" + "@typescript-eslint/visitor-keys": "npm:6.10.0" debug: "npm:^4.3.4" globby: "npm:^11.1.0" is-glob: "npm:^4.0.3" @@ -1504,34 +1513,34 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 40d1d654c3d7223c84e9340740bde95484ef246f5248cf9f6cd5ae308c79463b52c2b964f935ff68577fb0ea9d6862c9a8547e9430449e1f4eb3c53da2dbfc55 + checksum: 41fc6dd0cfe8fb4c7ddc30d91e71d23ea1e0cbc261e8022ab089ddde6589eefdb89f66492d2ab4ae20dd45f51657022d9278bccc64aef7c6be0df756a081c0b5 languageName: node linkType: hard -"@typescript-eslint/utils@npm:6.9.1": - version: 6.9.1 - resolution: "@typescript-eslint/utils@npm:6.9.1" +"@typescript-eslint/utils@npm:6.10.0": + version: 6.10.0 + resolution: "@typescript-eslint/utils@npm:6.10.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.4.0" "@types/json-schema": "npm:^7.0.12" "@types/semver": "npm:^7.5.0" - "@typescript-eslint/scope-manager": "npm:6.9.1" - "@typescript-eslint/types": "npm:6.9.1" - "@typescript-eslint/typescript-estree": "npm:6.9.1" + "@typescript-eslint/scope-manager": "npm:6.10.0" + "@typescript-eslint/types": "npm:6.10.0" + "@typescript-eslint/typescript-estree": "npm:6.10.0" semver: "npm:^7.5.4" peerDependencies: eslint: ^7.0.0 || ^8.0.0 - checksum: 36432f0f170a81d5a6e6c8919b7d492e9be323310124e9a9d03aa64db7f32c381bc3e7f894cefc9c2b427b0a6df95613477c2a00808911a7b8e95a37fcce54a1 + checksum: acf55bc231483f8b8d2d64ad9a261d0499085277b5ce3506cf579297401f78d88253ae52a9afad35cc32a532b53794367e32449283c06b2e89602c63184f011e languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:6.9.1": - version: 6.9.1 - resolution: "@typescript-eslint/visitor-keys@npm:6.9.1" +"@typescript-eslint/visitor-keys@npm:6.10.0": + version: 6.10.0 + resolution: "@typescript-eslint/visitor-keys@npm:6.10.0" dependencies: - "@typescript-eslint/types": "npm:6.9.1" + "@typescript-eslint/types": "npm:6.10.0" eslint-visitor-keys: "npm:^3.4.1" - checksum: 46d8a3335777798d43b9bf3393b96176881794184faf831670e4ee52493834cd6fbd3199ff387112ae795e344e3c92a8e78f79254d6c5bee012354859c8f333b + checksum: 17a6962e10ffbcc286d202c7dfcc0dfa489c76ab7838b3522e90b3e87cbe2cdd7a24ffab434d9ca6dfed361801f11c3349ba01f808093c65c5365a9179ee5eb0 languageName: node linkType: hard @@ -1551,18 +1560,18 @@ __metadata: "@emotion/react": "npm:^11.11.1" "@emotion/styled": "npm:^11.11.0" "@mui/icons-material": "npm:^5.14.16" - "@mui/material": "npm:^5.14.16" + "@mui/material": "npm:^5.14.17" "@preact/compat": "npm:^17.1.2" "@preact/preset-vite": "npm:^2.6.0" "@table-library/react-table-library": "npm:4.1.7" - "@types/imagemin": "npm:^8.0.3" - "@types/lodash-es": "npm:^4.17.10" + "@types/imagemin": "npm:^8.0.4" + "@types/lodash-es": "npm:^4.17.11" "@types/node": "npm:^20.8.10" - "@types/react": "npm:^18.2.35" + "@types/react": "npm:^18.2.36" "@types/react-dom": "npm:^18.2.14" "@types/react-router-dom": "npm:^5.3.3" - "@typescript-eslint/eslint-plugin": "npm:^6.9.1" - "@typescript-eslint/parser": "npm:^6.9.1" + "@typescript-eslint/eslint-plugin": "npm:^6.10.0" + "@typescript-eslint/parser": "npm:^6.10.0" alova: "npm:^2.13.1" async-validator: "npm:^4.2.5" concurrently: "npm:^8.2.2" From 2f658a9a14b2d83f84d7d383e5ff52cec2681e0b Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 8 Nov 2023 14:18:28 +0100 Subject: [PATCH 16/91] add boiler wwSelTempEcoplus --- src/devices/boiler.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 91b2d6750..f290ca169 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -797,6 +797,12 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const FL_(wwSelTempLow), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_ww_temp_low)); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, + &wwSelTempEcoplus_, + DeviceValueType::UINT, + FL_(wwSelTempEco), + DeviceValueUOM::DEGREES, + MAKE_CF_CB(set_ww_temp_eco)); register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwSelTempOff_, DeviceValueType::UINT, FL_(wwSelTempOff), DeviceValueUOM::DEGREES); register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwSelTempSingle_, @@ -1416,6 +1422,7 @@ void Boiler::process_UBAParameterWWPlus(std::shared_ptr telegram has_update(telegram, wwSelTempLow_, 18); has_update(telegram, wwMaxTemp_, 20); has_update(telegram, wwChargeOptimization_, 25); + has_update(telegram, wwSelTempEcoplus_, 27); uint8_t wwComfort1 = EMS_VALUE_UINT_NOTSET; if (telegram->read_value(wwComfort1, 13)) { @@ -2023,6 +2030,17 @@ bool Boiler::set_ww_temp_low(const char * value, const int8_t id) { return true; } +// Set the eco+ dhw temperature 0xEA +bool Boiler::set_ww_temp_eco(const char * value, const int8_t id) { + int v; + if (!Helpers::value2temperature(value, v)) { + return false; + } + + write_command(EMS_TYPE_UBAParameterWWPlus, 27, v, EMS_TYPE_UBAParameterWWPlus); + return true; +} + // Set the dhw single charge temperature 0xEA bool Boiler::set_ww_temp_single(const char * value, const int8_t id) { int v = 0; From 4c83f5fe60b43fd645a85cf70901914e3b752919 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sat, 11 Nov 2023 13:46:49 +0100 Subject: [PATCH 17/91] sort water entities --- src/devices/boiler.cpp | 13 ++------ src/devices/thermostat.cpp | 11 ++----- src/devices/thermostat.h | 2 +- src/devices/water.cpp | 63 ++++++++++++++++++++++++-------------- src/devices/water.h | 20 ++++++------ src/locale_common.h | 2 +- src/locale_translations.h | 11 +++---- src/version.h | 2 +- 8 files changed, 65 insertions(+), 59 deletions(-) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index f290ca169..31b6ae82d 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -98,12 +98,6 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const DeviceValueNumOp::DV_NUMOP_DIV10, FL_(netFlowTemp), DeviceValueUOM::DEGREES); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, - &retTemp_, - DeviceValueType::USHORT, - DeviceValueNumOp::DV_NUMOP_DIV10, - FL_(retTemp), - DeviceValueUOM::DEGREES); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &heatValve_, DeviceValueType::UINT, FL_(heatValve), DeviceValueUOM::PERCENT); register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwValve_, DeviceValueType::UINT, FL_(wwValve), DeviceValueUOM::PERCENT); register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, @@ -1279,11 +1273,10 @@ void Boiler::process_UBAMonitorFastPlus(std::shared_ptr telegram has_update(telegram, curFlowTemp_, 7); has_update(telegram, flameCurr_, 19); uint16_t rettemp = retTemp_; - telegram->read_value(rettemp, 17); // 0 means no sensor - if (rettemp == 0) { - rettemp = EMS_VALUE_USHORT_NOTSET; + telegram->read_value(rettemp, 17); // 0 means no sensor, HIU have it in 0x779 + if (rettemp != 0) { + has_update(retTemp_, rettemp); } - has_update(retTemp_, rettemp); uint8_t syspress = sysPress_; telegram->read_value(syspress, 21); // 0 means no sensor diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index f7f5dfa32..9b023a0d4 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -976,7 +976,7 @@ void Thermostat::process_RC300Monitor(std::shared_ptr telegram) has_update(telegram, hc->roomTemp, 0); // is * 10 has_bitupdate(telegram, hc->modetype, 10, 1); - has_bitupdate(telegram, hc->mode, 10, 0); // bit 1, mode (auto=1 or manual=0) + // has_bitupdate(telegram, hc->mode, 10, 0); // bit 1, mode (auto=1 or manual=0) // if manual, take the current setpoint temp at pos 6 // if auto, take the next setpoint temp at pos 7 @@ -1023,6 +1023,7 @@ void Thermostat::process_RC300Set(std::shared_ptr telegram) { // check why mode is both in the Monitor and Set for the RC300. It'll be read twice! // has_update(telegram, hc->mode, 0); // Auto = xFF, Manual = x00 eg. 10 00 FF 08 01 B9 FF + has_update(telegram, hc->mode, 21); // 0-off, 1-manual, 2-auto has_update(telegram, hc->daytemp, 2); // is * 2 has_update(telegram, hc->nighttemp, 4); // is * 2 @@ -2552,13 +2553,7 @@ bool Thermostat::set_mode_n(const uint8_t mode, const uint8_t hc_num) { break; case EMSdevice::EMS_DEVICE_FLAG_RC300: case EMSdevice::EMS_DEVICE_FLAG_RC100: - offset = EMS_OFFSET_RCPLUSSet_mode; - validate_typeid = monitor_typeids[hc_p]; - if (mode == HeatingCircuit::Mode::AUTO) { - set_mode_value = 0xFF; // special value for auto - } else { - set_mode_value = 0; // everything else, like manual/day etc.. - } + offset = EMS_OFFSET_RCPLUSSet_mode; break; case EMSdevice::EMS_DEVICE_FLAG_JUNKERS: if (has_flags(EMS_DEVICE_FLAG_JUNKERS_OLD)) { diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index 8db4096dd..bd4eb5204 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -317,7 +317,7 @@ class Thermostat : public EMSdevice { static constexpr uint8_t EMS_OFFSET_RCPLUSStatusMessage_setpoint = 3; // setpoint temp static constexpr uint8_t EMS_OFFSET_RCPLUSStatusMessage_curr = 0; // current temp static constexpr uint8_t EMS_OFFSET_RCPLUSStatusMessage_currsetpoint = 6; // target setpoint temp - static constexpr uint8_t EMS_OFFSET_RCPLUSSet_mode = 0; // operation mode(Auto=0xFF, Manual=0x00) + static constexpr uint8_t EMS_OFFSET_RCPLUSSet_mode = 21; // operation mode(0-off, 1-manual, 2-auto) static constexpr uint8_t EMS_OFFSET_RCPLUSSet_temp_comfort3 = 1; // comfort3 level static constexpr uint8_t EMS_OFFSET_RCPLUSSet_temp_comfort2 = 2; // comfort2 level static constexpr uint8_t EMS_OFFSET_RCPLUSSet_temp_comfort1 = 3; // comfort1 level diff --git a/src/devices/water.cpp b/src/devices/water.cpp index 9279c4959..f3a9903d9 100644 --- a/src/devices/water.cpp +++ b/src/devices/water.cpp @@ -37,18 +37,18 @@ Water::Water(uint8_t device_type, uint8_t device_id, uint8_t product_id, const c register_telegram_type(0x07A6, "SM100wwParam", true, MAKE_PF_CB(process_SM100wwParam)); register_telegram_type(0x07AE, "SM100wwKeepWarm", true, MAKE_PF_CB(process_SM100wwKeepWarm)); register_telegram_type(0x07E0, "SM100wwStatus2", true, MAKE_PF_CB(process_SM100wwStatus2)); + register_telegram_type(0x07AD, "SM100ValveStatus", false, MAKE_PF_CB(process_SM100ValveStatus)); // device values... - register_device_value(tag, &wwTemp_1_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp1), DeviceValueUOM::DEGREES); - // register_device_value(tag, &wwTemp_2_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp2), DeviceValueUOM::DEGREES); - register_device_value(tag, &wwTemp_3_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp3), DeviceValueUOM::DEGREES); - register_device_value(tag, &wwTemp_4_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp4), DeviceValueUOM::DEGREES); + register_device_value(tag, &wwTemp_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp), DeviceValueUOM::DEGREES); + register_device_value(tag, &wwTemp2_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwStorageTemp1), DeviceValueUOM::DEGREES); + register_device_value(tag, &wwColdTemp_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwColdTemp), DeviceValueUOM::DEGREES); register_device_value(tag, &wwTemp_5_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp5), DeviceValueUOM::DEGREES); - // register_device_value(tag, &wwTemp_6_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp6), DeviceValueUOM::DEGREES); - register_device_value(tag, &wwTemp_7_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp7), DeviceValueUOM::DEGREES); + register_device_value(tag, &wwRetTemp_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(retTemp), DeviceValueUOM::DEGREES); register_device_value(tag, &wwPump_, DeviceValueType::BOOL, FL_(wwPump), DeviceValueUOM::NONE); register_device_value(tag, &wwMaxTemp_, DeviceValueType::UINT, FL_(wwMaxTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwMaxTemp)); register_device_value(tag, &wwSelTemp_, DeviceValueType::UINT, FL_(wwSelTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwSelTemp)); register_device_value(tag, &wwRedTemp_, DeviceValueType::UINT, FL_(wwRedTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwRedTemp)); + register_device_value(tag, &wwHotTemp_, DeviceValueType::UINT, FL_(wwHotTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwHotTemp)); register_device_value(tag, &wwDailyTemp_, DeviceValueType::UINT, FL_(wwDailyTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwDailyTemp)); register_device_value(tag, &wwDisinfectionTemp_, DeviceValueType::UINT, FL_(wwDisinfectionTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwDisinfectionTemp)); register_device_value(tag, &wwCirc_, DeviceValueType::BOOL, FL_(wwCirc), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwCirc)); @@ -56,7 +56,8 @@ Water::Water(uint8_t device_type, uint8_t device_id, uint8_t product_id, const c register_device_value(tag, &wwKeepWarm_, DeviceValueType::BOOL, FL_(wwKeepWarm), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwKeepWarm)); register_device_value(tag, &wwStatus2_, DeviceValueType::ENUM, FL_(enum_wwStatus2), FL_(wwStatus2), DeviceValueUOM::NONE); register_device_value(tag, &wwPumpMod_, DeviceValueType::UINT, FL_(wwPumpMod), DeviceValueUOM::PERCENT); - register_device_value(tag, &wwFlow_, DeviceValueType::UINT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwFlow), DeviceValueUOM::LMIN); + register_device_value(tag, &wwFlow_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwFlow), DeviceValueUOM::LMIN); + register_device_value(tag, &wwRetValve_, DeviceValueType::BOOL, FL_(valveReturn), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwKeepWarm)); } else if (device_id >= EMSdevice::EMS_DEVICE_ID_DHW1 && device_id <= EMSdevice::EMS_DEVICE_ID_DHW2) { wwc_ = device_id - EMSdevice::EMS_DEVICE_ID_DHW1; @@ -64,7 +65,7 @@ Water::Water(uint8_t device_type, uint8_t device_id, uint8_t product_id, const c register_telegram_type(0x313 + wwc_, "MMPLUSConfigMessage_WWC", true, MAKE_PF_CB(process_MMPLUSConfigMessage_WWC)); // register_telegram_type(0x33B + type_offset, "MMPLUSSetMessage_WWC", true, MAKE_PF_CB(process_MMPLUSSetMessage_WWC)); // device values... - register_device_value(tag, &wwFlowTemp_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp), DeviceValueUOM::DEGREES); + register_device_value(tag, &wwTemp_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp), DeviceValueUOM::DEGREES); register_device_value(tag, &wwStatus_, DeviceValueType::INT, FL_(wwTempStatus), DeviceValueUOM::NONE); register_device_value(tag, &wwPump_, DeviceValueType::BOOL, FL_(wwPump), DeviceValueUOM::NONE); register_device_value(tag, &wwMaxTemp_, DeviceValueType::UINT, FL_(wwMaxTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwMaxTemp)); @@ -83,8 +84,8 @@ Water::Water(uint8_t device_type, uint8_t device_id, uint8_t product_id, const c // register_telegram_type(0x10D, "wwNTCStatus", false, MAKE_PF_CB(process_wwNTCStatus)); // device values... register_device_value(tag, &wwSelTemp_, DeviceValueType::UINT, FL_(wwSelTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwSelTemp)); - register_device_value(tag, &wwTemp_1_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp1), DeviceValueUOM::DEGREES); - register_device_value(tag, &wwTemp_2_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp2), DeviceValueUOM::DEGREES); + register_device_value(tag, &wwTemp_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwTemp), DeviceValueUOM::DEGREES); + register_device_value(tag, &wwTemp2_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwCurTemp2), DeviceValueUOM::DEGREES); register_device_value(tag, &HydrTemp_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(hydrTemp), DeviceValueUOM::DEGREES); register_device_value(tag, &wwPump_, DeviceValueType::BOOL, FL_(wwPump), DeviceValueUOM::NONE); register_device_value(tag, &wwFlowTempOffset_, DeviceValueType::UINT, FL_(wwFlowTempOffset), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_wwFlowTempOffset)); @@ -99,14 +100,14 @@ Water::Water(uint8_t device_type, uint8_t device_id, uint8_t product_id, const c // SM100wwTemperature - 0x07D6 // Solar Module(0x2A) -> (0x00), (0x7D6), data: 01 C1 00 00 02 5B 01 AF 01 AD 80 00 01 90 void Water::process_SM100wwTemperature(std::shared_ptr telegram) { - has_update(telegram, wwTemp_1_, 0); // is *10 - has_update(telegram, wwTemp_2_, 2); // is *10 always zero - has_update(telegram, wwTemp_3_, 4); // is *10 TS21 - has_update(telegram, wwTemp_4_, 6); // is *10 cold water - has_update(telegram, wwTemp_5_, 8); // is *10 - has_update(telegram, wwTemp_6_, 10); // is *10 always unset 8000 - has_update(telegram, wwTemp_7_, 12); // is *10 - has_update(telegram, wwTemp_8_, 14); // is *10, return temp TS22 + has_update(telegram, wwTemp_, 0); // is *10 TS17 + has_update(telegram, wwFlow_, 2); // is *10 l/min + has_update(telegram, wwTemp2_, 4); // is *10 TS21 + has_update(telegram, wwColdTemp_, 6); // is *10 cold water + has_update(telegram, wwTemp_5_, 8); // is *10 + // has_update(telegram, wwTemp_6_, 10); // is *10 always unset 8000 + // has_update(telegram, wwTemp_7_, 12); // is *10, same as wwTemp_1_ + has_update(telegram, wwRetTemp_, 14); // is *10, return temp TS22 } // SM100wwStatus - 0x07AA @@ -118,10 +119,11 @@ void Water::process_SM100wwStatus(std::shared_ptr telegram) { // SM100wwParam - 0x07A6, Solar Module(0x2A) -> (0x00) // data: FF 05 0F 5F 00 01 3C 3C 3C 3C 28 12 46 01 3C 1E 03 07 3C 00 0F 00 05 void Water::process_SM100wwParam(std::shared_ptr telegram) { + has_update(telegram, wwDailyTemp_, 6); + has_update(telegram, wwHotTemp_, 7); has_update(telegram, wwMaxTemp_, 8); has_update(telegram, wwSelTemp_, 9); has_update(telegram, wwRedTemp_, 10); - has_update(telegram, wwDailyTemp_, 6); has_update(telegram, wwDisinfectionTemp_, 12); // (daily heating time thermostat 2F5, offset 9, offset 8 on/off) } @@ -139,6 +141,12 @@ void Water::process_SM100wwKeepWarm(std::shared_ptr telegram) { has_update(telegram, wwKeepWarm_, 0); } +// SM100ValveStatus - 0x7AD, valveStatus +// Thermostat(0x10) -> Solar(0x2A), ?(0x7AD), data: +void Water::process_SM100ValveStatus(std::shared_ptr telegram) { + has_update(telegram, wwRetValve_, 1); +} + /* // SM100ww? - 0x7E0, some kind of status // data: 00 00 46 00 00 01 06 0E 06 0E 00 00 00 00 00 03 03 03 03 @@ -146,7 +154,7 @@ void Water::process_SM100wwKeepWarm(std::shared_ptr telegram) { // status2 = 03:"no heat", 06:"heat request", 08:"disinfecting", 09:"hold" */ void Water::process_SM100wwStatus2(std::shared_ptr telegram) { - has_update(telegram, wwFlow_, 7); + // has_update(telegram, wwFlow_, 7); // single byte, wrong see #1387 has_update(telegram, wwStatus2_, 8); has_update(telegram, wwPumpMod_, 9); } @@ -168,7 +176,7 @@ void Water::process_SM100wwCommand(std::shared_ptr telegram) { // e.g. A9 00 FF 00 02 32 02 6C 00 3C 00 3C 3C 46 02 03 03 00 3C // on 0x28 // A8 00 FF 00 02 31 02 35 00 3C 00 3C 3C 46 02 03 03 00 3C // in 0x29 void Water::process_MMPLUSStatusMessage_WWC(std::shared_ptr telegram) { - has_update(telegram, wwFlowTemp_, 0); // is * 10 + has_update(telegram, wwTemp_, 0); // is * 10 has_bitupdate(telegram, wwPump_, 2, 0); has_update(telegram, wwStatus_, 11); // temp status } @@ -200,8 +208,8 @@ void Water::process_MMPLUSSetMessage_WWC(std::shared_ptr telegra // Mixer(0x41) -> All(0x00), UBAMonitorWW(0x34), data: 37 02 1E 02 1E 00 00 00 00 void Water::process_IPMMonitorWW(std::shared_ptr telegram) { has_update(telegram, wwSelTemp_, 0); - has_update(telegram, wwTemp_1_, 1); - has_update(telegram, wwTemp_2_, 3); + has_update(telegram, wwTemp_, 1); + has_update(telegram, wwTemp2_, 3); has_bitupdate(telegram, wwPump_, 5, 3); } @@ -274,6 +282,15 @@ bool Water::set_wwRedTemp(const char * value, const int8_t id) { return true; } +bool Water::set_wwHotTemp(const char * value, const int8_t id) { + int temperature; + if (!Helpers::value2temperature(value, temperature)) { + return false; + } + write_command(0x7A6, 7, (uint8_t)temperature, 0x7A6); + return true; +} + bool Water::set_wwDailyTemp(const char * value, const int8_t id) { int temperature; if (!Helpers::value2temperature(value, temperature)) { diff --git a/src/devices/water.h b/src/devices/water.h index 795c39f27..95de288d6 100644 --- a/src/devices/water.h +++ b/src/devices/water.h @@ -33,14 +33,15 @@ class Water : public EMSdevice { uint8_t wwc_; // SM100wwTemperature - 0x07D6 - uint16_t wwTemp_1_; - uint16_t wwTemp_2_; - uint16_t wwTemp_3_; - uint16_t wwTemp_4_; + uint16_t wwTemp_; + uint16_t wwFlow_; + uint16_t wwTemp2_; + uint16_t wwColdTemp_; uint16_t wwTemp_5_; - uint16_t wwTemp_6_; - uint16_t wwTemp_7_; - uint16_t wwTemp_8_; + uint16_t wwRetTemp_; + + // SM100ValveStatus - 0x07AD + uint8_t wwRetValve_; // VS5 // SM100wwStatus - 0x07AA uint8_t wwPump_; @@ -51,6 +52,7 @@ class Water : public EMSdevice { uint8_t wwRedTemp_; uint8_t wwDailyTemp_; uint8_t wwDisinfectionTemp_; + uint8_t wwHotTemp_; // SM100wwKeepWarm - 0x07AE uint8_t wwKeepWarm_; @@ -60,13 +62,11 @@ class Water : public EMSdevice { uint8_t wwCircMode_; // SM100wwStatus2 - 0x07E0 - uint8_t wwFlow_; uint8_t wwPumpMod_; uint8_t wwStatus2_; // mixer uint8_t wwStatus_; - uint16_t wwFlowTemp_; int8_t wwDiffTemp_; uint8_t wwRequiredTemp_; @@ -84,6 +84,7 @@ class Water : public EMSdevice { void process_SM100wwCirc(std::shared_ptr telegram); void process_SM100wwParam(std::shared_ptr telegram); void process_SM100wwKeepWarm(std::shared_ptr telegram); + void process_SM100ValveStatus(std::shared_ptr telegram); void process_MMPLUSStatusMessage_WWC(std::shared_ptr telegram); void process_MMPLUSSetMessage_WWC(std::shared_ptr telegram); @@ -97,6 +98,7 @@ class Water : public EMSdevice { bool set_wwSelTemp(const char * value, const int8_t id); bool set_wwMaxTemp(const char * value, const int8_t id); bool set_wwRedTemp(const char * value, const int8_t id); + bool set_wwHotTemp(const char * value, const int8_t id); bool set_wwCirc(const char * value, const int8_t id); bool set_wwCircMode(const char * value, const int8_t id); bool set_wwKeepWarm(const char * value, const int8_t id); diff --git a/src/locale_common.h b/src/locale_common.h index 0cbae93b2..3049b6f54 100644 --- a/src/locale_common.h +++ b/src/locale_common.h @@ -305,7 +305,7 @@ MAKE_ENUM(enum_summer, FL_(winter), FL_(summer)) MAKE_ENUM(enum_operatingstate, FL_(heating), FL_(off), FL_(cooling)) MAKE_ENUM(enum_hpmode, FL_(heating), FL_(cooling), FL_(heatandcool)) -MAKE_ENUM(enum_mode, FL_(manual), FL_(auto)) // RC100, RC300, RC310 +MAKE_ENUM(enum_mode, FL_(off), FL_(manual), FL_(auto)) // RC100, RC300, RC310 MAKE_ENUM(enum_mode2, FL_(off), FL_(manual), FL_(auto)) // RC20, RC30 MAKE_ENUM(enum_mode3, FL_(night), FL_(day), FL_(auto)) // RC35, RC30_N, RC25, RC20_N MAKE_ENUM(enum_mode4, FL_(nofrost), FL_(eco), FL_(heat), FL_(auto)) // JUNKERS diff --git a/src/locale_translations.h b/src/locale_translations.h index e439bfb5b..ae49230ff 100644 --- a/src/locale_translations.h +++ b/src/locale_translations.h @@ -738,22 +738,21 @@ MAKE_TRANSLATION(energyTotal, "energytotal", "total energy", "Gesamtenergie", "T MAKE_TRANSLATION(energyToday, "energytoday", "total energy today", "Energie heute", "Energie vandaag", "Total Energi Idag", "energia całkowita dzisiaj", "total energi i dag", "énergie totale aujourd'hui", "bugün toplam enerji", "totale energia giornaliera") // solar ww -MAKE_TRANSLATION(wwTemp1, "wwtemp1", "temperature 1(TS17)", "Temperatur 1", "Temperatuur 1", "Temperatur 1", "temperatura 1", "temperatur 1", "température 1", "sıcaklık 1", "Temperatura 1") -MAKE_TRANSLATION(wwTemp2, "wwtemp2", "temperature 2", "Temperatur 2", "Temperatuur 2", "Temperatur 2", "temperatura 2", "temperatur 2", "température 2", "sıcaklık 2", "Temperatura 2") -MAKE_TRANSLATION(wwTemp3, "wwtemp3", "temperature 3 (TS21)", "Temperatur 3", "Temperatuur 3", "Temperatur 3", "temperatura 3", "Temperatur 3", "température 3", "sıcaklık 3", "Temperatura 3") -MAKE_TRANSLATION(wwTemp4, "wwtemp4", "cold water", "Temperatur 4", "Temperatuur 4", "Temperatur 4", "temperatura 4", "Temperatur 4", "température 4", "sıcaklık 4", "Temperatura 4") +MAKE_TRANSLATION(wwColdTemp, "wwcoldtemp", "cold water", "Kaltwasser", "", "", "", "", "", "", "") // TODO translate MAKE_TRANSLATION(wwTemp5, "wwtemp5", "temperature 5", "Temperatur 5", "Temperatuur 5", "Temperatur 5", "temperatura 5", "Temperatur 5", "température 5", "sıcaklık 5", "Temperatura 5") -MAKE_TRANSLATION(wwTemp6, "wwtemp6", "temperature 1", "Temperatur 6", "Temperatuur 6", "Temperatur 6", "temperatura 6", "temperatur 6", "température 6", "sıcaklık 6", "Temperatura 6") -MAKE_TRANSLATION(wwTemp7, "wwtemp7", "temperature 7", "Temperatur 7", "Temperatuur 7", "Temperatur 7", "temperatura 7", "Temperatur 7", "température 7", "sıcaklık 7", "Temperatura 7") +MAKE_TRANSLATION(wwTemp6, "wwtemp6", "temperature 6", "Temperatur 6", "Temperatuur 6", "Temperatur 6", "temperatura 6", "temperatur 6", "température 6", "sıcaklık 6", "Temperatura 6") +// MAKE_TRANSLATION(wwTemp7, "wwtemp7", "temperature 7", "Temperatur 7", "Temperatuur 7", "Temperatur 7", "temperatura 7", "Temperatur 7", "température 7", "sıcaklık 7", "Temperatura 7") MAKE_TRANSLATION(wwPump, "wwpump", "pump", "Pumpe", "Pomp", "Pump", "pompa", "pumpe", "pompe", "pompa", "Pompa") // solar ww and mixer wwc MAKE_TRANSLATION(wwMinTemp, "wwmintemp", "minimum temperature", "minimale Temperatur", "Minimale temperatuur", "Min Temperatur", "temperatura minimalna", "min temperatur", "température min", "minimum sıcaklık", "temperatura minima") MAKE_TRANSLATION(wwRedTemp, "wwredtemp", "reduced temperature", "reduzierte Temperatur", "Gereduceerde temperatuur", "Reducerad Temperatur", "temperatura zredukowana", "reducert temperatur", "température réduite", "düşürülmüş sıcaklık", "temperatura ridotta") MAKE_TRANSLATION(wwDailyTemp, "wwdailytemp", "daily temperature", "tägl. Temperatur", "Dagelijkse temperatuur", "Daglig temperatur", "temperatura dzienna", "dagtemperatur", "température en journée", "günlük sıcaklık", "temperatura giornaliera") +MAKE_TRANSLATION(wwHotTemp, "wwhottemp", "extra hot temperature", "sehr heiße Temperatur", "", "", "", "", "", "", "") // TODO translate MAKE_TRANSLATION(wwKeepWarm, "wwkeepwarm", "keep warm", "Warmhalten", "Warm houde", "Varmhållning", "utrzymywanie ciepła", "holde varmen", "maintenir chaleur", "ılık tut", "mantenimento calore") MAKE_TRANSLATION(wwStatus2, "wwstatus2", "status 2", "Status 2", "Status 2", "Status 2", "status 2", "status 2", "statut 2", "durum 2", "Status 2") MAKE_TRANSLATION(wwPumpMod, "wwpumpmod", "pump modulation", "Pumpen Modulation", "Pompmodulatie", "Pumpmodulering", "modulacja pompy", "pumpemodulering", "modulation de pompe", "pompa modülasyonu", "modulazione pompa") MAKE_TRANSLATION(wwFlow, "wwflow", "flow rate", "Volumenstrom", "Doorstroomsnelheid", "Flöde", "przepływ", "strømningshastighet", "débit", "akış hızı", "portata flusso") +// MAKE_TRANSLATION(wwRetValve, "wwretvalve", "return valve (VS5)", "Rücklauf Ventil (VS5)", "(VS5)", "(VS5)", "(VS5)", "(VS5)", "(VS5)", "(VS5)", "(VS5)") // TODO translate // extra mixer ww MAKE_TRANSLATION(wwRequiredTemp, "wwrequiredtemp", "required temperature", "benötigte Temperatur", "Benodigde temperatuur", "Nödvändig Temperatur", "temperatura wymagana", "nødvendig temperatur", "température requise", "gerekli sıcaklık", "temperatura richiesta") MAKE_TRANSLATION(wwDiffTemp, "wwdifftemp", "start differential temperature", "Start Differential Temperatur", "Start differentiele temperatuur", "Start Differentialtemperatur", "start temperatury różnicowej", "start differensialtemperatur", "température différentielle de départ", "diferansiyel sıcaklık", "avvia temperatura differenziale") diff --git a/src/version.h b/src/version.h index 1408b4ce6..ef6fb3ff9 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.6.3-dev.6c" +#define EMSESP_APP_VERSION "3.6.3-dev.7a" From e0ab208c522a4f98f8e6edb152873accab8a9166 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sat, 11 Nov 2023 14:10:49 +0100 Subject: [PATCH 18/91] fix `retTemp`, #1334 --- src/devices/boiler.cpp | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index f290ca169..745aac151 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -98,12 +98,6 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const DeviceValueNumOp::DV_NUMOP_DIV10, FL_(netFlowTemp), DeviceValueUOM::DEGREES); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, - &retTemp_, - DeviceValueType::USHORT, - DeviceValueNumOp::DV_NUMOP_DIV10, - FL_(retTemp), - DeviceValueUOM::DEGREES); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &heatValve_, DeviceValueType::UINT, FL_(heatValve), DeviceValueUOM::PERCENT); register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwValve_, DeviceValueType::UINT, FL_(wwValve), DeviceValueUOM::PERCENT); register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, @@ -1279,11 +1273,10 @@ void Boiler::process_UBAMonitorFastPlus(std::shared_ptr telegram has_update(telegram, curFlowTemp_, 7); has_update(telegram, flameCurr_, 19); uint16_t rettemp = retTemp_; - telegram->read_value(rettemp, 17); // 0 means no sensor - if (rettemp == 0) { - rettemp = EMS_VALUE_USHORT_NOTSET; + telegram->read_value(rettemp, 17); // 0 means no sensor, HIU read it in 0x779 + if (rettemp != 0) { + has_update(retTemp_, rettemp); } - has_update(retTemp_, rettemp); uint8_t syspress = sysPress_; telegram->read_value(syspress, 21); // 0 means no sensor From 1f8a47793990a6fb89909d66ef0b62ac8e867be9 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 13 Nov 2023 13:54:13 +0100 Subject: [PATCH 19/91] RC300/BC400 mode setting --- src/devices/thermostat.cpp | 21 +++++++++++++-------- src/devices/thermostat.h | 2 ++ src/locale_common.h | 2 +- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index f7f5dfa32..f46e6c8ff 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -1021,8 +1021,14 @@ void Thermostat::process_RC300Set(std::shared_ptr telegram) { // has_update(telegram, hc->selTemp, 8, 1); // single byte conversion, value is * 2 - auto? // has_update(telegram, hc->selTemp, 10, 1); // single byte conversion, value is * 2 - manual - // check why mode is both in the Monitor and Set for the RC300. It'll be read twice! - // has_update(telegram, hc->mode, 0); // Auto = xFF, Manual = x00 eg. 10 00 FF 08 01 B9 FF + telegram->read_value(hc->mode_new, 21); // 0-off, 1-manual, 2-auto + if (Helpers::hasValue(hc->mode_new)) { + has_update(hc->mode, hc->mode_new); + } else { + uint8_t mode = EMS_VALUE_UINT_NOTSET; + telegram->read_value(mode, 0); + has_update(hc->mode, mode == 0xFF ? 2 : 1); + } has_update(telegram, hc->daytemp, 2); // is * 2 has_update(telegram, hc->nighttemp, 4); // is * 2 @@ -2552,12 +2558,11 @@ bool Thermostat::set_mode_n(const uint8_t mode, const uint8_t hc_num) { break; case EMSdevice::EMS_DEVICE_FLAG_RC300: case EMSdevice::EMS_DEVICE_FLAG_RC100: - offset = EMS_OFFSET_RCPLUSSet_mode; - validate_typeid = monitor_typeids[hc_p]; - if (mode == HeatingCircuit::Mode::AUTO) { - set_mode_value = 0xFF; // special value for auto + if (Helpers::hasValue(hc->mode_new)) { + offset = EMS_OFFSET_RCPLUSSet_mode; } else { - set_mode_value = 0; // everything else, like manual/day etc.. + offset = 0; + set_mode_value = set_mode_value == 2 ? 0xFF : 0; } break; case EMSdevice::EMS_DEVICE_FLAG_JUNKERS: @@ -3599,7 +3604,7 @@ void Thermostat::register_device_values() { &wwDisinfectHour_, DeviceValueType::UINT, DeviceValueNumOp::DV_NUMOP_MUL15, - FL_(wwDisinfectTime), + FL_(wwDisinfectHour), DeviceValueUOM::MINUTES, MAKE_CF_CB(set_wwDisinfectHour), 0, diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index 8db4096dd..4fa450143 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -41,6 +41,7 @@ class Thermostat : public EMSdevice { uint8_t tempautotemp; int8_t remoteseltemp; uint8_t mode; + uint8_t mode_new; uint8_t modetype; uint8_t summermode; uint8_t holidaymode; @@ -318,6 +319,7 @@ class Thermostat : public EMSdevice { static constexpr uint8_t EMS_OFFSET_RCPLUSStatusMessage_curr = 0; // current temp static constexpr uint8_t EMS_OFFSET_RCPLUSStatusMessage_currsetpoint = 6; // target setpoint temp static constexpr uint8_t EMS_OFFSET_RCPLUSSet_mode = 0; // operation mode(Auto=0xFF, Manual=0x00) + static constexpr uint8_t EMS_OFFSET_RCPLUSSet_mode_new = 21; // operation mode(0-off, 1-manual, 2-auto) static constexpr uint8_t EMS_OFFSET_RCPLUSSet_temp_comfort3 = 1; // comfort3 level static constexpr uint8_t EMS_OFFSET_RCPLUSSet_temp_comfort2 = 2; // comfort2 level static constexpr uint8_t EMS_OFFSET_RCPLUSSet_temp_comfort1 = 3; // comfort1 level diff --git a/src/locale_common.h b/src/locale_common.h index 7d52e6801..ce3b8675f 100644 --- a/src/locale_common.h +++ b/src/locale_common.h @@ -303,7 +303,7 @@ MAKE_ENUM(enum_summer, FL_(winter), FL_(summer)) MAKE_ENUM(enum_operatingstate, FL_(heating), FL_(off), FL_(cooling)) MAKE_ENUM(enum_hpmode, FL_(heating), FL_(cooling), FL_(heatandcool)) -MAKE_ENUM(enum_mode, FL_(manual), FL_(auto)) // RC100, RC300, RC310 +MAKE_ENUM(enum_mode, FL_(off), FL_(manual), FL_(auto)) // RC100, RC300, RC310 MAKE_ENUM(enum_mode2, FL_(off), FL_(manual), FL_(auto)) // RC20, RC30 MAKE_ENUM(enum_mode3, FL_(night), FL_(day), FL_(auto)) // RC35, RC30_N, RC25, RC20_N MAKE_ENUM(enum_mode4, FL_(nofrost), FL_(eco), FL_(heat), FL_(auto)) // JUNKERS From f34be2a884c8c1421d09cf58a00c3b76dcc37e03 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 13 Nov 2023 13:59:30 +0100 Subject: [PATCH 20/91] test for fixing #1420 --- src/emsdevice.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/emsdevice.cpp b/src/emsdevice.cpp index 2d056996e..aa632f660 100644 --- a/src/emsdevice.cpp +++ b/src/emsdevice.cpp @@ -1808,7 +1808,8 @@ bool EMSdevice::handle_telegram(std::shared_ptr telegram) { #if defined(EMSESP_DEBUG) EMSESP::logger().debug("This telegram (%s) is not recognized by the EMS bus", tf.telegram_type_name_); #endif - tf.fetch_ = false; + // test if this causes issue: https://github.com/emsesp/EMS-ESP32/issues/1420 + // tf.fetch_ = false; return false; } if (telegram->message_length > 0) { From 84fab951ba66c06c0edc1f8a104c7c590ccd0cf4 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 13 Nov 2023 18:01:14 +0100 Subject: [PATCH 21/91] fix RC300 summertemp, mode --- src/devices/thermostat.cpp | 10 +++++----- src/devices/thermostat.h | 2 +- src/emsdevice.cpp | 10 ++++++++++ src/emsdevice.h | 1 + src/version.h | 2 +- 5 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index bbc5de7fa..188e8e8dc 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -990,7 +990,7 @@ void Thermostat::process_RC300Monitor(std::shared_ptr telegram) // summermode is bit 4 for boilers and bit 6 for heatpumps: 0:winter, 1:summer telegram->read_value(hc->statusbyte, 2); // use summertemp or hpoperatingstate, https://github.com/emsesp/EMS-ESP32/issues/747, #550, #503 - if ((hc->statusbyte & 1) || !is_fetch(summer2_typeids[hc->hc()])) { + if ((hc->statusbyte & 1) || !is_received(summer2_typeids[hc->hc()])) { has_update(hc->summermode, hc->statusbyte & 0x50 ? 1 : 0); has_update(hc->hpoperatingstate, EMS_VALUE_UINT_NOTSET); } else { @@ -1022,7 +1022,7 @@ void Thermostat::process_RC300Set(std::shared_ptr telegram) { // has_update(telegram, hc->selTemp, 10, 1); // single byte conversion, value is * 2 - manual telegram->read_value(hc->mode_new, 21); // 0-off, 1-manual, 2-auto - if (Helpers::hasValue(hc->mode_new)) { + if (hc->mode_new < 3) { has_update(hc->mode, hc->mode_new); } else { uint8_t mode = EMS_VALUE_UINT_NOTSET; @@ -1063,7 +1063,7 @@ void Thermostat::process_RC300Summer(std::shared_ptr telegram) { has_update(telegram, hc->roominfluence, 0); has_update(telegram, hc->roominfl_factor, 1); // is * 10 has_update(telegram, hc->offsettemp, 2); - if (!is_fetch(summer2_typeids[hc->hc()])) { + if (!is_received(summer2_typeids[hc->hc()])) { has_update(telegram, hc->summertemp, 6); has_update(telegram, hc->summersetmode, 7); } @@ -2616,7 +2616,7 @@ bool Thermostat::set_summermode(const char * value, const int8_t id) { uint8_t set; - if (is_fetch(summer2_typeids[hc->hc()])) { + if (is_received(summer2_typeids[hc->hc()])) { if ((hc->statusbyte & 1) && Helpers::value2enum(value, set, FL_(enum_summermode))) { write_command(summer2_typeids[hc->hc()], 0, set, summer2_typeids[hc->hc()]); return true; @@ -3169,7 +3169,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co validate_typeid = set_typeids[hc->hc()]; switch (mode) { case HeatingCircuit::Mode::SUMMER: - if (is_fetch(summer2_typeids[hc->hc()])) { + if (is_received(summer2_typeids[hc->hc()])) { offset = 0x01; set_typeid = summer2_typeids[hc->hc()]; } else { diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index 4fa450143..3ad8bec68 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -41,7 +41,7 @@ class Thermostat : public EMSdevice { uint8_t tempautotemp; int8_t remoteseltemp; uint8_t mode; - uint8_t mode_new; + uint8_t mode_new = EMS_VALUE_UINT_NOTSET; // not initialized by register_value uint8_t modetype; uint8_t summermode; uint8_t holidaymode; diff --git a/src/emsdevice.cpp b/src/emsdevice.cpp index aa632f660..8f9b14cc5 100644 --- a/src/emsdevice.cpp +++ b/src/emsdevice.cpp @@ -347,6 +347,16 @@ bool EMSdevice::is_fetch(uint16_t telegram_id) const { return false; } +// get received status of telegramID +bool EMSdevice::is_received(uint16_t telegram_id) const { + for (const auto & tf : telegram_functions_) { + if (tf.telegram_type_id_ == telegram_id) { + return tf.received_; + } + } + return false; +} + // check for a tag to create a nest bool EMSdevice::has_tags(const uint8_t tag) const { for (const auto & dv : devicevalues_) { diff --git a/src/emsdevice.h b/src/emsdevice.h index 0f917fdc9..d0133c2bc 100644 --- a/src/emsdevice.h +++ b/src/emsdevice.h @@ -314,6 +314,7 @@ class EMSdevice { void fetch_values(); void toggle_fetch(uint16_t telegram_id, bool toggle); bool is_fetch(uint16_t telegram_id) const; + bool is_received(uint16_t telegram_id) const; bool has_telegram_id(uint16_t id) const; void ha_config_clear(); diff --git a/src/version.h b/src/version.h index 853af4be9..4a56be2f2 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.6.3-test.7a" +#define EMSESP_APP_VERSION "3.6.3-test.7b" From 509122bf4bc43f477c0e2df4da75decf6e51515f Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 13 Nov 2023 19:29:03 +0100 Subject: [PATCH 22/91] fix RC300 wwdisinfectTime --- src/devices/thermostat.cpp | 2 +- src/locale_translations.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 188e8e8dc..4efb05479 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -3604,7 +3604,7 @@ void Thermostat::register_device_values() { &wwDisinfectHour_, DeviceValueType::UINT, DeviceValueNumOp::DV_NUMOP_MUL15, - FL_(wwDisinfectHour), + FL_(wwDisinfectTime), DeviceValueUOM::MINUTES, MAKE_CF_CB(set_wwDisinfectHour), 0, diff --git a/src/locale_translations.h b/src/locale_translations.h index 463980a7b..f9df8f01d 100644 --- a/src/locale_translations.h +++ b/src/locale_translations.h @@ -615,7 +615,7 @@ MAKE_TRANSLATION(wwChargeDuration, "wwchargeduration", "charge duration", "Laded MAKE_TRANSLATION(wwDisinfect, "wwdisinfect", "disinfection", "Desinfektion", "Desinfectie", "Desinfektion", "dezynfekcja termiczna", "desinfeksjon", "désinfection", "dezenfeksiyon", "disinfezione") MAKE_TRANSLATION(wwDisinfectDay, "wwdisinfectday", "disinfection day", "Desinfektionstag", "Desinfectiedag", "Desinfektionsdag", "dzień dezynfekcji termicznej", "desinfeksjonsdag", "jour désinfection", "dezenfeksiyon günü", "giorno disinfezione") MAKE_TRANSLATION(wwDisinfectHour, "wwdisinfecthour", "disinfection hour", "Desinfektionsstunde", "Desinfectieuur", "Desinfektionstimme", "godzina dezynfekcji termicznej", "desinfeksjonstime", "heure désinfection", "dezenfeksiyon saati", "ora disinfezione") -MAKE_TRANSLATION(wwDisinfectTime, "wwdisinfecttime", "disinfection time", "Desinfektionsdauer", "Desinfectietijd", "Desinfektionstid", "maksymalny czas trwania dezynfekcji termicznej", "desinfeksjonstid", "durée désinfection", "dezenfeksiyon zamanı", "orario disinfezione") +MAKE_TRANSLATION(wwDisinfectTime, "wwdisinfecttime", "disinfection time", "Desinfektionszeit", "Desinfectietijd", "Desinfektionstid", "maksymalny czas trwania dezynfekcji termicznej", "desinfeksjonstid", "durée désinfection", "dezenfeksiyon zamanı", "orario disinfezione") MAKE_TRANSLATION(wwDailyHeating, "wwdailyheating", "daily heating", "täglich Heizen", "Dagelijks opwarmen", "Daglig Uppvärmning", "codzienne nagrzewanie", "daglig oppvarming", "chauffage quotidien", "günlük ısıtma", "riscaldamento giornaliero") MAKE_TRANSLATION(wwDailyHeatTime, "wwdailyheattime", "daily heating time", "tägliche Heizzeit", "Tijd dagelijkse opwarming", "Daglig Uppvärmningstid", "czas trwania codziennego nagrzewania", "daglig oppvarmingstid", "heure chauffage quotidien", "günlük ısıtma süresi", "orario riscaldamento giornaliero") From f9e1940c7bfe6a0e2637b34fa1ee2e5de7b6cc30 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Tue, 14 Nov 2023 18:11:32 +0100 Subject: [PATCH 23/91] fix crash on entering wrong day for switchtime --- src/devices/thermostat.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 9573c7bc7..284dc3e6f 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -2919,7 +2919,7 @@ bool Thermostat::set_switchtime(const char * value, const uint16_t type_id, char min_on = 0; max_on = 1; } - if (no > 41 || time > 0x90 || ((on < min_on || on > max_on) && on != 7)) { + if (no > 41 || time > 0x90 || day > 7 || ((on < min_on || on > max_on) && on != 7)) { // LOG_WARNING("Setting switchtime: Invalid data: %s", value); // LOG_WARNING("Setting switchtime: Invalid data: %02d.%1d.0x%02X.%1d", no, day, time, on); return false; From 0d07a9e50c23d1ef99b0ae38dad0773115f46692 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 15 Nov 2023 11:26:45 +0100 Subject: [PATCH 24/91] add some water entities --- src/devices/water.cpp | 39 +++++++++++++++++++++++++++++++++++++++ src/devices/water.h | 10 ++++++++++ src/locale_common.h | 3 +++ src/locale_translations.h | 4 ++++ 4 files changed, 56 insertions(+) diff --git a/src/devices/water.cpp b/src/devices/water.cpp index f3a9903d9..32f98a984 100644 --- a/src/devices/water.cpp +++ b/src/devices/water.cpp @@ -33,6 +33,7 @@ Water::Water(uint8_t device_type, uint8_t device_id, uint8_t product_id, const c register_telegram_type(0x07D6, "SM100wwTemperature", false, MAKE_PF_CB(process_SM100wwTemperature)); register_telegram_type(0x07AA, "SM100wwStatus", false, MAKE_PF_CB(process_SM100wwStatus)); register_telegram_type(0x07AB, "SM100wwCommand", false, MAKE_PF_CB(process_SM100wwCommand)); + register_telegram_type(0x07AC, "SM100wwParam1", false, MAKE_PF_CB(process_SM100wwParam2)); register_telegram_type(0x07A5, "SM100wwCirc", true, MAKE_PF_CB(process_SM100wwCirc)); register_telegram_type(0x07A6, "SM100wwParam", true, MAKE_PF_CB(process_SM100wwParam)); register_telegram_type(0x07AE, "SM100wwKeepWarm", true, MAKE_PF_CB(process_SM100wwKeepWarm)); @@ -58,6 +59,8 @@ Water::Water(uint8_t device_type, uint8_t device_id, uint8_t product_id, const c register_device_value(tag, &wwPumpMod_, DeviceValueType::UINT, FL_(wwPumpMod), DeviceValueUOM::PERCENT); register_device_value(tag, &wwFlow_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwFlow), DeviceValueUOM::LMIN); register_device_value(tag, &wwRetValve_, DeviceValueType::BOOL, FL_(valveReturn), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwKeepWarm)); + register_device_value(tag, &wwDeltaTRet_, DeviceValueType::UINT, FL_(deltaTRet), DeviceValueUOM::K, MAKE_CF_CB(set_wwDeltaTRet)); + register_device_value(tag, &errorDisp_, DeviceValueType::ENUM, FL_(enum_errorDisp), FL_(errorDisp), DeviceValueUOM::NONE, MAKE_CF_CB(set_errorDisp)); } else if (device_id >= EMSdevice::EMS_DEVICE_ID_DHW1 && device_id <= EMSdevice::EMS_DEVICE_ID_DHW2) { wwc_ = device_id - EMSdevice::EMS_DEVICE_ID_DHW1; @@ -75,6 +78,7 @@ Water::Water(uint8_t device_type, uint8_t device_id, uint8_t product_id, const c register_device_value(tag, &wwRequiredTemp_, DeviceValueType::UINT, FL_(wwRequiredTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwRequiredTemp)); register_device_value(tag, &wwCirc_, DeviceValueType::BOOL, FL_(wwCirc), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwCirc)); register_device_value(tag, &wwCircMode_, DeviceValueType::ENUM, FL_(enum_wwCircMode), FL_(wwCircMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwCircMode)); + register_device_value(tag, &wwCircTc_, DeviceValueType::BOOL, FL_(wwCircTc), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwCircTc)); } else if (device_id == 0x40) { // flags == EMSdevice::EMS_DEVICE_FLAG_IPM, special DHW pos 10 wwc_ = 0; tag = DeviceValueTAG::TAG_WWC1; @@ -126,6 +130,11 @@ void Water::process_SM100wwParam(std::shared_ptr telegram) { has_update(telegram, wwRedTemp_, 10); has_update(telegram, wwDisinfectionTemp_, 12); // (daily heating time thermostat 2F5, offset 9, offset 8 on/off) + has_update(telegram, errorDisp_, 19); +} +// SM100wwParam2 - 0x07AC, Solar Module(0x2A) -> (0x00) +void Water::process_SM100wwParam2(std::shared_ptr telegram) { + has_update(telegram, wwDeltaTRet_, 1); } // SM100wwCirc - 0x07A5 @@ -133,6 +142,7 @@ void Water::process_SM100wwParam(std::shared_ptr telegram) { void Water::process_SM100wwCirc(std::shared_ptr telegram) { has_update(telegram, wwCirc_, 0); has_update(telegram, wwCircMode_, 3); + has_update(telegram, wwCircTc_, 4); // time controled on/off } // SM100wwKeepWarm - 0x7AE, keepWarm @@ -345,6 +355,16 @@ bool Water::set_wwCircMode(const char * value, const int8_t id) { return true; } +// set time controled mode on/off +bool Water::set_wwCircTc(const char * value, const int8_t id) { + bool b; + if (!Helpers::value2bool(value, b)) { + return false; + } + write_command(0x33B + wwc_, 4, b ? 0x01 : 0x00, 0x33B + wwc_); + return true; +} + bool Water::set_wwKeepWarm(const char * value, const int8_t id) { bool b; if (!Helpers::value2bool(value, b)) { @@ -407,4 +427,23 @@ bool Water::set_wwHystOff(const char * value, const int8_t id) { write_command(0x33, 4, n, 0x33); return true; } + +bool Water::set_errorDisp(const char * value, const int8_t id) { + uint8_t n; + if (!Helpers::value2enum(value, n, FL_(enum_errorDisp))) { + return false; + } + write_command(0x7A6, 19, n, 0x7A6); + return true; +} + +bool Water::set_wwDeltaTRet(const char * value, const int8_t id) { + int n; + if (!Helpers::value2number(value, n)) { + return false; + } + write_command(0x7AC, 1, n, 0x7AC); + return true; +} + } // namespace emsesp diff --git a/src/devices/water.h b/src/devices/water.h index 95de288d6..d954c8e79 100644 --- a/src/devices/water.h +++ b/src/devices/water.h @@ -46,6 +46,9 @@ class Water : public EMSdevice { // SM100wwStatus - 0x07AA uint8_t wwPump_; + // SM100wwParam2 - 0x07AC + uint8_t wwDeltaTRet_; + // SM100wwParam - 0x07A6 uint8_t wwMaxTemp_; uint8_t wwSelTemp_; @@ -53,6 +56,7 @@ class Water : public EMSdevice { uint8_t wwDailyTemp_; uint8_t wwDisinfectionTemp_; uint8_t wwHotTemp_; + uint8_t errorDisp_; // error display off/normal/inverted // SM100wwKeepWarm - 0x07AE uint8_t wwKeepWarm_; @@ -60,6 +64,7 @@ class Water : public EMSdevice { // SM100wwCirc - 0x07A5 uint8_t wwCirc_; uint8_t wwCircMode_; + uint8_t wwCircTc_; // SM100wwStatus2 - 0x07E0 uint8_t wwPumpMod_; @@ -83,6 +88,7 @@ class Water : public EMSdevice { void process_SM100wwCommand(std::shared_ptr telegram); void process_SM100wwCirc(std::shared_ptr telegram); void process_SM100wwParam(std::shared_ptr telegram); + void process_SM100wwParam2(std::shared_ptr telegram); void process_SM100wwKeepWarm(std::shared_ptr telegram); void process_SM100ValveStatus(std::shared_ptr telegram); @@ -101,6 +107,7 @@ class Water : public EMSdevice { bool set_wwHotTemp(const char * value, const int8_t id); bool set_wwCirc(const char * value, const int8_t id); bool set_wwCircMode(const char * value, const int8_t id); + bool set_wwCircTc(const char * value, const int8_t id); bool set_wwKeepWarm(const char * value, const int8_t id); bool set_wwDisinfectionTemp(const char * value, const int8_t id); bool set_wwDailyTemp(const char * value, const int8_t id); @@ -111,6 +118,9 @@ class Water : public EMSdevice { bool set_wwFlowTempOffset(const char * value, const int8_t id); bool set_wwHystOn(const char * value, const int8_t id); bool set_wwHystOff(const char * value, const int8_t id); + + bool set_wwDeltaTRet(const char * value, const int8_t id); + bool set_errorDisp(const char * value, const int8_t id); }; } // namespace emsesp diff --git a/src/locale_common.h b/src/locale_common.h index 86b10f48a..a2d327835 100644 --- a/src/locale_common.h +++ b/src/locale_common.h @@ -364,6 +364,9 @@ MAKE_ENUM(enum_blockTerm, FL_(n_o), FL_(n_c)) // Ventilation MAKE_ENUM(enum_ventMode, FL_(auto), FL_(off), FL_(L1), FL_(L2), FL_(L3), FL_(L4), FL_(demand), FL_(sleep), FL_(intense), FL_(bypass), FL_(partymode), FL_(fireplace)) +// water +MAKE_ENUM(enum_errorDisp, FL_(off), FL_(normal), FL_(inverted)) + #pragma GCC diagnostic pop // clang-format on diff --git a/src/locale_translations.h b/src/locale_translations.h index d0f4c9341..033effe57 100644 --- a/src/locale_translations.h +++ b/src/locale_translations.h @@ -166,6 +166,7 @@ MAKE_WORD_TRANSLATION(intern, "intern", "intern", "intern", "intern", "wewnętrz MAKE_WORD_TRANSLATION(lower, "lower", "niedirger", "lager", "lägre", "mniejszy", "nedre", "inférieur", "daha düşük", "basso") MAKE_WORD_TRANSLATION(error, "error", "Fehler", "error", "Fel", "błąd", "feil", "erreur", "Hata", "errore") MAKE_WORD_TRANSLATION(na, "n/a", "n/a", "n/a", "n/a", "nd.", "n/a", "n/c", "mevcut değil", "n/a") +MAKE_WORD_TRANSLATION(inverted, "inverted", "invertiert", "", "", "", "", "", "", "") // boiler MAKE_WORD_TRANSLATION(time, "time", "Zeit", "tijd", "Tid", "godzina", "tid", "heure", "zaman", "ora") @@ -746,6 +747,9 @@ MAKE_TRANSLATION(wwTemp5, "wwtemp5", "temperature 5", "Temperatur 5", "Temperatu MAKE_TRANSLATION(wwTemp6, "wwtemp6", "temperature 6", "Temperatur 6", "Temperatuur 6", "Temperatur 6", "temperatura 6", "temperatur 6", "température 6", "sıcaklık 6", "Temperatura 6") // MAKE_TRANSLATION(wwTemp7, "wwtemp7", "temperature 7", "Temperatur 7", "Temperatuur 7", "Temperatur 7", "temperatura 7", "Temperatur 7", "température 7", "sıcaklık 7", "Temperatura 7") MAKE_TRANSLATION(wwPump, "wwpump", "pump", "Pumpe", "Pomp", "Pump", "pompa", "pumpe", "pompe", "pompa", "Pompa") +MAKE_TRANSLATION(wwCircTc, "wwcirctc", "circulation time controled", "zeitgesteuerte Zirkulation", "", "", "", "", "", "", "") // TODO translate +MAKE_TRANSLATION(errorDisp, "errordisp", "error display", "Fehleranzeige", "", "", "", "", "", "", "") // TODO translate +MAKE_TRANSLATION(deltaTRet, "deltatret", "temp. diff. return valve", "Temperaturdifferenz Rücklaufventil", "", "", "", "", "", "", "") // TODO translate // solar ww and mixer wwc MAKE_TRANSLATION(wwMinTemp, "wwmintemp", "minimum temperature", "minimale Temperatur", "Minimale temperatuur", "Min Temperatur", "temperatura minimalna", "min temperatur", "température min", "minimum sıcaklık", "temperatura minima") MAKE_TRANSLATION(wwRedTemp, "wwredtemp", "reduced temperature", "reduzierte Temperatur", "Gereduceerde temperatuur", "Reducerad Temperatur", "temperatura zredukowana", "reducert temperatur", "température réduite", "düşürülmüş sıcaklık", "temperatura ridotta") From 1ada18ec9af3c81d81cbf89b3613185decaa749d Mon Sep 17 00:00:00 2001 From: Proddy Date: Wed, 15 Nov 2023 17:56:15 +0100 Subject: [PATCH 25/91] 3.6.3-dev.9 --- src/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/version.h b/src/version.h index 6981959ec..20e509d5a 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.6.3-test.8" +#define EMSESP_APP_VERSION "3.6.3-dev.9" From bc39b738e2cb426e5f900582409a7d925bee888a Mon Sep 17 00:00:00 2001 From: Proddy Date: Wed, 15 Nov 2023 17:56:23 +0100 Subject: [PATCH 26/91] auto formatting --- CHANGELOG_LATEST.md | 4 ++-- src/devices/thermostat.cpp | 2 +- src/uart/emsuart_esp32.cpp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 91c427b17..5545c8dc0 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -16,11 +16,11 @@ Writeable Text entities have moved from type `sensor` to `text` in Home Assistan - shower_data MQTT payload contains the timestamp [#1329](https://github.com/emsesp/EMS-ESP32/issues/1329) - HA discovery for writeable text entities [#1337](https://github.com/emsesp/EMS-ESP32/pull/1377) - autodetect board_profile, store in nvs, add telnet command option, add E32V2 -- heatpump high res energy counters [#1348, #1349. #1350](https://github.com/emsesp/EMS-ESP32/issues/1348) +- heat pump high res energy counters [#1348, #1349. #1350](https://github.com/emsesp/EMS-ESP32/issues/1348) - optional bssid in network settings - extension module EM100 [#1315](https://github.com/emsesp/EMS-ESP32/discussions/1315) - digital_out with new options for polarity and startup state -- Added 'system allvalues' command that dumps all the EMS device values, plus sensors and any custom entities +- added 'system allvalues' command that dumps all the EMS device values, plus sensors and any custom entities ## Fixed diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 284dc3e6f..93a141fa0 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -2563,7 +2563,7 @@ bool Thermostat::set_mode_n(const uint8_t mode, const uint8_t hc_num) { if (Helpers::hasValue(hc->mode_new)) { offset = EMS_OFFSET_RCPLUSSet_mode_new; } else { - offset = EMS_OFFSET_RCPLUSSet_mode; + offset = EMS_OFFSET_RCPLUSSet_mode; set_mode_value = set_mode_value == 2 ? 0xFF : 0; } break; diff --git a/src/uart/emsuart_esp32.cpp b/src/uart/emsuart_esp32.cpp index cbe01b288..d259ab03c 100644 --- a/src/uart/emsuart_esp32.cpp +++ b/src/uart/emsuart_esp32.cpp @@ -33,7 +33,7 @@ namespace emsesp { static QueueHandle_t uart_queue; -uint8_t tx_mode_ = 0xFF; +uint8_t tx_mode_ = 0xFF; uint32_t inverse_mask = 0; /* From acb453bd4be43583077284e6c92b46033849eb55 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 15 Nov 2023 18:13:43 +0100 Subject: [PATCH 27/91] fix water: retValve and circ time control --- src/devices/water.cpp | 13 +++++++++++-- src/devices/water.h | 1 + 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/devices/water.cpp b/src/devices/water.cpp index 32f98a984..a176b1b03 100644 --- a/src/devices/water.cpp +++ b/src/devices/water.cpp @@ -54,11 +54,12 @@ Water::Water(uint8_t device_type, uint8_t device_id, uint8_t product_id, const c register_device_value(tag, &wwDisinfectionTemp_, DeviceValueType::UINT, FL_(wwDisinfectionTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwDisinfectionTemp)); register_device_value(tag, &wwCirc_, DeviceValueType::BOOL, FL_(wwCirc), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwCirc)); register_device_value(tag, &wwCircMode_, DeviceValueType::ENUM, FL_(enum_freq), FL_(wwCircMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwCircMode)); + register_device_value(tag, &wwCircTc_, DeviceValueType::BOOL, FL_(wwCircTc), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwCircTc)); register_device_value(tag, &wwKeepWarm_, DeviceValueType::BOOL, FL_(wwKeepWarm), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwKeepWarm)); register_device_value(tag, &wwStatus2_, DeviceValueType::ENUM, FL_(enum_wwStatus2), FL_(wwStatus2), DeviceValueUOM::NONE); register_device_value(tag, &wwPumpMod_, DeviceValueType::UINT, FL_(wwPumpMod), DeviceValueUOM::PERCENT); register_device_value(tag, &wwFlow_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(wwFlow), DeviceValueUOM::LMIN); - register_device_value(tag, &wwRetValve_, DeviceValueType::BOOL, FL_(valveReturn), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwKeepWarm)); + register_device_value(tag, &wwRetValve_, DeviceValueType::UINT, FL_(valveReturn), DeviceValueUOM::PERCENT, MAKE_CF_CB(set_wwRetValve)); register_device_value(tag, &wwDeltaTRet_, DeviceValueType::UINT, FL_(deltaTRet), DeviceValueUOM::K, MAKE_CF_CB(set_wwDeltaTRet)); register_device_value(tag, &errorDisp_, DeviceValueType::ENUM, FL_(enum_errorDisp), FL_(errorDisp), DeviceValueUOM::NONE, MAKE_CF_CB(set_errorDisp)); @@ -78,7 +79,6 @@ Water::Water(uint8_t device_type, uint8_t device_id, uint8_t product_id, const c register_device_value(tag, &wwRequiredTemp_, DeviceValueType::UINT, FL_(wwRequiredTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwRequiredTemp)); register_device_value(tag, &wwCirc_, DeviceValueType::BOOL, FL_(wwCirc), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwCirc)); register_device_value(tag, &wwCircMode_, DeviceValueType::ENUM, FL_(enum_wwCircMode), FL_(wwCircMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwCircMode)); - register_device_value(tag, &wwCircTc_, DeviceValueType::BOOL, FL_(wwCircTc), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwCircTc)); } else if (device_id == 0x40) { // flags == EMSdevice::EMS_DEVICE_FLAG_IPM, special DHW pos 10 wwc_ = 0; tag = DeviceValueTAG::TAG_WWC1; @@ -428,6 +428,15 @@ bool Water::set_wwHystOff(const char * value, const int8_t id) { return true; } +bool Water::set_wwRetValve(const char * value, const int8_t id) { + int n; + if (!Helpers::value2number(value, n)) { + return false; + } + write_command(0x7AD, 1, n, 0x7AD); + return true; +} + bool Water::set_errorDisp(const char * value, const int8_t id) { uint8_t n; if (!Helpers::value2enum(value, n, FL_(enum_errorDisp))) { diff --git a/src/devices/water.h b/src/devices/water.h index d954c8e79..b4cd7ee0e 100644 --- a/src/devices/water.h +++ b/src/devices/water.h @@ -120,6 +120,7 @@ class Water : public EMSdevice { bool set_wwHystOff(const char * value, const int8_t id); bool set_wwDeltaTRet(const char * value, const int8_t id); + bool set_wwRetValve(const char * value, const int8_t id); bool set_errorDisp(const char * value, const int8_t id); }; From 50777bd68141cb0a13f39a2fa3967b5cd63fcb96 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 15 Nov 2023 19:11:59 +0100 Subject: [PATCH 28/91] temporary fix for values/info command --- src/emsdevice.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/emsdevice.cpp b/src/emsdevice.cpp index 667efa1c3..b7940dcfa 100644 --- a/src/emsdevice.cpp +++ b/src/emsdevice.cpp @@ -841,7 +841,7 @@ std::string EMSdevice::get_value_uom(const std::string & shortname) const { return std::string{}; // not found } -bool EMSdevice::export_values(uint8_t unique_id, JsonObject & output, const int8_t id, const uint8_t output_target) { +bool EMSdevice::export_values(uint8_t device_type, JsonObject & output, const int8_t id, const uint8_t output_target) { bool has_value = false; uint8_t tag; if (id >= 1 && id <= (1 + DeviceValueTAG::TAG_HS16 - DeviceValueTAG::TAG_HC1)) { @@ -854,7 +854,7 @@ bool EMSdevice::export_values(uint8_t unique_id, JsonObject & output, const int8 if (id > 0 || output_target == EMSdevice::OUTPUT_TARGET::API_VERBOSE) { for (const auto & emsdevice : EMSESP::emsdevices) { - if (emsdevice->unique_id() == unique_id) { + if (emsdevice->device_type() == device_type) { has_value |= emsdevice->generate_values(output, tag, (id < 1), output_target); // use nested for id -1 and 0 } } @@ -866,7 +866,7 @@ bool EMSdevice::export_values(uint8_t unique_id, JsonObject & output, const int8 JsonObject output_hc = output; bool nest_created = false; for (const auto & emsdevice : EMSESP::emsdevices) { - if (emsdevice->unique_id() == unique_id) { + if (emsdevice->device_type() == device_type) { if (!nest_created && emsdevice->has_tags(tag)) { output_hc = output.createNestedObject(EMSdevice::tag_to_mqtt(tag)); nest_created = true; From 722ca34a1825580d51ee4f6b6caa25b0d3bf9ca1 Mon Sep 17 00:00:00 2001 From: proddy Date: Wed, 15 Nov 2023 21:40:23 +0100 Subject: [PATCH 29/91] rollback and fix https://github.com/emsesp/EMS-ESP32/pull/1426 --- src/emsdevice.cpp | 6 +++--- src/system.cpp | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/emsdevice.cpp b/src/emsdevice.cpp index 127469928..08ccb9b3f 100644 --- a/src/emsdevice.cpp +++ b/src/emsdevice.cpp @@ -827,7 +827,7 @@ std::string EMSdevice::get_value_uom(const std::string & shortname) const { return std::string{}; // not found } -bool EMSdevice::export_values(uint8_t unique_id, JsonObject & output, const int8_t id, const uint8_t output_target) { +bool EMSdevice::export_values(uint8_t device_type, JsonObject & output, const int8_t id, const uint8_t output_target) { bool has_value = false; uint8_t tag; if (id >= 1 && id <= (1 + DeviceValueTAG::TAG_HS16 - DeviceValueTAG::TAG_HC1)) { @@ -840,7 +840,7 @@ bool EMSdevice::export_values(uint8_t unique_id, JsonObject & output, const int8 if (id > 0 || output_target == EMSdevice::OUTPUT_TARGET::API_VERBOSE) { for (const auto & emsdevice : EMSESP::emsdevices) { - if (emsdevice->unique_id() == unique_id) { + if (emsdevice && (emsdevice->device_type() == device_type)) { has_value |= emsdevice->generate_values(output, tag, (id < 1), output_target); // use nested for id -1 and 0 } } @@ -852,7 +852,7 @@ bool EMSdevice::export_values(uint8_t unique_id, JsonObject & output, const int8 JsonObject output_hc = output; bool nest_created = false; for (const auto & emsdevice : EMSESP::emsdevices) { - if (emsdevice->unique_id() == unique_id) { + if (emsdevice && (emsdevice->device_type() == device_type)) { if (!nest_created && emsdevice->has_tags(tag)) { output_hc = output.createNestedObject(EMSdevice::tag_to_mqtt(tag)); nest_created = true; diff --git a/src/system.cpp b/src/system.cpp index f6191e336..398efccaf 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -115,7 +115,7 @@ bool System::command_allvalues(const char * value, const int8_t id, JsonObject & for (const auto & emsdevice : EMSESP::emsdevices) { std::string title = emsdevice->device_type_2_device_name_translated() + std::string(" ") + emsdevice->to_string(); device_output = output.createNestedObject(title); - emsesp::EMSdevice::export_values(emsdevice->unique_id(), device_output, id, EMSdevice::OUTPUT_TARGET::API_VERBOSE); + emsdevice->generate_values(device_output, DeviceValueTAG::TAG_NONE, true, EMSdevice::OUTPUT_TARGET::API_VERBOSE); // use nested for id -1 and 0 } // Custom entities From 29f86c9ab9b4c65403b5b018a2babdff43b45aa9 Mon Sep 17 00:00:00 2001 From: proddy Date: Wed, 15 Nov 2023 21:40:38 +0100 Subject: [PATCH 30/91] make standalone work --- lib_standalone/Preferences.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_standalone/Preferences.h b/lib_standalone/Preferences.h index 914c9b769..900ac09fe 100644 --- a/lib_standalone/Preferences.h +++ b/lib_standalone/Preferences.h @@ -42,7 +42,7 @@ class Preferences { } double getDouble(const char * key, double defaultValue = NAN) { - return NAN; + return 0; } size_t putString(const char * key, const char * value) { From cc9819b56b6f8e1f900d14aff8808e4576c04ca0 Mon Sep 17 00:00:00 2001 From: proddy Date: Wed, 15 Nov 2023 21:40:49 +0100 Subject: [PATCH 31/91] fix lint compile warnings --- src/devices/extension.h | 8 ++++---- src/roomcontrol.cpp | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/devices/extension.h b/src/devices/extension.h index ae592bd66..617456bdc 100644 --- a/src/devices/extension.h +++ b/src/devices/extension.h @@ -43,10 +43,10 @@ class Extension : public EMSdevice { int16_t headerTemp_; // T0 uint8_t input_; // IO1 - uint8_t errorState_; // OE1 - uint8_t errorPump_; // IE0 - uint8_t outPower_; // IO1 - uint8_t setPower_; // request + // uint8_t errorState_; // OE1 + // uint8_t errorPump_; // IE0 + uint8_t outPower_; // IO1 + uint8_t setPower_; // request uint8_t setPoint_; uint8_t dip_; // dip switch uint8_t minV_; diff --git a/src/roomcontrol.cpp b/src/roomcontrol.cpp index f3faece46..92472b8aa 100644 --- a/src/roomcontrol.cpp +++ b/src/roomcontrol.cpp @@ -51,7 +51,7 @@ void Roomctrl::set_remotehum(const uint8_t type, const uint8_t hc, const int8_t return; } type_ = type; - if (remotehum_[hc] != EMS_VALUE_UINT_NOTSET && hum == EMS_VALUE_UINT_NOTSET) { + if (remotehum_[hc] != EMS_VALUE_UINT_NOTSET && (uint8_t)hum == EMS_VALUE_UINT_NOTSET) { switch_off_[hc] = true; } if (remotehum_[hc] != hum) { From 28a7ceb6aa5db0d80aa614b196b1c0ff3acc1ca0 Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 16 Nov 2023 22:06:43 +0100 Subject: [PATCH 32/91] fix build on osx - see https://docs.platformio.org/en/latest/projectconf/sections/env/options/build/build_flags.html#stringification --- platformio.ini | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/platformio.ini b/platformio.ini index 455e78998..9a9b4e7de 100644 --- a/platformio.ini +++ b/platformio.ini @@ -129,7 +129,7 @@ board_upload.flash_size = 4MB board_build.partitions = esp32_partition_4M.csv build_flags = ${common.build_flags} - -DEMSESP_DEFAULT_BOARD_PROFILE = "C3MINI" + '-DEMSESP_DEFAULT_BOARD_PROFILE="C3MINI"' ; lolin C3 mini v1 needs special wifi init. ; https://www.wemos.cc/en/latest/c3/c3_mini_1_0_0.html#about-wifi @@ -141,7 +141,7 @@ board_build.partitions = esp32_partition_4M.csv build_flags = ${common.build_flags} -DBOARD_C3_MINI_V1 - -DEMSESP_DEFAULT_BOARD_PROFILE = "C3MINI" + '-DEMSESP_DEFAULT_BOARD_PROFILE="C3MINI"' [env:lolin_s2_mini] extends = espressi32_base_tasmota @@ -150,7 +150,7 @@ board_upload.flash_size = 4MB board_build.partitions = esp32_partition_4M.csv build_flags = ${common.build_flags} - -DEMSESP_DEFAULT_BOARD_PROFILE = "S2MINI" + '-DEMSESP_DEFAULT_BOARD_PROFILE="S2MINI"' [env:lolin_s3] extends = espressi32_base @@ -163,7 +163,7 @@ board_upload.wait_for_upload_port = false build_flags = ${common.build_flags} -O2 - -DEMSESP_DEFAULT_BOARD_PROFILE = "S32S3" + '-DEMSESP_DEFAULT_BOARD_PROFILE="S32S3"' ; to build and run: pio run -e standalone -t exec [env:standalone] From 64471e4c0e90204de1d134bb225ecb128e7be090 Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 16 Nov 2023 22:07:00 +0100 Subject: [PATCH 33/91] dev.10 --- src/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/version.h b/src/version.h index 20e509d5a..eee9ca808 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.6.3-dev.9" +#define EMSESP_APP_VERSION "3.6.3-dev.10" From edee463ade474fd87aa383d019321623823dc6b5 Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 16 Nov 2023 22:07:42 +0100 Subject: [PATCH 34/91] replace unstable_useBlocker --- interface/src/framework/security/ManageUsersForm.tsx | 2 +- interface/src/project/SettingsCustomization.tsx | 2 +- interface/src/project/SettingsEntities.tsx | 6 +++--- interface/src/project/SettingsScheduler.tsx | 2 +- interface/src/utils/useRest.ts | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/interface/src/framework/security/ManageUsersForm.tsx b/interface/src/framework/security/ManageUsersForm.tsx index a8d8c9afb..f60c8e0c0 100644 --- a/interface/src/framework/security/ManageUsersForm.tsx +++ b/interface/src/framework/security/ManageUsersForm.tsx @@ -12,7 +12,7 @@ import { Table, Header, HeaderRow, HeaderCell, Body, Row, Cell } from '@table-li import { useTheme } from '@table-library/react-table-library/theme'; import { useContext, useState } from 'react'; -import { unstable_useBlocker as useBlocker } from 'react-router-dom'; +import { useBlocker } from 'react-router-dom'; import GenerateToken from './GenerateToken'; import UserForm from './UserForm'; import type { FC } from 'react'; diff --git a/interface/src/project/SettingsCustomization.tsx b/interface/src/project/SettingsCustomization.tsx index 183d32778..463ec3518 100644 --- a/interface/src/project/SettingsCustomization.tsx +++ b/interface/src/project/SettingsCustomization.tsx @@ -23,7 +23,7 @@ import { Table, Header, HeaderRow, HeaderCell, Body, Row, Cell } from '@table-li import { useTheme } from '@table-library/react-table-library/theme'; import { useRequest } from 'alova'; import { useState, useEffect, useCallback } from 'react'; -import { unstable_useBlocker as useBlocker, useLocation } from 'react-router-dom'; +import { useBlocker, useLocation } from 'react-router-dom'; import { toast } from 'react-toastify'; import EntityMaskToggle from './EntityMaskToggle'; diff --git a/interface/src/project/SettingsEntities.tsx b/interface/src/project/SettingsEntities.tsx index fd97ffe95..708d86513 100644 --- a/interface/src/project/SettingsEntities.tsx +++ b/interface/src/project/SettingsEntities.tsx @@ -7,7 +7,7 @@ import { useTheme } from '@table-library/react-table-library/theme'; // eslint-disable-next-line import/named import { updateState, useRequest } from 'alova'; import { useState, useCallback } from 'react'; -import { unstable_useBlocker as useBlocker } from 'react-router-dom'; +import { useBlocker } from 'react-router-dom'; import { toast } from 'react-toastify'; @@ -189,8 +189,8 @@ const SettingsEntities: FC = () => { return value === undefined || uom === undefined ? '' : typeof value === 'number' - ? new Intl.NumberFormat().format(value) + (uom === 0 ? '' : ' ' + DeviceValueUOM_s[uom]) - : value; + ? new Intl.NumberFormat().format(value) + (uom === 0 ? '' : ' ' + DeviceValueUOM_s[uom]) + : value; } function showHex(value: number, digit: number) { diff --git a/interface/src/project/SettingsScheduler.tsx b/interface/src/project/SettingsScheduler.tsx index 7ba89969f..f8d2d8f72 100644 --- a/interface/src/project/SettingsScheduler.tsx +++ b/interface/src/project/SettingsScheduler.tsx @@ -9,7 +9,7 @@ import { useTheme } from '@table-library/react-table-library/theme'; // eslint-disable-next-line import/named import { updateState, useRequest } from 'alova'; import { useState, useEffect, useCallback } from 'react'; -import { unstable_useBlocker as useBlocker } from 'react-router-dom'; +import { useBlocker } from 'react-router-dom'; import { toast } from 'react-toastify'; import SettingsSchedulerDialog from './SettingsSchedulerDialog'; import * as EMSESP from './api'; diff --git a/interface/src/utils/useRest.ts b/interface/src/utils/useRest.ts index 921513bba..bce61546e 100644 --- a/interface/src/utils/useRest.ts +++ b/interface/src/utils/useRest.ts @@ -1,6 +1,6 @@ import { useRequest, type Method } from 'alova'; import { useState } from 'react'; -import { unstable_useBlocker as useBlocker } from 'react-router-dom'; +import { useBlocker } from 'react-router-dom'; import { toast } from 'react-toastify'; import { useI18nContext } from 'i18n/i18n-react'; From a4062f5d8407c11c40ee60b0a35d390a2e3f35d5 Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 16 Nov 2023 22:07:47 +0100 Subject: [PATCH 35/91] package update --- interface/package.json | 5 +- interface/yarn.lock | 370 +++++++++++++++++++++++++++-------------- 2 files changed, 248 insertions(+), 127 deletions(-) diff --git a/interface/package.json b/interface/package.json index d6bf0370f..85796b03a 100644 --- a/interface/package.json +++ b/interface/package.json @@ -6,6 +6,7 @@ "author": "proddy", "license": "MIT", "private": true, + "type": "module", "scripts": { "build": "vite build", "preview": "vite preview", @@ -42,7 +43,7 @@ "react-dom": "latest", "react-dropzone": "^14.2.3", "react-icons": "^4.12.0", - "react-router-dom": "^6.18.0", + "react-router-dom": "^6.19.0", "react-toastify": "^9.1.3", "sockette": "^2.0.6", "typesafe-i18n": "^5.26.2", @@ -69,7 +70,7 @@ "prettier": "^3.1.0", "rollup-plugin-visualizer": "^5.9.2", "terser": "^5.24.0", - "vite": "^4.5.0", + "vite": "^5.0.0", "vite-plugin-imagemin": "^0.6.1", "vite-tsconfig-paths": "^4.2.1" }, diff --git a/interface/yarn.lock b/interface/yarn.lock index 442e64541..9a78d09e6 100644 --- a/interface/yarn.lock +++ b/interface/yarn.lock @@ -550,72 +550,72 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/android-arm64@npm:0.18.20" +"@esbuild/android-arm64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/android-arm64@npm:0.19.5" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@esbuild/android-arm@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/android-arm@npm:0.18.20" +"@esbuild/android-arm@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/android-arm@npm:0.19.5" conditions: os=android & cpu=arm languageName: node linkType: hard -"@esbuild/android-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/android-x64@npm:0.18.20" +"@esbuild/android-x64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/android-x64@npm:0.19.5" conditions: os=android & cpu=x64 languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/darwin-arm64@npm:0.18.20" +"@esbuild/darwin-arm64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/darwin-arm64@npm:0.19.5" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/darwin-x64@npm:0.18.20" +"@esbuild/darwin-x64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/darwin-x64@npm:0.19.5" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/freebsd-arm64@npm:0.18.20" +"@esbuild/freebsd-arm64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/freebsd-arm64@npm:0.19.5" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/freebsd-x64@npm:0.18.20" +"@esbuild/freebsd-x64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/freebsd-x64@npm:0.19.5" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-arm64@npm:0.18.20" +"@esbuild/linux-arm64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/linux-arm64@npm:0.19.5" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-arm@npm:0.18.20" +"@esbuild/linux-arm@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/linux-arm@npm:0.19.5" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-ia32@npm:0.18.20" +"@esbuild/linux-ia32@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/linux-ia32@npm:0.19.5" conditions: os=linux & cpu=ia32 languageName: node linkType: hard @@ -627,86 +627,86 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-loong64@npm:0.18.20" +"@esbuild/linux-loong64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/linux-loong64@npm:0.19.5" conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-mips64el@npm:0.18.20" +"@esbuild/linux-mips64el@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/linux-mips64el@npm:0.19.5" conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-ppc64@npm:0.18.20" +"@esbuild/linux-ppc64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/linux-ppc64@npm:0.19.5" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-riscv64@npm:0.18.20" +"@esbuild/linux-riscv64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/linux-riscv64@npm:0.19.5" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-s390x@npm:0.18.20" +"@esbuild/linux-s390x@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/linux-s390x@npm:0.19.5" conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-x64@npm:0.18.20" +"@esbuild/linux-x64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/linux-x64@npm:0.19.5" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/netbsd-x64@npm:0.18.20" +"@esbuild/netbsd-x64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/netbsd-x64@npm:0.19.5" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/openbsd-x64@npm:0.18.20" +"@esbuild/openbsd-x64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/openbsd-x64@npm:0.19.5" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/sunos-x64@npm:0.18.20" +"@esbuild/sunos-x64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/sunos-x64@npm:0.19.5" conditions: os=sunos & cpu=x64 languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/win32-arm64@npm:0.18.20" +"@esbuild/win32-arm64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/win32-arm64@npm:0.19.5" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/win32-ia32@npm:0.18.20" +"@esbuild/win32-ia32@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/win32-ia32@npm:0.19.5" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/win32-x64@npm:0.18.20" +"@esbuild/win32-x64@npm:0.19.5": + version: 0.19.5 + resolution: "@esbuild/win32-x64@npm:0.19.5" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -1187,10 +1187,10 @@ __metadata: languageName: node linkType: hard -"@remix-run/router@npm:1.11.0": - version: 1.11.0 - resolution: "@remix-run/router@npm:1.11.0" - checksum: 629ec578b9dfd3c5cb5de64a0798dd7846ec5ba0351aa66f42b1c65efb43da8f30366be59b825303648965b0df55b638c110949b24ef94fd62e98117fdfb0c0f +"@remix-run/router@npm:1.12.0": + version: 1.12.0 + resolution: "@remix-run/router@npm:1.12.0" + checksum: f984e42cfe855991e1d3067f686f857614f12e8c1c45168a2d98e3fc3a427e232fd0b6cf145173b7cd132faf070702b532c34230a825d933908c54c85077fc69 languageName: node linkType: hard @@ -1204,6 +1204,90 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm-eabi@npm:4.4.1": + version: 4.4.1 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.4.1" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@rollup/rollup-android-arm64@npm:4.4.1": + version: 4.4.1 + resolution: "@rollup/rollup-android-arm64@npm:4.4.1" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-arm64@npm:4.4.1": + version: 4.4.1 + resolution: "@rollup/rollup-darwin-arm64@npm:4.4.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-x64@npm:4.4.1": + version: 4.4.1 + resolution: "@rollup/rollup-darwin-x64@npm:4.4.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-gnueabihf@npm:4.4.1": + version: 4.4.1 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.4.1" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-gnu@npm:4.4.1": + version: 4.4.1 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.4.1" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-musl@npm:4.4.1": + version: 4.4.1 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.4.1" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-gnu@npm:4.4.1": + version: 4.4.1 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.4.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-musl@npm:4.4.1": + version: 4.4.1 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.4.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-win32-arm64-msvc@npm:4.4.1": + version: 4.4.1 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.4.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-ia32-msvc@npm:4.4.1": + version: 4.4.1 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.4.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@rollup/rollup-win32-x64-msvc@npm:4.4.1": + version: 4.4.1 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.4.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@sindresorhus/is@npm:^0.7.0": version: 0.7.0 resolution: "@sindresorhus/is@npm:0.7.0" @@ -1691,14 +1775,14 @@ __metadata: react-dom: "npm:latest" react-dropzone: "npm:^14.2.3" react-icons: "npm:^4.12.0" - react-router-dom: "npm:^6.18.0" + react-router-dom: "npm:^6.19.0" react-toastify: "npm:^9.1.3" rollup-plugin-visualizer: "npm:^5.9.2" sockette: "npm:^2.0.6" terser: "npm:^5.24.0" typesafe-i18n: "npm:^5.26.2" typescript: "npm:^5.2.2" - vite: "npm:^4.5.0" + vite: "npm:^5.0.0" vite-plugin-imagemin: "npm:^0.6.1" vite-tsconfig-paths: "npm:^4.2.1" languageName: unknown @@ -3416,32 +3500,32 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.18.10": - version: 0.18.20 - resolution: "esbuild@npm:0.18.20" +"esbuild@npm:^0.19.3": + version: 0.19.5 + resolution: "esbuild@npm:0.19.5" dependencies: - "@esbuild/android-arm": "npm:0.18.20" - "@esbuild/android-arm64": "npm:0.18.20" - "@esbuild/android-x64": "npm:0.18.20" - "@esbuild/darwin-arm64": "npm:0.18.20" - "@esbuild/darwin-x64": "npm:0.18.20" - "@esbuild/freebsd-arm64": "npm:0.18.20" - "@esbuild/freebsd-x64": "npm:0.18.20" - "@esbuild/linux-arm": "npm:0.18.20" - "@esbuild/linux-arm64": "npm:0.18.20" - "@esbuild/linux-ia32": "npm:0.18.20" - "@esbuild/linux-loong64": "npm:0.18.20" - "@esbuild/linux-mips64el": "npm:0.18.20" - "@esbuild/linux-ppc64": "npm:0.18.20" - "@esbuild/linux-riscv64": "npm:0.18.20" - "@esbuild/linux-s390x": "npm:0.18.20" - "@esbuild/linux-x64": "npm:0.18.20" - "@esbuild/netbsd-x64": "npm:0.18.20" - "@esbuild/openbsd-x64": "npm:0.18.20" - "@esbuild/sunos-x64": "npm:0.18.20" - "@esbuild/win32-arm64": "npm:0.18.20" - "@esbuild/win32-ia32": "npm:0.18.20" - "@esbuild/win32-x64": "npm:0.18.20" + "@esbuild/android-arm": "npm:0.19.5" + "@esbuild/android-arm64": "npm:0.19.5" + "@esbuild/android-x64": "npm:0.19.5" + "@esbuild/darwin-arm64": "npm:0.19.5" + "@esbuild/darwin-x64": "npm:0.19.5" + "@esbuild/freebsd-arm64": "npm:0.19.5" + "@esbuild/freebsd-x64": "npm:0.19.5" + "@esbuild/linux-arm": "npm:0.19.5" + "@esbuild/linux-arm64": "npm:0.19.5" + "@esbuild/linux-ia32": "npm:0.19.5" + "@esbuild/linux-loong64": "npm:0.19.5" + "@esbuild/linux-mips64el": "npm:0.19.5" + "@esbuild/linux-ppc64": "npm:0.19.5" + "@esbuild/linux-riscv64": "npm:0.19.5" + "@esbuild/linux-s390x": "npm:0.19.5" + "@esbuild/linux-x64": "npm:0.19.5" + "@esbuild/netbsd-x64": "npm:0.19.5" + "@esbuild/openbsd-x64": "npm:0.19.5" + "@esbuild/sunos-x64": "npm:0.19.5" + "@esbuild/win32-arm64": "npm:0.19.5" + "@esbuild/win32-ia32": "npm:0.19.5" + "@esbuild/win32-x64": "npm:0.19.5" dependenciesMeta: "@esbuild/android-arm": optional: true @@ -3489,7 +3573,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 1f723ec71c3aa196473bf3298316eedc3f62d523924652dfeb60701b609792f918fc60db84b420d1d8ba9bfa7d69de2fc1d3157ba47c028bdae5d507a26a3c64 + checksum: f8ffe0cbab8a80ec63b6962b7d722da9e3dbe79a57d3cd998e107e35792068facd6f63e58ae19e919891456ed6cb73114a9777f0e7353ec8613b4fc75571d56d languageName: node linkType: hard @@ -4285,7 +4369,7 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:~2.3.2": +"fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": version: 2.3.3 resolution: "fsevents@npm:2.3.3" dependencies: @@ -4295,7 +4379,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": +"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" dependencies: @@ -6754,7 +6838,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.4.27": +"postcss@npm:^8.4.31": version: 8.4.31 resolution: "postcss@npm:8.4.31" dependencies: @@ -6936,27 +7020,27 @@ __metadata: languageName: node linkType: hard -"react-router-dom@npm:^6.18.0": - version: 6.18.0 - resolution: "react-router-dom@npm:6.18.0" +"react-router-dom@npm:^6.19.0": + version: 6.19.0 + resolution: "react-router-dom@npm:6.19.0" dependencies: - "@remix-run/router": "npm:1.11.0" - react-router: "npm:6.18.0" + "@remix-run/router": "npm:1.12.0" + react-router: "npm:6.19.0" peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: b0e72603d73172b6c6662afe2faed326753d5bbd9905aa560e3dade7996fc13d19e34e3ed668d2849efd685e2db2f711129c84b1439870e92c9cc91ddc343cf5 + checksum: 38312efc11d3ef688062301479a8257a1495a81cd8dd7039c1f81aba6774963df7d21aaee2ba1a3c152857b70f4fb9966a3ccff47aca12212e854dcd6fc4deab languageName: node linkType: hard -"react-router@npm:6.18.0": - version: 6.18.0 - resolution: "react-router@npm:6.18.0" +"react-router@npm:6.19.0": + version: 6.19.0 + resolution: "react-router@npm:6.19.0" dependencies: - "@remix-run/router": "npm:1.11.0" + "@remix-run/router": "npm:1.12.0" peerDependencies: react: ">=16.8" - checksum: a00c8f347b7ffee575f4a7731782e688e3fca458ca5bd970fb41cef66a6851853caa24464155ab438d5879f367b1223a539642a405a865913ffe7e63e53b1245 + checksum: 5454f4a4d65401430ded8f1033cebe4ccca771c3c827e8329c77dcfd73618ca9a32488fb58722bf6a07afef7d8e7ef22a710aae0f3337e5c20962bf6473d81a3 languageName: node linkType: hard @@ -7261,17 +7345,53 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^3.27.1": - version: 3.29.4 - resolution: "rollup@npm:3.29.4" +"rollup@npm:^4.2.0": + version: 4.4.1 + resolution: "rollup@npm:4.4.1" dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.4.1" + "@rollup/rollup-android-arm64": "npm:4.4.1" + "@rollup/rollup-darwin-arm64": "npm:4.4.1" + "@rollup/rollup-darwin-x64": "npm:4.4.1" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.4.1" + "@rollup/rollup-linux-arm64-gnu": "npm:4.4.1" + "@rollup/rollup-linux-arm64-musl": "npm:4.4.1" + "@rollup/rollup-linux-x64-gnu": "npm:4.4.1" + "@rollup/rollup-linux-x64-musl": "npm:4.4.1" + "@rollup/rollup-win32-arm64-msvc": "npm:4.4.1" + "@rollup/rollup-win32-ia32-msvc": "npm:4.4.1" + "@rollup/rollup-win32-x64-msvc": "npm:4.4.1" fsevents: "npm:~2.3.2" dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true fsevents: optional: true bin: rollup: dist/bin/rollup - checksum: 9e39d54e23731a4c4067e9c02910cdf7479a0f9a7584796e2dc6efaa34bb1e5e015c062c87d1e64d96038baca76cefd47681ff22604fae5827147f54123dc6d0 + checksum: 128667d4af7703797eab63b802f538f65dcffda7ec9f03709b36d03969738a61d660119fc3e42a01cf420b87039159b09095b4c46382f02fbc94c72b1cfe51e2 languageName: node linkType: hard @@ -8446,16 +8566,16 @@ __metadata: languageName: node linkType: hard -"vite@npm:^4.5.0": - version: 4.5.0 - resolution: "vite@npm:4.5.0" +"vite@npm:^5.0.0": + version: 5.0.0 + resolution: "vite@npm:5.0.0" dependencies: - esbuild: "npm:^0.18.10" - fsevents: "npm:~2.3.2" - postcss: "npm:^8.4.27" - rollup: "npm:^3.27.1" + esbuild: "npm:^0.19.3" + fsevents: "npm:~2.3.3" + postcss: "npm:^8.4.31" + rollup: "npm:^4.2.0" peerDependencies: - "@types/node": ">= 14" + "@types/node": ^18.0.0 || >=20.0.0 less: "*" lightningcss: ^1.21.0 sass: "*" @@ -8482,7 +8602,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: b262ea4880ba7de8a77b0a665c771561ae3cb7f0d6c5b90e65298039755192550bf90cb96a2910d564506e2d499aa20e9becd330b835c34d414249083ac6e40c + checksum: 9a247a5657330ede5c131e782f2fb2adda77d493db2d528524378706108c1560ca4fe9ec0a865e5250978f5e2649c4da690834d2aab4dbf6175f1782cff6bd03 languageName: node linkType: hard From 00d66c1c4edd9057b3629dbac041f62ec0f36d3c Mon Sep 17 00:00:00 2001 From: Proddy Date: Fri, 17 Nov 2023 11:26:30 +0100 Subject: [PATCH 36/91] package update --- interface/package.json | 4 ++-- interface/yarn.lock | 22 +++++++++++----------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/interface/package.json b/interface/package.json index 85796b03a..476c95afc 100644 --- a/interface/package.json +++ b/interface/package.json @@ -29,7 +29,7 @@ "@table-library/react-table-library": "4.1.7", "@types/imagemin": "^8.0.4", "@types/lodash-es": "^4.17.11", - "@types/node": "^20.9.0", + "@types/node": "^20.9.1", "@types/react": "^18.2.37", "@types/react-dom": "^18.2.15", "@types/react-router-dom": "^5.3.3", @@ -51,7 +51,7 @@ }, "devDependencies": { "@preact/compat": "^17.1.2", - "@preact/preset-vite": "^2.6.0", + "@preact/preset-vite": "^2.7.0", "@typescript-eslint/eslint-plugin": "^6.11.0", "@typescript-eslint/parser": "^6.11.0", "concurrently": "^8.2.2", diff --git a/interface/yarn.lock b/interface/yarn.lock index 9a78d09e6..9ea60f6f2 100644 --- a/interface/yarn.lock +++ b/interface/yarn.lock @@ -1129,9 +1129,9 @@ __metadata: languageName: node linkType: hard -"@preact/preset-vite@npm:^2.6.0": - version: 2.6.0 - resolution: "@preact/preset-vite@npm:2.6.0" +"@preact/preset-vite@npm:^2.7.0": + version: 2.7.0 + resolution: "@preact/preset-vite@npm:2.7.0" dependencies: "@babel/plugin-transform-react-jsx": "npm:^7.22.15" "@babel/plugin-transform-react-jsx-development": "npm:^7.22.5" @@ -1143,8 +1143,8 @@ __metadata: resolve: "npm:^1.22.8" peerDependencies: "@babel/core": 7.x - vite: 2.x || 3.x || 4.x - checksum: 3a26821030653e6f91c5ed15dd5479482676eb2291f86ff1403ff34add098c2530ba941c51a11c80e1436b0d48e9db9f0168fae70e80d5dfaa16d32b5fd4ab59 + vite: 2.x || 3.x || 4.x || 5.x + checksum: dc0420ea1b6718fbf02d395e44642bd74736dcc23236e645bc390bae3371f359dec65ec1aa9358e77d73354d9d2d7af0ae71eec11e99aac335fe85b49dcd9d54 languageName: node linkType: hard @@ -1478,12 +1478,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^20.9.0": - version: 20.9.0 - resolution: "@types/node@npm:20.9.0" +"@types/node@npm:^20.9.1": + version: 20.9.1 + resolution: "@types/node@npm:20.9.1" dependencies: undici-types: "npm:~5.26.4" - checksum: a934f7645ed117a27857147403b0c657ffbca578c8f280e4c21d27dfb43e58dc4f24c4319d4335b8a4fa08e28fb2dc905a5bd5e4bc8878047164c56c1b162139 + checksum: b2b3f9ee31db63ccd3d48e5597d359c3385879679f37a749e473b47068aae181d0e280f39f153d75ce704640b3ec09d029aecd2a686e5658fb866254dc7e781b languageName: node linkType: hard @@ -1741,11 +1741,11 @@ __metadata: "@mui/icons-material": "npm:^5.14.18" "@mui/material": "npm:^5.14.18" "@preact/compat": "npm:^17.1.2" - "@preact/preset-vite": "npm:^2.6.0" + "@preact/preset-vite": "npm:^2.7.0" "@table-library/react-table-library": "npm:4.1.7" "@types/imagemin": "npm:^8.0.4" "@types/lodash-es": "npm:^4.17.11" - "@types/node": "npm:^20.9.0" + "@types/node": "npm:^20.9.1" "@types/react": "npm:^18.2.37" "@types/react-dom": "npm:^18.2.15" "@types/react-router-dom": "npm:^5.3.3" From 02616696dc5c573d7fa24f067448eb5eb1ea052c Mon Sep 17 00:00:00 2001 From: Proddy Date: Fri, 17 Nov 2023 12:09:38 +0100 Subject: [PATCH 37/91] move JS to ES module --- interface/progmem-generator.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/interface/progmem-generator.js b/interface/progmem-generator.js index 7918c9bff..98d74f5f4 100644 --- a/interface/progmem-generator.js +++ b/interface/progmem-generator.js @@ -1,7 +1,7 @@ -const { readdirSync, existsSync, unlinkSync, readFileSync, createWriteStream } = require('fs'); -const { resolve, relative, sep } = require('path'); -var zlib = require('zlib'); -var mime = require('mime-types'); +import { readdirSync, existsSync, unlinkSync, readFileSync, createWriteStream } from 'fs'; +import { resolve, relative, sep } from 'path'; +import zlib from 'zlib'; +import mime from 'mime-types'; const ARDUINO_INCLUDES = '#include \n\n'; const INDENT = ' '; From 9c8677acb9d30f9970d50e5ecfeea3fd31a3efc2 Mon Sep 17 00:00:00 2001 From: Proddy Date: Sat, 18 Nov 2023 13:19:02 +0100 Subject: [PATCH 38/91] prepare for 3.6.3 release --- Makefile | 2 +- interface/package.json | 2 +- interface/src/api/unpack.ts | 4 ++-- interface/yarn.lock | 20 ++++++++++---------- mock-api/server.js | 4 ++-- platformio.ini | 2 +- sonar-project.properties | 2 +- src/system.cpp | 2 +- 8 files changed, 19 insertions(+), 19 deletions(-) diff --git a/Makefile b/Makefile index 78ee75e0a..64e4b61b5 100644 --- a/Makefile +++ b/Makefile @@ -42,7 +42,7 @@ DEFINES += -DARDUINOJSON_ENABLE_STD_STRING=1 -DARDUINOJSON_ENABLE_PROGMEM=1 -DAR DEFINES += -DEMSESP_DEBUG -DEMSESP_STANDALONE -DEMSESP_TEST -D__linux__ -DEMC_RX_BUFFER_SIZE=1500 DEFINES += $(ARGS) -DEFAULTS = -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_TX_MODE=8 -DEMSESP_DEFAULT_VERSION=\"3.6.0-dev\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32\" +DEFAULTS = -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_TX_MODE=8 -DEMSESP_DEFAULT_VERSION=\"3.6.3-dev\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32\" #---------------------------------------------------------------------- # Sources & Files diff --git a/interface/package.json b/interface/package.json index 476c95afc..86deac40e 100644 --- a/interface/package.json +++ b/interface/package.json @@ -55,7 +55,7 @@ "@typescript-eslint/eslint-plugin": "^6.11.0", "@typescript-eslint/parser": "^6.11.0", "concurrently": "^8.2.2", - "eslint": "^8.53.0", + "eslint": "^8.54.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb-typescript": "^17.1.0", "eslint-config-prettier": "^9.0.0", diff --git a/interface/src/api/unpack.ts b/interface/src/api/unpack.ts index a25078d5d..17773f583 100644 --- a/interface/src/api/unpack.ts +++ b/interface/src/api/unpack.ts @@ -498,8 +498,8 @@ function createStructureReader(structure, firstId) { key === '__proto__' ? '__proto_:r()' : validName.test(key) - ? key + ':r()' - : '[' + JSON.stringify(key) + ']:r()' + ? key + ':r()' + : '[' + JSON.stringify(key) + ']:r()' ) .join(',') + '})}' diff --git a/interface/yarn.lock b/interface/yarn.lock index 9ea60f6f2..a4b1ada55 100644 --- a/interface/yarn.lock +++ b/interface/yarn.lock @@ -746,10 +746,10 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:8.53.0": - version: 8.53.0 - resolution: "@eslint/js@npm:8.53.0" - checksum: a372d55aa2bbe0d9399acc8de3c892dcfe507fd914d29fde6826ae54a13452619be626aa7eb70b1ec4d4da5302b6ed8e8ac9bf1f830003f15c0ad56c30b4f520 +"@eslint/js@npm:8.54.0": + version: 8.54.0 + resolution: "@eslint/js@npm:8.54.0" + checksum: 4d491ff234cd94b54499428cb3435623270ff8cc59950e13e6e1ac2fa350ec60502dac7bfd4f486523fee65ad7a358034570fe776b81b14dbfe5525d1e26e1d8 languageName: node linkType: hard @@ -1754,7 +1754,7 @@ __metadata: alova: "npm:^2.13.1" async-validator: "npm:^4.2.5" concurrently: "npm:^8.2.2" - eslint: "npm:^8.53.0" + eslint: "npm:^8.54.0" eslint-config-airbnb: "npm:^19.0.4" eslint-config-airbnb-typescript: "npm:^17.1.0" eslint-config-prettier: "npm:^9.0.0" @@ -3842,14 +3842,14 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^8.53.0": - version: 8.53.0 - resolution: "eslint@npm:8.53.0" +"eslint@npm:^8.54.0": + version: 8.54.0 + resolution: "eslint@npm:8.54.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.2.0" "@eslint-community/regexpp": "npm:^4.6.1" "@eslint/eslintrc": "npm:^2.1.3" - "@eslint/js": "npm:8.53.0" + "@eslint/js": "npm:8.54.0" "@humanwhocodes/config-array": "npm:^0.11.13" "@humanwhocodes/module-importer": "npm:^1.0.1" "@nodelib/fs.walk": "npm:^1.2.8" @@ -3886,7 +3886,7 @@ __metadata: text-table: "npm:^0.2.0" bin: eslint: bin/eslint.js - checksum: e305a71ce2b9a8631b293266fe53e346c76f28bc8d004af33f10e537cf133db1fb87af3599376e70ed6e0f89a78be10c4f08ddd0c1c9c0c497cd143b4a270420 + checksum: 379827964fd7885a4d48611a5237cf5c534eff0ad3d0c1a1d6a14d52ac6758f4efdccd924c9bb3a9aa4dc80a3446d48dc49f61733cd5bd5f74419d0240970e7b languageName: node linkType: hard diff --git a/mock-api/server.js b/mock-api/server.js index 48fb34dfb..c278ba300 100644 --- a/mock-api/server.js +++ b/mock-api/server.js @@ -324,7 +324,7 @@ security_settings = { ] }; const features = { - version: 'v3.6.0-demo', + version: 'v3.6.3-demo', // platform: 'ESP32' platform: 'ESP32-S3' }; @@ -2640,7 +2640,7 @@ rest_server.get(EMSESP_BOARDPROFILE_ENDPOINT, (req, res) => { // EMS-ESP API specific const emsesp_info = { System: { - version: '3.6.2', + version: '3.6.3', uptime: '001+06:40:34.018', 'uptime (seconds)': 110434, freemem: 131, diff --git a/platformio.ini b/platformio.ini index 9a9b4e7de..61fd86963 100644 --- a/platformio.ini +++ b/platformio.ini @@ -171,7 +171,7 @@ platform = native build_flags = -DARDUINOJSON_ENABLE_STD_STRING=1 -DARDUINOJSON_ENABLE_PROGMEM=1 -DARDUINOJSON_ENABLE_ARDUINO_STRING -DARDUINOJSON_USE_DOUBLE=0 -DEMSESP_DEBUG -DEMSESP_STANDALONE -DEMSESP_TEST -D__linux__ - -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_TX_MODE=8 -DEMSESP_DEFAULT_VERSION=\"3.6.0-dev\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32\" + -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_TX_MODE=8 -DEMSESP_DEFAULT_VERSION=\"3.6.3-dev\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32\" -lpthread -std=gnu++11 -Og -ggdb build_src_flags = diff --git a/sonar-project.properties b/sonar-project.properties index 6fad33dee..877b44ec4 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1,7 +1,7 @@ sonar.organization=emsesp sonar.projectKey=emsesp_EMS-ESP32 sonar.projectName=EMS-ESP32 -sonar.projectVersion=3.6.0 +sonar.projectVersion=3.6.3 sonar.sources=./src sonar.cfamily.build-wrapper-output=bw-output sonar.sourceEncoding=UTF-8 diff --git a/src/system.cpp b/src/system.cpp index 398efccaf..f1d5b013f 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -1096,7 +1096,7 @@ bool System::check_upgrade(bool factory_settings) { missing_version = (settingsVersion.empty() || (settingsVersion.length() < 5)); if (missing_version) { LOG_WARNING("No version information found (%s)", settingsVersion.c_str()); - settingsVersion = "3.6.2"; // this was the last stable version + settingsVersion = "3.6.3"; // this was the last stable version } } From 9e405c5a5a5c4ddf126da237b551362e96394cb0 Mon Sep 17 00:00:00 2001 From: Proddy Date: Sat, 18 Nov 2023 13:37:55 +0100 Subject: [PATCH 39/91] 3.6.4-dev-0 --- src/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/version.h b/src/version.h index eee9ca808..29351a9ae 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.6.3-dev.10" +#define EMSESP_APP_VERSION "3.6.4-dev.0" From 7962af08723eb077dfc3bee941790e9b8c963680 Mon Sep 17 00:00:00 2001 From: Proddy Date: Sat, 18 Nov 2023 13:42:50 +0100 Subject: [PATCH 40/91] update changelog --- CHANGELOG.md | 37 +++++++++++++++++++++++++++++++++++++ CHANGELOG_LATEST.md | 29 +---------------------------- 2 files changed, 38 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 841f9bb9d..2659884db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,43 @@ 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.6.3] November 18 2023 + +## **IMPORTANT! BREAKING CHANGES** + +Writeable Text entities have moved from type `sensor` to `text` in Home Assistant to make them also editable within an HA dashboard. Examples are `datetime`, `holidays`, `switchtime`, `vacations`, `maintenancedate`... You will need to manually remove any old discovery topics from your MQTT broker using an application like MQTT Explorer. + +## Added + +- humidity for ventilation devices +- telegrams for RC100H, hc2, etc. (seen on discord, not tested) +- names for BC400, GB192i.2, read temperatures for low loss header and heatblock [#1317](https://github.com/emsesp/EMS-ESP32/discussions/1317) +- option for `forceheatingoff` [#1262](https://github.com/emsesp/EMS-ESP32/issues/1262) +- remote thermostat emulation RC100H for RC3xx [#1278](https://github.com/emsesp/EMS-ESP32/discussions/1278) +- shower_data MQTT payload contains the timestamp [#1329](https://github.com/emsesp/EMS-ESP32/issues/1329) +- HA discovery for writeable text entities [#1337](https://github.com/emsesp/EMS-ESP32/pull/1377) +- autodetect board_profile, store in nvs, add telnet command option, add E32V2 +- heat pump high res energy counters [#1348, #1349. #1350](https://github.com/emsesp/EMS-ESP32/issues/1348) +- optional bssid in network settings +- extension module EM100 [#1315](https://github.com/emsesp/EMS-ESP32/discussions/1315) +- digital_out with new options for polarity and startup state +- added 'system allvalues' command that dumps all the EMS device values, plus sensors and any custom entities + +## Fixed + +- remove command `remoteseltemp`, thermostat accept it only from remote thermostat +- shower_data MQTT payload contains the timestamp [#1329](https://github.com/emsesp/EMS-ESP32/issues/1329) +- fixed helper text in Web Device Entity dialog box for numerical ranges +- MQTT base with paths not working in HA [#1393](https://github.com/emsesp/EMS-ESP32/issues/1393) + +## Changed + +- update to platform 6.4.0, arduino 2.0.14 / idf 4.4.6 +- small changes for arduino 3.0.0 / idf 5.1 compatibility (not backward compatible to platform 6.3.2 and before) +- AP start after 10 sec, stay until station/eth connected +- tested wifi-all-channel-scan (3.6.3-dev4 a-e), removed again because of connect issues +- mqtt disconnect stops queue + ## [3.6.2] October 1 2023 ## **IMPORTANT! BREAKING CHANGES** diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 5545c8dc0..fa7f75968 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -1,38 +1,11 @@ # Changelog -## [3.6.3] +## [3.6.4] ## **IMPORTANT! BREAKING CHANGES** -Writeable Text entities have moved from type `sensor` to `text` in Home Assistant to make them also editable within an HA dashboard. Examples are `datetime`, `holidays`, `switchtime`, `vacations`, `maintenancedate`... You will need to manually remove any old discovery topics from your MQTT broker using an application like MQTT Explorer. - ## Added -- humidity for ventilation devices -- telegrams for RC100H, hc2, etc. (seen on discord, not tested) -- names for BC400, GB192i.2, read temperatures for low loss header and heatblock [#1317](https://github.com/emsesp/EMS-ESP32/discussions/1317) -- option for `forceheatingoff` [#1262](https://github.com/emsesp/EMS-ESP32/issues/1262) -- remote thermostat emulation RC100H for RC3xx [#1278](https://github.com/emsesp/EMS-ESP32/discussions/1278) -- shower_data MQTT payload contains the timestamp [#1329](https://github.com/emsesp/EMS-ESP32/issues/1329) -- HA discovery for writeable text entities [#1337](https://github.com/emsesp/EMS-ESP32/pull/1377) -- autodetect board_profile, store in nvs, add telnet command option, add E32V2 -- heat pump high res energy counters [#1348, #1349. #1350](https://github.com/emsesp/EMS-ESP32/issues/1348) -- optional bssid in network settings -- extension module EM100 [#1315](https://github.com/emsesp/EMS-ESP32/discussions/1315) -- digital_out with new options for polarity and startup state -- added 'system allvalues' command that dumps all the EMS device values, plus sensors and any custom entities - ## Fixed -- remove command `remoteseltemp`, thermostat accept it only from remote thermostat -- shower_data MQTT payload contains the timestamp [#1329](https://github.com/emsesp/EMS-ESP32/issues/1329) -- fixed helper text in Web Device Entity dialog box for numerical ranges -- MQTT base with paths not working in HA [#1393](https://github.com/emsesp/EMS-ESP32/issues/1393) - ## Changed - -- update to platform 6.4.0, arduino 2.0.14 / idf 4.4.6 -- small changes for arduino 3.0.0 / idf 5.1 compatibility (not backward compatible to platform 6.3.2 and before) -- AP start after 10 sec, stay until station/eth connected -- tested wifi-all-channel-scan (3.6.3-dev4 a-e), removed again because of connect issues -- mqtt disconnect stops queue From 8fcfb3d8f7a7534b95d0d7cf02475193d1493890 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sat, 18 Nov 2023 13:55:28 +0100 Subject: [PATCH 41/91] fix crash on wrong thermostat mode command (if not using HA) --- src/devices/thermostat.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 93a141fa0..2bbdeee1e 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -2455,8 +2455,9 @@ bool Thermostat::set_mode(const char * value, const int8_t id) { // check for the mode being a full string name or single digit if (!Helpers::value2enum(value, enum_index, mode_list)) { mode_list = FL_(enum_mode_ha); - if (Mqtt::ha_enabled() && !Helpers::value2enum(value, enum_index, mode_list)) { - LOG_WARNING("wrong mode: %s", value); + if (!Mqtt::ha_enabled() || !Helpers::value2enum(value, enum_index, mode_list)) { + // We have logging on fail in command.cpp + // LOG_WARNING("wrong mode: %s", value); return false; // not found } } From b300181d33282c8ef83f9fd10be2914621fbb3e6 Mon Sep 17 00:00:00 2001 From: Proddy Date: Sun, 19 Nov 2023 21:17:36 +0100 Subject: [PATCH 42/91] add hosted target --- interface/vite.config.ts | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/interface/vite.config.ts b/interface/vite.config.ts index 32a86cd5c..bb76b59ab 100644 --- a/interface/vite.config.ts +++ b/interface/vite.config.ts @@ -5,7 +5,6 @@ import viteImagemin from 'vite-plugin-imagemin'; import { visualizer } from 'rollup-plugin-visualizer'; export default defineConfig(({ command, mode }) => { - // standalone build for development - runs the server if (command === 'serve') { console.log('Preparing for standalone build with server, mode=' + mode); return { @@ -30,9 +29,17 @@ export default defineConfig(({ command, mode }) => { }; } + if (command === 'build' && mode === 'hosted') { + return { + plugins: [preact(), viteTsconfigPaths()], + build: { + chunkSizeWarningLimit: 1024 + } + }; + } + // production build, both for hosted and building the firmware if (command === 'build') { - console.log('Preparing for production build, mode is ' + mode); return { plugins: [ preact(), @@ -79,11 +86,7 @@ export default defineConfig(({ command, mode }) => { build: { // target: 'es2022', - outDir: 'dist', - reportCompressedSize: false, chunkSizeWarningLimit: 1024, - sourcemap: false, - manifest: false, minify: 'terser', terserOptions: { compress: { @@ -109,16 +112,6 @@ export default defineConfig(({ command, mode }) => { nameCache: null, safari10: false, toplevel: false - }, - - rollupOptions: { - // Ignore "use client" waning since we are not using SSR - onwarn(warning, warn) { - if (warning.code === 'MODULE_LEVEL_DIRECTIVE' && warning.message.includes(`"use client"`)) { - return; - } - warn(warning); - } } } }; From b503e2bb90fb74426d14316a30a99f23688ca0f4 Mon Sep 17 00:00:00 2001 From: Proddy Date: Sun, 19 Nov 2023 21:17:43 +0100 Subject: [PATCH 43/91] package update --- interface/package.json | 2 +- interface/yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/interface/package.json b/interface/package.json index 86deac40e..b0d378263 100644 --- a/interface/package.json +++ b/interface/package.json @@ -29,7 +29,7 @@ "@table-library/react-table-library": "4.1.7", "@types/imagemin": "^8.0.4", "@types/lodash-es": "^4.17.11", - "@types/node": "^20.9.1", + "@types/node": "^20.9.2", "@types/react": "^18.2.37", "@types/react-dom": "^18.2.15", "@types/react-router-dom": "^5.3.3", diff --git a/interface/yarn.lock b/interface/yarn.lock index a4b1ada55..e980015d4 100644 --- a/interface/yarn.lock +++ b/interface/yarn.lock @@ -1478,12 +1478,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^20.9.1": - version: 20.9.1 - resolution: "@types/node@npm:20.9.1" +"@types/node@npm:^20.9.2": + version: 20.9.2 + resolution: "@types/node@npm:20.9.2" dependencies: undici-types: "npm:~5.26.4" - checksum: b2b3f9ee31db63ccd3d48e5597d359c3385879679f37a749e473b47068aae181d0e280f39f153d75ce704640b3ec09d029aecd2a686e5658fb866254dc7e781b + checksum: 8bab2870bfc02efc988c53dfb0149634f8feb824132cc7f20b36f3d55d89ef893e3a43d545524a5cb3a284f4ce68ae4181d75a4a39cee6b79c586d719e6b7461 languageName: node linkType: hard @@ -1745,7 +1745,7 @@ __metadata: "@table-library/react-table-library": "npm:4.1.7" "@types/imagemin": "npm:^8.0.4" "@types/lodash-es": "npm:^4.17.11" - "@types/node": "npm:^20.9.1" + "@types/node": "npm:^20.9.2" "@types/react": "npm:^18.2.37" "@types/react-dom": "npm:^18.2.15" "@types/react-router-dom": "npm:^5.3.3" From 049f9561315eb2f28b41776acf5e9f02a07b6a31 Mon Sep 17 00:00:00 2001 From: Proddy Date: Sun, 19 Nov 2023 21:17:54 +0100 Subject: [PATCH 44/91] minor cleanup --- mock-api/server.js | 95 +++++++++++++++++++++++----------------------- 1 file changed, 48 insertions(+), 47 deletions(-) diff --git a/mock-api/server.js b/mock-api/server.js index c278ba300..2dc90b50d 100644 --- a/mock-api/server.js +++ b/mock-api/server.js @@ -353,6 +353,54 @@ const EMSESP_RESET_CUSTOMIZATIONS_ENDPOINT = REST_ENDPOINT_ROOT + 'resetCustomiz const EMSESP_WRITE_SCHEDULE_ENDPOINT = REST_ENDPOINT_ROOT + 'schedule'; const EMSESP_WRITE_ENTITIES_ENDPOINT = REST_ENDPOINT_ROOT + 'entities'; +const emsesp_info = { + System: { + version: '3.6.3', + uptime: '001+06:40:34.018', + 'uptime (seconds)': 110434, + freemem: 131, + 'reset reason': 'Software reset CPU / Software reset CPU', + 'Sensor sensors': 3 + }, + Network: { + connection: 'Ethernet', + hostname: 'ems-esp', + MAC: 'A8:03:2A:62:64:CF', + 'IPv4 address': '192.168.1.134/255.255.255.0', + 'IPv4 gateway': '192.168.1.1', + 'IPv4 nameserver': '192.168.1.1' + }, + Status: { + 'bus status': 'connected', + 'bus protocol': 'Buderus', + 'telegrams received': 84986, + 'read requests sent': 14748, + 'write requests sent': 3, + 'incomplete telegrams': 8, + 'tx fails': 0, + 'rx line quality': 100, + 'tx line quality': 100, + MQTT: 'connected', + 'MQTT publishes': 46336, + 'MQTT publish fails': 0, + 'Sensor reads': 22086, + 'Sensor fails': 0 + }, + Devices: [ + { + type: 'Boiler', + name: 'Nefit GBx72/Trendline/Cerapur/Greenstar Si/27i (DeviceID:0x08 ProductID:123, Version:06.01)', + handlers: + '0x10 0x11 0xC2 0x14 0x15 0x1C 0x18 0x19 0x1A 0x35 0x16 0x33 0x34 0x26 0x2A 0xD1 0xE3 0xE4 0xE5 0xE6 0xE9 0xEA' + }, + { + type: 'Thermostat', + name: 'RC20/Moduline 300 (DeviceID:0x17, ProductID:77, Version:03.03)', + handlers: '0xA3 0x06 0xA2 0x12 0x91 0xA8' + } + ] +}; + settings = { locale: 'en', tx_mode: 4, @@ -2638,53 +2686,6 @@ rest_server.get(EMSESP_BOARDPROFILE_ENDPOINT, (req, res) => { }); // EMS-ESP API specific -const emsesp_info = { - System: { - version: '3.6.3', - uptime: '001+06:40:34.018', - 'uptime (seconds)': 110434, - freemem: 131, - 'reset reason': 'Software reset CPU / Software reset CPU', - 'Sensor sensors': 3 - }, - Network: { - connection: 'Ethernet', - hostname: 'ems-esp', - MAC: 'A8:03:2A:62:64:CF', - 'IPv4 address': '192.168.1.134/255.255.255.0', - 'IPv4 gateway': '192.168.1.1', - 'IPv4 nameserver': '192.168.1.1' - }, - Status: { - 'bus status': 'connected', - 'bus protocol': 'Buderus', - 'telegrams received': 84986, - 'read requests sent': 14748, - 'write requests sent': 3, - 'incomplete telegrams': 8, - 'tx fails': 0, - 'rx line quality': 100, - 'tx line quality': 100, - MQTT: 'connected', - 'MQTT publishes': 46336, - 'MQTT publish fails': 0, - 'Sensor reads': 22086, - 'Sensor fails': 0 - }, - Devices: [ - { - type: 'Boiler', - name: 'Nefit GBx72/Trendline/Cerapur/Greenstar Si/27i (DeviceID:0x08 ProductID:123, Version:06.01)', - handlers: - '0x10 0x11 0xC2 0x14 0x15 0x1C 0x18 0x19 0x1A 0x35 0x16 0x33 0x34 0x26 0x2A 0xD1 0xE3 0xE4 0xE5 0xE6 0xE9 0xEA' - }, - { - type: 'Thermostat', - name: 'RC20/Moduline 300 (DeviceID:0x17, ProductID:77, Version:03.03)', - handlers: '0xA3 0x06 0xA2 0x12 0x91 0xA8' - } - ] -}; rest_server.post(API_ENDPOINT_ROOT, (req, res) => { console.log('Generic API POST'); From dfd9fe4d01c8212ce22f30404064831b8957c4c0 Mon Sep 17 00:00:00 2001 From: Proddy Date: Sun, 19 Nov 2023 21:18:15 +0100 Subject: [PATCH 45/91] add EMSESP_DEFAULT_BOARD_PROFILE to CI builds --- platformio.ini | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/platformio.ini b/platformio.ini index 61fd86963..2fe2a578d 100644 --- a/platformio.ini +++ b/platformio.ini @@ -83,8 +83,8 @@ extra_scripts = scripts/rename_fw.py board = esp32dev board_build.partitions = esp32_partition_4M.csv board_build.extra_flags = -DBOARD_HAS_PSRAM -build_flags = ${common.build_flags} build_unflags = ${common.unbuild_flags} +build_flags = ${common.build_flags} [env:ci_s3] extends = espressi32_base @@ -93,10 +93,11 @@ board = lolin_s3 board_build.f_cpu = 240000000L board_upload.flash_size = 16MB board_build.partitions = esp32_partition_16M.csv +build_unflags = ${common.unbuild_flags} build_flags = ${common.build_flags} -O2 -build_unflags = ${common.unbuild_flags} + '-DEMSESP_DEFAULT_BOARD_PROFILE="S32S3"' [env:esp32_4M] extends = espressi32_base_tasmota From aed45968db1f92c2af756fdd239f7c4c61907e15 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 20 Nov 2023 07:47:01 +0100 Subject: [PATCH 46/91] set/read thermostat mode for RC100-RC300, fix #1440 --- src/devices/thermostat.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 2bbdeee1e..7faac02e2 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -1023,13 +1023,12 @@ void Thermostat::process_RC300Set(std::shared_ptr telegram) { // has_update(telegram, hc->selTemp, 10, 1); // single byte conversion, value is * 2 - manual telegram->read_value(hc->mode_new, 21); // 0-off, 1-manual, 2-auto - if (hc->mode_new <= 2) { + if (Helpers::hasValue(hc->mode_new)) { has_update(hc->mode, hc->mode_new); } else { uint8_t mode = hc->mode == 2 ? 0xFF : 0; // auto : manual - if (telegram->read_value(mode, 0)) { - has_update(hc->mode, mode == 0xFF ? 2 : 1); - } + telegram->read_value(mode, 0); + has_update(hc->mode, mode == 0xFF ? 2 : 1); } has_update(telegram, hc->daytemp, 2); // is * 2 has_update(telegram, hc->nighttemp, 4); // is * 2 @@ -2598,7 +2597,7 @@ bool Thermostat::set_mode_n(const uint8_t mode, const uint8_t hc_num) { if (model_ == EMSdevice::EMS_DEVICE_FLAG_RC10) { hc->mode = set_mode_value >> 1; } else if (model_ == EMSdevice::EMS_DEVICE_FLAG_RC300 || model_ == EMSdevice::EMS_DEVICE_FLAG_RC100) { - hc->mode = set_mode_value ? 1 : 0; + hc->mode = Helpers::hasValue(hc->mode_new) ? set_mode_value : set_mode_value == 0xFF ? 2 : 1; } else if (model_ == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) { hc->mode = set_mode_value - 1; } else { From 6dba452aea110d85c09c39137e8864364a02b797 Mon Sep 17 00:00:00 2001 From: Proddy Date: Tue, 21 Nov 2023 10:42:19 +0100 Subject: [PATCH 47/91] patch for 3.6.3 with fixes #1440 #1442 --- CHANGELOG.md | 1 + dump_entities.csv | 2320 +++++++++++++++++++++++----------------- interface/package.json | 16 +- interface/yarn.lock | 172 +-- src/version.h | 2 +- 5 files changed, 1421 insertions(+), 1090 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2659884db..0fe60ca33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ Writeable Text entities have moved from type `sensor` to `text` in Home Assistan - shower_data MQTT payload contains the timestamp [#1329](https://github.com/emsesp/EMS-ESP32/issues/1329) - fixed helper text in Web Device Entity dialog box for numerical ranges - MQTT base with paths not working in HA [#1393](https://github.com/emsesp/EMS-ESP32/issues/1393) +- set/read thermostat mode for RC100-RC300, [#1440](https://github.com/emsesp/EMS-ESP32/issues/1440) [#1442](https://github.com/emsesp/EMS-ESP32/issues/1442) ## Changed diff --git a/dump_entities.csv b/dump_entities.csv index 4f76189c7..e194bb37b 100644 --- a/dump_entities.csv +++ b/dump_entities.csv @@ -1,8 +1,189 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/max),uom,writeable,discovery entityid v3.4, discovery entityid -BK13/BK15/Smartline/GB1x2,boiler,64,reset,Reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_Reset,sensor.boiler_reset +CS6800i/WLW176i,boiler,8,reset,reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_reset,sensor.boiler_reset +CS6800i/WLW176i,boiler,8,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff +CS6800i/WLW176i,boiler,8,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive +CS6800i/WLW176i,boiler,8,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive +CS6800i/WLW176i,boiler,8,selflowtemp,selected flow temperature,uint (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp +CS6800i/WLW176i,boiler,8,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod +CS6800i/WLW176i,boiler,8,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp +CS6800i/WLW176i,boiler,8,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp +CS6800i/WLW176i,boiler,8,rettemp,return temperature,ushort (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp +CS6800i/WLW176i,boiler,8,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp +CS6800i/WLW176i,boiler,8,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress +CS6800i/WLW176i,boiler,8,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp +CS6800i/WLW176i,boiler,8,headertemp,low loss header,ushort (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp +CS6800i/WLW176i,boiler,8,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated +CS6800i/WLW176i,boiler,8,heatingtemp,heating temperature,uint (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +CS6800i/WLW176i,boiler,8,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump +CS6800i/WLW176i,boiler,8,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax +CS6800i/WLW176i,boiler,8,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin +CS6800i/WLW176i,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 +CS6800i/WLW176i,boiler,8,pumpdelay,pump delay,uint (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay +CS6800i/WLW176i,boiler,8,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp +CS6800i/WLW176i,boiler,8,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow +CS6800i/WLW176i,boiler,8,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow +CS6800i/WLW176i,boiler,8,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow +CS6800i/WLW176i,boiler,8,burnstarts,burner starts,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts +CS6800i/WLW176i,boiler,8,burnworkmin,total burner operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin +CS6800i/WLW176i,boiler,8,burn2workmin,burner stage 2 operating time,time (>=0<=16777213),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin +CS6800i/WLW176i,boiler,8,heatworkmin,total heat operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin +CS6800i/WLW176i,boiler,8,heatstarts,burner starts heating,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts +CS6800i/WLW176i,boiler,8,ubauptime,total UBA operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime +CS6800i/WLW176i,boiler,8,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode +CS6800i/WLW176i,boiler,8,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode +CS6800i/WLW176i,boiler,8,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber +CS6800i/WLW176i,boiler,8,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage +CS6800i/WLW176i,boiler,8,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance +CS6800i/WLW176i,boiler,8,maintenancetime,time to next maintenance,ushort (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime +CS6800i/WLW176i,boiler,8,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate +CS6800i/WLW176i,boiler,8,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops +CS6800i/WLW176i,boiler,8,emergencytemp,emergency temperature,uint (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp +CS6800i/WLW176i,boiler,8,nrgtotal,total energy,ulong (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal +CS6800i/WLW176i,boiler,8,nrgww,energy,ulong (>=0<=167772),kWh,false,sensor.boiler_energy,sensor.boiler_nrgww +CS6800i/WLW176i,boiler,8,nrgheat,energy heating,ulong (>=0<=167772),kWh,false,sensor.boiler_energy_heating,sensor.boiler_nrgheat +CS6800i/WLW176i,boiler,8,metertotal,meter total,ulong (>=0<=167772),kWh,false,sensor.boiler_meter_total,sensor.boiler_metertotal +CS6800i/WLW176i,boiler,8,metercomp,meter compressor,ulong (>=0<=167772),kWh,false,sensor.boiler_meter_compressor,sensor.boiler_metercomp +CS6800i/WLW176i,boiler,8,metereheat,meter e-heater,ulong (>=0<=167772),kWh,false,sensor.boiler_meter_e-heater,sensor.boiler_metereheat +CS6800i/WLW176i,boiler,8,uptimetotal,heatpump total uptime,time (>=0<=279620),minutes,false,sensor.boiler_heatpump_total_uptime,sensor.boiler_uptimetotal +CS6800i/WLW176i,boiler,8,uptimecontrol,total operating time heat,time (>=0<=279620),minutes,false,sensor.boiler_total_operating_time_heat,sensor.boiler_uptimecontrol +CS6800i/WLW176i,boiler,8,uptimecompheating,operating time compressor heating,time (>=0<=279620),minutes,false,sensor.boiler_operating_time_compressor_heating,sensor.boiler_uptimecompheating +CS6800i/WLW176i,boiler,8,uptimecompcooling,operating time compressor cooling,time (>=0<=279620),minutes,false,sensor.boiler_operating_time_compressor_cooling,sensor.boiler_uptimecompcooling +CS6800i/WLW176i,boiler,8,uptimecompww,operating time compressor,time (>=0<=279620),minutes,false,sensor.boiler_operating_time_compressor,sensor.boiler_uptimecompww +CS6800i/WLW176i,boiler,8,uptimecomppool,operating time compressor pool,time (>=0<=279620),minutes,false,sensor.boiler_operating_time_compressor_pool,sensor.boiler_uptimecomppool +CS6800i/WLW176i,boiler,8,totalcompstarts,total compressor control starts,ulong (>=0<=16777213), ,false,sensor.boiler_total_compressor_control_starts,sensor.boiler_totalcompstarts +CS6800i/WLW176i,boiler,8,heatingstarts,heating control starts,ulong (>=0<=16777213), ,false,sensor.boiler_heating_control_starts,sensor.boiler_heatingstarts +CS6800i/WLW176i,boiler,8,coolingstarts,cooling control starts,ulong (>=0<=16777213), ,false,sensor.boiler_cooling_control_starts,sensor.boiler_coolingstarts +CS6800i/WLW176i,boiler,8,wwstarts2,control starts2,ulong (>=0<=16777213), ,false,sensor.boiler_control_starts2,sensor.boiler_wwstarts2 +CS6800i/WLW176i,boiler,8,poolstarts,pool control starts,ulong (>=0<=16777213), ,false,sensor.boiler_pool_control_starts,sensor.boiler_poolstarts +CS6800i/WLW176i,boiler,8,nrgconstotal,total energy consumption,ulong (>=0<=16777213),kWh,false,sensor.boiler_total_energy_consumption,sensor.boiler_nrgconstotal +CS6800i/WLW176i,boiler,8,nrgconscomptotal,total energy consumption compressor,ulong (>=0<=16777213),kWh,false,sensor.boiler_total_energy_consumption_compressor,sensor.boiler_nrgconscomptotal +CS6800i/WLW176i,boiler,8,nrgconscompheating,energy consumption compressor heating,ulong (>=0<=16777213),kWh,false,sensor.boiler_energy_consumption_compressor_heating,sensor.boiler_nrgconscompheating +CS6800i/WLW176i,boiler,8,nrgconscompww,energy consumption compressor,ulong (>=0<=16777213),kWh,false,sensor.boiler_energy_consumption_compressor,sensor.boiler_nrgconscompww +CS6800i/WLW176i,boiler,8,nrgconscompcooling,energy consumption compressor cooling,ulong (>=0<=16777213),kWh,false,sensor.boiler_energy_consumption_compressor_cooling,sensor.boiler_nrgconscompcooling +CS6800i/WLW176i,boiler,8,nrgconscomppool,energy consumption compressor pool,ulong (>=0<=16777213),kWh,false,sensor.boiler_energy_consumption_compressor_pool,sensor.boiler_nrgconscomppool +CS6800i/WLW176i,boiler,8,auxelecheatnrgconstotal,total aux elec. heater energy consumption,ulong (>=0<=16777213),kWh,false,sensor.boiler_total_aux_elec._heater_energy_consumption,sensor.boiler_auxelecheatnrgconstotal +CS6800i/WLW176i,boiler,8,auxelecheatnrgconsheating,aux elec. heater energy consumption heating,ulong (>=0<=16777213),kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_heating,sensor.boiler_auxelecheatnrgconsheating +CS6800i/WLW176i,boiler,8,auxelecheatnrgconsww,aux elec. heater energy consumption,ulong (>=0<=16777213),kWh,false,sensor.boiler_aux_elec._heater_energy_consumption,sensor.boiler_auxelecheatnrgconsww +CS6800i/WLW176i,boiler,8,auxelecheatnrgconspool,aux elec. heater energy consumption pool,ulong (>=0<=16777213),kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_pool,sensor.boiler_auxelecheatnrgconspool +CS6800i/WLW176i,boiler,8,nrgsupptotal,total energy supplied,ulong (>=0<=16777213),kWh,false,sensor.boiler_total_energy_supplied,sensor.boiler_nrgsupptotal +CS6800i/WLW176i,boiler,8,nrgsuppheating,total energy supplied heating,ulong (>=0<=16777213),kWh,false,sensor.boiler_total_energy_supplied_heating,sensor.boiler_nrgsuppheating +CS6800i/WLW176i,boiler,8,nrgsuppww,total energy warm supplied,ulong (>=0<=16777213),kWh,false,sensor.boiler_total_energy_warm_supplied,sensor.boiler_nrgsuppww +CS6800i/WLW176i,boiler,8,nrgsuppcooling,total energy supplied cooling,ulong (>=0<=16777213),kWh,false,sensor.boiler_total_energy_supplied_cooling,sensor.boiler_nrgsuppcooling +CS6800i/WLW176i,boiler,8,nrgsupppool,total energy supplied pool,ulong (>=0<=16777213),kWh,false,sensor.boiler_total_energy_supplied_pool,sensor.boiler_nrgsupppool +CS6800i/WLW176i,boiler,8,hppower,compressor power output,uint (>=0<=25),kW,false,sensor.boiler_compressor_power_output,sensor.boiler_hppower +CS6800i/WLW176i,boiler,8,hpcompon,hp compressor,boolean, ,false,binary_sensor.boiler_hp_compressor,binary_sensor.boiler_hpcompon +CS6800i/WLW176i,boiler,8,hpactivity,compressor activity,enum [none\|heating\|cooling\|hot water\|pool\|unknown\|defrost], ,false,sensor.boiler_compressor_activity,sensor.boiler_hpactivity +CS6800i/WLW176i,boiler,8,hpbrinepumpspd,brine pump speed,uint (>=0<=100),%,false,sensor.boiler_brine_pump_speed,sensor.boiler_hpbrinepumpspd +CS6800i/WLW176i,boiler,8,hpswitchvalve,switch valve,boolean, ,false,binary_sensor.boiler_switch_valve,binary_sensor.boiler_hpswitchvalve +CS6800i/WLW176i,boiler,8,hpcompspd,compressor speed,uint (>=0<=100),%,false,sensor.boiler_compressor_speed,sensor.boiler_hpcompspd +CS6800i/WLW176i,boiler,8,hpcircspd,circulation pump speed,uint (>=0<=100),%,false,sensor.boiler_circulation_pump_speed,sensor.boiler_hpcircspd +CS6800i/WLW176i,boiler,8,hpbrinein,brine in/evaporator,short (>=-3199<=3199),C,false,sensor.boiler_brine_in/evaporator,sensor.boiler_hpbrinein +CS6800i/WLW176i,boiler,8,hpbrineout,brine out/condenser,short (>=-3199<=3199),C,false,sensor.boiler_brine_out/condenser,sensor.boiler_hpbrineout +CS6800i/WLW176i,boiler,8,hptc0,heat carrier return (TC0),short (>=-3199<=3199),C,false,sensor.boiler_heat_carrier_return_(TC0),sensor.boiler_hptc0 +CS6800i/WLW176i,boiler,8,hptc1,heat carrier forward (TC1),short (>=-3199<=3199),C,false,sensor.boiler_heat_carrier_forward_(TC1),sensor.boiler_hptc1 +CS6800i/WLW176i,boiler,8,hptc3,condenser temperature (TC3),short (>=-3199<=3199),C,false,sensor.boiler_condenser_temperature_(TC3),sensor.boiler_hptc3 +CS6800i/WLW176i,boiler,8,hptr1,compressor temperature (TR1),short (>=-3199<=3199),C,false,sensor.boiler_compressor_temperature_(TR1),sensor.boiler_hptr1 +CS6800i/WLW176i,boiler,8,hptr3,refrigerant temperature liquid side (condenser output) (TR3),short (>=-3199<=3199),C,false,sensor.boiler_refrigerant_temperature_liquid_side_(condenser_output)_(TR3),sensor.boiler_hptr3 +CS6800i/WLW176i,boiler,8,hptr4,evaporator inlet temperature (TR4),short (>=-3199<=3199),C,false,sensor.boiler_evaporator_inlet_temperature_(TR4),sensor.boiler_hptr4 +CS6800i/WLW176i,boiler,8,hptr5,compressor inlet temperature (TR5),short (>=-3199<=3199),C,false,sensor.boiler_compressor_inlet_temperature_(TR5),sensor.boiler_hptr5 +CS6800i/WLW176i,boiler,8,hptr6,compressor outlet temperature (TR6),short (>=-3199<=3199),C,false,sensor.boiler_compressor_outlet_temperature_(TR6),sensor.boiler_hptr6 +CS6800i/WLW176i,boiler,8,hptr7,refrigerant temperature gas side (condenser input) (TR7),short (>=-3199<=3199),C,false,sensor.boiler_refrigerant_temperature_gas_side_(condenser_input)_(TR7),sensor.boiler_hptr7 +CS6800i/WLW176i,boiler,8,hptl2,air inlet temperature (TL2),short (>=-3199<=3199),C,false,sensor.boiler_air_inlet_temperature_(TL2),sensor.boiler_hptl2 +CS6800i/WLW176i,boiler,8,hppl1,low pressure side temperature (PL1),short (>=-3199<=3199),C,false,sensor.boiler_low_pressure_side_temperature_(PL1),sensor.boiler_hppl1 +CS6800i/WLW176i,boiler,8,hpph1,high pressure side temperature (PH1),short (>=-3199<=3199),C,false,sensor.boiler_high_pressure_side_temperature_(PH1),sensor.boiler_hpph1 +CS6800i/WLW176i,boiler,8,hpta4,drain pan temp (TA4),short (>=-3199<=3199),C,false,sensor.boiler_drain_pan_temp_(TA4),sensor.boiler_hpta4 +CS6800i/WLW176i,boiler,8,hptw1,reservoir temp (TW1),short (>=-3199<=3199),C,false,sensor.boiler_reservoir_temp_(TW1),sensor.boiler_hptw1 +CS6800i/WLW176i,boiler,8,poolsettemp,pool set temperature,uint (>=0<=127),C,true,number.boiler_pool_set_temperature,number.boiler_poolsettemp +CS6800i/WLW176i,boiler,8,hp4way,4-way valve (VR4),enum [cooling & defrost\|heating & dhw], ,false,sensor.boiler_4-way_valve_(VR4),sensor.boiler_hp4way +CS6800i/WLW176i,boiler,8,hpin1opt,input 1 options,string, ,true,sensor.boiler_input_1_options,sensor.boiler_hpin1opt +CS6800i/WLW176i,boiler,8,hpin2opt,input 2 options,string, ,true,sensor.boiler_input_2_options,sensor.boiler_hpin2opt +CS6800i/WLW176i,boiler,8,hpin3opt,input 3 options,string, ,true,sensor.boiler_input_3_options,sensor.boiler_hpin3opt +CS6800i/WLW176i,boiler,8,hpin4opt,input 4 options,string, ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt +CS6800i/WLW176i,boiler,8,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 +CS6800i/WLW176i,boiler,8,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 +CS6800i/WLW176i,boiler,8,maxheatdhw,heat limit,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW], ,true,select.boiler_heat_limit,select.boiler_maxheatdhw +CS6800i/WLW176i,boiler,8,mandefrost,manual defrost,boolean, ,true,switch.boiler_manual_defrost,switch.boiler_mandefrost +CS6800i/WLW176i,boiler,8,pvcooling,Cooling only with PV,boolean, ,true,switch.boiler_Cooling_only_with_PV,switch.boiler_pvcooling +CS6800i/WLW176i,boiler,8,auxheateronly,aux heater only,boolean, ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly +CS6800i/WLW176i,boiler,8,auxheateroff,disable aux heater,boolean, ,true,switch.boiler_disable_aux_heater,switch.boiler_auxheateroff +CS6800i/WLW176i,boiler,8,auxheaterstatus,aux heater status,boolean, ,false,binary_sensor.boiler_aux_heater_status,binary_sensor.boiler_auxheaterstatus +CS6800i/WLW176i,boiler,8,auxheaterdelay,aux heater on delay,ushort (>=10<=1000),K*min,true,number.boiler_aux_heater_on_delay,number.boiler_auxheaterdelay +CS6800i/WLW176i,boiler,8,auxmaxlimit,aux heater max limit,uint (>=0<=10),K,true,number.boiler_aux_heater_max_limit,number.boiler_auxmaxlimit +CS6800i/WLW176i,boiler,8,auxlimitstart,aux heater limit start,uint (>=0<=10),K,true,number.boiler_aux_heater_limit_start,number.boiler_auxlimitstart +CS6800i/WLW176i,boiler,8,auxheatrmode,aux heater mode,enum [eco\|comfort], ,true,select.boiler_aux_heater_mode,select.boiler_auxheatrmode +CS6800i/WLW176i,boiler,8,hphystheat,on/off hyst heat,ushort (>=50<=1500),K*min,true,number.boiler_on/off_hyst_heat,number.boiler_hphystheat +CS6800i/WLW176i,boiler,8,hphystcool,on/off hyst cool,ushort (>=50<=1500),K*min,true,number.boiler_on/off_hyst_cool,number.boiler_hphystcool +CS6800i/WLW176i,boiler,8,hphystpool,on/off hyst pool,ushort (>=50<=1500),K*min,true,number.boiler_on/off_hyst_pool,number.boiler_hphystpool +CS6800i/WLW176i,boiler,8,silentmode,silent mode,enum [off\|auto\|on], ,true,select.boiler_silent_mode,select.boiler_silentmode +CS6800i/WLW176i,boiler,8,silentfrom,silent mode from,uint (>=0<=3810),minutes,true,number.boiler_silent_mode_from,number.boiler_silentfrom +CS6800i/WLW176i,boiler,8,silentto,silent mode to,uint (>=0<=3810),minutes,true,number.boiler_silent_mode_to,number.boiler_silentto +CS6800i/WLW176i,boiler,8,mintempsilent,min outside temp for silent mode,int (>=-126<=126),C,true,number.boiler_min_outside_temp_for_silent_mode,number.boiler_mintempsilent +CS6800i/WLW176i,boiler,8,tempparmode,outside temp parallel mode,int (>=-126<=126),C,true,number.boiler_outside_temp_parallel_mode,number.boiler_tempparmode +CS6800i/WLW176i,boiler,8,auxheatmix,aux heater mixing valve,int (>=-100<=100),%,false,sensor.boiler_aux_heater_mixing_valve,sensor.boiler_auxheatmix +CS6800i/WLW176i,boiler,8,tempdiffheat,temp diff TC3/TC0 heat,uint (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_heat,number.boiler_tempdiffheat +CS6800i/WLW176i,boiler,8,tempdiffcool,temp diff TC3/TC0 cool,uint (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_cool,number.boiler_tempdiffcool +CS6800i/WLW176i,boiler,8,vpcooling,valve/pump cooling,boolean, ,true,switch.boiler_valve/pump_cooling,switch.boiler_vpcooling +CS6800i/WLW176i,boiler,8,heatcable,heating cable,boolean, ,true,switch.boiler_heating_cable,switch.boiler_heatcable +CS6800i/WLW176i,boiler,8,vc0valve,VC0 valve,boolean, ,true,switch.boiler_VC0_valve,switch.boiler_vc0valve +CS6800i/WLW176i,boiler,8,primepump,primary heatpump,boolean, ,true,switch.boiler_primary_heatpump,switch.boiler_primepump +CS6800i/WLW176i,boiler,8,primepumpmod,primary heatpump modulation,uint (>=0<=100),%,true,number.boiler_primary_heatpump_modulation,number.boiler_primepumpmod +CS6800i/WLW176i,boiler,8,hp3way,3-way valve,boolean, ,true,switch.boiler_3-way_valve,switch.boiler_hp3way +CS6800i/WLW176i,boiler,8,elheatstep1,el. heater step 1,boolean, ,true,switch.boiler_el._heater_step_1,switch.boiler_elheatstep1 +CS6800i/WLW176i,boiler,8,elheatstep2,el. heater step 2,boolean, ,true,switch.boiler_el._heater_step_2,switch.boiler_elheatstep2 +CS6800i/WLW176i,boiler,8,elheatstep3,el. heater step 3,boolean, ,true,switch.boiler_el._heater_step_3,switch.boiler_elheatstep3 +CS6800i/WLW176i,boiler,8,hpea0,condensate reservoir heating (EA0),boolean, ,false,binary_sensor.boiler_condensate_reservoir_heating_(EA0),binary_sensor.boiler_hpea0 +CS6800i/WLW176i,boiler,8,wwalternatingop,alternating operation,boolean, ,true,switch.boiler_alternating_operation,switch.boiler_wwalternatingop +CS6800i/WLW176i,boiler,8,wwaltopprioheat,prioritise heating during dhw,uint (>=20<=120),minutes,true,number.boiler_prioritise_heating_during_dhw,number.boiler_wwaltopprioheat +CS6800i/WLW176i,boiler,8,wwaltopprioww,prioritise dhw during heating,uint (>=30<=120),minutes,true,number.boiler_prioritise_dhw_during_heating,number.boiler_wwaltopprioww +CS6800i/WLW176i,boiler,8,wwcomfoff,comfort switch off,uint (>=15<=65),C,true,number.boiler_comfort_switch_off,number.boiler_wwcomfoff +CS6800i/WLW176i,boiler,8,wwecooff,eco switch off,uint (>=15<=65),C,true,number.boiler_eco_switch_off,number.boiler_wwecooff +CS6800i/WLW176i,boiler,8,wwecoplusoff,eco+ switch off,uint (>=48<=63),C,true,number.boiler_eco+_switch_off,number.boiler_wwecoplusoff +CS6800i/WLW176i,boiler,8,hpcircpumpww,circulation pump available during dhw,boolean, ,true,switch.boiler_circulation_pump_available_during_dhw,switch.boiler_hpcircpumpww +CS6800i/WLW176i,boiler,8,wwtapactivated,turn on/off,boolean, ,true,switch.boiler_turn_on/off,switch.boiler_wwtapactivated +CS6800i/WLW176i,boiler,8,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp +CS6800i/WLW176i,boiler,8,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp +CS6800i/WLW176i,boiler,8,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow +CS6800i/WLW176i,boiler,8,wwtempecoplus,selected eco+ temperature,uint (>=0<=254),C,true,number.boiler_selected_eco+_temperature,number.boiler_wwtempecoplus +CS6800i/WLW176i,boiler,8,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff +CS6800i/WLW176i,boiler,8,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle +CS6800i/WLW176i,boiler,8,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp +CS6800i/WLW176i,boiler,8,wwtype,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_type,sensor.boiler_wwtype +CS6800i/WLW176i,boiler,8,wwcomfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_comfort,select.boiler_wwcomfort +CS6800i/WLW176i,boiler,8,wwcomfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_comfort_mode,select.boiler_wwcomfort1 +CS6800i/WLW176i,boiler,8,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset +CS6800i/WLW176i,boiler,8,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization +CS6800i/WLW176i,boiler,8,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower +CS6800i/WLW176i,boiler,8,wwmaxtemp,maximum temperature,uint (>=0<=80),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp +CS6800i/WLW176i,boiler,8,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump +CS6800i/WLW176i,boiler,8,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype +CS6800i/WLW176i,boiler,8,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston +CS6800i/WLW176i,boiler,8,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff +CS6800i/WLW176i,boiler,8,wwdisinfectiontemp,disinfection temperature,uint (>=60<=80),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp +CS6800i/WLW176i,boiler,8,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode +CS6800i/WLW176i,boiler,8,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc +CS6800i/WLW176i,boiler,8,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp +CS6800i/WLW176i,boiler,8,wwcurtemp2,current extern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_extern_temperature,sensor.boiler_wwcurtemp2 +CS6800i/WLW176i,boiler,8,wwcurflow,current tap water flow,uint (>=0<=25),l/min,false,sensor.boiler_current_tap_water_flow,sensor.boiler_wwcurflow +CS6800i/WLW176i,boiler,8,wwstoragetemp1,storage intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_storage_intern_temperature,sensor.boiler_wwstoragetemp1 +CS6800i/WLW176i,boiler,8,wwstoragetemp2,storage extern temperature,ushort (>=0<=3199),C,false,sensor.boiler_storage_extern_temperature,sensor.boiler_wwstoragetemp2 +CS6800i/WLW176i,boiler,8,wwactivated,activated,boolean, ,true,switch.boiler_activated,switch.boiler_wwactivated +CS6800i/WLW176i,boiler,8,wwonetime,one time charging,boolean, ,true,switch.boiler_one_time_charging,switch.boiler_wwonetime +CS6800i/WLW176i,boiler,8,wwdisinfecting,disinfecting,boolean, ,true,switch.boiler_disinfecting,switch.boiler_wwdisinfecting +CS6800i/WLW176i,boiler,8,wwcharging,charging,boolean, ,false,binary_sensor.boiler_charging,binary_sensor.boiler_wwcharging +CS6800i/WLW176i,boiler,8,wwrecharging,recharging,boolean, ,false,binary_sensor.boiler_recharging,binary_sensor.boiler_wwrecharging +CS6800i/WLW176i,boiler,8,wwtempok,temperature ok,boolean, ,false,binary_sensor.boiler_temperature_ok,binary_sensor.boiler_wwtempok +CS6800i/WLW176i,boiler,8,wwactive,active,boolean, ,false,binary_sensor.boiler_active,binary_sensor.boiler_wwactive +CS6800i/WLW176i,boiler,8,ww3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_3-way_valve_active,binary_sensor.boiler_ww3wayvalve +CS6800i/WLW176i,boiler,8,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower +CS6800i/WLW176i,boiler,8,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp +CS6800i/WLW176i,boiler,8,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp +CS6800i/WLW176i,boiler,8,wwstarts,starts,ulong (>=0<=16777213), ,false,sensor.boiler_starts,sensor.boiler_wwstarts +CS6800i/WLW176i,boiler,8,wwworkm,active time,time (>=0<=16777213),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +BK13/BK15/Smartline/GB1x2,boiler,64,reset,reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_reset,sensor.boiler_reset +BK13/BK15/Smartline/GB1x2,boiler,64,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff BK13/BK15/Smartline/GB1x2,boiler,64,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive BK13/BK15/Smartline/GB1x2,boiler,64,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive -BK13/BK15/Smartline/GB1x2,boiler,64,selflowtemp,selected flow temperature,uint (>=0<=254),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp +BK13/BK15/Smartline/GB1x2,boiler,64,selflowtemp,selected flow temperature,uint (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp BK13/BK15/Smartline/GB1x2,boiler,64,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod BK13/BK15/Smartline/GB1x2,boiler,64,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp BK13/BK15/Smartline/GB1x2,boiler,64,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp @@ -10,38 +191,38 @@ BK13/BK15/Smartline/GB1x2,boiler,64,rettemp,return temperature,ushort (>=0<=3199 BK13/BK15/Smartline/GB1x2,boiler,64,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp BK13/BK15/Smartline/GB1x2,boiler,64,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress BK13/BK15/Smartline/GB1x2,boiler,64,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp +BK13/BK15/Smartline/GB1x2,boiler,64,headertemp,low loss header,ushort (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp BK13/BK15/Smartline/GB1x2,boiler,64,exhausttemp,exhaust temperature,ushort (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp BK13/BK15/Smartline/GB1x2,boiler,64,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas BK13/BK15/Smartline/GB1x2,boiler,64,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2 BK13/BK15/Smartline/GB1x2,boiler,64,flamecurr,flame current,ushort (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr -BK13/BK15/Smartline/GB1x2,boiler,64,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump BK13/BK15/Smartline/GB1x2,boiler,64,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork BK13/BK15/Smartline/GB1x2,boiler,64,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork BK13/BK15/Smartline/GB1x2,boiler,64,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat +BK13/BK15/Smartline/GB1x2,boiler,64,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower +BK13/BK15/Smartline/GB1x2,boiler,64,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower +BK13/BK15/Smartline/GB1x2,boiler,64,burnminperiod,burner min period,uint (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod +BK13/BK15/Smartline/GB1x2,boiler,64,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow +BK13/BK15/Smartline/GB1x2,boiler,64,heatblock,heating block,ushort (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock +BK13/BK15/Smartline/GB1x2,boiler,64,boilhyston,hysteresis on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston +BK13/BK15/Smartline/GB1x2,boiler,64,boilhystoff,hysteresis off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff BK13/BK15/Smartline/GB1x2,boiler,64,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated -BK13/BK15/Smartline/GB1x2,boiler,64,heatingtemp,heating temperature,uint (>=0<=254),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +BK13/BK15/Smartline/GB1x2,boiler,64,heatingtemp,heating temperature,uint (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +BK13/BK15/Smartline/GB1x2,boiler,64,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump BK13/BK15/Smartline/GB1x2,boiler,64,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax BK13/BK15/Smartline/GB1x2,boiler,64,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin BK13/BK15/Smartline/GB1x2,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 -BK13/BK15/Smartline/GB1x2,boiler,64,pumpdelay,pump delay,uint (>=0<=254),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay -BK13/BK15/Smartline/GB1x2,boiler,64,burnminperiod,burner min period,uint (>=0<=254),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod -BK13/BK15/Smartline/GB1x2,boiler,64,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower -BK13/BK15/Smartline/GB1x2,boiler,64,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower -BK13/BK15/Smartline/GB1x2,boiler,64,boilhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston -BK13/BK15/Smartline/GB1x2,boiler,64,boilhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff -BK13/BK15/Smartline/GB1x2,boiler,64,boil2hyston,hysteresis stage 2 on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston -BK13/BK15/Smartline/GB1x2,boiler,64,boil2hystoff,hysteresis stage 2 off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff +BK13/BK15/Smartline/GB1x2,boiler,64,pumpdelay,pump delay,uint (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay BK13/BK15/Smartline/GB1x2,boiler,64,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp BK13/BK15/Smartline/GB1x2,boiler,64,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow -BK13/BK15/Smartline/GB1x2,boiler,64,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow BK13/BK15/Smartline/GB1x2,boiler,64,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow BK13/BK15/Smartline/GB1x2,boiler,64,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow -BK13/BK15/Smartline/GB1x2,boiler,64,burnstarts,burner starts,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts -BK13/BK15/Smartline/GB1x2,boiler,64,burnworkmin,total burner operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin -BK13/BK15/Smartline/GB1x2,boiler,64,burn2workmin,burner stage 2 operating time,time (>=0<=65533),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin -BK13/BK15/Smartline/GB1x2,boiler,64,heatworkmin,total heat operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin -BK13/BK15/Smartline/GB1x2,boiler,64,heatstarts,burner starts heating,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts -BK13/BK15/Smartline/GB1x2,boiler,64,ubauptime,total UBA operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime +BK13/BK15/Smartline/GB1x2,boiler,64,burnstarts,burner starts,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts +BK13/BK15/Smartline/GB1x2,boiler,64,burnworkmin,total burner operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin +BK13/BK15/Smartline/GB1x2,boiler,64,burn2workmin,burner stage 2 operating time,time (>=0<=16777213),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin +BK13/BK15/Smartline/GB1x2,boiler,64,heatworkmin,total heat operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin +BK13/BK15/Smartline/GB1x2,boiler,64,heatstarts,burner starts heating,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts +BK13/BK15/Smartline/GB1x2,boiler,64,ubauptime,total UBA operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime BK13/BK15/Smartline/GB1x2,boiler,64,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode BK13/BK15/Smartline/GB1x2,boiler,64,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode BK13/BK15/Smartline/GB1x2,boiler,64,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber @@ -55,6 +236,7 @@ BK13/BK15/Smartline/GB1x2,boiler,64,wwtapactivated,turn on/off,boolean, ,true,sw BK13/BK15/Smartline/GB1x2,boiler,64,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp BK13/BK15/Smartline/GB1x2,boiler,64,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp BK13/BK15/Smartline/GB1x2,boiler,64,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow +BK13/BK15/Smartline/GB1x2,boiler,64,wwtempecoplus,selected eco+ temperature,uint (>=0<=254),C,true,number.boiler_selected_eco+_temperature,number.boiler_wwtempecoplus BK13/BK15/Smartline/GB1x2,boiler,64,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff BK13/BK15/Smartline/GB1x2,boiler,64,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle BK13/BK15/Smartline/GB1x2,boiler,64,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp @@ -64,12 +246,12 @@ BK13/BK15/Smartline/GB1x2,boiler,64,wwcomfort1,comfort mode,enum [high comfort\| BK13/BK15/Smartline/GB1x2,boiler,64,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset BK13/BK15/Smartline/GB1x2,boiler,64,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization BK13/BK15/Smartline/GB1x2,boiler,64,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower -BK13/BK15/Smartline/GB1x2,boiler,64,wwmaxtemp,maximum temperature,uint (>=0<=70),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp +BK13/BK15/Smartline/GB1x2,boiler,64,wwmaxtemp,maximum temperature,uint (>=0<=80),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp BK13/BK15/Smartline/GB1x2,boiler,64,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump BK13/BK15/Smartline/GB1x2,boiler,64,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype BK13/BK15/Smartline/GB1x2,boiler,64,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston BK13/BK15/Smartline/GB1x2,boiler,64,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff -BK13/BK15/Smartline/GB1x2,boiler,64,wwdisinfectiontemp,disinfection temperature,uint (>=0<=254),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp +BK13/BK15/Smartline/GB1x2,boiler,64,wwdisinfectiontemp,disinfection temperature,uint (>=60<=80),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp BK13/BK15/Smartline/GB1x2,boiler,64,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode BK13/BK15/Smartline/GB1x2,boiler,64,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc BK13/BK15/Smartline/GB1x2,boiler,64,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp @@ -88,12 +270,17 @@ BK13/BK15/Smartline/GB1x2,boiler,64,ww3wayvalve,3-way valve active,boolean, ,fal BK13/BK15/Smartline/GB1x2,boiler,64,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower BK13/BK15/Smartline/GB1x2,boiler,64,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp BK13/BK15/Smartline/GB1x2,boiler,64,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp -BK13/BK15/Smartline/GB1x2,boiler,64,wwstarts,starts,ulong (>=0<=65533), ,false,sensor.boiler_starts,sensor.boiler_wwstarts -BK13/BK15/Smartline/GB1x2,boiler,64,wwworkm,active time,time (>=0<=65533),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm -GB125/GB135/MC10,boiler,72,reset,Reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_Reset,sensor.boiler_reset +BK13/BK15/Smartline/GB1x2,boiler,64,wwstarts,starts,ulong (>=0<=16777213), ,false,sensor.boiler_starts,sensor.boiler_wwstarts +BK13/BK15/Smartline/GB1x2,boiler,64,wwworkm,active time,time (>=0<=16777213),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +BK13/BK15/Smartline/GB1x2,boiler,64,nompower,nominal Power,uint (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower +BK13/BK15/Smartline/GB1x2,boiler,64,nrgtotal,total energy,ulong (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal +BK13/BK15/Smartline/GB1x2,boiler,64,nrgheat,energy heating,ulong (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat +BK13/BK15/Smartline/GB1x2,boiler,64,nrgww,energy,ulong (>=0<=10000000),kWh,true,number.boiler_energy,number.boiler_nrgww +GB125/GB135/MC10,boiler,72,reset,reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_reset,sensor.boiler_reset +GB125/GB135/MC10,boiler,72,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff GB125/GB135/MC10,boiler,72,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive GB125/GB135/MC10,boiler,72,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive -GB125/GB135/MC10,boiler,72,selflowtemp,selected flow temperature,uint (>=0<=254),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp +GB125/GB135/MC10,boiler,72,selflowtemp,selected flow temperature,uint (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp GB125/GB135/MC10,boiler,72,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod GB125/GB135/MC10,boiler,72,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp GB125/GB135/MC10,boiler,72,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp @@ -101,38 +288,38 @@ GB125/GB135/MC10,boiler,72,rettemp,return temperature,ushort (>=0<=3199),C,false GB125/GB135/MC10,boiler,72,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp GB125/GB135/MC10,boiler,72,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress GB125/GB135/MC10,boiler,72,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp +GB125/GB135/MC10,boiler,72,headertemp,low loss header,ushort (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp GB125/GB135/MC10,boiler,72,exhausttemp,exhaust temperature,ushort (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp GB125/GB135/MC10,boiler,72,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas GB125/GB135/MC10,boiler,72,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2 GB125/GB135/MC10,boiler,72,flamecurr,flame current,ushort (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr -GB125/GB135/MC10,boiler,72,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump GB125/GB135/MC10,boiler,72,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork GB125/GB135/MC10,boiler,72,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork GB125/GB135/MC10,boiler,72,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat +GB125/GB135/MC10,boiler,72,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower +GB125/GB135/MC10,boiler,72,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower +GB125/GB135/MC10,boiler,72,burnminperiod,burner min period,uint (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod +GB125/GB135/MC10,boiler,72,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow +GB125/GB135/MC10,boiler,72,heatblock,heating block,ushort (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock +GB125/GB135/MC10,boiler,72,boilhyston,hysteresis on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston +GB125/GB135/MC10,boiler,72,boilhystoff,hysteresis off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff GB125/GB135/MC10,boiler,72,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated -GB125/GB135/MC10,boiler,72,heatingtemp,heating temperature,uint (>=0<=254),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +GB125/GB135/MC10,boiler,72,heatingtemp,heating temperature,uint (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +GB125/GB135/MC10,boiler,72,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump GB125/GB135/MC10,boiler,72,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax GB125/GB135/MC10,boiler,72,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin GB125/GB135/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 -GB125/GB135/MC10,boiler,72,pumpdelay,pump delay,uint (>=0<=254),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay -GB125/GB135/MC10,boiler,72,burnminperiod,burner min period,uint (>=0<=254),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod -GB125/GB135/MC10,boiler,72,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower -GB125/GB135/MC10,boiler,72,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower -GB125/GB135/MC10,boiler,72,boilhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston -GB125/GB135/MC10,boiler,72,boilhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff -GB125/GB135/MC10,boiler,72,boil2hyston,hysteresis stage 2 on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston -GB125/GB135/MC10,boiler,72,boil2hystoff,hysteresis stage 2 off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff +GB125/GB135/MC10,boiler,72,pumpdelay,pump delay,uint (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay GB125/GB135/MC10,boiler,72,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp GB125/GB135/MC10,boiler,72,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow -GB125/GB135/MC10,boiler,72,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow GB125/GB135/MC10,boiler,72,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow GB125/GB135/MC10,boiler,72,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow -GB125/GB135/MC10,boiler,72,burnstarts,burner starts,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts -GB125/GB135/MC10,boiler,72,burnworkmin,total burner operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin -GB125/GB135/MC10,boiler,72,burn2workmin,burner stage 2 operating time,time (>=0<=65533),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin -GB125/GB135/MC10,boiler,72,heatworkmin,total heat operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin -GB125/GB135/MC10,boiler,72,heatstarts,burner starts heating,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts -GB125/GB135/MC10,boiler,72,ubauptime,total UBA operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime +GB125/GB135/MC10,boiler,72,burnstarts,burner starts,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts +GB125/GB135/MC10,boiler,72,burnworkmin,total burner operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin +GB125/GB135/MC10,boiler,72,burn2workmin,burner stage 2 operating time,time (>=0<=16777213),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin +GB125/GB135/MC10,boiler,72,heatworkmin,total heat operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin +GB125/GB135/MC10,boiler,72,heatstarts,burner starts heating,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts +GB125/GB135/MC10,boiler,72,ubauptime,total UBA operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime GB125/GB135/MC10,boiler,72,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode GB125/GB135/MC10,boiler,72,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode GB125/GB135/MC10,boiler,72,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber @@ -146,6 +333,7 @@ GB125/GB135/MC10,boiler,72,wwtapactivated,turn on/off,boolean, ,true,switch.boil GB125/GB135/MC10,boiler,72,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp GB125/GB135/MC10,boiler,72,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp GB125/GB135/MC10,boiler,72,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow +GB125/GB135/MC10,boiler,72,wwtempecoplus,selected eco+ temperature,uint (>=0<=254),C,true,number.boiler_selected_eco+_temperature,number.boiler_wwtempecoplus GB125/GB135/MC10,boiler,72,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff GB125/GB135/MC10,boiler,72,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle GB125/GB135/MC10,boiler,72,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp @@ -155,12 +343,12 @@ GB125/GB135/MC10,boiler,72,wwcomfort1,comfort mode,enum [high comfort\|eco], ,tr GB125/GB135/MC10,boiler,72,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset GB125/GB135/MC10,boiler,72,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization GB125/GB135/MC10,boiler,72,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower -GB125/GB135/MC10,boiler,72,wwmaxtemp,maximum temperature,uint (>=0<=70),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp +GB125/GB135/MC10,boiler,72,wwmaxtemp,maximum temperature,uint (>=0<=80),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp GB125/GB135/MC10,boiler,72,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump GB125/GB135/MC10,boiler,72,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype GB125/GB135/MC10,boiler,72,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston GB125/GB135/MC10,boiler,72,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff -GB125/GB135/MC10,boiler,72,wwdisinfectiontemp,disinfection temperature,uint (>=0<=254),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp +GB125/GB135/MC10,boiler,72,wwdisinfectiontemp,disinfection temperature,uint (>=60<=80),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp GB125/GB135/MC10,boiler,72,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode GB125/GB135/MC10,boiler,72,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc GB125/GB135/MC10,boiler,72,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp @@ -179,12 +367,17 @@ GB125/GB135/MC10,boiler,72,ww3wayvalve,3-way valve active,boolean, ,false,binary GB125/GB135/MC10,boiler,72,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower GB125/GB135/MC10,boiler,72,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp GB125/GB135/MC10,boiler,72,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp -GB125/GB135/MC10,boiler,72,wwstarts,starts,ulong (>=0<=65533), ,false,sensor.boiler_starts,sensor.boiler_wwstarts -GB125/GB135/MC10,boiler,72,wwworkm,active time,time (>=0<=65533),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm -Cascade CM10,boiler,81,reset,Reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_Reset,sensor.boiler_reset +GB125/GB135/MC10,boiler,72,wwstarts,starts,ulong (>=0<=16777213), ,false,sensor.boiler_starts,sensor.boiler_wwstarts +GB125/GB135/MC10,boiler,72,wwworkm,active time,time (>=0<=16777213),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +GB125/GB135/MC10,boiler,72,nompower,nominal Power,uint (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower +GB125/GB135/MC10,boiler,72,nrgtotal,total energy,ulong (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal +GB125/GB135/MC10,boiler,72,nrgheat,energy heating,ulong (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat +GB125/GB135/MC10,boiler,72,nrgww,energy,ulong (>=0<=10000000),kWh,true,number.boiler_energy,number.boiler_nrgww +Cascade CM10,boiler,81,reset,reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_reset,sensor.boiler_reset +Cascade CM10,boiler,81,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff Cascade CM10,boiler,81,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive Cascade CM10,boiler,81,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive -Cascade CM10,boiler,81,selflowtemp,selected flow temperature,uint (>=0<=254),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp +Cascade CM10,boiler,81,selflowtemp,selected flow temperature,uint (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp Cascade CM10,boiler,81,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod Cascade CM10,boiler,81,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp Cascade CM10,boiler,81,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp @@ -192,38 +385,38 @@ Cascade CM10,boiler,81,rettemp,return temperature,ushort (>=0<=3199),C,false,sen Cascade CM10,boiler,81,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp Cascade CM10,boiler,81,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress Cascade CM10,boiler,81,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp +Cascade CM10,boiler,81,headertemp,low loss header,ushort (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp Cascade CM10,boiler,81,exhausttemp,exhaust temperature,ushort (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp Cascade CM10,boiler,81,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas Cascade CM10,boiler,81,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2 Cascade CM10,boiler,81,flamecurr,flame current,ushort (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr -Cascade CM10,boiler,81,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Cascade CM10,boiler,81,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork Cascade CM10,boiler,81,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork Cascade CM10,boiler,81,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat +Cascade CM10,boiler,81,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower +Cascade CM10,boiler,81,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower +Cascade CM10,boiler,81,burnminperiod,burner min period,uint (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod +Cascade CM10,boiler,81,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow +Cascade CM10,boiler,81,heatblock,heating block,ushort (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock +Cascade CM10,boiler,81,boilhyston,hysteresis on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston +Cascade CM10,boiler,81,boilhystoff,hysteresis off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff Cascade CM10,boiler,81,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated -Cascade CM10,boiler,81,heatingtemp,heating temperature,uint (>=0<=254),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Cascade CM10,boiler,81,heatingtemp,heating temperature,uint (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Cascade CM10,boiler,81,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Cascade CM10,boiler,81,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax Cascade CM10,boiler,81,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin 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 -Cascade CM10,boiler,81,pumpdelay,pump delay,uint (>=0<=254),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay -Cascade CM10,boiler,81,burnminperiod,burner min period,uint (>=0<=254),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod -Cascade CM10,boiler,81,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower -Cascade CM10,boiler,81,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower -Cascade CM10,boiler,81,boilhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston -Cascade CM10,boiler,81,boilhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff -Cascade CM10,boiler,81,boil2hyston,hysteresis stage 2 on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston -Cascade CM10,boiler,81,boil2hystoff,hysteresis stage 2 off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff +Cascade CM10,boiler,81,pumpdelay,pump delay,uint (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay Cascade CM10,boiler,81,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp Cascade CM10,boiler,81,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow -Cascade CM10,boiler,81,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow Cascade CM10,boiler,81,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow Cascade CM10,boiler,81,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow -Cascade CM10,boiler,81,burnstarts,burner starts,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts -Cascade CM10,boiler,81,burnworkmin,total burner operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin -Cascade CM10,boiler,81,burn2workmin,burner stage 2 operating time,time (>=0<=65533),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin -Cascade CM10,boiler,81,heatworkmin,total heat operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin -Cascade CM10,boiler,81,heatstarts,burner starts heating,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts -Cascade CM10,boiler,81,ubauptime,total UBA operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime +Cascade CM10,boiler,81,burnstarts,burner starts,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts +Cascade CM10,boiler,81,burnworkmin,total burner operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin +Cascade CM10,boiler,81,burn2workmin,burner stage 2 operating time,time (>=0<=16777213),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin +Cascade CM10,boiler,81,heatworkmin,total heat operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin +Cascade CM10,boiler,81,heatstarts,burner starts heating,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts +Cascade CM10,boiler,81,ubauptime,total UBA operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime Cascade CM10,boiler,81,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode Cascade CM10,boiler,81,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode Cascade CM10,boiler,81,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber @@ -237,6 +430,7 @@ Cascade CM10,boiler,81,wwtapactivated,turn on/off,boolean, ,true,switch.boiler_t Cascade CM10,boiler,81,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp Cascade CM10,boiler,81,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp Cascade CM10,boiler,81,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow +Cascade CM10,boiler,81,wwtempecoplus,selected eco+ temperature,uint (>=0<=254),C,true,number.boiler_selected_eco+_temperature,number.boiler_wwtempecoplus Cascade CM10,boiler,81,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff Cascade CM10,boiler,81,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle Cascade CM10,boiler,81,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp @@ -246,12 +440,12 @@ Cascade CM10,boiler,81,wwcomfort1,comfort mode,enum [high comfort\|eco], ,true,s Cascade CM10,boiler,81,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset Cascade CM10,boiler,81,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization Cascade CM10,boiler,81,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower -Cascade CM10,boiler,81,wwmaxtemp,maximum temperature,uint (>=0<=70),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp +Cascade CM10,boiler,81,wwmaxtemp,maximum temperature,uint (>=0<=80),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp Cascade CM10,boiler,81,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump Cascade CM10,boiler,81,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype Cascade CM10,boiler,81,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston Cascade CM10,boiler,81,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff -Cascade CM10,boiler,81,wwdisinfectiontemp,disinfection temperature,uint (>=0<=254),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp +Cascade CM10,boiler,81,wwdisinfectiontemp,disinfection temperature,uint (>=60<=80),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp Cascade CM10,boiler,81,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode Cascade CM10,boiler,81,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc Cascade CM10,boiler,81,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp @@ -270,12 +464,17 @@ Cascade CM10,boiler,81,ww3wayvalve,3-way valve active,boolean, ,false,binary_sen Cascade CM10,boiler,81,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower Cascade CM10,boiler,81,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp Cascade CM10,boiler,81,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp -Cascade CM10,boiler,81,wwstarts,starts,ulong (>=0<=65533), ,false,sensor.boiler_starts,sensor.boiler_wwstarts -Cascade CM10,boiler,81,wwworkm,active time,time (>=0<=65533),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm -Logamax Plus GB022,boiler,84,reset,Reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_Reset,sensor.boiler_reset +Cascade CM10,boiler,81,wwstarts,starts,ulong (>=0<=16777213), ,false,sensor.boiler_starts,sensor.boiler_wwstarts +Cascade CM10,boiler,81,wwworkm,active time,time (>=0<=16777213),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +Cascade CM10,boiler,81,nompower,nominal Power,uint (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower +Cascade CM10,boiler,81,nrgtotal,total energy,ulong (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal +Cascade CM10,boiler,81,nrgheat,energy heating,ulong (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat +Cascade CM10,boiler,81,nrgww,energy,ulong (>=0<=10000000),kWh,true,number.boiler_energy,number.boiler_nrgww +Logamax Plus GB022,boiler,84,reset,reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_reset,sensor.boiler_reset +Logamax Plus GB022,boiler,84,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff Logamax Plus GB022,boiler,84,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive Logamax Plus GB022,boiler,84,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive -Logamax Plus GB022,boiler,84,selflowtemp,selected flow temperature,uint (>=0<=254),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp +Logamax Plus GB022,boiler,84,selflowtemp,selected flow temperature,uint (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp Logamax Plus GB022,boiler,84,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod Logamax Plus GB022,boiler,84,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp Logamax Plus GB022,boiler,84,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp @@ -283,38 +482,38 @@ Logamax Plus GB022,boiler,84,rettemp,return temperature,ushort (>=0<=3199),C,fal Logamax Plus GB022,boiler,84,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp Logamax Plus GB022,boiler,84,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress Logamax Plus GB022,boiler,84,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp +Logamax Plus GB022,boiler,84,headertemp,low loss header,ushort (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp Logamax Plus GB022,boiler,84,exhausttemp,exhaust temperature,ushort (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp Logamax Plus GB022,boiler,84,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas Logamax Plus GB022,boiler,84,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2 Logamax Plus GB022,boiler,84,flamecurr,flame current,ushort (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr -Logamax Plus GB022,boiler,84,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Logamax Plus GB022,boiler,84,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork Logamax Plus GB022,boiler,84,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork Logamax Plus GB022,boiler,84,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat +Logamax Plus GB022,boiler,84,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower +Logamax Plus GB022,boiler,84,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower +Logamax Plus GB022,boiler,84,burnminperiod,burner min period,uint (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod +Logamax Plus GB022,boiler,84,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow +Logamax Plus GB022,boiler,84,heatblock,heating block,ushort (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock +Logamax Plus GB022,boiler,84,boilhyston,hysteresis on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston +Logamax Plus GB022,boiler,84,boilhystoff,hysteresis off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff Logamax Plus GB022,boiler,84,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated -Logamax Plus GB022,boiler,84,heatingtemp,heating temperature,uint (>=0<=254),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Logamax Plus GB022,boiler,84,heatingtemp,heating temperature,uint (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Logamax Plus GB022,boiler,84,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Logamax Plus GB022,boiler,84,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax Logamax Plus GB022,boiler,84,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin 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 -Logamax Plus GB022,boiler,84,pumpdelay,pump delay,uint (>=0<=254),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay -Logamax Plus GB022,boiler,84,burnminperiod,burner min period,uint (>=0<=254),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod -Logamax Plus GB022,boiler,84,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower -Logamax Plus GB022,boiler,84,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower -Logamax Plus GB022,boiler,84,boilhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston -Logamax Plus GB022,boiler,84,boilhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff -Logamax Plus GB022,boiler,84,boil2hyston,hysteresis stage 2 on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston -Logamax Plus GB022,boiler,84,boil2hystoff,hysteresis stage 2 off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff +Logamax Plus GB022,boiler,84,pumpdelay,pump delay,uint (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay Logamax Plus GB022,boiler,84,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp Logamax Plus GB022,boiler,84,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow -Logamax Plus GB022,boiler,84,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow Logamax Plus GB022,boiler,84,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow Logamax Plus GB022,boiler,84,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow -Logamax Plus GB022,boiler,84,burnstarts,burner starts,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts -Logamax Plus GB022,boiler,84,burnworkmin,total burner operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin -Logamax Plus GB022,boiler,84,burn2workmin,burner stage 2 operating time,time (>=0<=65533),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin -Logamax Plus GB022,boiler,84,heatworkmin,total heat operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin -Logamax Plus GB022,boiler,84,heatstarts,burner starts heating,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts -Logamax Plus GB022,boiler,84,ubauptime,total UBA operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime +Logamax Plus GB022,boiler,84,burnstarts,burner starts,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts +Logamax Plus GB022,boiler,84,burnworkmin,total burner operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin +Logamax Plus GB022,boiler,84,burn2workmin,burner stage 2 operating time,time (>=0<=16777213),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin +Logamax Plus GB022,boiler,84,heatworkmin,total heat operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin +Logamax Plus GB022,boiler,84,heatstarts,burner starts heating,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts +Logamax Plus GB022,boiler,84,ubauptime,total UBA operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime Logamax Plus GB022,boiler,84,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode Logamax Plus GB022,boiler,84,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode Logamax Plus GB022,boiler,84,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber @@ -328,6 +527,7 @@ Logamax Plus GB022,boiler,84,wwtapactivated,turn on/off,boolean, ,true,switch.bo Logamax Plus GB022,boiler,84,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp Logamax Plus GB022,boiler,84,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp Logamax Plus GB022,boiler,84,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow +Logamax Plus GB022,boiler,84,wwtempecoplus,selected eco+ temperature,uint (>=0<=254),C,true,number.boiler_selected_eco+_temperature,number.boiler_wwtempecoplus Logamax Plus GB022,boiler,84,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff Logamax Plus GB022,boiler,84,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle Logamax Plus GB022,boiler,84,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp @@ -337,12 +537,12 @@ Logamax Plus GB022,boiler,84,wwcomfort1,comfort mode,enum [high comfort\|eco], , Logamax Plus GB022,boiler,84,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset Logamax Plus GB022,boiler,84,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization Logamax Plus GB022,boiler,84,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower -Logamax Plus GB022,boiler,84,wwmaxtemp,maximum temperature,uint (>=0<=70),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp +Logamax Plus GB022,boiler,84,wwmaxtemp,maximum temperature,uint (>=0<=80),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp Logamax Plus GB022,boiler,84,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump Logamax Plus GB022,boiler,84,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype Logamax Plus GB022,boiler,84,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston Logamax Plus GB022,boiler,84,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff -Logamax Plus GB022,boiler,84,wwdisinfectiontemp,disinfection temperature,uint (>=0<=254),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp +Logamax Plus GB022,boiler,84,wwdisinfectiontemp,disinfection temperature,uint (>=60<=80),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp Logamax Plus GB022,boiler,84,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode Logamax Plus GB022,boiler,84,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc Logamax Plus GB022,boiler,84,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp @@ -361,12 +561,17 @@ Logamax Plus GB022,boiler,84,ww3wayvalve,3-way valve active,boolean, ,false,bina Logamax Plus GB022,boiler,84,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower Logamax Plus GB022,boiler,84,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp Logamax Plus GB022,boiler,84,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp -Logamax Plus GB022,boiler,84,wwstarts,starts,ulong (>=0<=65533), ,false,sensor.boiler_starts,sensor.boiler_wwstarts -Logamax Plus GB022,boiler,84,wwworkm,active time,time (>=0<=65533),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm -Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,reset,Reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_Reset,sensor.boiler_reset +Logamax Plus GB022,boiler,84,wwstarts,starts,ulong (>=0<=16777213), ,false,sensor.boiler_starts,sensor.boiler_wwstarts +Logamax Plus GB022,boiler,84,wwworkm,active time,time (>=0<=16777213),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +Logamax Plus GB022,boiler,84,nompower,nominal Power,uint (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower +Logamax Plus GB022,boiler,84,nrgtotal,total energy,ulong (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal +Logamax Plus GB022,boiler,84,nrgheat,energy heating,ulong (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat +Logamax Plus GB022,boiler,84,nrgww,energy,ulong (>=0<=10000000),kWh,true,number.boiler_energy,number.boiler_nrgww +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,reset,reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_reset,sensor.boiler_reset +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive -Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,selflowtemp,selected flow temperature,uint (>=0<=254),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,selflowtemp,selected flow temperature,uint (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp @@ -374,38 +579,38 @@ Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,rette Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,headertemp,low loss header,ushort (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,exhausttemp,exhaust temperature,ushort (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas Condens 2500/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 Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,flamecurr,flame current,ushort (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr -Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,burnminperiod,burner min period,uint (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,heatblock,heating block,ushort (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,boilhyston,hysteresis on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,boilhystoff,hysteresis off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated -Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,heatingtemp,heating temperature,uint (>=0<=254),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,heatingtemp,heating temperature,uint (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode -Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,pumpdelay,pump delay,uint (>=0<=254),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay -Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,burnminperiod,burner min period,uint (>=0<=254),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod -Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower -Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower -Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,boilhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston -Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,boilhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff -Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,boil2hyston,hysteresis stage 2 on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston -Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,boil2hystoff,hysteresis stage 2 off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,pumpdelay,pump delay,uint (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow -Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow -Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,burnstarts,burner starts,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts -Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,burnworkmin,total burner operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin -Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,burn2workmin,burner stage 2 operating time,time (>=0<=65533),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin -Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,heatworkmin,total heat operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin -Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,heatstarts,burner starts heating,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts -Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,ubauptime,total UBA operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,burnstarts,burner starts,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,burnworkmin,total burner operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,burn2workmin,burner stage 2 operating time,time (>=0<=16777213),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,heatworkmin,total heat operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,heatstarts,burner starts heating,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,ubauptime,total UBA operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber @@ -419,6 +624,7 @@ Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwtap Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwtempecoplus,selected eco+ temperature,uint (>=0<=254),C,true,number.boiler_selected_eco+_temperature,number.boiler_wwtempecoplus Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp @@ -428,12 +634,12 @@ Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwcom Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower -Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwmaxtemp,maximum temperature,uint (>=0<=70),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwmaxtemp,maximum temperature,uint (>=0<=80),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff -Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwdisinfectiontemp,disinfection temperature,uint (>=0<=254),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwdisinfectiontemp,disinfection temperature,uint (>=60<=80),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp @@ -452,12 +658,17 @@ Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,ww3wa Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp -Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwstarts,starts,ulong (>=0<=65533), ,false,sensor.boiler_starts,sensor.boiler_wwstarts -Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwworkm,active time,time (>=0<=65533),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm -Topline/GB162,boiler,115,reset,Reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_Reset,sensor.boiler_reset +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwstarts,starts,ulong (>=0<=16777213), ,false,sensor.boiler_starts,sensor.boiler_wwstarts +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,wwworkm,active time,time (>=0<=16777213),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,nompower,nominal Power,uint (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,nrgtotal,total energy,ulong (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,nrgheat,energy heating,ulong (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat +Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3,boiler,95,nrgww,energy,ulong (>=0<=10000000),kWh,true,number.boiler_energy,number.boiler_nrgww +Topline/GB162,boiler,115,reset,reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_reset,sensor.boiler_reset +Topline/GB162,boiler,115,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff Topline/GB162,boiler,115,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive Topline/GB162,boiler,115,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive -Topline/GB162,boiler,115,selflowtemp,selected flow temperature,uint (>=0<=254),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp +Topline/GB162,boiler,115,selflowtemp,selected flow temperature,uint (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp Topline/GB162,boiler,115,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod Topline/GB162,boiler,115,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp Topline/GB162,boiler,115,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp @@ -465,38 +676,38 @@ Topline/GB162,boiler,115,rettemp,return temperature,ushort (>=0<=3199),C,false,s Topline/GB162,boiler,115,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp Topline/GB162,boiler,115,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress Topline/GB162,boiler,115,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp +Topline/GB162,boiler,115,headertemp,low loss header,ushort (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp Topline/GB162,boiler,115,exhausttemp,exhaust temperature,ushort (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp Topline/GB162,boiler,115,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas Topline/GB162,boiler,115,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2 Topline/GB162,boiler,115,flamecurr,flame current,ushort (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr -Topline/GB162,boiler,115,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Topline/GB162,boiler,115,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork Topline/GB162,boiler,115,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork Topline/GB162,boiler,115,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat +Topline/GB162,boiler,115,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower +Topline/GB162,boiler,115,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower +Topline/GB162,boiler,115,burnminperiod,burner min period,uint (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod +Topline/GB162,boiler,115,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow +Topline/GB162,boiler,115,heatblock,heating block,ushort (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock +Topline/GB162,boiler,115,boilhyston,hysteresis on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston +Topline/GB162,boiler,115,boilhystoff,hysteresis off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff Topline/GB162,boiler,115,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated -Topline/GB162,boiler,115,heatingtemp,heating temperature,uint (>=0<=254),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Topline/GB162,boiler,115,heatingtemp,heating temperature,uint (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Topline/GB162,boiler,115,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Topline/GB162,boiler,115,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax Topline/GB162,boiler,115,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin 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 -Topline/GB162,boiler,115,pumpdelay,pump delay,uint (>=0<=254),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay -Topline/GB162,boiler,115,burnminperiod,burner min period,uint (>=0<=254),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod -Topline/GB162,boiler,115,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower -Topline/GB162,boiler,115,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower -Topline/GB162,boiler,115,boilhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston -Topline/GB162,boiler,115,boilhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff -Topline/GB162,boiler,115,boil2hyston,hysteresis stage 2 on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston -Topline/GB162,boiler,115,boil2hystoff,hysteresis stage 2 off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff +Topline/GB162,boiler,115,pumpdelay,pump delay,uint (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay Topline/GB162,boiler,115,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp Topline/GB162,boiler,115,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow -Topline/GB162,boiler,115,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow Topline/GB162,boiler,115,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow Topline/GB162,boiler,115,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow -Topline/GB162,boiler,115,burnstarts,burner starts,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts -Topline/GB162,boiler,115,burnworkmin,total burner operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin -Topline/GB162,boiler,115,burn2workmin,burner stage 2 operating time,time (>=0<=65533),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin -Topline/GB162,boiler,115,heatworkmin,total heat operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin -Topline/GB162,boiler,115,heatstarts,burner starts heating,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts -Topline/GB162,boiler,115,ubauptime,total UBA operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime +Topline/GB162,boiler,115,burnstarts,burner starts,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts +Topline/GB162,boiler,115,burnworkmin,total burner operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin +Topline/GB162,boiler,115,burn2workmin,burner stage 2 operating time,time (>=0<=16777213),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin +Topline/GB162,boiler,115,heatworkmin,total heat operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin +Topline/GB162,boiler,115,heatstarts,burner starts heating,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts +Topline/GB162,boiler,115,ubauptime,total UBA operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime Topline/GB162,boiler,115,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode Topline/GB162,boiler,115,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode Topline/GB162,boiler,115,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber @@ -510,6 +721,7 @@ Topline/GB162,boiler,115,wwtapactivated,turn on/off,boolean, ,true,switch.boiler Topline/GB162,boiler,115,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp Topline/GB162,boiler,115,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp Topline/GB162,boiler,115,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow +Topline/GB162,boiler,115,wwtempecoplus,selected eco+ temperature,uint (>=0<=254),C,true,number.boiler_selected_eco+_temperature,number.boiler_wwtempecoplus Topline/GB162,boiler,115,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff Topline/GB162,boiler,115,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle Topline/GB162,boiler,115,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp @@ -519,12 +731,12 @@ Topline/GB162,boiler,115,wwcomfort1,comfort mode,enum [high comfort\|eco], ,true Topline/GB162,boiler,115,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset Topline/GB162,boiler,115,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization Topline/GB162,boiler,115,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower -Topline/GB162,boiler,115,wwmaxtemp,maximum temperature,uint (>=0<=70),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp +Topline/GB162,boiler,115,wwmaxtemp,maximum temperature,uint (>=0<=80),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp Topline/GB162,boiler,115,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump Topline/GB162,boiler,115,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype Topline/GB162,boiler,115,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston Topline/GB162,boiler,115,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff -Topline/GB162,boiler,115,wwdisinfectiontemp,disinfection temperature,uint (>=0<=254),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp +Topline/GB162,boiler,115,wwdisinfectiontemp,disinfection temperature,uint (>=60<=80),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp Topline/GB162,boiler,115,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode Topline/GB162,boiler,115,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc Topline/GB162,boiler,115,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp @@ -543,12 +755,17 @@ Topline/GB162,boiler,115,ww3wayvalve,3-way valve active,boolean, ,false,binary_s Topline/GB162,boiler,115,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower Topline/GB162,boiler,115,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp Topline/GB162,boiler,115,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp -Topline/GB162,boiler,115,wwstarts,starts,ulong (>=0<=65533), ,false,sensor.boiler_starts,sensor.boiler_wwstarts -Topline/GB162,boiler,115,wwworkm,active time,time (>=0<=65533),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm -Cascade MCM10,boiler,121,reset,Reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_Reset,sensor.boiler_reset +Topline/GB162,boiler,115,wwstarts,starts,ulong (>=0<=16777213), ,false,sensor.boiler_starts,sensor.boiler_wwstarts +Topline/GB162,boiler,115,wwworkm,active time,time (>=0<=16777213),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +Topline/GB162,boiler,115,nompower,nominal Power,uint (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower +Topline/GB162,boiler,115,nrgtotal,total energy,ulong (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal +Topline/GB162,boiler,115,nrgheat,energy heating,ulong (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat +Topline/GB162,boiler,115,nrgww,energy,ulong (>=0<=10000000),kWh,true,number.boiler_energy,number.boiler_nrgww +Cascade MCM10,boiler,121,reset,reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_reset,sensor.boiler_reset +Cascade MCM10,boiler,121,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff Cascade MCM10,boiler,121,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive Cascade MCM10,boiler,121,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive -Cascade MCM10,boiler,121,selflowtemp,selected flow temperature,uint (>=0<=254),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp +Cascade MCM10,boiler,121,selflowtemp,selected flow temperature,uint (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp Cascade MCM10,boiler,121,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod Cascade MCM10,boiler,121,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp Cascade MCM10,boiler,121,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp @@ -556,38 +773,38 @@ Cascade MCM10,boiler,121,rettemp,return temperature,ushort (>=0<=3199),C,false,s Cascade MCM10,boiler,121,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp Cascade MCM10,boiler,121,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress Cascade MCM10,boiler,121,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp +Cascade MCM10,boiler,121,headertemp,low loss header,ushort (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp Cascade MCM10,boiler,121,exhausttemp,exhaust temperature,ushort (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp Cascade MCM10,boiler,121,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas Cascade MCM10,boiler,121,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2 Cascade MCM10,boiler,121,flamecurr,flame current,ushort (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr -Cascade MCM10,boiler,121,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Cascade MCM10,boiler,121,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork Cascade MCM10,boiler,121,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork Cascade MCM10,boiler,121,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat +Cascade MCM10,boiler,121,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower +Cascade MCM10,boiler,121,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower +Cascade MCM10,boiler,121,burnminperiod,burner min period,uint (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod +Cascade MCM10,boiler,121,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow +Cascade MCM10,boiler,121,heatblock,heating block,ushort (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock +Cascade MCM10,boiler,121,boilhyston,hysteresis on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston +Cascade MCM10,boiler,121,boilhystoff,hysteresis off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff Cascade MCM10,boiler,121,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated -Cascade MCM10,boiler,121,heatingtemp,heating temperature,uint (>=0<=254),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Cascade MCM10,boiler,121,heatingtemp,heating temperature,uint (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Cascade MCM10,boiler,121,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Cascade MCM10,boiler,121,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax Cascade MCM10,boiler,121,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin 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 -Cascade MCM10,boiler,121,pumpdelay,pump delay,uint (>=0<=254),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay -Cascade MCM10,boiler,121,burnminperiod,burner min period,uint (>=0<=254),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod -Cascade MCM10,boiler,121,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower -Cascade MCM10,boiler,121,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower -Cascade MCM10,boiler,121,boilhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston -Cascade MCM10,boiler,121,boilhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff -Cascade MCM10,boiler,121,boil2hyston,hysteresis stage 2 on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston -Cascade MCM10,boiler,121,boil2hystoff,hysteresis stage 2 off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff +Cascade MCM10,boiler,121,pumpdelay,pump delay,uint (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay Cascade MCM10,boiler,121,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp Cascade MCM10,boiler,121,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow -Cascade MCM10,boiler,121,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow Cascade MCM10,boiler,121,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow Cascade MCM10,boiler,121,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow -Cascade MCM10,boiler,121,burnstarts,burner starts,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts -Cascade MCM10,boiler,121,burnworkmin,total burner operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin -Cascade MCM10,boiler,121,burn2workmin,burner stage 2 operating time,time (>=0<=65533),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin -Cascade MCM10,boiler,121,heatworkmin,total heat operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin -Cascade MCM10,boiler,121,heatstarts,burner starts heating,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts -Cascade MCM10,boiler,121,ubauptime,total UBA operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime +Cascade MCM10,boiler,121,burnstarts,burner starts,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts +Cascade MCM10,boiler,121,burnworkmin,total burner operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin +Cascade MCM10,boiler,121,burn2workmin,burner stage 2 operating time,time (>=0<=16777213),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin +Cascade MCM10,boiler,121,heatworkmin,total heat operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin +Cascade MCM10,boiler,121,heatstarts,burner starts heating,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts +Cascade MCM10,boiler,121,ubauptime,total UBA operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime Cascade MCM10,boiler,121,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode Cascade MCM10,boiler,121,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode Cascade MCM10,boiler,121,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber @@ -601,6 +818,7 @@ Cascade MCM10,boiler,121,wwtapactivated,turn on/off,boolean, ,true,switch.boiler Cascade MCM10,boiler,121,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp Cascade MCM10,boiler,121,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp Cascade MCM10,boiler,121,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow +Cascade MCM10,boiler,121,wwtempecoplus,selected eco+ temperature,uint (>=0<=254),C,true,number.boiler_selected_eco+_temperature,number.boiler_wwtempecoplus Cascade MCM10,boiler,121,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff Cascade MCM10,boiler,121,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle Cascade MCM10,boiler,121,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp @@ -610,12 +828,12 @@ Cascade MCM10,boiler,121,wwcomfort1,comfort mode,enum [high comfort\|eco], ,true Cascade MCM10,boiler,121,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset Cascade MCM10,boiler,121,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization Cascade MCM10,boiler,121,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower -Cascade MCM10,boiler,121,wwmaxtemp,maximum temperature,uint (>=0<=70),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp +Cascade MCM10,boiler,121,wwmaxtemp,maximum temperature,uint (>=0<=80),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp Cascade MCM10,boiler,121,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump Cascade MCM10,boiler,121,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype Cascade MCM10,boiler,121,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston Cascade MCM10,boiler,121,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff -Cascade MCM10,boiler,121,wwdisinfectiontemp,disinfection temperature,uint (>=0<=254),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp +Cascade MCM10,boiler,121,wwdisinfectiontemp,disinfection temperature,uint (>=60<=80),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp Cascade MCM10,boiler,121,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode Cascade MCM10,boiler,121,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc Cascade MCM10,boiler,121,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp @@ -634,12 +852,17 @@ Cascade MCM10,boiler,121,ww3wayvalve,3-way valve active,boolean, ,false,binary_s Cascade MCM10,boiler,121,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower Cascade MCM10,boiler,121,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp Cascade MCM10,boiler,121,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp -Cascade MCM10,boiler,121,wwstarts,starts,ulong (>=0<=65533), ,false,sensor.boiler_starts,sensor.boiler_wwstarts -Cascade MCM10,boiler,121,wwworkm,active time,time (>=0<=65533),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm -Proline,boiler,122,reset,Reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_Reset,sensor.boiler_reset +Cascade MCM10,boiler,121,wwstarts,starts,ulong (>=0<=16777213), ,false,sensor.boiler_starts,sensor.boiler_wwstarts +Cascade MCM10,boiler,121,wwworkm,active time,time (>=0<=16777213),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +Cascade MCM10,boiler,121,nompower,nominal Power,uint (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower +Cascade MCM10,boiler,121,nrgtotal,total energy,ulong (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal +Cascade MCM10,boiler,121,nrgheat,energy heating,ulong (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat +Cascade MCM10,boiler,121,nrgww,energy,ulong (>=0<=10000000),kWh,true,number.boiler_energy,number.boiler_nrgww +Proline,boiler,122,reset,reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_reset,sensor.boiler_reset +Proline,boiler,122,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff Proline,boiler,122,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive Proline,boiler,122,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive -Proline,boiler,122,selflowtemp,selected flow temperature,uint (>=0<=254),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp +Proline,boiler,122,selflowtemp,selected flow temperature,uint (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp Proline,boiler,122,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod Proline,boiler,122,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp Proline,boiler,122,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp @@ -647,38 +870,38 @@ Proline,boiler,122,rettemp,return temperature,ushort (>=0<=3199),C,false,sensor. Proline,boiler,122,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp Proline,boiler,122,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress Proline,boiler,122,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp +Proline,boiler,122,headertemp,low loss header,ushort (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp Proline,boiler,122,exhausttemp,exhaust temperature,ushort (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp Proline,boiler,122,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas Proline,boiler,122,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2 Proline,boiler,122,flamecurr,flame current,ushort (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr -Proline,boiler,122,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Proline,boiler,122,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork Proline,boiler,122,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork Proline,boiler,122,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat +Proline,boiler,122,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower +Proline,boiler,122,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower +Proline,boiler,122,burnminperiod,burner min period,uint (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod +Proline,boiler,122,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow +Proline,boiler,122,heatblock,heating block,ushort (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock +Proline,boiler,122,boilhyston,hysteresis on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston +Proline,boiler,122,boilhystoff,hysteresis off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff Proline,boiler,122,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated -Proline,boiler,122,heatingtemp,heating temperature,uint (>=0<=254),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Proline,boiler,122,heatingtemp,heating temperature,uint (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Proline,boiler,122,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Proline,boiler,122,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax Proline,boiler,122,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin 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 -Proline,boiler,122,pumpdelay,pump delay,uint (>=0<=254),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay -Proline,boiler,122,burnminperiod,burner min period,uint (>=0<=254),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod -Proline,boiler,122,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower -Proline,boiler,122,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower -Proline,boiler,122,boilhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston -Proline,boiler,122,boilhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff -Proline,boiler,122,boil2hyston,hysteresis stage 2 on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston -Proline,boiler,122,boil2hystoff,hysteresis stage 2 off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff +Proline,boiler,122,pumpdelay,pump delay,uint (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay Proline,boiler,122,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp Proline,boiler,122,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow -Proline,boiler,122,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow Proline,boiler,122,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow Proline,boiler,122,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow -Proline,boiler,122,burnstarts,burner starts,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts -Proline,boiler,122,burnworkmin,total burner operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin -Proline,boiler,122,burn2workmin,burner stage 2 operating time,time (>=0<=65533),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin -Proline,boiler,122,heatworkmin,total heat operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin -Proline,boiler,122,heatstarts,burner starts heating,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts -Proline,boiler,122,ubauptime,total UBA operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime +Proline,boiler,122,burnstarts,burner starts,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts +Proline,boiler,122,burnworkmin,total burner operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin +Proline,boiler,122,burn2workmin,burner stage 2 operating time,time (>=0<=16777213),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin +Proline,boiler,122,heatworkmin,total heat operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin +Proline,boiler,122,heatstarts,burner starts heating,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts +Proline,boiler,122,ubauptime,total UBA operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime Proline,boiler,122,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode Proline,boiler,122,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode Proline,boiler,122,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber @@ -692,6 +915,7 @@ Proline,boiler,122,wwtapactivated,turn on/off,boolean, ,true,switch.boiler_turn_ Proline,boiler,122,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp Proline,boiler,122,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp Proline,boiler,122,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow +Proline,boiler,122,wwtempecoplus,selected eco+ temperature,uint (>=0<=254),C,true,number.boiler_selected_eco+_temperature,number.boiler_wwtempecoplus Proline,boiler,122,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff Proline,boiler,122,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle Proline,boiler,122,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp @@ -701,12 +925,12 @@ Proline,boiler,122,wwcomfort1,comfort mode,enum [high comfort\|eco], ,true,selec Proline,boiler,122,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset Proline,boiler,122,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization Proline,boiler,122,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower -Proline,boiler,122,wwmaxtemp,maximum temperature,uint (>=0<=70),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp +Proline,boiler,122,wwmaxtemp,maximum temperature,uint (>=0<=80),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp Proline,boiler,122,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump Proline,boiler,122,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype Proline,boiler,122,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston Proline,boiler,122,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff -Proline,boiler,122,wwdisinfectiontemp,disinfection temperature,uint (>=0<=254),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp +Proline,boiler,122,wwdisinfectiontemp,disinfection temperature,uint (>=60<=80),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp Proline,boiler,122,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode Proline,boiler,122,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc Proline,boiler,122,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp @@ -725,12 +949,17 @@ Proline,boiler,122,ww3wayvalve,3-way valve active,boolean, ,false,binary_sensor. Proline,boiler,122,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower Proline,boiler,122,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp Proline,boiler,122,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp -Proline,boiler,122,wwstarts,starts,ulong (>=0<=65533), ,false,sensor.boiler_starts,sensor.boiler_wwstarts -Proline,boiler,122,wwworkm,active time,time (>=0<=65533),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm -GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,reset,Reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_Reset,sensor.boiler_reset +Proline,boiler,122,wwstarts,starts,ulong (>=0<=16777213), ,false,sensor.boiler_starts,sensor.boiler_wwstarts +Proline,boiler,122,wwworkm,active time,time (>=0<=16777213),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +Proline,boiler,122,nompower,nominal Power,uint (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower +Proline,boiler,122,nrgtotal,total energy,ulong (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal +Proline,boiler,122,nrgheat,energy heating,ulong (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat +Proline,boiler,122,nrgww,energy,ulong (>=0<=10000000),kWh,true,number.boiler_energy,number.boiler_nrgww +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,reset,reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_reset,sensor.boiler_reset +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive -GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,selflowtemp,selected flow temperature,uint (>=0<=254),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,selflowtemp,selected flow temperature,uint (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp @@ -738,38 +967,38 @@ GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,rettemp,return temperature,ushor GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,headertemp,low loss header,ushort (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,exhausttemp,exhaust temperature,ushort (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2 GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,flamecurr,flame current,ushort (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr -GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,burnminperiod,burner min period,uint (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,heatblock,heating block,ushort (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,boilhyston,hysteresis on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,boilhystoff,hysteresis off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated -GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,heatingtemp,heating temperature,uint (>=0<=254),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,heatingtemp,heating temperature,uint (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin GBx72/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 -GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,pumpdelay,pump delay,uint (>=0<=254),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay -GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,burnminperiod,burner min period,uint (>=0<=254),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod -GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower -GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower -GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,boilhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston -GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,boilhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff -GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,boil2hyston,hysteresis stage 2 on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston -GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,boil2hystoff,hysteresis stage 2 off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,pumpdelay,pump delay,uint (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow -GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow -GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,burnstarts,burner starts,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts -GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,burnworkmin,total burner operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin -GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,burn2workmin,burner stage 2 operating time,time (>=0<=65533),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin -GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,heatworkmin,total heat operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin -GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,heatstarts,burner starts heating,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts -GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,ubauptime,total UBA operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,burnstarts,burner starts,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,burnworkmin,total burner operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,burn2workmin,burner stage 2 operating time,time (>=0<=16777213),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,heatworkmin,total heat operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,heatstarts,burner starts heating,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,ubauptime,total UBA operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber @@ -783,6 +1012,7 @@ GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwtapactivated,turn on/off,boole GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwtempecoplus,selected eco+ temperature,uint (>=0<=254),C,true,number.boiler_selected_eco+_temperature,number.boiler_wwtempecoplus GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp @@ -792,12 +1022,12 @@ GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwcomfort1,comfort mode,enum [hi GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower -GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwmaxtemp,maximum temperature,uint (>=0<=70),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwmaxtemp,maximum temperature,uint (>=0<=80),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff -GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwdisinfectiontemp,disinfection temperature,uint (>=0<=254),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwdisinfectiontemp,disinfection temperature,uint (>=60<=80),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp @@ -816,12 +1046,17 @@ GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,ww3wayvalve,3-way valve active,b GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp -GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwstarts,starts,ulong (>=0<=65533), ,false,sensor.boiler_starts,sensor.boiler_wwstarts -GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwworkm,active time,time (>=0<=65533),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm -GB212,boiler,131,reset,Reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_Reset,sensor.boiler_reset +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwstarts,starts,ulong (>=0<=16777213), ,false,sensor.boiler_starts,sensor.boiler_wwstarts +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,wwworkm,active time,time (>=0<=16777213),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,nompower,nominal Power,uint (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,nrgtotal,total energy,ulong (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,nrgheat,energy heating,ulong (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat +GBx72/Trendline/Cerapur/Greenstar Si,boiler,123,nrgww,energy,ulong (>=0<=10000000),kWh,true,number.boiler_energy,number.boiler_nrgww +GB212,boiler,131,reset,reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_reset,sensor.boiler_reset +GB212,boiler,131,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff GB212,boiler,131,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive GB212,boiler,131,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive -GB212,boiler,131,selflowtemp,selected flow temperature,uint (>=0<=254),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp +GB212,boiler,131,selflowtemp,selected flow temperature,uint (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp GB212,boiler,131,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod GB212,boiler,131,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp GB212,boiler,131,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp @@ -829,38 +1064,38 @@ GB212,boiler,131,rettemp,return temperature,ushort (>=0<=3199),C,false,sensor.bo GB212,boiler,131,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp GB212,boiler,131,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress GB212,boiler,131,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp +GB212,boiler,131,headertemp,low loss header,ushort (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp GB212,boiler,131,exhausttemp,exhaust temperature,ushort (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp GB212,boiler,131,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas GB212,boiler,131,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2 GB212,boiler,131,flamecurr,flame current,ushort (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr -GB212,boiler,131,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump GB212,boiler,131,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork GB212,boiler,131,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork GB212,boiler,131,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat +GB212,boiler,131,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower +GB212,boiler,131,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower +GB212,boiler,131,burnminperiod,burner min period,uint (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod +GB212,boiler,131,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow +GB212,boiler,131,heatblock,heating block,ushort (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock +GB212,boiler,131,boilhyston,hysteresis on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston +GB212,boiler,131,boilhystoff,hysteresis off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff GB212,boiler,131,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated -GB212,boiler,131,heatingtemp,heating temperature,uint (>=0<=254),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +GB212,boiler,131,heatingtemp,heating temperature,uint (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +GB212,boiler,131,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump GB212,boiler,131,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax GB212,boiler,131,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin 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 -GB212,boiler,131,pumpdelay,pump delay,uint (>=0<=254),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay -GB212,boiler,131,burnminperiod,burner min period,uint (>=0<=254),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod -GB212,boiler,131,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower -GB212,boiler,131,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower -GB212,boiler,131,boilhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston -GB212,boiler,131,boilhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff -GB212,boiler,131,boil2hyston,hysteresis stage 2 on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston -GB212,boiler,131,boil2hystoff,hysteresis stage 2 off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff +GB212,boiler,131,pumpdelay,pump delay,uint (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay GB212,boiler,131,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp GB212,boiler,131,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow -GB212,boiler,131,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow GB212,boiler,131,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow GB212,boiler,131,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow -GB212,boiler,131,burnstarts,burner starts,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts -GB212,boiler,131,burnworkmin,total burner operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin -GB212,boiler,131,burn2workmin,burner stage 2 operating time,time (>=0<=65533),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin -GB212,boiler,131,heatworkmin,total heat operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin -GB212,boiler,131,heatstarts,burner starts heating,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts -GB212,boiler,131,ubauptime,total UBA operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime +GB212,boiler,131,burnstarts,burner starts,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts +GB212,boiler,131,burnworkmin,total burner operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin +GB212,boiler,131,burn2workmin,burner stage 2 operating time,time (>=0<=16777213),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin +GB212,boiler,131,heatworkmin,total heat operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin +GB212,boiler,131,heatstarts,burner starts heating,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts +GB212,boiler,131,ubauptime,total UBA operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime GB212,boiler,131,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode GB212,boiler,131,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode GB212,boiler,131,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber @@ -874,6 +1109,7 @@ GB212,boiler,131,wwtapactivated,turn on/off,boolean, ,true,switch.boiler_turn_on GB212,boiler,131,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp GB212,boiler,131,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp GB212,boiler,131,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow +GB212,boiler,131,wwtempecoplus,selected eco+ temperature,uint (>=0<=254),C,true,number.boiler_selected_eco+_temperature,number.boiler_wwtempecoplus GB212,boiler,131,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff GB212,boiler,131,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle GB212,boiler,131,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp @@ -883,12 +1119,12 @@ GB212,boiler,131,wwcomfort1,comfort mode,enum [high comfort\|eco], ,true,select. GB212,boiler,131,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset GB212,boiler,131,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization GB212,boiler,131,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower -GB212,boiler,131,wwmaxtemp,maximum temperature,uint (>=0<=70),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp +GB212,boiler,131,wwmaxtemp,maximum temperature,uint (>=0<=80),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp GB212,boiler,131,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump GB212,boiler,131,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype GB212,boiler,131,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston GB212,boiler,131,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff -GB212,boiler,131,wwdisinfectiontemp,disinfection temperature,uint (>=0<=254),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp +GB212,boiler,131,wwdisinfectiontemp,disinfection temperature,uint (>=60<=80),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp GB212,boiler,131,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode GB212,boiler,131,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc GB212,boiler,131,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp @@ -907,12 +1143,17 @@ GB212,boiler,131,ww3wayvalve,3-way valve active,boolean, ,false,binary_sensor.bo GB212,boiler,131,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower GB212,boiler,131,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp GB212,boiler,131,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp -GB212,boiler,131,wwstarts,starts,ulong (>=0<=65533), ,false,sensor.boiler_starts,sensor.boiler_wwstarts -GB212,boiler,131,wwworkm,active time,time (>=0<=65533),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm -GC7000F,boiler,132,reset,Reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_Reset,sensor.boiler_reset +GB212,boiler,131,wwstarts,starts,ulong (>=0<=16777213), ,false,sensor.boiler_starts,sensor.boiler_wwstarts +GB212,boiler,131,wwworkm,active time,time (>=0<=16777213),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +GB212,boiler,131,nompower,nominal Power,uint (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower +GB212,boiler,131,nrgtotal,total energy,ulong (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal +GB212,boiler,131,nrgheat,energy heating,ulong (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat +GB212,boiler,131,nrgww,energy,ulong (>=0<=10000000),kWh,true,number.boiler_energy,number.boiler_nrgww +GC7000F,boiler,132,reset,reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_reset,sensor.boiler_reset +GC7000F,boiler,132,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff GC7000F,boiler,132,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive GC7000F,boiler,132,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive -GC7000F,boiler,132,selflowtemp,selected flow temperature,uint (>=0<=254),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp +GC7000F,boiler,132,selflowtemp,selected flow temperature,uint (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp GC7000F,boiler,132,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod GC7000F,boiler,132,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp GC7000F,boiler,132,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp @@ -920,38 +1161,38 @@ GC7000F,boiler,132,rettemp,return temperature,ushort (>=0<=3199),C,false,sensor. GC7000F,boiler,132,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp GC7000F,boiler,132,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress GC7000F,boiler,132,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp +GC7000F,boiler,132,headertemp,low loss header,ushort (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp GC7000F,boiler,132,exhausttemp,exhaust temperature,ushort (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp GC7000F,boiler,132,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas GC7000F,boiler,132,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2 GC7000F,boiler,132,flamecurr,flame current,ushort (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr -GC7000F,boiler,132,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump GC7000F,boiler,132,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork GC7000F,boiler,132,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork GC7000F,boiler,132,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat +GC7000F,boiler,132,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower +GC7000F,boiler,132,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower +GC7000F,boiler,132,burnminperiod,burner min period,uint (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod +GC7000F,boiler,132,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow +GC7000F,boiler,132,heatblock,heating block,ushort (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock +GC7000F,boiler,132,boilhyston,hysteresis on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston +GC7000F,boiler,132,boilhystoff,hysteresis off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff GC7000F,boiler,132,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated -GC7000F,boiler,132,heatingtemp,heating temperature,uint (>=0<=254),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +GC7000F,boiler,132,heatingtemp,heating temperature,uint (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +GC7000F,boiler,132,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump GC7000F,boiler,132,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax GC7000F,boiler,132,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin 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 -GC7000F,boiler,132,pumpdelay,pump delay,uint (>=0<=254),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay -GC7000F,boiler,132,burnminperiod,burner min period,uint (>=0<=254),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod -GC7000F,boiler,132,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower -GC7000F,boiler,132,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower -GC7000F,boiler,132,boilhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston -GC7000F,boiler,132,boilhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff -GC7000F,boiler,132,boil2hyston,hysteresis stage 2 on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston -GC7000F,boiler,132,boil2hystoff,hysteresis stage 2 off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff +GC7000F,boiler,132,pumpdelay,pump delay,uint (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay GC7000F,boiler,132,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp GC7000F,boiler,132,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow -GC7000F,boiler,132,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow GC7000F,boiler,132,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow GC7000F,boiler,132,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow -GC7000F,boiler,132,burnstarts,burner starts,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts -GC7000F,boiler,132,burnworkmin,total burner operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin -GC7000F,boiler,132,burn2workmin,burner stage 2 operating time,time (>=0<=65533),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin -GC7000F,boiler,132,heatworkmin,total heat operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin -GC7000F,boiler,132,heatstarts,burner starts heating,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts -GC7000F,boiler,132,ubauptime,total UBA operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime +GC7000F,boiler,132,burnstarts,burner starts,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts +GC7000F,boiler,132,burnworkmin,total burner operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin +GC7000F,boiler,132,burn2workmin,burner stage 2 operating time,time (>=0<=16777213),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin +GC7000F,boiler,132,heatworkmin,total heat operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin +GC7000F,boiler,132,heatstarts,burner starts heating,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts +GC7000F,boiler,132,ubauptime,total UBA operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime GC7000F,boiler,132,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode GC7000F,boiler,132,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode GC7000F,boiler,132,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber @@ -965,6 +1206,7 @@ GC7000F,boiler,132,wwtapactivated,turn on/off,boolean, ,true,switch.boiler_turn_ GC7000F,boiler,132,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp GC7000F,boiler,132,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp GC7000F,boiler,132,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow +GC7000F,boiler,132,wwtempecoplus,selected eco+ temperature,uint (>=0<=254),C,true,number.boiler_selected_eco+_temperature,number.boiler_wwtempecoplus GC7000F,boiler,132,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff GC7000F,boiler,132,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle GC7000F,boiler,132,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp @@ -974,12 +1216,12 @@ GC7000F,boiler,132,wwcomfort1,comfort mode,enum [high comfort\|eco], ,true,selec GC7000F,boiler,132,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset GC7000F,boiler,132,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization GC7000F,boiler,132,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower -GC7000F,boiler,132,wwmaxtemp,maximum temperature,uint (>=0<=70),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp +GC7000F,boiler,132,wwmaxtemp,maximum temperature,uint (>=0<=80),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp GC7000F,boiler,132,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump GC7000F,boiler,132,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype GC7000F,boiler,132,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston GC7000F,boiler,132,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff -GC7000F,boiler,132,wwdisinfectiontemp,disinfection temperature,uint (>=0<=254),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp +GC7000F,boiler,132,wwdisinfectiontemp,disinfection temperature,uint (>=60<=80),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp GC7000F,boiler,132,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode GC7000F,boiler,132,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc GC7000F,boiler,132,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp @@ -998,12 +1240,17 @@ GC7000F,boiler,132,ww3wayvalve,3-way valve active,boolean, ,false,binary_sensor. GC7000F,boiler,132,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower GC7000F,boiler,132,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp GC7000F,boiler,132,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp -GC7000F,boiler,132,wwstarts,starts,ulong (>=0<=65533), ,false,sensor.boiler_starts,sensor.boiler_wwstarts -GC7000F,boiler,132,wwworkm,active time,time (>=0<=65533),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm -Logano GB125/KB195i/Logamatic MC110,boiler,133,reset,Reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_Reset,sensor.boiler_reset +GC7000F,boiler,132,wwstarts,starts,ulong (>=0<=16777213), ,false,sensor.boiler_starts,sensor.boiler_wwstarts +GC7000F,boiler,132,wwworkm,active time,time (>=0<=16777213),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +GC7000F,boiler,132,nompower,nominal Power,uint (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower +GC7000F,boiler,132,nrgtotal,total energy,ulong (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal +GC7000F,boiler,132,nrgheat,energy heating,ulong (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat +GC7000F,boiler,132,nrgww,energy,ulong (>=0<=10000000),kWh,true,number.boiler_energy,number.boiler_nrgww +Logano GB125/KB195i/Logamatic MC110,boiler,133,reset,reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_reset,sensor.boiler_reset +Logano GB125/KB195i/Logamatic MC110,boiler,133,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff Logano GB125/KB195i/Logamatic MC110,boiler,133,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive Logano GB125/KB195i/Logamatic MC110,boiler,133,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive -Logano GB125/KB195i/Logamatic MC110,boiler,133,selflowtemp,selected flow temperature,uint (>=0<=254),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp +Logano GB125/KB195i/Logamatic MC110,boiler,133,selflowtemp,selected flow temperature,uint (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp Logano GB125/KB195i/Logamatic MC110,boiler,133,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod Logano GB125/KB195i/Logamatic MC110,boiler,133,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp Logano GB125/KB195i/Logamatic MC110,boiler,133,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp @@ -1011,38 +1258,38 @@ Logano GB125/KB195i/Logamatic MC110,boiler,133,rettemp,return temperature,ushort Logano GB125/KB195i/Logamatic MC110,boiler,133,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp Logano GB125/KB195i/Logamatic MC110,boiler,133,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress Logano GB125/KB195i/Logamatic MC110,boiler,133,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp +Logano GB125/KB195i/Logamatic MC110,boiler,133,headertemp,low loss header,ushort (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp Logano GB125/KB195i/Logamatic MC110,boiler,133,exhausttemp,exhaust temperature,ushort (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp Logano GB125/KB195i/Logamatic MC110,boiler,133,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas Logano GB125/KB195i/Logamatic MC110,boiler,133,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2 Logano GB125/KB195i/Logamatic MC110,boiler,133,flamecurr,flame current,ushort (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr -Logano GB125/KB195i/Logamatic MC110,boiler,133,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Logano GB125/KB195i/Logamatic MC110,boiler,133,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork Logano GB125/KB195i/Logamatic MC110,boiler,133,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork Logano GB125/KB195i/Logamatic MC110,boiler,133,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat +Logano GB125/KB195i/Logamatic MC110,boiler,133,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower +Logano GB125/KB195i/Logamatic MC110,boiler,133,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower +Logano GB125/KB195i/Logamatic MC110,boiler,133,burnminperiod,burner min period,uint (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod +Logano GB125/KB195i/Logamatic MC110,boiler,133,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow +Logano GB125/KB195i/Logamatic MC110,boiler,133,heatblock,heating block,ushort (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock +Logano GB125/KB195i/Logamatic MC110,boiler,133,boilhyston,hysteresis on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston +Logano GB125/KB195i/Logamatic MC110,boiler,133,boilhystoff,hysteresis off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff Logano GB125/KB195i/Logamatic MC110,boiler,133,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated -Logano GB125/KB195i/Logamatic MC110,boiler,133,heatingtemp,heating temperature,uint (>=0<=254),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Logano GB125/KB195i/Logamatic MC110,boiler,133,heatingtemp,heating temperature,uint (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Logano GB125/KB195i/Logamatic MC110,boiler,133,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Logano GB125/KB195i/Logamatic MC110,boiler,133,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax Logano GB125/KB195i/Logamatic MC110,boiler,133,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin 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 -Logano GB125/KB195i/Logamatic MC110,boiler,133,pumpdelay,pump delay,uint (>=0<=254),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay -Logano GB125/KB195i/Logamatic MC110,boiler,133,burnminperiod,burner min period,uint (>=0<=254),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod -Logano GB125/KB195i/Logamatic MC110,boiler,133,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower -Logano GB125/KB195i/Logamatic MC110,boiler,133,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower -Logano GB125/KB195i/Logamatic MC110,boiler,133,boilhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston -Logano GB125/KB195i/Logamatic MC110,boiler,133,boilhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff -Logano GB125/KB195i/Logamatic MC110,boiler,133,boil2hyston,hysteresis stage 2 on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston -Logano GB125/KB195i/Logamatic MC110,boiler,133,boil2hystoff,hysteresis stage 2 off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff +Logano GB125/KB195i/Logamatic MC110,boiler,133,pumpdelay,pump delay,uint (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay Logano GB125/KB195i/Logamatic MC110,boiler,133,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp Logano GB125/KB195i/Logamatic MC110,boiler,133,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow -Logano GB125/KB195i/Logamatic MC110,boiler,133,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow Logano GB125/KB195i/Logamatic MC110,boiler,133,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow Logano GB125/KB195i/Logamatic MC110,boiler,133,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow -Logano GB125/KB195i/Logamatic MC110,boiler,133,burnstarts,burner starts,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts -Logano GB125/KB195i/Logamatic MC110,boiler,133,burnworkmin,total burner operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin -Logano GB125/KB195i/Logamatic MC110,boiler,133,burn2workmin,burner stage 2 operating time,time (>=0<=65533),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin -Logano GB125/KB195i/Logamatic MC110,boiler,133,heatworkmin,total heat operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin -Logano GB125/KB195i/Logamatic MC110,boiler,133,heatstarts,burner starts heating,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts -Logano GB125/KB195i/Logamatic MC110,boiler,133,ubauptime,total UBA operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime +Logano GB125/KB195i/Logamatic MC110,boiler,133,burnstarts,burner starts,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts +Logano GB125/KB195i/Logamatic MC110,boiler,133,burnworkmin,total burner operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin +Logano GB125/KB195i/Logamatic MC110,boiler,133,burn2workmin,burner stage 2 operating time,time (>=0<=16777213),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin +Logano GB125/KB195i/Logamatic MC110,boiler,133,heatworkmin,total heat operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin +Logano GB125/KB195i/Logamatic MC110,boiler,133,heatstarts,burner starts heating,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts +Logano GB125/KB195i/Logamatic MC110,boiler,133,ubauptime,total UBA operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime Logano GB125/KB195i/Logamatic MC110,boiler,133,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode Logano GB125/KB195i/Logamatic MC110,boiler,133,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode Logano GB125/KB195i/Logamatic MC110,boiler,133,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber @@ -1056,6 +1303,7 @@ Logano GB125/KB195i/Logamatic MC110,boiler,133,wwtapactivated,turn on/off,boolea Logano GB125/KB195i/Logamatic MC110,boiler,133,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp Logano GB125/KB195i/Logamatic MC110,boiler,133,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp Logano GB125/KB195i/Logamatic MC110,boiler,133,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow +Logano GB125/KB195i/Logamatic MC110,boiler,133,wwtempecoplus,selected eco+ temperature,uint (>=0<=254),C,true,number.boiler_selected_eco+_temperature,number.boiler_wwtempecoplus Logano GB125/KB195i/Logamatic MC110,boiler,133,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff Logano GB125/KB195i/Logamatic MC110,boiler,133,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle Logano GB125/KB195i/Logamatic MC110,boiler,133,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp @@ -1065,12 +1313,12 @@ Logano GB125/KB195i/Logamatic MC110,boiler,133,wwcomfort1,comfort mode,enum [hig Logano GB125/KB195i/Logamatic MC110,boiler,133,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset Logano GB125/KB195i/Logamatic MC110,boiler,133,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization Logano GB125/KB195i/Logamatic MC110,boiler,133,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower -Logano GB125/KB195i/Logamatic MC110,boiler,133,wwmaxtemp,maximum temperature,uint (>=0<=70),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp +Logano GB125/KB195i/Logamatic MC110,boiler,133,wwmaxtemp,maximum temperature,uint (>=0<=80),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp Logano GB125/KB195i/Logamatic MC110,boiler,133,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump Logano GB125/KB195i/Logamatic MC110,boiler,133,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype Logano GB125/KB195i/Logamatic MC110,boiler,133,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston Logano GB125/KB195i/Logamatic MC110,boiler,133,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff -Logano GB125/KB195i/Logamatic MC110,boiler,133,wwdisinfectiontemp,disinfection temperature,uint (>=0<=254),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp +Logano GB125/KB195i/Logamatic MC110,boiler,133,wwdisinfectiontemp,disinfection temperature,uint (>=60<=80),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp Logano GB125/KB195i/Logamatic MC110,boiler,133,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode Logano GB125/KB195i/Logamatic MC110,boiler,133,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc Logano GB125/KB195i/Logamatic MC110,boiler,133,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp @@ -1089,12 +1337,17 @@ Logano GB125/KB195i/Logamatic MC110,boiler,133,ww3wayvalve,3-way valve active,bo Logano GB125/KB195i/Logamatic MC110,boiler,133,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower Logano GB125/KB195i/Logamatic MC110,boiler,133,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp Logano GB125/KB195i/Logamatic MC110,boiler,133,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp -Logano GB125/KB195i/Logamatic MC110,boiler,133,wwstarts,starts,ulong (>=0<=65533), ,false,sensor.boiler_starts,sensor.boiler_wwstarts -Logano GB125/KB195i/Logamatic MC110,boiler,133,wwworkm,active time,time (>=0<=65533),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm -Greenstar 30Ri Compact,boiler,154,reset,Reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_Reset,sensor.boiler_reset +Logano GB125/KB195i/Logamatic MC110,boiler,133,wwstarts,starts,ulong (>=0<=16777213), ,false,sensor.boiler_starts,sensor.boiler_wwstarts +Logano GB125/KB195i/Logamatic MC110,boiler,133,wwworkm,active time,time (>=0<=16777213),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +Logano GB125/KB195i/Logamatic MC110,boiler,133,nompower,nominal Power,uint (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower +Logano GB125/KB195i/Logamatic MC110,boiler,133,nrgtotal,total energy,ulong (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal +Logano GB125/KB195i/Logamatic MC110,boiler,133,nrgheat,energy heating,ulong (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat +Logano GB125/KB195i/Logamatic MC110,boiler,133,nrgww,energy,ulong (>=0<=10000000),kWh,true,number.boiler_energy,number.boiler_nrgww +Greenstar 30Ri Compact,boiler,154,reset,reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_reset,sensor.boiler_reset +Greenstar 30Ri Compact,boiler,154,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff Greenstar 30Ri Compact,boiler,154,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive Greenstar 30Ri Compact,boiler,154,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive -Greenstar 30Ri Compact,boiler,154,selflowtemp,selected flow temperature,uint (>=0<=254),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp +Greenstar 30Ri Compact,boiler,154,selflowtemp,selected flow temperature,uint (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp Greenstar 30Ri Compact,boiler,154,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod Greenstar 30Ri Compact,boiler,154,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp Greenstar 30Ri Compact,boiler,154,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp @@ -1102,38 +1355,38 @@ Greenstar 30Ri Compact,boiler,154,rettemp,return temperature,ushort (>=0<=3199), Greenstar 30Ri Compact,boiler,154,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp Greenstar 30Ri Compact,boiler,154,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress Greenstar 30Ri Compact,boiler,154,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp +Greenstar 30Ri Compact,boiler,154,headertemp,low loss header,ushort (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp Greenstar 30Ri Compact,boiler,154,exhausttemp,exhaust temperature,ushort (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp Greenstar 30Ri Compact,boiler,154,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas Greenstar 30Ri Compact,boiler,154,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2 Greenstar 30Ri Compact,boiler,154,flamecurr,flame current,ushort (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr -Greenstar 30Ri Compact,boiler,154,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Greenstar 30Ri Compact,boiler,154,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork Greenstar 30Ri Compact,boiler,154,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork Greenstar 30Ri Compact,boiler,154,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat +Greenstar 30Ri Compact,boiler,154,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower +Greenstar 30Ri Compact,boiler,154,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower +Greenstar 30Ri Compact,boiler,154,burnminperiod,burner min period,uint (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod +Greenstar 30Ri Compact,boiler,154,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow +Greenstar 30Ri Compact,boiler,154,heatblock,heating block,ushort (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock +Greenstar 30Ri Compact,boiler,154,boilhyston,hysteresis on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston +Greenstar 30Ri Compact,boiler,154,boilhystoff,hysteresis off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff Greenstar 30Ri Compact,boiler,154,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated -Greenstar 30Ri Compact,boiler,154,heatingtemp,heating temperature,uint (>=0<=254),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Greenstar 30Ri Compact,boiler,154,heatingtemp,heating temperature,uint (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Greenstar 30Ri Compact,boiler,154,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Greenstar 30Ri Compact,boiler,154,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax Greenstar 30Ri Compact,boiler,154,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin 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 -Greenstar 30Ri Compact,boiler,154,pumpdelay,pump delay,uint (>=0<=254),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay -Greenstar 30Ri Compact,boiler,154,burnminperiod,burner min period,uint (>=0<=254),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod -Greenstar 30Ri Compact,boiler,154,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower -Greenstar 30Ri Compact,boiler,154,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower -Greenstar 30Ri Compact,boiler,154,boilhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston -Greenstar 30Ri Compact,boiler,154,boilhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff -Greenstar 30Ri Compact,boiler,154,boil2hyston,hysteresis stage 2 on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston -Greenstar 30Ri Compact,boiler,154,boil2hystoff,hysteresis stage 2 off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff +Greenstar 30Ri Compact,boiler,154,pumpdelay,pump delay,uint (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay Greenstar 30Ri Compact,boiler,154,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp Greenstar 30Ri Compact,boiler,154,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow -Greenstar 30Ri Compact,boiler,154,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow Greenstar 30Ri Compact,boiler,154,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow Greenstar 30Ri Compact,boiler,154,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow -Greenstar 30Ri Compact,boiler,154,burnstarts,burner starts,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts -Greenstar 30Ri Compact,boiler,154,burnworkmin,total burner operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin -Greenstar 30Ri Compact,boiler,154,burn2workmin,burner stage 2 operating time,time (>=0<=65533),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin -Greenstar 30Ri Compact,boiler,154,heatworkmin,total heat operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin -Greenstar 30Ri Compact,boiler,154,heatstarts,burner starts heating,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts -Greenstar 30Ri Compact,boiler,154,ubauptime,total UBA operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime +Greenstar 30Ri Compact,boiler,154,burnstarts,burner starts,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts +Greenstar 30Ri Compact,boiler,154,burnworkmin,total burner operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin +Greenstar 30Ri Compact,boiler,154,burn2workmin,burner stage 2 operating time,time (>=0<=16777213),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin +Greenstar 30Ri Compact,boiler,154,heatworkmin,total heat operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin +Greenstar 30Ri Compact,boiler,154,heatstarts,burner starts heating,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts +Greenstar 30Ri Compact,boiler,154,ubauptime,total UBA operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime Greenstar 30Ri Compact,boiler,154,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode Greenstar 30Ri Compact,boiler,154,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode Greenstar 30Ri Compact,boiler,154,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber @@ -1147,6 +1400,7 @@ Greenstar 30Ri Compact,boiler,154,wwtapactivated,turn on/off,boolean, ,true,swit Greenstar 30Ri Compact,boiler,154,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp Greenstar 30Ri Compact,boiler,154,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp Greenstar 30Ri Compact,boiler,154,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow +Greenstar 30Ri Compact,boiler,154,wwtempecoplus,selected eco+ temperature,uint (>=0<=254),C,true,number.boiler_selected_eco+_temperature,number.boiler_wwtempecoplus Greenstar 30Ri Compact,boiler,154,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff Greenstar 30Ri Compact,boiler,154,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle Greenstar 30Ri Compact,boiler,154,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp @@ -1156,12 +1410,12 @@ Greenstar 30Ri Compact,boiler,154,wwcomfort1,comfort mode,enum [high comfort\|ec Greenstar 30Ri Compact,boiler,154,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset Greenstar 30Ri Compact,boiler,154,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization Greenstar 30Ri Compact,boiler,154,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower -Greenstar 30Ri Compact,boiler,154,wwmaxtemp,maximum temperature,uint (>=0<=70),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp +Greenstar 30Ri Compact,boiler,154,wwmaxtemp,maximum temperature,uint (>=0<=80),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp Greenstar 30Ri Compact,boiler,154,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump Greenstar 30Ri Compact,boiler,154,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype Greenstar 30Ri Compact,boiler,154,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston Greenstar 30Ri Compact,boiler,154,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff -Greenstar 30Ri Compact,boiler,154,wwdisinfectiontemp,disinfection temperature,uint (>=0<=254),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp +Greenstar 30Ri Compact,boiler,154,wwdisinfectiontemp,disinfection temperature,uint (>=60<=80),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp Greenstar 30Ri Compact,boiler,154,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode Greenstar 30Ri Compact,boiler,154,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc Greenstar 30Ri Compact,boiler,154,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp @@ -1180,12 +1434,17 @@ Greenstar 30Ri Compact,boiler,154,ww3wayvalve,3-way valve active,boolean, ,false Greenstar 30Ri Compact,boiler,154,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower Greenstar 30Ri Compact,boiler,154,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp Greenstar 30Ri Compact,boiler,154,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp -Greenstar 30Ri Compact,boiler,154,wwstarts,starts,ulong (>=0<=65533), ,false,sensor.boiler_starts,sensor.boiler_wwstarts -Greenstar 30Ri Compact,boiler,154,wwworkm,active time,time (>=0<=65533),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm -Cerapur Aero,boiler,167,reset,Reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_Reset,sensor.boiler_reset +Greenstar 30Ri Compact,boiler,154,wwstarts,starts,ulong (>=0<=16777213), ,false,sensor.boiler_starts,sensor.boiler_wwstarts +Greenstar 30Ri Compact,boiler,154,wwworkm,active time,time (>=0<=16777213),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +Greenstar 30Ri Compact,boiler,154,nompower,nominal Power,uint (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower +Greenstar 30Ri Compact,boiler,154,nrgtotal,total energy,ulong (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal +Greenstar 30Ri Compact,boiler,154,nrgheat,energy heating,ulong (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat +Greenstar 30Ri Compact,boiler,154,nrgww,energy,ulong (>=0<=10000000),kWh,true,number.boiler_energy,number.boiler_nrgww +Cerapur Aero,boiler,167,reset,reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_reset,sensor.boiler_reset +Cerapur Aero,boiler,167,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff Cerapur Aero,boiler,167,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive Cerapur Aero,boiler,167,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive -Cerapur Aero,boiler,167,selflowtemp,selected flow temperature,uint (>=0<=254),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp +Cerapur Aero,boiler,167,selflowtemp,selected flow temperature,uint (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp Cerapur Aero,boiler,167,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod Cerapur Aero,boiler,167,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp Cerapur Aero,boiler,167,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp @@ -1193,38 +1452,38 @@ Cerapur Aero,boiler,167,rettemp,return temperature,ushort (>=0<=3199),C,false,se Cerapur Aero,boiler,167,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp Cerapur Aero,boiler,167,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress Cerapur Aero,boiler,167,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp +Cerapur Aero,boiler,167,headertemp,low loss header,ushort (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp Cerapur Aero,boiler,167,exhausttemp,exhaust temperature,ushort (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp Cerapur Aero,boiler,167,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas Cerapur Aero,boiler,167,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2 Cerapur Aero,boiler,167,flamecurr,flame current,ushort (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr -Cerapur Aero,boiler,167,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Cerapur Aero,boiler,167,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork Cerapur Aero,boiler,167,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork Cerapur Aero,boiler,167,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat +Cerapur Aero,boiler,167,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower +Cerapur Aero,boiler,167,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower +Cerapur Aero,boiler,167,burnminperiod,burner min period,uint (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod +Cerapur Aero,boiler,167,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow +Cerapur Aero,boiler,167,heatblock,heating block,ushort (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock +Cerapur Aero,boiler,167,boilhyston,hysteresis on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston +Cerapur Aero,boiler,167,boilhystoff,hysteresis off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff Cerapur Aero,boiler,167,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated -Cerapur Aero,boiler,167,heatingtemp,heating temperature,uint (>=0<=254),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Cerapur Aero,boiler,167,heatingtemp,heating temperature,uint (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Cerapur Aero,boiler,167,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Cerapur Aero,boiler,167,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax Cerapur Aero,boiler,167,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin 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 -Cerapur Aero,boiler,167,pumpdelay,pump delay,uint (>=0<=254),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay -Cerapur Aero,boiler,167,burnminperiod,burner min period,uint (>=0<=254),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod -Cerapur Aero,boiler,167,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower -Cerapur Aero,boiler,167,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower -Cerapur Aero,boiler,167,boilhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston -Cerapur Aero,boiler,167,boilhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff -Cerapur Aero,boiler,167,boil2hyston,hysteresis stage 2 on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston -Cerapur Aero,boiler,167,boil2hystoff,hysteresis stage 2 off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff +Cerapur Aero,boiler,167,pumpdelay,pump delay,uint (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay Cerapur Aero,boiler,167,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp Cerapur Aero,boiler,167,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow -Cerapur Aero,boiler,167,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow Cerapur Aero,boiler,167,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow Cerapur Aero,boiler,167,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow -Cerapur Aero,boiler,167,burnstarts,burner starts,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts -Cerapur Aero,boiler,167,burnworkmin,total burner operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin -Cerapur Aero,boiler,167,burn2workmin,burner stage 2 operating time,time (>=0<=65533),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin -Cerapur Aero,boiler,167,heatworkmin,total heat operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin -Cerapur Aero,boiler,167,heatstarts,burner starts heating,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts -Cerapur Aero,boiler,167,ubauptime,total UBA operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime +Cerapur Aero,boiler,167,burnstarts,burner starts,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts +Cerapur Aero,boiler,167,burnworkmin,total burner operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin +Cerapur Aero,boiler,167,burn2workmin,burner stage 2 operating time,time (>=0<=16777213),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin +Cerapur Aero,boiler,167,heatworkmin,total heat operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin +Cerapur Aero,boiler,167,heatstarts,burner starts heating,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts +Cerapur Aero,boiler,167,ubauptime,total UBA operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime Cerapur Aero,boiler,167,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode Cerapur Aero,boiler,167,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode Cerapur Aero,boiler,167,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber @@ -1238,6 +1497,7 @@ Cerapur Aero,boiler,167,wwtapactivated,turn on/off,boolean, ,true,switch.boiler_ Cerapur Aero,boiler,167,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp Cerapur Aero,boiler,167,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp Cerapur Aero,boiler,167,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow +Cerapur Aero,boiler,167,wwtempecoplus,selected eco+ temperature,uint (>=0<=254),C,true,number.boiler_selected_eco+_temperature,number.boiler_wwtempecoplus Cerapur Aero,boiler,167,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff Cerapur Aero,boiler,167,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle Cerapur Aero,boiler,167,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp @@ -1247,12 +1507,12 @@ Cerapur Aero,boiler,167,wwcomfort1,comfort mode,enum [high comfort\|eco], ,true, Cerapur Aero,boiler,167,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset Cerapur Aero,boiler,167,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization Cerapur Aero,boiler,167,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower -Cerapur Aero,boiler,167,wwmaxtemp,maximum temperature,uint (>=0<=70),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp +Cerapur Aero,boiler,167,wwmaxtemp,maximum temperature,uint (>=0<=80),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp Cerapur Aero,boiler,167,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump Cerapur Aero,boiler,167,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype Cerapur Aero,boiler,167,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston Cerapur Aero,boiler,167,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff -Cerapur Aero,boiler,167,wwdisinfectiontemp,disinfection temperature,uint (>=0<=254),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp +Cerapur Aero,boiler,167,wwdisinfectiontemp,disinfection temperature,uint (>=60<=80),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp Cerapur Aero,boiler,167,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode Cerapur Aero,boiler,167,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc Cerapur Aero,boiler,167,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp @@ -1271,12 +1531,17 @@ Cerapur Aero,boiler,167,ww3wayvalve,3-way valve active,boolean, ,false,binary_se Cerapur Aero,boiler,167,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower Cerapur Aero,boiler,167,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp Cerapur Aero,boiler,167,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp -Cerapur Aero,boiler,167,wwstarts,starts,ulong (>=0<=65533), ,false,sensor.boiler_starts,sensor.boiler_wwstarts -Cerapur Aero,boiler,167,wwworkm,active time,time (>=0<=65533),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm -Hybrid Heatpump,boiler,168,reset,Reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_Reset,sensor.boiler_reset +Cerapur Aero,boiler,167,wwstarts,starts,ulong (>=0<=16777213), ,false,sensor.boiler_starts,sensor.boiler_wwstarts +Cerapur Aero,boiler,167,wwworkm,active time,time (>=0<=16777213),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +Cerapur Aero,boiler,167,nompower,nominal Power,uint (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower +Cerapur Aero,boiler,167,nrgtotal,total energy,ulong (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal +Cerapur Aero,boiler,167,nrgheat,energy heating,ulong (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat +Cerapur Aero,boiler,167,nrgww,energy,ulong (>=0<=10000000),kWh,true,number.boiler_energy,number.boiler_nrgww +Hybrid Heatpump,boiler,168,reset,reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_reset,sensor.boiler_reset +Hybrid Heatpump,boiler,168,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff Hybrid Heatpump,boiler,168,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive Hybrid Heatpump,boiler,168,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive -Hybrid Heatpump,boiler,168,selflowtemp,selected flow temperature,uint (>=0<=254),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp +Hybrid Heatpump,boiler,168,selflowtemp,selected flow temperature,uint (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp Hybrid Heatpump,boiler,168,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod Hybrid Heatpump,boiler,168,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp Hybrid Heatpump,boiler,168,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp @@ -1284,38 +1549,38 @@ Hybrid Heatpump,boiler,168,rettemp,return temperature,ushort (>=0<=3199),C,false Hybrid Heatpump,boiler,168,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp Hybrid Heatpump,boiler,168,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress Hybrid Heatpump,boiler,168,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp +Hybrid Heatpump,boiler,168,headertemp,low loss header,ushort (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp Hybrid Heatpump,boiler,168,exhausttemp,exhaust temperature,ushort (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp Hybrid Heatpump,boiler,168,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas Hybrid Heatpump,boiler,168,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2 Hybrid Heatpump,boiler,168,flamecurr,flame current,ushort (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr -Hybrid Heatpump,boiler,168,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Hybrid Heatpump,boiler,168,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork Hybrid Heatpump,boiler,168,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork Hybrid Heatpump,boiler,168,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat +Hybrid Heatpump,boiler,168,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower +Hybrid Heatpump,boiler,168,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower +Hybrid Heatpump,boiler,168,burnminperiod,burner min period,uint (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod +Hybrid Heatpump,boiler,168,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow +Hybrid Heatpump,boiler,168,heatblock,heating block,ushort (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock +Hybrid Heatpump,boiler,168,boilhyston,hysteresis on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston +Hybrid Heatpump,boiler,168,boilhystoff,hysteresis off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff Hybrid Heatpump,boiler,168,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated -Hybrid Heatpump,boiler,168,heatingtemp,heating temperature,uint (>=0<=254),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Hybrid Heatpump,boiler,168,heatingtemp,heating temperature,uint (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Hybrid Heatpump,boiler,168,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Hybrid Heatpump,boiler,168,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax Hybrid Heatpump,boiler,168,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin 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 -Hybrid Heatpump,boiler,168,pumpdelay,pump delay,uint (>=0<=254),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay -Hybrid Heatpump,boiler,168,burnminperiod,burner min period,uint (>=0<=254),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod -Hybrid Heatpump,boiler,168,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower -Hybrid Heatpump,boiler,168,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower -Hybrid Heatpump,boiler,168,boilhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston -Hybrid Heatpump,boiler,168,boilhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff -Hybrid Heatpump,boiler,168,boil2hyston,hysteresis stage 2 on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston -Hybrid Heatpump,boiler,168,boil2hystoff,hysteresis stage 2 off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff +Hybrid Heatpump,boiler,168,pumpdelay,pump delay,uint (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay Hybrid Heatpump,boiler,168,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp Hybrid Heatpump,boiler,168,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow -Hybrid Heatpump,boiler,168,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow Hybrid Heatpump,boiler,168,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow Hybrid Heatpump,boiler,168,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow -Hybrid Heatpump,boiler,168,burnstarts,burner starts,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts -Hybrid Heatpump,boiler,168,burnworkmin,total burner operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin -Hybrid Heatpump,boiler,168,burn2workmin,burner stage 2 operating time,time (>=0<=65533),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin -Hybrid Heatpump,boiler,168,heatworkmin,total heat operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin -Hybrid Heatpump,boiler,168,heatstarts,burner starts heating,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts -Hybrid Heatpump,boiler,168,ubauptime,total UBA operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime +Hybrid Heatpump,boiler,168,burnstarts,burner starts,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts +Hybrid Heatpump,boiler,168,burnworkmin,total burner operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin +Hybrid Heatpump,boiler,168,burn2workmin,burner stage 2 operating time,time (>=0<=16777213),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin +Hybrid Heatpump,boiler,168,heatworkmin,total heat operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin +Hybrid Heatpump,boiler,168,heatstarts,burner starts heating,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts +Hybrid Heatpump,boiler,168,ubauptime,total UBA operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime Hybrid Heatpump,boiler,168,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode Hybrid Heatpump,boiler,168,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode Hybrid Heatpump,boiler,168,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber @@ -1329,6 +1594,7 @@ Hybrid Heatpump,boiler,168,wwtapactivated,turn on/off,boolean, ,true,switch.boil Hybrid Heatpump,boiler,168,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp Hybrid Heatpump,boiler,168,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp Hybrid Heatpump,boiler,168,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow +Hybrid Heatpump,boiler,168,wwtempecoplus,selected eco+ temperature,uint (>=0<=254),C,true,number.boiler_selected_eco+_temperature,number.boiler_wwtempecoplus Hybrid Heatpump,boiler,168,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff Hybrid Heatpump,boiler,168,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle Hybrid Heatpump,boiler,168,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp @@ -1338,12 +1604,12 @@ Hybrid Heatpump,boiler,168,wwcomfort1,comfort mode,enum [high comfort\|eco], ,tr Hybrid Heatpump,boiler,168,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset Hybrid Heatpump,boiler,168,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization Hybrid Heatpump,boiler,168,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower -Hybrid Heatpump,boiler,168,wwmaxtemp,maximum temperature,uint (>=0<=70),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp +Hybrid Heatpump,boiler,168,wwmaxtemp,maximum temperature,uint (>=0<=80),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp Hybrid Heatpump,boiler,168,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump Hybrid Heatpump,boiler,168,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype Hybrid Heatpump,boiler,168,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston Hybrid Heatpump,boiler,168,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff -Hybrid Heatpump,boiler,168,wwdisinfectiontemp,disinfection temperature,uint (>=0<=254),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp +Hybrid Heatpump,boiler,168,wwdisinfectiontemp,disinfection temperature,uint (>=60<=80),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp Hybrid Heatpump,boiler,168,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode Hybrid Heatpump,boiler,168,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc Hybrid Heatpump,boiler,168,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp @@ -1362,12 +1628,17 @@ Hybrid Heatpump,boiler,168,ww3wayvalve,3-way valve active,boolean, ,false,binary Hybrid Heatpump,boiler,168,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower Hybrid Heatpump,boiler,168,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp Hybrid Heatpump,boiler,168,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp -Hybrid Heatpump,boiler,168,wwstarts,starts,ulong (>=0<=65533), ,false,sensor.boiler_starts,sensor.boiler_wwstarts -Hybrid Heatpump,boiler,168,wwworkm,active time,time (>=0<=65533),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm -Logano GB212,boiler,170,reset,Reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_Reset,sensor.boiler_reset +Hybrid Heatpump,boiler,168,wwstarts,starts,ulong (>=0<=16777213), ,false,sensor.boiler_starts,sensor.boiler_wwstarts +Hybrid Heatpump,boiler,168,wwworkm,active time,time (>=0<=16777213),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +Hybrid Heatpump,boiler,168,nompower,nominal Power,uint (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower +Hybrid Heatpump,boiler,168,nrgtotal,total energy,ulong (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal +Hybrid Heatpump,boiler,168,nrgheat,energy heating,ulong (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat +Hybrid Heatpump,boiler,168,nrgww,energy,ulong (>=0<=10000000),kWh,true,number.boiler_energy,number.boiler_nrgww +Logano GB212,boiler,170,reset,reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_reset,sensor.boiler_reset +Logano GB212,boiler,170,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff Logano GB212,boiler,170,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive Logano GB212,boiler,170,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive -Logano GB212,boiler,170,selflowtemp,selected flow temperature,uint (>=0<=254),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp +Logano GB212,boiler,170,selflowtemp,selected flow temperature,uint (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp Logano GB212,boiler,170,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod Logano GB212,boiler,170,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp Logano GB212,boiler,170,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp @@ -1375,38 +1646,38 @@ Logano GB212,boiler,170,rettemp,return temperature,ushort (>=0<=3199),C,false,se Logano GB212,boiler,170,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp Logano GB212,boiler,170,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress Logano GB212,boiler,170,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp +Logano GB212,boiler,170,headertemp,low loss header,ushort (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp Logano GB212,boiler,170,exhausttemp,exhaust temperature,ushort (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp Logano GB212,boiler,170,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas Logano GB212,boiler,170,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2 Logano GB212,boiler,170,flamecurr,flame current,ushort (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr -Logano GB212,boiler,170,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Logano GB212,boiler,170,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork Logano GB212,boiler,170,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork Logano GB212,boiler,170,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat +Logano GB212,boiler,170,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower +Logano GB212,boiler,170,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower +Logano GB212,boiler,170,burnminperiod,burner min period,uint (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod +Logano GB212,boiler,170,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow +Logano GB212,boiler,170,heatblock,heating block,ushort (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock +Logano GB212,boiler,170,boilhyston,hysteresis on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston +Logano GB212,boiler,170,boilhystoff,hysteresis off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff Logano GB212,boiler,170,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated -Logano GB212,boiler,170,heatingtemp,heating temperature,uint (>=0<=254),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Logano GB212,boiler,170,heatingtemp,heating temperature,uint (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Logano GB212,boiler,170,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Logano GB212,boiler,170,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax Logano GB212,boiler,170,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin 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 -Logano GB212,boiler,170,pumpdelay,pump delay,uint (>=0<=254),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay -Logano GB212,boiler,170,burnminperiod,burner min period,uint (>=0<=254),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod -Logano GB212,boiler,170,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower -Logano GB212,boiler,170,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower -Logano GB212,boiler,170,boilhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston -Logano GB212,boiler,170,boilhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff -Logano GB212,boiler,170,boil2hyston,hysteresis stage 2 on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston -Logano GB212,boiler,170,boil2hystoff,hysteresis stage 2 off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff +Logano GB212,boiler,170,pumpdelay,pump delay,uint (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay Logano GB212,boiler,170,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp Logano GB212,boiler,170,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow -Logano GB212,boiler,170,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow Logano GB212,boiler,170,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow Logano GB212,boiler,170,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow -Logano GB212,boiler,170,burnstarts,burner starts,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts -Logano GB212,boiler,170,burnworkmin,total burner operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin -Logano GB212,boiler,170,burn2workmin,burner stage 2 operating time,time (>=0<=65533),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin -Logano GB212,boiler,170,heatworkmin,total heat operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin -Logano GB212,boiler,170,heatstarts,burner starts heating,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts -Logano GB212,boiler,170,ubauptime,total UBA operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime +Logano GB212,boiler,170,burnstarts,burner starts,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts +Logano GB212,boiler,170,burnworkmin,total burner operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin +Logano GB212,boiler,170,burn2workmin,burner stage 2 operating time,time (>=0<=16777213),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin +Logano GB212,boiler,170,heatworkmin,total heat operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin +Logano GB212,boiler,170,heatstarts,burner starts heating,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts +Logano GB212,boiler,170,ubauptime,total UBA operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime Logano GB212,boiler,170,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode Logano GB212,boiler,170,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode Logano GB212,boiler,170,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber @@ -1420,6 +1691,7 @@ Logano GB212,boiler,170,wwtapactivated,turn on/off,boolean, ,true,switch.boiler_ Logano GB212,boiler,170,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp Logano GB212,boiler,170,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp Logano GB212,boiler,170,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow +Logano GB212,boiler,170,wwtempecoplus,selected eco+ temperature,uint (>=0<=254),C,true,number.boiler_selected_eco+_temperature,number.boiler_wwtempecoplus Logano GB212,boiler,170,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff Logano GB212,boiler,170,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle Logano GB212,boiler,170,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp @@ -1429,12 +1701,12 @@ Logano GB212,boiler,170,wwcomfort1,comfort mode,enum [high comfort\|eco], ,true, Logano GB212,boiler,170,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset Logano GB212,boiler,170,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization Logano GB212,boiler,170,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower -Logano GB212,boiler,170,wwmaxtemp,maximum temperature,uint (>=0<=70),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp +Logano GB212,boiler,170,wwmaxtemp,maximum temperature,uint (>=0<=80),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp Logano GB212,boiler,170,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump Logano GB212,boiler,170,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype Logano GB212,boiler,170,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston Logano GB212,boiler,170,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff -Logano GB212,boiler,170,wwdisinfectiontemp,disinfection temperature,uint (>=0<=254),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp +Logano GB212,boiler,170,wwdisinfectiontemp,disinfection temperature,uint (>=60<=80),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp Logano GB212,boiler,170,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode Logano GB212,boiler,170,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc Logano GB212,boiler,170,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp @@ -1453,12 +1725,17 @@ Logano GB212,boiler,170,ww3wayvalve,3-way valve active,boolean, ,false,binary_se Logano GB212,boiler,170,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower Logano GB212,boiler,170,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp Logano GB212,boiler,170,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp -Logano GB212,boiler,170,wwstarts,starts,ulong (>=0<=65533), ,false,sensor.boiler_starts,sensor.boiler_wwstarts -Logano GB212,boiler,170,wwworkm,active time,time (>=0<=65533),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,reset,Reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_Reset,sensor.boiler_reset +Logano GB212,boiler,170,wwstarts,starts,ulong (>=0<=16777213), ,false,sensor.boiler_starts,sensor.boiler_wwstarts +Logano GB212,boiler,170,wwworkm,active time,time (>=0<=16777213),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +Logano GB212,boiler,170,nompower,nominal Power,uint (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower +Logano GB212,boiler,170,nrgtotal,total energy,ulong (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal +Logano GB212,boiler,170,nrgheat,energy heating,ulong (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat +Logano GB212,boiler,170,nrgww,energy,ulong (>=0<=10000000),kWh,true,number.boiler_energy,number.boiler_nrgww +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,reset,reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_reset,sensor.boiler_reset +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 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 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 -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,selflowtemp,selected flow temperature,uint (>=0<=254),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,selflowtemp,selected flow temperature,uint (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp @@ -1466,38 +1743,24 @@ Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,bo Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,exhausttemp,exhaust temperature,ushort (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2 -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,flamecurr,flame current,ushort (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr -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 -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,headertemp,low loss header,ushort (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp 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 -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,heatingtemp,heating temperature,uint (>=0<=254),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,heatingtemp,heating temperature,uint (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +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 Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin 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 -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,pumpdelay,pump delay,uint (>=0<=254),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,burnminperiod,burner min period,uint (>=0<=254),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,boilhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,boilhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,boil2hyston,hysteresis stage 2 on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,boil2hystoff,hysteresis stage 2 off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,pumpdelay,pump delay,uint (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,burnstarts,burner starts,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,burnworkmin,total burner operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,burn2workmin,burner stage 2 operating time,time (>=0<=65533),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,heatworkmin,total heat operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,heatstarts,burner starts heating,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,ubauptime,total UBA operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,burnstarts,burner starts,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,burnworkmin,total burner operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,burn2workmin,burner stage 2 operating time,time (>=0<=16777213),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,heatworkmin,total heat operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,heatstarts,burner starts heating,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,ubauptime,total UBA operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime 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 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 Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber @@ -1507,38 +1770,41 @@ Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,bo 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 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 Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,emergencytemp,emergency temperature,uint (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,uptimecontrol,total operating time heat,time (>=0<=17476),minutes,false,sensor.boiler_total_operating_time_heat,sensor.boiler_uptimecontrol -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,uptimecompheating,operating time compressor heating,time (>=0<=17476),minutes,false,sensor.boiler_operating_time_compressor_heating,sensor.boiler_uptimecompheating -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,uptimecompcooling,operating time compressor cooling,time (>=0<=17476),minutes,false,sensor.boiler_operating_time_compressor_cooling,sensor.boiler_uptimecompcooling -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,uptimecompww,operating time compressor dhw,time (>=0<=17476),minutes,false,sensor.boiler_operating_time_compressor_dhw,sensor.boiler_uptimecompww -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,uptimecomppool,operating time compressor pool,time (>=0<=17476),minutes,false,sensor.boiler_operating_time_compressor_pool,sensor.boiler_uptimecomppool -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,totalcompstarts,total compressor control starts,ulong (>=0<=65533), ,false,sensor.boiler_total_compressor_control_starts,sensor.boiler_totalcompstarts -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,heatingstarts,heating control starts,ulong (>=0<=65533), ,false,sensor.boiler_heating_control_starts,sensor.boiler_heatingstarts -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,coolingstarts,cooling control starts,ulong (>=0<=65533), ,false,sensor.boiler_cooling_control_starts,sensor.boiler_coolingstarts -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwstarts2,control starts2,ulong (>=0<=65533), ,false,sensor.boiler_control_starts2,sensor.boiler_wwstarts2 -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,poolstarts,pool control starts,ulong (>=0<=65533), ,false,sensor.boiler_pool_control_starts,sensor.boiler_poolstarts -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,nrgconstotal,total energy consumption,ulong (>=0<=65533),kWh,false,sensor.boiler_total_energy_consumption,sensor.boiler_nrgconstotal -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,nrgconscomptotal,total energy consumption compressor,ulong (>=0<=65533),kWh,false,sensor.boiler_total_energy_consumption_compressor,sensor.boiler_nrgconscomptotal -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,nrgconscompheating,energy consumption compressor heating,ulong (>=0<=65533),kWh,false,sensor.boiler_energy_consumption_compressor_heating,sensor.boiler_nrgconscompheating -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,nrgconscompww,energy consumption compressor dhw,ulong (>=0<=65533),kWh,false,sensor.boiler_energy_consumption_compressor_dhw,sensor.boiler_nrgconscompww -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,nrgconscompcooling,energy consumption compressor cooling,ulong (>=0<=65533),kWh,false,sensor.boiler_energy_consumption_compressor_cooling,sensor.boiler_nrgconscompcooling -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,nrgconscomppool,energy consumption compressor pool,ulong (>=0<=65533),kWh,false,sensor.boiler_energy_consumption_compressor_pool,sensor.boiler_nrgconscomppool -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,auxelecheatnrgconstotal,total aux elec. heater energy consumption,ulong (>=0<=65533),kWh,false,sensor.boiler_total_aux_elec._heater_energy_consumption,sensor.boiler_auxelecheatnrgconstotal -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,auxelecheatnrgconsheating,aux elec. heater energy consumption heating,ulong (>=0<=65533),kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_heating,sensor.boiler_auxelecheatnrgconsheating -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,auxelecheatnrgconsww,aux elec. heater energy consumption dhw,ulong (>=0<=65533),kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_dhw,sensor.boiler_auxelecheatnrgconsww -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,auxelecheatnrgconspool,aux elec. heater energy consumption pool,ulong (>=0<=65533),kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_pool,sensor.boiler_auxelecheatnrgconspool -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,nrgsupptotal,total energy supplied,ulong (>=0<=65533),kWh,false,sensor.boiler_total_energy_supplied,sensor.boiler_nrgsupptotal -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,nrgsuppheating,total energy supplied heating,ulong (>=0<=65533),kWh,false,sensor.boiler_total_energy_supplied_heating,sensor.boiler_nrgsuppheating -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,nrgsuppww,total energy warm supplied dhw,ulong (>=0<=65533),kWh,false,sensor.boiler_total_energy_warm_supplied_dhw,sensor.boiler_nrgsuppww -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,nrgsuppcooling,total energy supplied cooling,ulong (>=0<=65533),kWh,false,sensor.boiler_total_energy_supplied_cooling,sensor.boiler_nrgsuppcooling -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,nrgsupppool,total energy supplied pool,ulong (>=0<=65533),kWh,false,sensor.boiler_total_energy_supplied_pool,sensor.boiler_nrgsupppool +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,nrgtotal,total energy,ulong (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,nrgww,energy,ulong (>=0<=167772),kWh,false,sensor.boiler_energy,sensor.boiler_nrgww +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,nrgheat,energy heating,ulong (>=0<=167772),kWh,false,sensor.boiler_energy_heating,sensor.boiler_nrgheat +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,metertotal,meter total,ulong (>=0<=167772),kWh,false,sensor.boiler_meter_total,sensor.boiler_metertotal +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,metercomp,meter compressor,ulong (>=0<=167772),kWh,false,sensor.boiler_meter_compressor,sensor.boiler_metercomp +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,metereheat,meter e-heater,ulong (>=0<=167772),kWh,false,sensor.boiler_meter_e-heater,sensor.boiler_metereheat +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 +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 +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 +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 +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,uptimecompww,operating time compressor,time (>=0<=279620),minutes,false,sensor.boiler_operating_time_compressor,sensor.boiler_uptimecompww +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 +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,totalcompstarts,total compressor control starts,ulong (>=0<=16777213), ,false,sensor.boiler_total_compressor_control_starts,sensor.boiler_totalcompstarts +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,heatingstarts,heating control starts,ulong (>=0<=16777213), ,false,sensor.boiler_heating_control_starts,sensor.boiler_heatingstarts +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,coolingstarts,cooling control starts,ulong (>=0<=16777213), ,false,sensor.boiler_cooling_control_starts,sensor.boiler_coolingstarts +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwstarts2,control starts2,ulong (>=0<=16777213), ,false,sensor.boiler_control_starts2,sensor.boiler_wwstarts2 +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,poolstarts,pool control starts,ulong (>=0<=16777213), ,false,sensor.boiler_pool_control_starts,sensor.boiler_poolstarts +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,nrgconstotal,total energy consumption,ulong (>=0<=16777213),kWh,false,sensor.boiler_total_energy_consumption,sensor.boiler_nrgconstotal +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,nrgconscomptotal,total energy consumption compressor,ulong (>=0<=16777213),kWh,false,sensor.boiler_total_energy_consumption_compressor,sensor.boiler_nrgconscomptotal +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,nrgconscompheating,energy consumption compressor heating,ulong (>=0<=16777213),kWh,false,sensor.boiler_energy_consumption_compressor_heating,sensor.boiler_nrgconscompheating +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,nrgconscompww,energy consumption compressor,ulong (>=0<=16777213),kWh,false,sensor.boiler_energy_consumption_compressor,sensor.boiler_nrgconscompww +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,nrgconscompcooling,energy consumption compressor cooling,ulong (>=0<=16777213),kWh,false,sensor.boiler_energy_consumption_compressor_cooling,sensor.boiler_nrgconscompcooling +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,nrgconscomppool,energy consumption compressor pool,ulong (>=0<=16777213),kWh,false,sensor.boiler_energy_consumption_compressor_pool,sensor.boiler_nrgconscomppool +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,auxelecheatnrgconstotal,total aux elec. heater energy consumption,ulong (>=0<=16777213),kWh,false,sensor.boiler_total_aux_elec._heater_energy_consumption,sensor.boiler_auxelecheatnrgconstotal +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,auxelecheatnrgconsheating,aux elec. heater energy consumption heating,ulong (>=0<=16777213),kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_heating,sensor.boiler_auxelecheatnrgconsheating +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,auxelecheatnrgconsww,aux elec. heater energy consumption,ulong (>=0<=16777213),kWh,false,sensor.boiler_aux_elec._heater_energy_consumption,sensor.boiler_auxelecheatnrgconsww +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,auxelecheatnrgconspool,aux elec. heater energy consumption pool,ulong (>=0<=16777213),kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_pool,sensor.boiler_auxelecheatnrgconspool +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,nrgsupptotal,total energy supplied,ulong (>=0<=16777213),kWh,false,sensor.boiler_total_energy_supplied,sensor.boiler_nrgsupptotal +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,nrgsuppheating,total energy supplied heating,ulong (>=0<=16777213),kWh,false,sensor.boiler_total_energy_supplied_heating,sensor.boiler_nrgsuppheating +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,nrgsuppww,total energy warm supplied,ulong (>=0<=16777213),kWh,false,sensor.boiler_total_energy_warm_supplied,sensor.boiler_nrgsuppww +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,nrgsuppcooling,total energy supplied cooling,ulong (>=0<=16777213),kWh,false,sensor.boiler_total_energy_supplied_cooling,sensor.boiler_nrgsuppcooling +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,nrgsupppool,total energy supplied pool,ulong (>=0<=16777213),kWh,false,sensor.boiler_total_energy_supplied_pool,sensor.boiler_nrgsupppool Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,hppower,compressor power output,uint (>=0<=25),kW,false,sensor.boiler_compressor_power_output,sensor.boiler_hppower 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 Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,hpactivity,compressor activity,enum [none\|heating\|cooling\|hot water\|pool\|unknown\|defrost], ,false,sensor.boiler_compressor_activity,sensor.boiler_hpactivity -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,hpheatingon,hp heating,boolean, ,false,binary_sensor.boiler_hp_heating,binary_sensor.boiler_hpheatingon -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,hpcoolingon,hp cooling,boolean, ,false,binary_sensor.boiler_hp_cooling,binary_sensor.boiler_hpcoolingon -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,hpwwon,hp dhw,boolean, ,false,binary_sensor.boiler_hp_dhw,binary_sensor.boiler_hpwwon -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,hppoolon,hp pool,boolean, ,false,binary_sensor.boiler_hp_pool,binary_sensor.boiler_hppoolon Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,hpbrinepumpspd,brine pump speed,uint (>=0<=100),%,false,sensor.boiler_brine_pump_speed,sensor.boiler_hpbrinepumpspd 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 Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,hpcompspd,compressor speed,uint (>=0<=100),%,false,sensor.boiler_compressor_speed,sensor.boiler_hpcompspd @@ -1557,14 +1823,17 @@ Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,bo Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,hptl2,air inlet temperature (TL2),short (>=-3199<=3199),C,false,sensor.boiler_air_inlet_temperature_(TL2),sensor.boiler_hptl2 Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,hppl1,low pressure side temperature (PL1),short (>=-3199<=3199),C,false,sensor.boiler_low_pressure_side_temperature_(PL1),sensor.boiler_hppl1 Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,hpph1,high pressure side temperature (PH1),short (>=-3199<=3199),C,false,sensor.boiler_high_pressure_side_temperature_(PH1),sensor.boiler_hpph1 +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,hpta4,drain pan temp (TA4),short (>=-3199<=3199),C,false,sensor.boiler_drain_pan_temp_(TA4),sensor.boiler_hpta4 +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,hptw1,reservoir temp (TW1),short (>=-3199<=3199),C,false,sensor.boiler_reservoir_temp_(TW1),sensor.boiler_hptw1 Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,poolsettemp,pool set temperature,uint (>=0<=127),C,true,number.boiler_pool_set_temperature,number.boiler_poolsettemp +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,hp4way,4-way valve (VR4),enum [cooling & defrost\|heating & dhw], ,false,sensor.boiler_4-way_valve_(VR4),sensor.boiler_hp4way 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 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 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 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 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 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 -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,maxheatdhw,heat limit dhw,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW], ,true,select.boiler_heat_limit_dhw,select.boiler_maxheatdhw +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,maxheatdhw,heat limit,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW], ,true,select.boiler_heat_limit,select.boiler_maxheatdhw Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,mandefrost,manual defrost,boolean, ,true,switch.boiler_manual_defrost,switch.boiler_mandefrost 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 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 @@ -1594,6 +1863,7 @@ Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,bo 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 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 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 +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 Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwalternatingop,alternating operation,boolean, ,true,switch.boiler_alternating_operation,switch.boiler_wwalternatingop Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwaltopprioheat,prioritise heating during dhw,uint (>=20<=120),minutes,true,number.boiler_prioritise_heating_during_dhw,number.boiler_wwaltopprioheat Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwaltopprioww,prioritise dhw during heating,uint (>=30<=120),minutes,true,number.boiler_prioritise_dhw_during_heating,number.boiler_wwaltopprioww @@ -1605,6 +1875,7 @@ Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,bo Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwtempecoplus,selected eco+ temperature,uint (>=0<=254),C,true,number.boiler_selected_eco+_temperature,number.boiler_wwtempecoplus Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp @@ -1614,12 +1885,12 @@ Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,bo Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwmaxtemp,maximum temperature,uint (>=0<=70),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwmaxtemp,maximum temperature,uint (>=0<=80),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwdisinfectiontemp,disinfection temperature,uint (>=0<=254),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwdisinfectiontemp,disinfection temperature,uint (>=60<=80),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp @@ -1638,12 +1909,13 @@ Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,bo Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwstarts,starts,ulong (>=0<=65533), ,false,sensor.boiler_starts,sensor.boiler_wwstarts -Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwworkm,active time,time (>=0<=65533),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm -Geo 5xx,boiler,173,reset,Reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_Reset,sensor.boiler_reset +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwstarts,starts,ulong (>=0<=16777213), ,false,sensor.boiler_starts,sensor.boiler_wwstarts +Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i,boiler,172,wwworkm,active time,time (>=0<=16777213),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +Geo 5xx,boiler,173,reset,reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_reset,sensor.boiler_reset +Geo 5xx,boiler,173,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff Geo 5xx,boiler,173,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive Geo 5xx,boiler,173,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive -Geo 5xx,boiler,173,selflowtemp,selected flow temperature,uint (>=0<=254),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp +Geo 5xx,boiler,173,selflowtemp,selected flow temperature,uint (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp Geo 5xx,boiler,173,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod Geo 5xx,boiler,173,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp Geo 5xx,boiler,173,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp @@ -1651,38 +1923,24 @@ Geo 5xx,boiler,173,rettemp,return temperature,ushort (>=0<=3199),C,false,sensor. Geo 5xx,boiler,173,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp Geo 5xx,boiler,173,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress Geo 5xx,boiler,173,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp -Geo 5xx,boiler,173,exhausttemp,exhaust temperature,ushort (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp -Geo 5xx,boiler,173,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas -Geo 5xx,boiler,173,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2 -Geo 5xx,boiler,173,flamecurr,flame current,ushort (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr -Geo 5xx,boiler,173,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump -Geo 5xx,boiler,173,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork -Geo 5xx,boiler,173,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork -Geo 5xx,boiler,173,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat +Geo 5xx,boiler,173,headertemp,low loss header,ushort (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp Geo 5xx,boiler,173,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated -Geo 5xx,boiler,173,heatingtemp,heating temperature,uint (>=0<=254),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Geo 5xx,boiler,173,heatingtemp,heating temperature,uint (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Geo 5xx,boiler,173,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Geo 5xx,boiler,173,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax Geo 5xx,boiler,173,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin 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 -Geo 5xx,boiler,173,pumpdelay,pump delay,uint (>=0<=254),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay -Geo 5xx,boiler,173,burnminperiod,burner min period,uint (>=0<=254),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod -Geo 5xx,boiler,173,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower -Geo 5xx,boiler,173,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower -Geo 5xx,boiler,173,boilhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston -Geo 5xx,boiler,173,boilhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff -Geo 5xx,boiler,173,boil2hyston,hysteresis stage 2 on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston -Geo 5xx,boiler,173,boil2hystoff,hysteresis stage 2 off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff +Geo 5xx,boiler,173,pumpdelay,pump delay,uint (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay Geo 5xx,boiler,173,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp Geo 5xx,boiler,173,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow -Geo 5xx,boiler,173,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow Geo 5xx,boiler,173,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow Geo 5xx,boiler,173,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow -Geo 5xx,boiler,173,burnstarts,burner starts,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts -Geo 5xx,boiler,173,burnworkmin,total burner operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin -Geo 5xx,boiler,173,burn2workmin,burner stage 2 operating time,time (>=0<=65533),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin -Geo 5xx,boiler,173,heatworkmin,total heat operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin -Geo 5xx,boiler,173,heatstarts,burner starts heating,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts -Geo 5xx,boiler,173,ubauptime,total UBA operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime +Geo 5xx,boiler,173,burnstarts,burner starts,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts +Geo 5xx,boiler,173,burnworkmin,total burner operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin +Geo 5xx,boiler,173,burn2workmin,burner stage 2 operating time,time (>=0<=16777213),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin +Geo 5xx,boiler,173,heatworkmin,total heat operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin +Geo 5xx,boiler,173,heatstarts,burner starts heating,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts +Geo 5xx,boiler,173,ubauptime,total UBA operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime Geo 5xx,boiler,173,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode Geo 5xx,boiler,173,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode Geo 5xx,boiler,173,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber @@ -1692,38 +1950,41 @@ Geo 5xx,boiler,173,maintenancetime,time to next maintenance,ushort (>=0<=31999), Geo 5xx,boiler,173,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate Geo 5xx,boiler,173,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops Geo 5xx,boiler,173,emergencytemp,emergency temperature,uint (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp -Geo 5xx,boiler,173,uptimecontrol,total operating time heat,time (>=0<=17476),minutes,false,sensor.boiler_total_operating_time_heat,sensor.boiler_uptimecontrol -Geo 5xx,boiler,173,uptimecompheating,operating time compressor heating,time (>=0<=17476),minutes,false,sensor.boiler_operating_time_compressor_heating,sensor.boiler_uptimecompheating -Geo 5xx,boiler,173,uptimecompcooling,operating time compressor cooling,time (>=0<=17476),minutes,false,sensor.boiler_operating_time_compressor_cooling,sensor.boiler_uptimecompcooling -Geo 5xx,boiler,173,uptimecompww,operating time compressor dhw,time (>=0<=17476),minutes,false,sensor.boiler_operating_time_compressor_dhw,sensor.boiler_uptimecompww -Geo 5xx,boiler,173,uptimecomppool,operating time compressor pool,time (>=0<=17476),minutes,false,sensor.boiler_operating_time_compressor_pool,sensor.boiler_uptimecomppool -Geo 5xx,boiler,173,totalcompstarts,total compressor control starts,ulong (>=0<=65533), ,false,sensor.boiler_total_compressor_control_starts,sensor.boiler_totalcompstarts -Geo 5xx,boiler,173,heatingstarts,heating control starts,ulong (>=0<=65533), ,false,sensor.boiler_heating_control_starts,sensor.boiler_heatingstarts -Geo 5xx,boiler,173,coolingstarts,cooling control starts,ulong (>=0<=65533), ,false,sensor.boiler_cooling_control_starts,sensor.boiler_coolingstarts -Geo 5xx,boiler,173,wwstarts2,control starts2,ulong (>=0<=65533), ,false,sensor.boiler_control_starts2,sensor.boiler_wwstarts2 -Geo 5xx,boiler,173,poolstarts,pool control starts,ulong (>=0<=65533), ,false,sensor.boiler_pool_control_starts,sensor.boiler_poolstarts -Geo 5xx,boiler,173,nrgconstotal,total energy consumption,ulong (>=0<=65533),kWh,false,sensor.boiler_total_energy_consumption,sensor.boiler_nrgconstotal -Geo 5xx,boiler,173,nrgconscomptotal,total energy consumption compressor,ulong (>=0<=65533),kWh,false,sensor.boiler_total_energy_consumption_compressor,sensor.boiler_nrgconscomptotal -Geo 5xx,boiler,173,nrgconscompheating,energy consumption compressor heating,ulong (>=0<=65533),kWh,false,sensor.boiler_energy_consumption_compressor_heating,sensor.boiler_nrgconscompheating -Geo 5xx,boiler,173,nrgconscompww,energy consumption compressor dhw,ulong (>=0<=65533),kWh,false,sensor.boiler_energy_consumption_compressor_dhw,sensor.boiler_nrgconscompww -Geo 5xx,boiler,173,nrgconscompcooling,energy consumption compressor cooling,ulong (>=0<=65533),kWh,false,sensor.boiler_energy_consumption_compressor_cooling,sensor.boiler_nrgconscompcooling -Geo 5xx,boiler,173,nrgconscomppool,energy consumption compressor pool,ulong (>=0<=65533),kWh,false,sensor.boiler_energy_consumption_compressor_pool,sensor.boiler_nrgconscomppool -Geo 5xx,boiler,173,auxelecheatnrgconstotal,total aux elec. heater energy consumption,ulong (>=0<=65533),kWh,false,sensor.boiler_total_aux_elec._heater_energy_consumption,sensor.boiler_auxelecheatnrgconstotal -Geo 5xx,boiler,173,auxelecheatnrgconsheating,aux elec. heater energy consumption heating,ulong (>=0<=65533),kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_heating,sensor.boiler_auxelecheatnrgconsheating -Geo 5xx,boiler,173,auxelecheatnrgconsww,aux elec. heater energy consumption dhw,ulong (>=0<=65533),kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_dhw,sensor.boiler_auxelecheatnrgconsww -Geo 5xx,boiler,173,auxelecheatnrgconspool,aux elec. heater energy consumption pool,ulong (>=0<=65533),kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_pool,sensor.boiler_auxelecheatnrgconspool -Geo 5xx,boiler,173,nrgsupptotal,total energy supplied,ulong (>=0<=65533),kWh,false,sensor.boiler_total_energy_supplied,sensor.boiler_nrgsupptotal -Geo 5xx,boiler,173,nrgsuppheating,total energy supplied heating,ulong (>=0<=65533),kWh,false,sensor.boiler_total_energy_supplied_heating,sensor.boiler_nrgsuppheating -Geo 5xx,boiler,173,nrgsuppww,total energy warm supplied dhw,ulong (>=0<=65533),kWh,false,sensor.boiler_total_energy_warm_supplied_dhw,sensor.boiler_nrgsuppww -Geo 5xx,boiler,173,nrgsuppcooling,total energy supplied cooling,ulong (>=0<=65533),kWh,false,sensor.boiler_total_energy_supplied_cooling,sensor.boiler_nrgsuppcooling -Geo 5xx,boiler,173,nrgsupppool,total energy supplied pool,ulong (>=0<=65533),kWh,false,sensor.boiler_total_energy_supplied_pool,sensor.boiler_nrgsupppool +Geo 5xx,boiler,173,nrgtotal,total energy,ulong (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal +Geo 5xx,boiler,173,nrgww,energy,ulong (>=0<=167772),kWh,false,sensor.boiler_energy,sensor.boiler_nrgww +Geo 5xx,boiler,173,nrgheat,energy heating,ulong (>=0<=167772),kWh,false,sensor.boiler_energy_heating,sensor.boiler_nrgheat +Geo 5xx,boiler,173,metertotal,meter total,ulong (>=0<=167772),kWh,false,sensor.boiler_meter_total,sensor.boiler_metertotal +Geo 5xx,boiler,173,metercomp,meter compressor,ulong (>=0<=167772),kWh,false,sensor.boiler_meter_compressor,sensor.boiler_metercomp +Geo 5xx,boiler,173,metereheat,meter e-heater,ulong (>=0<=167772),kWh,false,sensor.boiler_meter_e-heater,sensor.boiler_metereheat +Geo 5xx,boiler,173,uptimetotal,heatpump total uptime,time (>=0<=279620),minutes,false,sensor.boiler_heatpump_total_uptime,sensor.boiler_uptimetotal +Geo 5xx,boiler,173,uptimecontrol,total operating time heat,time (>=0<=279620),minutes,false,sensor.boiler_total_operating_time_heat,sensor.boiler_uptimecontrol +Geo 5xx,boiler,173,uptimecompheating,operating time compressor heating,time (>=0<=279620),minutes,false,sensor.boiler_operating_time_compressor_heating,sensor.boiler_uptimecompheating +Geo 5xx,boiler,173,uptimecompcooling,operating time compressor cooling,time (>=0<=279620),minutes,false,sensor.boiler_operating_time_compressor_cooling,sensor.boiler_uptimecompcooling +Geo 5xx,boiler,173,uptimecompww,operating time compressor,time (>=0<=279620),minutes,false,sensor.boiler_operating_time_compressor,sensor.boiler_uptimecompww +Geo 5xx,boiler,173,uptimecomppool,operating time compressor pool,time (>=0<=279620),minutes,false,sensor.boiler_operating_time_compressor_pool,sensor.boiler_uptimecomppool +Geo 5xx,boiler,173,totalcompstarts,total compressor control starts,ulong (>=0<=16777213), ,false,sensor.boiler_total_compressor_control_starts,sensor.boiler_totalcompstarts +Geo 5xx,boiler,173,heatingstarts,heating control starts,ulong (>=0<=16777213), ,false,sensor.boiler_heating_control_starts,sensor.boiler_heatingstarts +Geo 5xx,boiler,173,coolingstarts,cooling control starts,ulong (>=0<=16777213), ,false,sensor.boiler_cooling_control_starts,sensor.boiler_coolingstarts +Geo 5xx,boiler,173,wwstarts2,control starts2,ulong (>=0<=16777213), ,false,sensor.boiler_control_starts2,sensor.boiler_wwstarts2 +Geo 5xx,boiler,173,poolstarts,pool control starts,ulong (>=0<=16777213), ,false,sensor.boiler_pool_control_starts,sensor.boiler_poolstarts +Geo 5xx,boiler,173,nrgconstotal,total energy consumption,ulong (>=0<=16777213),kWh,false,sensor.boiler_total_energy_consumption,sensor.boiler_nrgconstotal +Geo 5xx,boiler,173,nrgconscomptotal,total energy consumption compressor,ulong (>=0<=16777213),kWh,false,sensor.boiler_total_energy_consumption_compressor,sensor.boiler_nrgconscomptotal +Geo 5xx,boiler,173,nrgconscompheating,energy consumption compressor heating,ulong (>=0<=16777213),kWh,false,sensor.boiler_energy_consumption_compressor_heating,sensor.boiler_nrgconscompheating +Geo 5xx,boiler,173,nrgconscompww,energy consumption compressor,ulong (>=0<=16777213),kWh,false,sensor.boiler_energy_consumption_compressor,sensor.boiler_nrgconscompww +Geo 5xx,boiler,173,nrgconscompcooling,energy consumption compressor cooling,ulong (>=0<=16777213),kWh,false,sensor.boiler_energy_consumption_compressor_cooling,sensor.boiler_nrgconscompcooling +Geo 5xx,boiler,173,nrgconscomppool,energy consumption compressor pool,ulong (>=0<=16777213),kWh,false,sensor.boiler_energy_consumption_compressor_pool,sensor.boiler_nrgconscomppool +Geo 5xx,boiler,173,auxelecheatnrgconstotal,total aux elec. heater energy consumption,ulong (>=0<=16777213),kWh,false,sensor.boiler_total_aux_elec._heater_energy_consumption,sensor.boiler_auxelecheatnrgconstotal +Geo 5xx,boiler,173,auxelecheatnrgconsheating,aux elec. heater energy consumption heating,ulong (>=0<=16777213),kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_heating,sensor.boiler_auxelecheatnrgconsheating +Geo 5xx,boiler,173,auxelecheatnrgconsww,aux elec. heater energy consumption,ulong (>=0<=16777213),kWh,false,sensor.boiler_aux_elec._heater_energy_consumption,sensor.boiler_auxelecheatnrgconsww +Geo 5xx,boiler,173,auxelecheatnrgconspool,aux elec. heater energy consumption pool,ulong (>=0<=16777213),kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_pool,sensor.boiler_auxelecheatnrgconspool +Geo 5xx,boiler,173,nrgsupptotal,total energy supplied,ulong (>=0<=16777213),kWh,false,sensor.boiler_total_energy_supplied,sensor.boiler_nrgsupptotal +Geo 5xx,boiler,173,nrgsuppheating,total energy supplied heating,ulong (>=0<=16777213),kWh,false,sensor.boiler_total_energy_supplied_heating,sensor.boiler_nrgsuppheating +Geo 5xx,boiler,173,nrgsuppww,total energy warm supplied,ulong (>=0<=16777213),kWh,false,sensor.boiler_total_energy_warm_supplied,sensor.boiler_nrgsuppww +Geo 5xx,boiler,173,nrgsuppcooling,total energy supplied cooling,ulong (>=0<=16777213),kWh,false,sensor.boiler_total_energy_supplied_cooling,sensor.boiler_nrgsuppcooling +Geo 5xx,boiler,173,nrgsupppool,total energy supplied pool,ulong (>=0<=16777213),kWh,false,sensor.boiler_total_energy_supplied_pool,sensor.boiler_nrgsupppool Geo 5xx,boiler,173,hppower,compressor power output,uint (>=0<=25),kW,false,sensor.boiler_compressor_power_output,sensor.boiler_hppower Geo 5xx,boiler,173,hpcompon,hp compressor,boolean, ,false,binary_sensor.boiler_hp_compressor,binary_sensor.boiler_hpcompon Geo 5xx,boiler,173,hpactivity,compressor activity,enum [none\|heating\|cooling\|hot water\|pool\|unknown\|defrost], ,false,sensor.boiler_compressor_activity,sensor.boiler_hpactivity -Geo 5xx,boiler,173,hpheatingon,hp heating,boolean, ,false,binary_sensor.boiler_hp_heating,binary_sensor.boiler_hpheatingon -Geo 5xx,boiler,173,hpcoolingon,hp cooling,boolean, ,false,binary_sensor.boiler_hp_cooling,binary_sensor.boiler_hpcoolingon -Geo 5xx,boiler,173,hpwwon,hp dhw,boolean, ,false,binary_sensor.boiler_hp_dhw,binary_sensor.boiler_hpwwon -Geo 5xx,boiler,173,hppoolon,hp pool,boolean, ,false,binary_sensor.boiler_hp_pool,binary_sensor.boiler_hppoolon Geo 5xx,boiler,173,hpbrinepumpspd,brine pump speed,uint (>=0<=100),%,false,sensor.boiler_brine_pump_speed,sensor.boiler_hpbrinepumpspd Geo 5xx,boiler,173,hpswitchvalve,switch valve,boolean, ,false,binary_sensor.boiler_switch_valve,binary_sensor.boiler_hpswitchvalve Geo 5xx,boiler,173,hpcompspd,compressor speed,uint (>=0<=100),%,false,sensor.boiler_compressor_speed,sensor.boiler_hpcompspd @@ -1742,14 +2003,17 @@ Geo 5xx,boiler,173,hptr7,refrigerant temperature gas side (condenser input) (TR7 Geo 5xx,boiler,173,hptl2,air inlet temperature (TL2),short (>=-3199<=3199),C,false,sensor.boiler_air_inlet_temperature_(TL2),sensor.boiler_hptl2 Geo 5xx,boiler,173,hppl1,low pressure side temperature (PL1),short (>=-3199<=3199),C,false,sensor.boiler_low_pressure_side_temperature_(PL1),sensor.boiler_hppl1 Geo 5xx,boiler,173,hpph1,high pressure side temperature (PH1),short (>=-3199<=3199),C,false,sensor.boiler_high_pressure_side_temperature_(PH1),sensor.boiler_hpph1 +Geo 5xx,boiler,173,hpta4,drain pan temp (TA4),short (>=-3199<=3199),C,false,sensor.boiler_drain_pan_temp_(TA4),sensor.boiler_hpta4 +Geo 5xx,boiler,173,hptw1,reservoir temp (TW1),short (>=-3199<=3199),C,false,sensor.boiler_reservoir_temp_(TW1),sensor.boiler_hptw1 Geo 5xx,boiler,173,poolsettemp,pool set temperature,uint (>=0<=127),C,true,number.boiler_pool_set_temperature,number.boiler_poolsettemp +Geo 5xx,boiler,173,hp4way,4-way valve (VR4),enum [cooling & defrost\|heating & dhw], ,false,sensor.boiler_4-way_valve_(VR4),sensor.boiler_hp4way Geo 5xx,boiler,173,hpin1opt,input 1 options,string, ,true,sensor.boiler_input_1_options,sensor.boiler_hpin1opt Geo 5xx,boiler,173,hpin2opt,input 2 options,string, ,true,sensor.boiler_input_2_options,sensor.boiler_hpin2opt Geo 5xx,boiler,173,hpin3opt,input 3 options,string, ,true,sensor.boiler_input_3_options,sensor.boiler_hpin3opt Geo 5xx,boiler,173,hpin4opt,input 4 options,string, ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt 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 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 -Geo 5xx,boiler,173,maxheatdhw,heat limit dhw,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW], ,true,select.boiler_heat_limit_dhw,select.boiler_maxheatdhw +Geo 5xx,boiler,173,maxheatdhw,heat limit,enum [0 kW\|2 kW\|3 kW\|4 kW\|6 kW\|9 kW], ,true,select.boiler_heat_limit,select.boiler_maxheatdhw Geo 5xx,boiler,173,mandefrost,manual defrost,boolean, ,true,switch.boiler_manual_defrost,switch.boiler_mandefrost Geo 5xx,boiler,173,pvcooling,Cooling only with PV,boolean, ,true,switch.boiler_Cooling_only_with_PV,switch.boiler_pvcooling Geo 5xx,boiler,173,auxheateronly,aux heater only,boolean, ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly @@ -1779,6 +2043,7 @@ Geo 5xx,boiler,173,hp3way,3-way valve,boolean, ,true,switch.boiler_3-way_valve,s Geo 5xx,boiler,173,elheatstep1,el. heater step 1,boolean, ,true,switch.boiler_el._heater_step_1,switch.boiler_elheatstep1 Geo 5xx,boiler,173,elheatstep2,el. heater step 2,boolean, ,true,switch.boiler_el._heater_step_2,switch.boiler_elheatstep2 Geo 5xx,boiler,173,elheatstep3,el. heater step 3,boolean, ,true,switch.boiler_el._heater_step_3,switch.boiler_elheatstep3 +Geo 5xx,boiler,173,hpea0,condensate reservoir heating (EA0),boolean, ,false,binary_sensor.boiler_condensate_reservoir_heating_(EA0),binary_sensor.boiler_hpea0 Geo 5xx,boiler,173,wwalternatingop,alternating operation,boolean, ,true,switch.boiler_alternating_operation,switch.boiler_wwalternatingop Geo 5xx,boiler,173,wwaltopprioheat,prioritise heating during dhw,uint (>=20<=120),minutes,true,number.boiler_prioritise_heating_during_dhw,number.boiler_wwaltopprioheat Geo 5xx,boiler,173,wwaltopprioww,prioritise dhw during heating,uint (>=30<=120),minutes,true,number.boiler_prioritise_dhw_during_heating,number.boiler_wwaltopprioww @@ -1790,6 +2055,7 @@ Geo 5xx,boiler,173,wwtapactivated,turn on/off,boolean, ,true,switch.boiler_turn_ Geo 5xx,boiler,173,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp Geo 5xx,boiler,173,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp Geo 5xx,boiler,173,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow +Geo 5xx,boiler,173,wwtempecoplus,selected eco+ temperature,uint (>=0<=254),C,true,number.boiler_selected_eco+_temperature,number.boiler_wwtempecoplus Geo 5xx,boiler,173,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff Geo 5xx,boiler,173,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle Geo 5xx,boiler,173,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp @@ -1799,12 +2065,12 @@ Geo 5xx,boiler,173,wwcomfort1,comfort mode,enum [high comfort\|eco], ,true,selec Geo 5xx,boiler,173,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset Geo 5xx,boiler,173,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization Geo 5xx,boiler,173,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower -Geo 5xx,boiler,173,wwmaxtemp,maximum temperature,uint (>=0<=70),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp +Geo 5xx,boiler,173,wwmaxtemp,maximum temperature,uint (>=0<=80),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp Geo 5xx,boiler,173,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump Geo 5xx,boiler,173,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype Geo 5xx,boiler,173,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston Geo 5xx,boiler,173,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff -Geo 5xx,boiler,173,wwdisinfectiontemp,disinfection temperature,uint (>=0<=254),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp +Geo 5xx,boiler,173,wwdisinfectiontemp,disinfection temperature,uint (>=60<=80),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp Geo 5xx,boiler,173,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode Geo 5xx,boiler,173,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc Geo 5xx,boiler,173,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp @@ -1823,103 +2089,110 @@ Geo 5xx,boiler,173,ww3wayvalve,3-way valve active,boolean, ,false,binary_sensor. Geo 5xx,boiler,173,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower Geo 5xx,boiler,173,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp Geo 5xx,boiler,173,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp -Geo 5xx,boiler,173,wwstarts,starts,ulong (>=0<=65533), ,false,sensor.boiler_starts,sensor.boiler_wwstarts -Geo 5xx,boiler,173,wwworkm,active time,time (>=0<=65533),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,reset,Reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_Reset,sensor.boiler_reset -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,selflowtemp,selected flow temperature,uint (>=0<=254),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,rettemp,return temperature,ushort (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,exhausttemp,exhaust temperature,ushort (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2 -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,flamecurr,flame current,ushort (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,heatingtemp,heating temperature,uint (>=0<=254),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin -Condens 5000i/Greenstar 8000/GC9800IW,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 -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,pumpdelay,pump delay,uint (>=0<=254),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,burnminperiod,burner min period,uint (>=0<=254),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,boilhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,boilhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,boil2hyston,hysteresis stage 2 on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,boil2hystoff,hysteresis stage 2 off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,burnstarts,burner starts,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,burnworkmin,total burner operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,burn2workmin,burner stage 2 operating time,time (>=0<=65533),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,heatworkmin,total heat operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,heatstarts,burner starts heating,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,ubauptime,total UBA operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,maintenancetime,time to next maintenance,ushort (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,emergencytemp,emergency temperature,uint (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwtapactivated,turn on/off,boolean, ,true,switch.boiler_turn_on/off,switch.boiler_wwtapactivated -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwtype,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_type,sensor.boiler_wwtype -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwcomfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_comfort,select.boiler_wwcomfort -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwcomfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_comfort_mode,select.boiler_wwcomfort1 -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwmaxtemp,maximum temperature,uint (>=0<=70),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwdisinfectiontemp,disinfection temperature,uint (>=0<=254),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwcurtemp2,current extern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_extern_temperature,sensor.boiler_wwcurtemp2 -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwcurflow,current tap water flow,uint (>=0<=25),l/min,false,sensor.boiler_current_tap_water_flow,sensor.boiler_wwcurflow -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwstoragetemp1,storage intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_storage_intern_temperature,sensor.boiler_wwstoragetemp1 -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwstoragetemp2,storage extern temperature,ushort (>=0<=3199),C,false,sensor.boiler_storage_extern_temperature,sensor.boiler_wwstoragetemp2 -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwactivated,activated,boolean, ,true,switch.boiler_activated,switch.boiler_wwactivated -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwonetime,one time charging,boolean, ,true,switch.boiler_one_time_charging,switch.boiler_wwonetime -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwdisinfecting,disinfecting,boolean, ,true,switch.boiler_disinfecting,switch.boiler_wwdisinfecting -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwcharging,charging,boolean, ,false,binary_sensor.boiler_charging,binary_sensor.boiler_wwcharging -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwrecharging,recharging,boolean, ,false,binary_sensor.boiler_recharging,binary_sensor.boiler_wwrecharging -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwtempok,temperature ok,boolean, ,false,binary_sensor.boiler_temperature_ok,binary_sensor.boiler_wwtempok -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwactive,active,boolean, ,false,binary_sensor.boiler_active,binary_sensor.boiler_wwactive -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,ww3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_3-way_valve_active,binary_sensor.boiler_ww3wayvalve -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwstarts,starts,ulong (>=0<=65533), ,false,sensor.boiler_starts,sensor.boiler_wwstarts -Condens 5000i/Greenstar 8000/GC9800IW,boiler,195,wwworkm,active time,time (>=0<=65533),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm -Logamax U122/Cerapur,boiler,203,reset,Reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_Reset,sensor.boiler_reset +Geo 5xx,boiler,173,wwstarts,starts,ulong (>=0<=16777213), ,false,sensor.boiler_starts,sensor.boiler_wwstarts +Geo 5xx,boiler,173,wwworkm,active time,time (>=0<=16777213),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,reset,reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_reset,sensor.boiler_reset +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,selflowtemp,selected flow temperature,uint (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,rettemp,return temperature,ushort (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,headertemp,low loss header,ushort (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,exhausttemp,exhaust temperature,ushort (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas +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 +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,flamecurr,flame current,ushort (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,burnminperiod,burner min period,uint (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,heatblock,heating block,ushort (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,boilhyston,hysteresis on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,boilhystoff,hysteresis off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,heatingtemp,heating temperature,uint (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin +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 +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,pumpdelay,pump delay,uint (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,burnstarts,burner starts,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,burnworkmin,total burner operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,burn2workmin,burner stage 2 operating time,time (>=0<=16777213),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,heatworkmin,total heat operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,heatstarts,burner starts heating,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,ubauptime,total UBA operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage +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 +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,maintenancetime,time to next maintenance,ushort (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,emergencytemp,emergency temperature,uint (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwtapactivated,turn on/off,boolean, ,true,switch.boiler_turn_on/off,switch.boiler_wwtapactivated +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwtempecoplus,selected eco+ temperature,uint (>=0<=254),C,true,number.boiler_selected_eco+_temperature,number.boiler_wwtempecoplus +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwtype,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_type,sensor.boiler_wwtype +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwcomfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_comfort,select.boiler_wwcomfort +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwcomfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_comfort_mode,select.boiler_wwcomfort1 +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwmaxtemp,maximum temperature,uint (>=0<=80),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwdisinfectiontemp,disinfection temperature,uint (>=60<=80),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwcurtemp2,current extern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_extern_temperature,sensor.boiler_wwcurtemp2 +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwcurflow,current tap water flow,uint (>=0<=25),l/min,false,sensor.boiler_current_tap_water_flow,sensor.boiler_wwcurflow +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwstoragetemp1,storage intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_storage_intern_temperature,sensor.boiler_wwstoragetemp1 +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwstoragetemp2,storage extern temperature,ushort (>=0<=3199),C,false,sensor.boiler_storage_extern_temperature,sensor.boiler_wwstoragetemp2 +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwactivated,activated,boolean, ,true,switch.boiler_activated,switch.boiler_wwactivated +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwonetime,one time charging,boolean, ,true,switch.boiler_one_time_charging,switch.boiler_wwonetime +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwdisinfecting,disinfecting,boolean, ,true,switch.boiler_disinfecting,switch.boiler_wwdisinfecting +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwcharging,charging,boolean, ,false,binary_sensor.boiler_charging,binary_sensor.boiler_wwcharging +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwrecharging,recharging,boolean, ,false,binary_sensor.boiler_recharging,binary_sensor.boiler_wwrecharging +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwtempok,temperature ok,boolean, ,false,binary_sensor.boiler_temperature_ok,binary_sensor.boiler_wwtempok +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwactive,active,boolean, ,false,binary_sensor.boiler_active,binary_sensor.boiler_wwactive +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,ww3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_3-way_valve_active,binary_sensor.boiler_ww3wayvalve +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwstarts,starts,ulong (>=0<=16777213), ,false,sensor.boiler_starts,sensor.boiler_wwstarts +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,wwworkm,active time,time (>=0<=16777213),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,nompower,nominal Power,uint (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,nrgtotal,total energy,ulong (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,nrgheat,energy heating,ulong (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat +Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2,boiler,195,nrgww,energy,ulong (>=0<=10000000),kWh,true,number.boiler_energy,number.boiler_nrgww +Logamax U122/Cerapur,boiler,203,reset,reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_reset,sensor.boiler_reset +Logamax U122/Cerapur,boiler,203,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff Logamax U122/Cerapur,boiler,203,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive Logamax U122/Cerapur,boiler,203,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive -Logamax U122/Cerapur,boiler,203,selflowtemp,selected flow temperature,uint (>=0<=254),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp +Logamax U122/Cerapur,boiler,203,selflowtemp,selected flow temperature,uint (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp Logamax U122/Cerapur,boiler,203,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod Logamax U122/Cerapur,boiler,203,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp Logamax U122/Cerapur,boiler,203,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp @@ -1927,38 +2200,38 @@ Logamax U122/Cerapur,boiler,203,rettemp,return temperature,ushort (>=0<=3199),C, Logamax U122/Cerapur,boiler,203,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp Logamax U122/Cerapur,boiler,203,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress Logamax U122/Cerapur,boiler,203,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp +Logamax U122/Cerapur,boiler,203,headertemp,low loss header,ushort (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp Logamax U122/Cerapur,boiler,203,exhausttemp,exhaust temperature,ushort (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp Logamax U122/Cerapur,boiler,203,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas Logamax U122/Cerapur,boiler,203,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2 Logamax U122/Cerapur,boiler,203,flamecurr,flame current,ushort (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr -Logamax U122/Cerapur,boiler,203,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Logamax U122/Cerapur,boiler,203,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork Logamax U122/Cerapur,boiler,203,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork Logamax U122/Cerapur,boiler,203,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat +Logamax U122/Cerapur,boiler,203,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower +Logamax U122/Cerapur,boiler,203,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower +Logamax U122/Cerapur,boiler,203,burnminperiod,burner min period,uint (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod +Logamax U122/Cerapur,boiler,203,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow +Logamax U122/Cerapur,boiler,203,heatblock,heating block,ushort (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock +Logamax U122/Cerapur,boiler,203,boilhyston,hysteresis on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston +Logamax U122/Cerapur,boiler,203,boilhystoff,hysteresis off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff Logamax U122/Cerapur,boiler,203,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated -Logamax U122/Cerapur,boiler,203,heatingtemp,heating temperature,uint (>=0<=254),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Logamax U122/Cerapur,boiler,203,heatingtemp,heating temperature,uint (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Logamax U122/Cerapur,boiler,203,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Logamax U122/Cerapur,boiler,203,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax Logamax U122/Cerapur,boiler,203,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin 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 -Logamax U122/Cerapur,boiler,203,pumpdelay,pump delay,uint (>=0<=254),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay -Logamax U122/Cerapur,boiler,203,burnminperiod,burner min period,uint (>=0<=254),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod -Logamax U122/Cerapur,boiler,203,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower -Logamax U122/Cerapur,boiler,203,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower -Logamax U122/Cerapur,boiler,203,boilhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston -Logamax U122/Cerapur,boiler,203,boilhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff -Logamax U122/Cerapur,boiler,203,boil2hyston,hysteresis stage 2 on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston -Logamax U122/Cerapur,boiler,203,boil2hystoff,hysteresis stage 2 off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff +Logamax U122/Cerapur,boiler,203,pumpdelay,pump delay,uint (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay Logamax U122/Cerapur,boiler,203,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp Logamax U122/Cerapur,boiler,203,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow -Logamax U122/Cerapur,boiler,203,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow Logamax U122/Cerapur,boiler,203,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow Logamax U122/Cerapur,boiler,203,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow -Logamax U122/Cerapur,boiler,203,burnstarts,burner starts,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts -Logamax U122/Cerapur,boiler,203,burnworkmin,total burner operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin -Logamax U122/Cerapur,boiler,203,burn2workmin,burner stage 2 operating time,time (>=0<=65533),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin -Logamax U122/Cerapur,boiler,203,heatworkmin,total heat operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin -Logamax U122/Cerapur,boiler,203,heatstarts,burner starts heating,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts -Logamax U122/Cerapur,boiler,203,ubauptime,total UBA operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime +Logamax U122/Cerapur,boiler,203,burnstarts,burner starts,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts +Logamax U122/Cerapur,boiler,203,burnworkmin,total burner operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin +Logamax U122/Cerapur,boiler,203,burn2workmin,burner stage 2 operating time,time (>=0<=16777213),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin +Logamax U122/Cerapur,boiler,203,heatworkmin,total heat operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin +Logamax U122/Cerapur,boiler,203,heatstarts,burner starts heating,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts +Logamax U122/Cerapur,boiler,203,ubauptime,total UBA operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime Logamax U122/Cerapur,boiler,203,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode Logamax U122/Cerapur,boiler,203,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode Logamax U122/Cerapur,boiler,203,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber @@ -1972,6 +2245,7 @@ Logamax U122/Cerapur,boiler,203,wwtapactivated,turn on/off,boolean, ,true,switch Logamax U122/Cerapur,boiler,203,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp Logamax U122/Cerapur,boiler,203,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp Logamax U122/Cerapur,boiler,203,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow +Logamax U122/Cerapur,boiler,203,wwtempecoplus,selected eco+ temperature,uint (>=0<=254),C,true,number.boiler_selected_eco+_temperature,number.boiler_wwtempecoplus Logamax U122/Cerapur,boiler,203,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff Logamax U122/Cerapur,boiler,203,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle Logamax U122/Cerapur,boiler,203,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp @@ -1981,12 +2255,12 @@ Logamax U122/Cerapur,boiler,203,wwcomfort1,comfort mode,enum [high comfort\|eco] Logamax U122/Cerapur,boiler,203,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset Logamax U122/Cerapur,boiler,203,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization Logamax U122/Cerapur,boiler,203,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower -Logamax U122/Cerapur,boiler,203,wwmaxtemp,maximum temperature,uint (>=0<=70),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp +Logamax U122/Cerapur,boiler,203,wwmaxtemp,maximum temperature,uint (>=0<=80),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp Logamax U122/Cerapur,boiler,203,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump Logamax U122/Cerapur,boiler,203,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype Logamax U122/Cerapur,boiler,203,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston Logamax U122/Cerapur,boiler,203,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff -Logamax U122/Cerapur,boiler,203,wwdisinfectiontemp,disinfection temperature,uint (>=0<=254),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp +Logamax U122/Cerapur,boiler,203,wwdisinfectiontemp,disinfection temperature,uint (>=60<=80),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp Logamax U122/Cerapur,boiler,203,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode Logamax U122/Cerapur,boiler,203,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc Logamax U122/Cerapur,boiler,203,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp @@ -2005,12 +2279,17 @@ Logamax U122/Cerapur,boiler,203,ww3wayvalve,3-way valve active,boolean, ,false,b Logamax U122/Cerapur,boiler,203,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower Logamax U122/Cerapur,boiler,203,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp Logamax U122/Cerapur,boiler,203,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp -Logamax U122/Cerapur,boiler,203,wwstarts,starts,ulong (>=0<=65533), ,false,sensor.boiler_starts,sensor.boiler_wwstarts -Logamax U122/Cerapur,boiler,203,wwworkm,active time,time (>=0<=65533),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm -Ecomline Excellent,boiler,206,reset,Reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_Reset,sensor.boiler_reset +Logamax U122/Cerapur,boiler,203,wwstarts,starts,ulong (>=0<=16777213), ,false,sensor.boiler_starts,sensor.boiler_wwstarts +Logamax U122/Cerapur,boiler,203,wwworkm,active time,time (>=0<=16777213),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +Logamax U122/Cerapur,boiler,203,nompower,nominal Power,uint (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower +Logamax U122/Cerapur,boiler,203,nrgtotal,total energy,ulong (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal +Logamax U122/Cerapur,boiler,203,nrgheat,energy heating,ulong (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat +Logamax U122/Cerapur,boiler,203,nrgww,energy,ulong (>=0<=10000000),kWh,true,number.boiler_energy,number.boiler_nrgww +Ecomline Excellent,boiler,206,reset,reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_reset,sensor.boiler_reset +Ecomline Excellent,boiler,206,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff Ecomline Excellent,boiler,206,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive Ecomline Excellent,boiler,206,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive -Ecomline Excellent,boiler,206,selflowtemp,selected flow temperature,uint (>=0<=254),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp +Ecomline Excellent,boiler,206,selflowtemp,selected flow temperature,uint (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp Ecomline Excellent,boiler,206,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod Ecomline Excellent,boiler,206,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp Ecomline Excellent,boiler,206,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp @@ -2018,38 +2297,38 @@ Ecomline Excellent,boiler,206,rettemp,return temperature,ushort (>=0<=3199),C,fa Ecomline Excellent,boiler,206,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp Ecomline Excellent,boiler,206,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress Ecomline Excellent,boiler,206,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp +Ecomline Excellent,boiler,206,headertemp,low loss header,ushort (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp Ecomline Excellent,boiler,206,exhausttemp,exhaust temperature,ushort (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp Ecomline Excellent,boiler,206,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas Ecomline Excellent,boiler,206,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2 Ecomline Excellent,boiler,206,flamecurr,flame current,ushort (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr -Ecomline Excellent,boiler,206,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Ecomline Excellent,boiler,206,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork Ecomline Excellent,boiler,206,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork Ecomline Excellent,boiler,206,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat +Ecomline Excellent,boiler,206,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower +Ecomline Excellent,boiler,206,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower +Ecomline Excellent,boiler,206,burnminperiod,burner min period,uint (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod +Ecomline Excellent,boiler,206,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow +Ecomline Excellent,boiler,206,heatblock,heating block,ushort (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock +Ecomline Excellent,boiler,206,boilhyston,hysteresis on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston +Ecomline Excellent,boiler,206,boilhystoff,hysteresis off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff Ecomline Excellent,boiler,206,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated -Ecomline Excellent,boiler,206,heatingtemp,heating temperature,uint (>=0<=254),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Ecomline Excellent,boiler,206,heatingtemp,heating temperature,uint (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Ecomline Excellent,boiler,206,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Ecomline Excellent,boiler,206,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax Ecomline Excellent,boiler,206,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin 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 -Ecomline Excellent,boiler,206,pumpdelay,pump delay,uint (>=0<=254),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay -Ecomline Excellent,boiler,206,burnminperiod,burner min period,uint (>=0<=254),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod -Ecomline Excellent,boiler,206,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower -Ecomline Excellent,boiler,206,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower -Ecomline Excellent,boiler,206,boilhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston -Ecomline Excellent,boiler,206,boilhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff -Ecomline Excellent,boiler,206,boil2hyston,hysteresis stage 2 on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston -Ecomline Excellent,boiler,206,boil2hystoff,hysteresis stage 2 off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff +Ecomline Excellent,boiler,206,pumpdelay,pump delay,uint (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay Ecomline Excellent,boiler,206,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp Ecomline Excellent,boiler,206,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow -Ecomline Excellent,boiler,206,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow Ecomline Excellent,boiler,206,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow Ecomline Excellent,boiler,206,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow -Ecomline Excellent,boiler,206,burnstarts,burner starts,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts -Ecomline Excellent,boiler,206,burnworkmin,total burner operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin -Ecomline Excellent,boiler,206,burn2workmin,burner stage 2 operating time,time (>=0<=65533),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin -Ecomline Excellent,boiler,206,heatworkmin,total heat operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin -Ecomline Excellent,boiler,206,heatstarts,burner starts heating,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts -Ecomline Excellent,boiler,206,ubauptime,total UBA operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime +Ecomline Excellent,boiler,206,burnstarts,burner starts,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts +Ecomline Excellent,boiler,206,burnworkmin,total burner operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin +Ecomline Excellent,boiler,206,burn2workmin,burner stage 2 operating time,time (>=0<=16777213),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin +Ecomline Excellent,boiler,206,heatworkmin,total heat operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin +Ecomline Excellent,boiler,206,heatstarts,burner starts heating,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts +Ecomline Excellent,boiler,206,ubauptime,total UBA operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime Ecomline Excellent,boiler,206,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode Ecomline Excellent,boiler,206,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode Ecomline Excellent,boiler,206,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber @@ -2063,6 +2342,7 @@ Ecomline Excellent,boiler,206,wwtapactivated,turn on/off,boolean, ,true,switch.b Ecomline Excellent,boiler,206,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp Ecomline Excellent,boiler,206,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp Ecomline Excellent,boiler,206,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow +Ecomline Excellent,boiler,206,wwtempecoplus,selected eco+ temperature,uint (>=0<=254),C,true,number.boiler_selected_eco+_temperature,number.boiler_wwtempecoplus Ecomline Excellent,boiler,206,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff Ecomline Excellent,boiler,206,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle Ecomline Excellent,boiler,206,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp @@ -2072,12 +2352,12 @@ Ecomline Excellent,boiler,206,wwcomfort1,comfort mode,enum [high comfort\|eco], Ecomline Excellent,boiler,206,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset Ecomline Excellent,boiler,206,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization Ecomline Excellent,boiler,206,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower -Ecomline Excellent,boiler,206,wwmaxtemp,maximum temperature,uint (>=0<=70),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp +Ecomline Excellent,boiler,206,wwmaxtemp,maximum temperature,uint (>=0<=80),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp Ecomline Excellent,boiler,206,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump Ecomline Excellent,boiler,206,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype Ecomline Excellent,boiler,206,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston Ecomline Excellent,boiler,206,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff -Ecomline Excellent,boiler,206,wwdisinfectiontemp,disinfection temperature,uint (>=0<=254),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp +Ecomline Excellent,boiler,206,wwdisinfectiontemp,disinfection temperature,uint (>=60<=80),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp Ecomline Excellent,boiler,206,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode Ecomline Excellent,boiler,206,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc Ecomline Excellent,boiler,206,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp @@ -2096,12 +2376,17 @@ Ecomline Excellent,boiler,206,ww3wayvalve,3-way valve active,boolean, ,false,bin Ecomline Excellent,boiler,206,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower Ecomline Excellent,boiler,206,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp Ecomline Excellent,boiler,206,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp -Ecomline Excellent,boiler,206,wwstarts,starts,ulong (>=0<=65533), ,false,sensor.boiler_starts,sensor.boiler_wwstarts -Ecomline Excellent,boiler,206,wwworkm,active time,time (>=0<=65533),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm -Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,reset,Reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_Reset,sensor.boiler_reset +Ecomline Excellent,boiler,206,wwstarts,starts,ulong (>=0<=16777213), ,false,sensor.boiler_starts,sensor.boiler_wwstarts +Ecomline Excellent,boiler,206,wwworkm,active time,time (>=0<=16777213),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +Ecomline Excellent,boiler,206,nompower,nominal Power,uint (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower +Ecomline Excellent,boiler,206,nrgtotal,total energy,ulong (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal +Ecomline Excellent,boiler,206,nrgheat,energy heating,ulong (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat +Ecomline Excellent,boiler,206,nrgww,energy,ulong (>=0<=10000000),kWh,true,number.boiler_energy,number.boiler_nrgww +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,reset,reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_reset,sensor.boiler_reset +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive -Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,selflowtemp,selected flow temperature,uint (>=0<=254),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,selflowtemp,selected flow temperature,uint (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp @@ -2109,38 +2394,38 @@ Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,rettemp,return temper Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,headertemp,low loss header,ushort (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,exhausttemp,exhaust temperature,ushort (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas 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 Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,flamecurr,flame current,ushort (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr -Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,burnminperiod,burner min period,uint (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,heatblock,heating block,ushort (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,boilhyston,hysteresis on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,boilhystoff,hysteresis off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated -Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,heatingtemp,heating temperature,uint (>=0<=254),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,heatingtemp,heating temperature,uint (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin 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 -Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,pumpdelay,pump delay,uint (>=0<=254),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay -Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,burnminperiod,burner min period,uint (>=0<=254),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod -Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower -Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower -Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,boilhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston -Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,boilhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff -Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,boil2hyston,hysteresis stage 2 on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston -Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,boil2hystoff,hysteresis stage 2 off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,pumpdelay,pump delay,uint (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow -Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow -Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,burnstarts,burner starts,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts -Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,burnworkmin,total burner operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin -Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,burn2workmin,burner stage 2 operating time,time (>=0<=65533),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin -Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,heatworkmin,total heat operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin -Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,heatstarts,burner starts heating,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts -Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,ubauptime,total UBA operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,burnstarts,burner starts,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,burnworkmin,total burner operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,burn2workmin,burner stage 2 operating time,time (>=0<=16777213),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,heatworkmin,total heat operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,heatstarts,burner starts heating,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,ubauptime,total UBA operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber @@ -2154,6 +2439,7 @@ Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwtapactivated,turn o Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwtempecoplus,selected eco+ temperature,uint (>=0<=254),C,true,number.boiler_selected_eco+_temperature,number.boiler_wwtempecoplus Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp @@ -2163,12 +2449,12 @@ Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwcomfort1,comfort mo Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower -Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwmaxtemp,maximum temperature,uint (>=0<=70),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwmaxtemp,maximum temperature,uint (>=0<=80),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff -Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwdisinfectiontemp,disinfection temperature,uint (>=0<=254),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwdisinfectiontemp,disinfection temperature,uint (>=60<=80),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp @@ -2187,12 +2473,17 @@ Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,ww3wayvalve,3-way val Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp -Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwstarts,starts,ulong (>=0<=65533), ,false,sensor.boiler_starts,sensor.boiler_wwstarts -Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwworkm,active time,time (>=0<=65533),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm -Cascade MC400,boiler,210,reset,Reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_Reset,sensor.boiler_reset +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwstarts,starts,ulong (>=0<=16777213), ,false,sensor.boiler_starts,sensor.boiler_wwstarts +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,wwworkm,active time,time (>=0<=16777213),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,nompower,nominal Power,uint (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,nrgtotal,total energy,ulong (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,nrgheat,energy heating,ulong (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat +Logamax Plus/GB192/Condens GC9000/Greenstar ErP,boiler,208,nrgww,energy,ulong (>=0<=10000000),kWh,true,number.boiler_energy,number.boiler_nrgww +Cascade MC400,boiler,210,reset,reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_reset,sensor.boiler_reset +Cascade MC400,boiler,210,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff Cascade MC400,boiler,210,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive Cascade MC400,boiler,210,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive -Cascade MC400,boiler,210,selflowtemp,selected flow temperature,uint (>=0<=254),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp +Cascade MC400,boiler,210,selflowtemp,selected flow temperature,uint (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp Cascade MC400,boiler,210,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod Cascade MC400,boiler,210,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp Cascade MC400,boiler,210,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp @@ -2200,38 +2491,38 @@ Cascade MC400,boiler,210,rettemp,return temperature,ushort (>=0<=3199),C,false,s Cascade MC400,boiler,210,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp Cascade MC400,boiler,210,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress Cascade MC400,boiler,210,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp +Cascade MC400,boiler,210,headertemp,low loss header,ushort (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp Cascade MC400,boiler,210,exhausttemp,exhaust temperature,ushort (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp Cascade MC400,boiler,210,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas Cascade MC400,boiler,210,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2 Cascade MC400,boiler,210,flamecurr,flame current,ushort (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr -Cascade MC400,boiler,210,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Cascade MC400,boiler,210,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork Cascade MC400,boiler,210,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork Cascade MC400,boiler,210,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat +Cascade MC400,boiler,210,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower +Cascade MC400,boiler,210,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower +Cascade MC400,boiler,210,burnminperiod,burner min period,uint (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod +Cascade MC400,boiler,210,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow +Cascade MC400,boiler,210,heatblock,heating block,ushort (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock +Cascade MC400,boiler,210,boilhyston,hysteresis on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston +Cascade MC400,boiler,210,boilhystoff,hysteresis off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff Cascade MC400,boiler,210,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated -Cascade MC400,boiler,210,heatingtemp,heating temperature,uint (>=0<=254),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Cascade MC400,boiler,210,heatingtemp,heating temperature,uint (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Cascade MC400,boiler,210,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Cascade MC400,boiler,210,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax Cascade MC400,boiler,210,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin 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 -Cascade MC400,boiler,210,pumpdelay,pump delay,uint (>=0<=254),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay -Cascade MC400,boiler,210,burnminperiod,burner min period,uint (>=0<=254),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod -Cascade MC400,boiler,210,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower -Cascade MC400,boiler,210,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower -Cascade MC400,boiler,210,boilhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston -Cascade MC400,boiler,210,boilhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff -Cascade MC400,boiler,210,boil2hyston,hysteresis stage 2 on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston -Cascade MC400,boiler,210,boil2hystoff,hysteresis stage 2 off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff +Cascade MC400,boiler,210,pumpdelay,pump delay,uint (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay Cascade MC400,boiler,210,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp Cascade MC400,boiler,210,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow -Cascade MC400,boiler,210,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow Cascade MC400,boiler,210,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow Cascade MC400,boiler,210,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow -Cascade MC400,boiler,210,burnstarts,burner starts,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts -Cascade MC400,boiler,210,burnworkmin,total burner operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin -Cascade MC400,boiler,210,burn2workmin,burner stage 2 operating time,time (>=0<=65533),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin -Cascade MC400,boiler,210,heatworkmin,total heat operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin -Cascade MC400,boiler,210,heatstarts,burner starts heating,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts -Cascade MC400,boiler,210,ubauptime,total UBA operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime +Cascade MC400,boiler,210,burnstarts,burner starts,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts +Cascade MC400,boiler,210,burnworkmin,total burner operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin +Cascade MC400,boiler,210,burn2workmin,burner stage 2 operating time,time (>=0<=16777213),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin +Cascade MC400,boiler,210,heatworkmin,total heat operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin +Cascade MC400,boiler,210,heatstarts,burner starts heating,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts +Cascade MC400,boiler,210,ubauptime,total UBA operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime Cascade MC400,boiler,210,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode Cascade MC400,boiler,210,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode Cascade MC400,boiler,210,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber @@ -2245,6 +2536,7 @@ Cascade MC400,boiler,210,wwtapactivated,turn on/off,boolean, ,true,switch.boiler Cascade MC400,boiler,210,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp Cascade MC400,boiler,210,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp Cascade MC400,boiler,210,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow +Cascade MC400,boiler,210,wwtempecoplus,selected eco+ temperature,uint (>=0<=254),C,true,number.boiler_selected_eco+_temperature,number.boiler_wwtempecoplus Cascade MC400,boiler,210,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff Cascade MC400,boiler,210,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle Cascade MC400,boiler,210,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp @@ -2254,12 +2546,12 @@ Cascade MC400,boiler,210,wwcomfort1,comfort mode,enum [high comfort\|eco], ,true Cascade MC400,boiler,210,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset Cascade MC400,boiler,210,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization Cascade MC400,boiler,210,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower -Cascade MC400,boiler,210,wwmaxtemp,maximum temperature,uint (>=0<=70),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp +Cascade MC400,boiler,210,wwmaxtemp,maximum temperature,uint (>=0<=80),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp Cascade MC400,boiler,210,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump Cascade MC400,boiler,210,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype Cascade MC400,boiler,210,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston Cascade MC400,boiler,210,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff -Cascade MC400,boiler,210,wwdisinfectiontemp,disinfection temperature,uint (>=0<=254),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp +Cascade MC400,boiler,210,wwdisinfectiontemp,disinfection temperature,uint (>=60<=80),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp Cascade MC400,boiler,210,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode Cascade MC400,boiler,210,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc Cascade MC400,boiler,210,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp @@ -2278,12 +2570,17 @@ Cascade MC400,boiler,210,ww3wayvalve,3-way valve active,boolean, ,false,binary_s Cascade MC400,boiler,210,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower Cascade MC400,boiler,210,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp Cascade MC400,boiler,210,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp -Cascade MC400,boiler,210,wwstarts,starts,ulong (>=0<=65533), ,false,sensor.boiler_starts,sensor.boiler_wwstarts -Cascade MC400,boiler,210,wwworkm,active time,time (>=0<=65533),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm -EasyControl Adapter,boiler,211,reset,Reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_Reset,sensor.boiler_reset +Cascade MC400,boiler,210,wwstarts,starts,ulong (>=0<=16777213), ,false,sensor.boiler_starts,sensor.boiler_wwstarts +Cascade MC400,boiler,210,wwworkm,active time,time (>=0<=16777213),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +Cascade MC400,boiler,210,nompower,nominal Power,uint (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower +Cascade MC400,boiler,210,nrgtotal,total energy,ulong (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal +Cascade MC400,boiler,210,nrgheat,energy heating,ulong (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat +Cascade MC400,boiler,210,nrgww,energy,ulong (>=0<=10000000),kWh,true,number.boiler_energy,number.boiler_nrgww +EasyControl Adapter,boiler,211,reset,reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_reset,sensor.boiler_reset +EasyControl Adapter,boiler,211,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff EasyControl Adapter,boiler,211,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive EasyControl Adapter,boiler,211,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive -EasyControl Adapter,boiler,211,selflowtemp,selected flow temperature,uint (>=0<=254),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp +EasyControl Adapter,boiler,211,selflowtemp,selected flow temperature,uint (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp EasyControl Adapter,boiler,211,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod EasyControl Adapter,boiler,211,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp EasyControl Adapter,boiler,211,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp @@ -2291,38 +2588,38 @@ EasyControl Adapter,boiler,211,rettemp,return temperature,ushort (>=0<=3199),C,f EasyControl Adapter,boiler,211,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp EasyControl Adapter,boiler,211,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress EasyControl Adapter,boiler,211,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp +EasyControl Adapter,boiler,211,headertemp,low loss header,ushort (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp EasyControl Adapter,boiler,211,exhausttemp,exhaust temperature,ushort (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp EasyControl Adapter,boiler,211,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas EasyControl Adapter,boiler,211,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2 EasyControl Adapter,boiler,211,flamecurr,flame current,ushort (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr -EasyControl Adapter,boiler,211,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump EasyControl Adapter,boiler,211,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork EasyControl Adapter,boiler,211,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork EasyControl Adapter,boiler,211,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat +EasyControl Adapter,boiler,211,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower +EasyControl Adapter,boiler,211,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower +EasyControl Adapter,boiler,211,burnminperiod,burner min period,uint (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod +EasyControl Adapter,boiler,211,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow +EasyControl Adapter,boiler,211,heatblock,heating block,ushort (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock +EasyControl Adapter,boiler,211,boilhyston,hysteresis on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston +EasyControl Adapter,boiler,211,boilhystoff,hysteresis off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff EasyControl Adapter,boiler,211,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated -EasyControl Adapter,boiler,211,heatingtemp,heating temperature,uint (>=0<=254),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +EasyControl Adapter,boiler,211,heatingtemp,heating temperature,uint (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +EasyControl Adapter,boiler,211,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump EasyControl Adapter,boiler,211,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax EasyControl Adapter,boiler,211,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin 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 -EasyControl Adapter,boiler,211,pumpdelay,pump delay,uint (>=0<=254),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay -EasyControl Adapter,boiler,211,burnminperiod,burner min period,uint (>=0<=254),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod -EasyControl Adapter,boiler,211,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower -EasyControl Adapter,boiler,211,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower -EasyControl Adapter,boiler,211,boilhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston -EasyControl Adapter,boiler,211,boilhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff -EasyControl Adapter,boiler,211,boil2hyston,hysteresis stage 2 on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston -EasyControl Adapter,boiler,211,boil2hystoff,hysteresis stage 2 off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff +EasyControl Adapter,boiler,211,pumpdelay,pump delay,uint (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay EasyControl Adapter,boiler,211,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp EasyControl Adapter,boiler,211,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow -EasyControl Adapter,boiler,211,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow EasyControl Adapter,boiler,211,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow EasyControl Adapter,boiler,211,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow -EasyControl Adapter,boiler,211,burnstarts,burner starts,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts -EasyControl Adapter,boiler,211,burnworkmin,total burner operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin -EasyControl Adapter,boiler,211,burn2workmin,burner stage 2 operating time,time (>=0<=65533),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin -EasyControl Adapter,boiler,211,heatworkmin,total heat operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin -EasyControl Adapter,boiler,211,heatstarts,burner starts heating,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts -EasyControl Adapter,boiler,211,ubauptime,total UBA operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime +EasyControl Adapter,boiler,211,burnstarts,burner starts,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts +EasyControl Adapter,boiler,211,burnworkmin,total burner operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin +EasyControl Adapter,boiler,211,burn2workmin,burner stage 2 operating time,time (>=0<=16777213),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin +EasyControl Adapter,boiler,211,heatworkmin,total heat operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin +EasyControl Adapter,boiler,211,heatstarts,burner starts heating,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts +EasyControl Adapter,boiler,211,ubauptime,total UBA operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime EasyControl Adapter,boiler,211,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode EasyControl Adapter,boiler,211,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode EasyControl Adapter,boiler,211,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber @@ -2336,6 +2633,7 @@ EasyControl Adapter,boiler,211,wwtapactivated,turn on/off,boolean, ,true,switch. EasyControl Adapter,boiler,211,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp EasyControl Adapter,boiler,211,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp EasyControl Adapter,boiler,211,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow +EasyControl Adapter,boiler,211,wwtempecoplus,selected eco+ temperature,uint (>=0<=254),C,true,number.boiler_selected_eco+_temperature,number.boiler_wwtempecoplus EasyControl Adapter,boiler,211,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff EasyControl Adapter,boiler,211,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle EasyControl Adapter,boiler,211,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp @@ -2345,12 +2643,12 @@ EasyControl Adapter,boiler,211,wwcomfort1,comfort mode,enum [high comfort\|eco], EasyControl Adapter,boiler,211,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset EasyControl Adapter,boiler,211,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization EasyControl Adapter,boiler,211,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower -EasyControl Adapter,boiler,211,wwmaxtemp,maximum temperature,uint (>=0<=70),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp +EasyControl Adapter,boiler,211,wwmaxtemp,maximum temperature,uint (>=0<=80),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp EasyControl Adapter,boiler,211,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump EasyControl Adapter,boiler,211,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype EasyControl Adapter,boiler,211,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston EasyControl Adapter,boiler,211,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff -EasyControl Adapter,boiler,211,wwdisinfectiontemp,disinfection temperature,uint (>=0<=254),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp +EasyControl Adapter,boiler,211,wwdisinfectiontemp,disinfection temperature,uint (>=60<=80),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp EasyControl Adapter,boiler,211,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode EasyControl Adapter,boiler,211,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc EasyControl Adapter,boiler,211,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp @@ -2369,107 +2667,103 @@ EasyControl Adapter,boiler,211,ww3wayvalve,3-way valve active,boolean, ,false,bi EasyControl Adapter,boiler,211,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower EasyControl Adapter,boiler,211,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp EasyControl Adapter,boiler,211,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp -EasyControl Adapter,boiler,211,wwstarts,starts,ulong (>=0<=65533), ,false,sensor.boiler_starts,sensor.boiler_wwstarts -EasyControl Adapter,boiler,211,wwworkm,active time,time (>=0<=65533),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm -Greenstar HIU,boiler,219,keepwarmtemp,keep warm temperature,uint (>=0<=254),C,true,number.boiler_keep_warm_temperature,number.boiler_keepwarmtemp -Greenstar HIU,boiler,219,setreturntemp,set temp return,uint (>=0<=254),C,true,number.boiler_set_temp_return,number.boiler_setreturntemp -Greenstar HIU,boiler,219,cwflowrate,cold water flow rate,ushort (>=0<=31999),l/min,false,sensor.boiler_cold_water_flow_rate,sensor.boiler_cwflowrate -Greenstar HIU,boiler,219,netflowtemp,heat network flow temp,ushort (>=0<=31999),C,false,sensor.boiler_heat_network_flow_temp,sensor.boiler_netflowtemp -Greenstar HIU,boiler,219,reset,Reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_Reset,sensor.boiler_reset -Greenstar HIU,boiler,219,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive -Greenstar HIU,boiler,219,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive -Greenstar HIU,boiler,219,selflowtemp,selected flow temperature,uint (>=0<=254),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp -Greenstar HIU,boiler,219,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod -Greenstar HIU,boiler,219,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp -Greenstar HIU,boiler,219,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp -Greenstar HIU,boiler,219,rettemp,return temperature,ushort (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp -Greenstar HIU,boiler,219,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp -Greenstar HIU,boiler,219,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress -Greenstar HIU,boiler,219,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp -Greenstar HIU,boiler,219,exhausttemp,exhaust temperature,ushort (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp -Greenstar HIU,boiler,219,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas -Greenstar HIU,boiler,219,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2 -Greenstar HIU,boiler,219,flamecurr,flame current,ushort (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr -Greenstar HIU,boiler,219,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump -Greenstar HIU,boiler,219,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork -Greenstar HIU,boiler,219,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork -Greenstar HIU,boiler,219,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat -Greenstar HIU,boiler,219,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated -Greenstar HIU,boiler,219,heatingtemp,heating temperature,uint (>=0<=254),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp -Greenstar HIU,boiler,219,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax -Greenstar HIU,boiler,219,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin -Greenstar HIU,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 -Greenstar HIU,boiler,219,pumpdelay,pump delay,uint (>=0<=254),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay -Greenstar HIU,boiler,219,burnminperiod,burner min period,uint (>=0<=254),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod -Greenstar HIU,boiler,219,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower -Greenstar HIU,boiler,219,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower -Greenstar HIU,boiler,219,boilhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston -Greenstar HIU,boiler,219,boilhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff -Greenstar HIU,boiler,219,boil2hyston,hysteresis stage 2 on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston -Greenstar HIU,boiler,219,boil2hystoff,hysteresis stage 2 off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff -Greenstar HIU,boiler,219,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp -Greenstar HIU,boiler,219,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow -Greenstar HIU,boiler,219,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow -Greenstar HIU,boiler,219,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow -Greenstar HIU,boiler,219,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow -Greenstar HIU,boiler,219,burnstarts,burner starts,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts -Greenstar HIU,boiler,219,burnworkmin,total burner operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin -Greenstar HIU,boiler,219,burn2workmin,burner stage 2 operating time,time (>=0<=65533),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin -Greenstar HIU,boiler,219,heatworkmin,total heat operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin -Greenstar HIU,boiler,219,heatstarts,burner starts heating,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts -Greenstar HIU,boiler,219,ubauptime,total UBA operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime -Greenstar HIU,boiler,219,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode -Greenstar HIU,boiler,219,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode -Greenstar HIU,boiler,219,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber -Greenstar HIU,boiler,219,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage -Greenstar HIU,boiler,219,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance -Greenstar HIU,boiler,219,maintenancetime,time to next maintenance,ushort (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime -Greenstar HIU,boiler,219,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate -Greenstar HIU,boiler,219,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops -Greenstar HIU,boiler,219,emergencytemp,emergency temperature,uint (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp -Greenstar HIU,boiler,219,wwtapactivated,turn on/off,boolean, ,true,switch.boiler_turn_on/off,switch.boiler_wwtapactivated -Greenstar HIU,boiler,219,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp -Greenstar HIU,boiler,219,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp -Greenstar HIU,boiler,219,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow -Greenstar HIU,boiler,219,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff -Greenstar HIU,boiler,219,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle -Greenstar HIU,boiler,219,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp -Greenstar HIU,boiler,219,wwtype,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_type,sensor.boiler_wwtype -Greenstar HIU,boiler,219,wwcomfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_comfort,select.boiler_wwcomfort -Greenstar HIU,boiler,219,wwcomfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_comfort_mode,select.boiler_wwcomfort1 -Greenstar HIU,boiler,219,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset -Greenstar HIU,boiler,219,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization -Greenstar HIU,boiler,219,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower -Greenstar HIU,boiler,219,wwmaxtemp,maximum temperature,uint (>=0<=70),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp -Greenstar HIU,boiler,219,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump -Greenstar HIU,boiler,219,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype -Greenstar HIU,boiler,219,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston -Greenstar HIU,boiler,219,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff -Greenstar HIU,boiler,219,wwdisinfectiontemp,disinfection temperature,uint (>=0<=254),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp -Greenstar HIU,boiler,219,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode -Greenstar HIU,boiler,219,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc -Greenstar HIU,boiler,219,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp -Greenstar HIU,boiler,219,wwcurtemp2,current extern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_extern_temperature,sensor.boiler_wwcurtemp2 -Greenstar HIU,boiler,219,wwcurflow,current tap water flow,uint (>=0<=25),l/min,false,sensor.boiler_current_tap_water_flow,sensor.boiler_wwcurflow -Greenstar HIU,boiler,219,wwstoragetemp1,storage intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_storage_intern_temperature,sensor.boiler_wwstoragetemp1 -Greenstar HIU,boiler,219,wwstoragetemp2,storage extern temperature,ushort (>=0<=3199),C,false,sensor.boiler_storage_extern_temperature,sensor.boiler_wwstoragetemp2 -Greenstar HIU,boiler,219,wwactivated,activated,boolean, ,true,switch.boiler_activated,switch.boiler_wwactivated -Greenstar HIU,boiler,219,wwonetime,one time charging,boolean, ,true,switch.boiler_one_time_charging,switch.boiler_wwonetime -Greenstar HIU,boiler,219,wwdisinfecting,disinfecting,boolean, ,true,switch.boiler_disinfecting,switch.boiler_wwdisinfecting -Greenstar HIU,boiler,219,wwcharging,charging,boolean, ,false,binary_sensor.boiler_charging,binary_sensor.boiler_wwcharging -Greenstar HIU,boiler,219,wwrecharging,recharging,boolean, ,false,binary_sensor.boiler_recharging,binary_sensor.boiler_wwrecharging -Greenstar HIU,boiler,219,wwtempok,temperature ok,boolean, ,false,binary_sensor.boiler_temperature_ok,binary_sensor.boiler_wwtempok -Greenstar HIU,boiler,219,wwactive,active,boolean, ,false,binary_sensor.boiler_active,binary_sensor.boiler_wwactive -Greenstar HIU,boiler,219,ww3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_3-way_valve_active,binary_sensor.boiler_ww3wayvalve -Greenstar HIU,boiler,219,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower -Greenstar HIU,boiler,219,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp -Greenstar HIU,boiler,219,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp -Greenstar HIU,boiler,219,wwstarts,starts,ulong (>=0<=65533), ,false,sensor.boiler_starts,sensor.boiler_wwstarts -Greenstar HIU,boiler,219,wwworkm,active time,time (>=0<=65533),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm -Logamax Plus GB122/Condense 2300,boiler,234,reset,Reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_Reset,sensor.boiler_reset +EasyControl Adapter,boiler,211,wwstarts,starts,ulong (>=0<=16777213), ,false,sensor.boiler_starts,sensor.boiler_wwstarts +EasyControl Adapter,boiler,211,wwworkm,active time,time (>=0<=16777213),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +EasyControl Adapter,boiler,211,nompower,nominal Power,uint (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower +EasyControl Adapter,boiler,211,nrgtotal,total energy,ulong (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal +EasyControl Adapter,boiler,211,nrgheat,energy heating,ulong (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat +EasyControl Adapter,boiler,211,nrgww,energy,ulong (>=0<=10000000),kWh,true,number.boiler_energy,number.boiler_nrgww +Greenstar HIU/Logamax kompakt WS170,boiler,219,netflowtemp,heat network flow temp,ushort (>=0<=3199),C,false,sensor.boiler_heat_network_flow_temp,sensor.boiler_netflowtemp +Greenstar HIU/Logamax kompakt WS170,boiler,219,heatvalve,heating valve,uint (>=0<=100),%,false,sensor.boiler_heating_valve,sensor.boiler_heatvalve +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwvalve,valve,uint (>=0<=100),%,false,sensor.boiler_valve,sensor.boiler_wwvalve +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwcurflow,current tap water flow,uint (>=0<=25),l/min,false,sensor.boiler_current_tap_water_flow,sensor.boiler_wwcurflow +Greenstar HIU/Logamax kompakt WS170,boiler,219,keepwarmtemp,keep warm temperature,uint (>=0<=254),C,true,number.boiler_keep_warm_temperature,number.boiler_keepwarmtemp +Greenstar HIU/Logamax kompakt WS170,boiler,219,setreturntemp,set temp return,uint (>=0<=254),C,true,number.boiler_set_temp_return,number.boiler_setreturntemp +Greenstar HIU/Logamax kompakt WS170,boiler,219,heating,heating,boolean, ,false,binary_sensor.boiler_heating,binary_sensor.boiler_heating +Greenstar HIU/Logamax kompakt WS170,boiler,219,reset,reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_reset,sensor.boiler_reset +Greenstar HIU/Logamax kompakt WS170,boiler,219,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff +Greenstar HIU/Logamax kompakt WS170,boiler,219,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive +Greenstar HIU/Logamax kompakt WS170,boiler,219,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive +Greenstar HIU/Logamax kompakt WS170,boiler,219,selflowtemp,selected flow temperature,uint (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp +Greenstar HIU/Logamax kompakt WS170,boiler,219,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod +Greenstar HIU/Logamax kompakt WS170,boiler,219,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp +Greenstar HIU/Logamax kompakt WS170,boiler,219,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp +Greenstar HIU/Logamax kompakt WS170,boiler,219,rettemp,return temperature,ushort (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp +Greenstar HIU/Logamax kompakt WS170,boiler,219,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp +Greenstar HIU/Logamax kompakt WS170,boiler,219,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress +Greenstar HIU/Logamax kompakt WS170,boiler,219,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp +Greenstar HIU/Logamax kompakt WS170,boiler,219,headertemp,low loss header,ushort (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp +Greenstar HIU/Logamax kompakt WS170,boiler,219,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated +Greenstar HIU/Logamax kompakt WS170,boiler,219,heatingtemp,heating temperature,uint (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Greenstar HIU/Logamax kompakt WS170,boiler,219,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump +Greenstar HIU/Logamax kompakt WS170,boiler,219,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax +Greenstar HIU/Logamax kompakt WS170,boiler,219,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin +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 +Greenstar HIU/Logamax kompakt WS170,boiler,219,pumpdelay,pump delay,uint (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay +Greenstar HIU/Logamax kompakt WS170,boiler,219,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp +Greenstar HIU/Logamax kompakt WS170,boiler,219,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow +Greenstar HIU/Logamax kompakt WS170,boiler,219,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow +Greenstar HIU/Logamax kompakt WS170,boiler,219,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow +Greenstar HIU/Logamax kompakt WS170,boiler,219,burnstarts,burner starts,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts +Greenstar HIU/Logamax kompakt WS170,boiler,219,burnworkmin,total burner operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin +Greenstar HIU/Logamax kompakt WS170,boiler,219,burn2workmin,burner stage 2 operating time,time (>=0<=16777213),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin +Greenstar HIU/Logamax kompakt WS170,boiler,219,heatworkmin,total heat operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin +Greenstar HIU/Logamax kompakt WS170,boiler,219,heatstarts,burner starts heating,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts +Greenstar HIU/Logamax kompakt WS170,boiler,219,ubauptime,total UBA operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime +Greenstar HIU/Logamax kompakt WS170,boiler,219,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode +Greenstar HIU/Logamax kompakt WS170,boiler,219,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode +Greenstar HIU/Logamax kompakt WS170,boiler,219,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber +Greenstar HIU/Logamax kompakt WS170,boiler,219,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage +Greenstar HIU/Logamax kompakt WS170,boiler,219,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance +Greenstar HIU/Logamax kompakt WS170,boiler,219,maintenancetime,time to next maintenance,ushort (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime +Greenstar HIU/Logamax kompakt WS170,boiler,219,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate +Greenstar HIU/Logamax kompakt WS170,boiler,219,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops +Greenstar HIU/Logamax kompakt WS170,boiler,219,emergencytemp,emergency temperature,uint (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwtapactivated,turn on/off,boolean, ,true,switch.boiler_turn_on/off,switch.boiler_wwtapactivated +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwtempecoplus,selected eco+ temperature,uint (>=0<=254),C,true,number.boiler_selected_eco+_temperature,number.boiler_wwtempecoplus +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwtype,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_type,sensor.boiler_wwtype +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwcomfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_comfort,select.boiler_wwcomfort +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwcomfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_comfort_mode,select.boiler_wwcomfort1 +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwmaxtemp,maximum temperature,uint (>=0<=80),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwdisinfectiontemp,disinfection temperature,uint (>=60<=80),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwcurtemp2,current extern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_extern_temperature,sensor.boiler_wwcurtemp2 +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwcurflow,current tap water flow,uint (>=0<=25),l/min,false,sensor.boiler_current_tap_water_flow,sensor.boiler_wwcurflow +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwstoragetemp1,storage intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_storage_intern_temperature,sensor.boiler_wwstoragetemp1 +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwstoragetemp2,storage extern temperature,ushort (>=0<=3199),C,false,sensor.boiler_storage_extern_temperature,sensor.boiler_wwstoragetemp2 +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwactivated,activated,boolean, ,true,switch.boiler_activated,switch.boiler_wwactivated +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwonetime,one time charging,boolean, ,true,switch.boiler_one_time_charging,switch.boiler_wwonetime +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwdisinfecting,disinfecting,boolean, ,true,switch.boiler_disinfecting,switch.boiler_wwdisinfecting +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwcharging,charging,boolean, ,false,binary_sensor.boiler_charging,binary_sensor.boiler_wwcharging +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwrecharging,recharging,boolean, ,false,binary_sensor.boiler_recharging,binary_sensor.boiler_wwrecharging +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwtempok,temperature ok,boolean, ,false,binary_sensor.boiler_temperature_ok,binary_sensor.boiler_wwtempok +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwactive,active,boolean, ,false,binary_sensor.boiler_active,binary_sensor.boiler_wwactive +Greenstar HIU/Logamax kompakt WS170,boiler,219,ww3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_3-way_valve_active,binary_sensor.boiler_ww3wayvalve +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwstarts,starts,ulong (>=0<=16777213), ,false,sensor.boiler_starts,sensor.boiler_wwstarts +Greenstar HIU/Logamax kompakt WS170,boiler,219,wwworkm,active time,time (>=0<=16777213),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +Logamax Plus GB122/Condense 2300,boiler,234,reset,reset,cmd [-\|maintenance\|error], ,true,sensor.boiler_reset,sensor.boiler_reset +Logamax Plus GB122/Condense 2300,boiler,234,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff Logamax Plus GB122/Condense 2300,boiler,234,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive Logamax Plus GB122/Condense 2300,boiler,234,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive -Logamax Plus GB122/Condense 2300,boiler,234,selflowtemp,selected flow temperature,uint (>=0<=254),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp +Logamax Plus GB122/Condense 2300,boiler,234,selflowtemp,selected flow temperature,uint (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp Logamax Plus GB122/Condense 2300,boiler,234,heatingpumpmod,heating pump modulation,uint (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod Logamax Plus GB122/Condense 2300,boiler,234,outdoortemp,outside temperature,short (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp Logamax Plus GB122/Condense 2300,boiler,234,curflowtemp,current flow temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp @@ -2477,38 +2771,38 @@ Logamax Plus GB122/Condense 2300,boiler,234,rettemp,return temperature,ushort (> Logamax Plus GB122/Condense 2300,boiler,234,switchtemp,mixing switch temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp Logamax Plus GB122/Condense 2300,boiler,234,syspress,system pressure,uint (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress Logamax Plus GB122/Condense 2300,boiler,234,boiltemp,actual boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp +Logamax Plus GB122/Condense 2300,boiler,234,headertemp,low loss header,ushort (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp Logamax Plus GB122/Condense 2300,boiler,234,exhausttemp,exhaust temperature,ushort (>=0<=3199),C,false,sensor.boiler_exhaust_temperature,sensor.boiler_exhausttemp Logamax Plus GB122/Condense 2300,boiler,234,burngas,gas,boolean, ,false,binary_sensor.boiler_gas,binary_sensor.boiler_burngas Logamax Plus GB122/Condense 2300,boiler,234,burngas2,gas stage 2,boolean, ,false,binary_sensor.boiler_gas_stage_2,binary_sensor.boiler_burngas2 Logamax Plus GB122/Condense 2300,boiler,234,flamecurr,flame current,ushort (>=0<=3199),µA,false,sensor.boiler_flame_current,sensor.boiler_flamecurr -Logamax Plus GB122/Condense 2300,boiler,234,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Logamax Plus GB122/Condense 2300,boiler,234,fanwork,fan,boolean, ,false,binary_sensor.boiler_fan,binary_sensor.boiler_fanwork Logamax Plus GB122/Condense 2300,boiler,234,ignwork,ignition,boolean, ,false,binary_sensor.boiler_ignition,binary_sensor.boiler_ignwork Logamax Plus GB122/Condense 2300,boiler,234,oilpreheat,oil preheating,boolean, ,false,binary_sensor.boiler_oil_preheating,binary_sensor.boiler_oilpreheat +Logamax Plus GB122/Condense 2300,boiler,234,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower +Logamax Plus GB122/Condense 2300,boiler,234,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower +Logamax Plus GB122/Condense 2300,boiler,234,burnminperiod,burner min period,uint (>=0<=120),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod +Logamax Plus GB122/Condense 2300,boiler,234,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow +Logamax Plus GB122/Condense 2300,boiler,234,heatblock,heating block,ushort (>=0<=3199),C,false,sensor.boiler_heating_block,sensor.boiler_heatblock +Logamax Plus GB122/Condense 2300,boiler,234,boilhyston,hysteresis on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston +Logamax Plus GB122/Condense 2300,boiler,234,boilhystoff,hysteresis off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff Logamax Plus GB122/Condense 2300,boiler,234,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated -Logamax Plus GB122/Condense 2300,boiler,234,heatingtemp,heating temperature,uint (>=0<=254),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Logamax Plus GB122/Condense 2300,boiler,234,heatingtemp,heating temperature,uint (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp +Logamax Plus GB122/Condense 2300,boiler,234,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump Logamax Plus GB122/Condense 2300,boiler,234,pumpmodmax,boiler pump max power,uint (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax Logamax Plus GB122/Condense 2300,boiler,234,pumpmodmin,boiler pump min power,uint (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin Logamax Plus GB122/Condense 2300,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 -Logamax Plus GB122/Condense 2300,boiler,234,pumpdelay,pump delay,uint (>=0<=254),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay -Logamax Plus GB122/Condense 2300,boiler,234,burnminperiod,burner min period,uint (>=0<=254),minutes,true,number.boiler_burner_min_period,number.boiler_burnminperiod -Logamax Plus GB122/Condense 2300,boiler,234,burnminpower,burner min power,uint (>=0<=100),%,true,number.boiler_burner_min_power,number.boiler_burnminpower -Logamax Plus GB122/Condense 2300,boiler,234,burnmaxpower,burner max power,uint (>=0<=254),%,true,number.boiler_burner_max_power,number.boiler_burnmaxpower -Logamax Plus GB122/Condense 2300,boiler,234,boilhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_boilhyston -Logamax Plus GB122/Condense 2300,boiler,234,boilhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_boilhystoff -Logamax Plus GB122/Condense 2300,boiler,234,boil2hyston,hysteresis stage 2 on temperature,int (>=-20<=0),C,true,number.boiler_hysteresis_stage_2_on_temperature,number.boiler_boil2hyston -Logamax Plus GB122/Condense 2300,boiler,234,boil2hystoff,hysteresis stage 2 off temperature,int (>=0<=20),C,true,number.boiler_hysteresis_stage_2_off_temperature,number.boiler_boil2hystoff +Logamax Plus GB122/Condense 2300,boiler,234,pumpdelay,pump delay,uint (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay Logamax Plus GB122/Condense 2300,boiler,234,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.boiler_set_flow_temperature,sensor.boiler_setflowtemp Logamax Plus GB122/Condense 2300,boiler,234,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.boiler_burner_set_power,sensor.boiler_setburnpow -Logamax Plus GB122/Condense 2300,boiler,234,absburnpow,burner current power (absolute),uint (>=0<=100),%,false,sensor.boiler_burner_current_power_(absolute),sensor.boiler_absburnpow Logamax Plus GB122/Condense 2300,boiler,234,selburnpow,burner selected max power,uint (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow Logamax Plus GB122/Condense 2300,boiler,234,curburnpow,burner current power,uint (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow -Logamax Plus GB122/Condense 2300,boiler,234,burnstarts,burner starts,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts -Logamax Plus GB122/Condense 2300,boiler,234,burnworkmin,total burner operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin -Logamax Plus GB122/Condense 2300,boiler,234,burn2workmin,burner stage 2 operating time,time (>=0<=65533),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin -Logamax Plus GB122/Condense 2300,boiler,234,heatworkmin,total heat operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin -Logamax Plus GB122/Condense 2300,boiler,234,heatstarts,burner starts heating,ulong (>=0<=65533), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts -Logamax Plus GB122/Condense 2300,boiler,234,ubauptime,total UBA operating time,time (>=0<=65533),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime +Logamax Plus GB122/Condense 2300,boiler,234,burnstarts,burner starts,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts +Logamax Plus GB122/Condense 2300,boiler,234,burnworkmin,total burner operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin +Logamax Plus GB122/Condense 2300,boiler,234,burn2workmin,burner stage 2 operating time,time (>=0<=16777213),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin +Logamax Plus GB122/Condense 2300,boiler,234,heatworkmin,total heat operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin +Logamax Plus GB122/Condense 2300,boiler,234,heatstarts,burner starts heating,ulong (>=0<=16777213), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts +Logamax Plus GB122/Condense 2300,boiler,234,ubauptime,total UBA operating time,time (>=0<=16777213),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime Logamax Plus GB122/Condense 2300,boiler,234,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode Logamax Plus GB122/Condense 2300,boiler,234,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode Logamax Plus GB122/Condense 2300,boiler,234,servicecodenumber,service code number,ushort (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber @@ -2522,6 +2816,7 @@ Logamax Plus GB122/Condense 2300,boiler,234,wwtapactivated,turn on/off,boolean, Logamax Plus GB122/Condense 2300,boiler,234,wwsettemp,set temperature,uint (>=0<=254),C,false,sensor.boiler_set_temperature,sensor.boiler_wwsettemp Logamax Plus GB122/Condense 2300,boiler,234,wwseltemp,selected temperature,uint (>=0<=254),C,true,number.boiler_selected_temperature,number.boiler_wwseltemp Logamax Plus GB122/Condense 2300,boiler,234,wwseltemplow,selected lower temperature,uint (>=0<=254),C,true,number.boiler_selected_lower_temperature,number.boiler_wwseltemplow +Logamax Plus GB122/Condense 2300,boiler,234,wwtempecoplus,selected eco+ temperature,uint (>=0<=254),C,true,number.boiler_selected_eco+_temperature,number.boiler_wwtempecoplus Logamax Plus GB122/Condense 2300,boiler,234,wwseltempoff,selected temperature for off,uint (>=0<=254),C,false,sensor.boiler_selected_temperature_for_off,sensor.boiler_wwseltempoff Logamax Plus GB122/Condense 2300,boiler,234,wwseltempsingle,single charge temperature,uint (>=0<=254),C,true,number.boiler_single_charge_temperature,number.boiler_wwseltempsingle Logamax Plus GB122/Condense 2300,boiler,234,wwsolartemp,solar boiler temperature,ushort (>=0<=3199),C,false,sensor.boiler_solar_boiler_temperature,sensor.boiler_wwsolartemp @@ -2531,12 +2826,12 @@ Logamax Plus GB122/Condense 2300,boiler,234,wwcomfort1,comfort mode,enum [high c Logamax Plus GB122/Condense 2300,boiler,234,wwflowtempoffset,flow temperature offset,uint (>=0<=100),C,true,number.boiler_flow_temperature_offset,number.boiler_wwflowtempoffset Logamax Plus GB122/Condense 2300,boiler,234,wwchargeoptimization,charge optimization,boolean, ,true,switch.boiler_charge_optimization,switch.boiler_wwchargeoptimization Logamax Plus GB122/Condense 2300,boiler,234,wwmaxpower,max power,uint (>=0<=254),%,true,number.boiler_max_power,number.boiler_wwmaxpower -Logamax Plus GB122/Condense 2300,boiler,234,wwmaxtemp,maximum temperature,uint (>=0<=70),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp +Logamax Plus GB122/Condense 2300,boiler,234,wwmaxtemp,maximum temperature,uint (>=0<=80),C,true,number.boiler_maximum_temperature,number.boiler_wwmaxtemp Logamax Plus GB122/Condense 2300,boiler,234,wwcircpump,circulation pump available,boolean, ,true,switch.boiler_circulation_pump_available,switch.boiler_wwcircpump Logamax Plus GB122/Condense 2300,boiler,234,wwchargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_charging_type,sensor.boiler_wwchargetype Logamax Plus GB122/Condense 2300,boiler,234,wwhyston,hysteresis on temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_on_temperature,number.boiler_wwhyston Logamax Plus GB122/Condense 2300,boiler,234,wwhystoff,hysteresis off temperature,int (>=-126<=126),C,true,number.boiler_hysteresis_off_temperature,number.boiler_wwhystoff -Logamax Plus GB122/Condense 2300,boiler,234,wwdisinfectiontemp,disinfection temperature,uint (>=0<=254),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp +Logamax Plus GB122/Condense 2300,boiler,234,wwdisinfectiontemp,disinfection temperature,uint (>=60<=80),C,true,number.boiler_disinfection_temperature,number.boiler_wwdisinfectiontemp Logamax Plus GB122/Condense 2300,boiler,234,wwcircmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_circulation_pump_mode,select.boiler_wwcircmode Logamax Plus GB122/Condense 2300,boiler,234,wwcirc,circulation active,boolean, ,true,switch.boiler_circulation_active,switch.boiler_wwcirc Logamax Plus GB122/Condense 2300,boiler,234,wwcurtemp,current intern temperature,ushort (>=0<=3199),C,false,sensor.boiler_current_intern_temperature,sensor.boiler_wwcurtemp @@ -2555,91 +2850,98 @@ Logamax Plus GB122/Condense 2300,boiler,234,ww3wayvalve,3-way valve active,boole Logamax Plus GB122/Condense 2300,boiler,234,wwsetpumppower,set pump power,uint (>=0<=100),%,false,sensor.boiler_set_pump_power,sensor.boiler_wwsetpumppower Logamax Plus GB122/Condense 2300,boiler,234,wwmixertemp,mixer temperature,ushort (>=0<=3199),C,false,sensor.boiler_mixer_temperature,sensor.boiler_wwmixertemp Logamax Plus GB122/Condense 2300,boiler,234,wwcylmiddletemp,cylinder middle temperature (TS3),ushort (>=0<=3199),C,false,sensor.boiler_cylinder_middle_temperature_(TS3),sensor.boiler_wwcylmiddletemp -Logamax Plus GB122/Condense 2300,boiler,234,wwstarts,starts,ulong (>=0<=65533), ,false,sensor.boiler_starts,sensor.boiler_wwstarts -Logamax Plus GB122/Condense 2300,boiler,234,wwworkm,active time,time (>=0<=65533),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +Logamax Plus GB122/Condense 2300,boiler,234,wwstarts,starts,ulong (>=0<=16777213), ,false,sensor.boiler_starts,sensor.boiler_wwstarts +Logamax Plus GB122/Condense 2300,boiler,234,wwworkm,active time,time (>=0<=16777213),minutes,false,sensor.boiler_active_time,sensor.boiler_wwworkm +Logamax Plus GB122/Condense 2300,boiler,234,nompower,nominal Power,uint (>=0<=254),kW,true,number.boiler_nominal_Power,number.boiler_nompower +Logamax Plus GB122/Condense 2300,boiler,234,nrgtotal,total energy,ulong (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal +Logamax Plus GB122/Condense 2300,boiler,234,nrgheat,energy heating,ulong (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat +Logamax Plus GB122/Condense 2300,boiler,234,nrgww,energy,ulong (>=0<=10000000),kWh,true,number.boiler_energy,number.boiler_nrgww Logamatic TC100/Moduline Easy,thermostat,202,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode Logamatic TC100/Moduline Easy,thermostat,202,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode Logamatic TC100/Moduline Easy,thermostat,202,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime Logamatic TC100/Moduline Easy,thermostat,202,seltemp,selected room temperature,short (>=-319<=319),C,false,sensor.thermostat_hc1_selected_room_temperature,sensor.thermostat_hc1_seltemp Logamatic TC100/Moduline Easy,thermostat,202,currtemp,current room temperature,short (>=-319<=319),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp Logamatic TC100/Moduline Easy,thermostat,202,haclimate,Discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_Discovery_current_room_temperature,sensor.thermostat_hc1_haclimate -EasyControl CT200,thermostat,203,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode -EasyControl CT200,thermostat,203,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode -EasyControl CT200,thermostat,203,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime -EasyControl CT200,thermostat,203,seltemp,selected room temperature,short (>=-319<=319),C,false,sensor.thermostat_hc1_selected_room_temperature,sensor.thermostat_hc1_seltemp -EasyControl CT200,thermostat,203,currtemp,current room temperature,short (>=-319<=319),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp -EasyControl CT200,thermostat,203,haclimate,Discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_Discovery_current_room_temperature,sensor.thermostat_hc1_haclimate -UI800,thermostat,4,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode -UI800,thermostat,4,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode -UI800,thermostat,4,datetime,date/time,string, ,true,sensor.thermostat_date/time,sensor.thermostat_datetime -UI800,thermostat,4,intoffset,internal temperature offset,int (>=-12<=12),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset -UI800,thermostat,4,floordry,floor drying,enum [off\|start\|heat\|hold\|cool\|end], ,false,sensor.thermostat_floor_drying,sensor.thermostat_floordry -UI800,thermostat,4,dampedoutdoortemp,damped outdoor temperature,short (>=-3199<=3199),C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp -UI800,thermostat,4,floordrytemp,floor drying temperature,uint (>=0<=254),C,false,sensor.thermostat_floor_drying_temperature,sensor.thermostat_floordrytemp -UI800,thermostat,4,building,building type,enum [light\|medium\|heavy], ,true,select.thermostat_building_type,select.thermostat_building -UI800,thermostat,4,minexttemp,minimal external temperature,int (>=-126<=126),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp -UI800,thermostat,4,damping,damping outdoor temperature,boolean, ,true,switch.thermostat_damping_outdoor_temperature,switch.thermostat_damping -UI800,thermostat,4,wwsettemp,set temperature,uint (>=0<=254),C,true,number.thermostat_set_temperature,number.thermostat_wwsettemp -UI800,thermostat,4,wwmode,mode,enum [off\|normal\|comfort\|auto\|own prog\|eco], ,true,select.thermostat_mode,select.thermostat_wwmode -UI800,thermostat,4,wwsettemplow,set low temperature,uint (>=0<=254),C,true,number.thermostat_set_low_temperature,number.thermostat_wwsettemplow -UI800,thermostat,4,wwcircmode,circulation pump mode,enum [off\|on\|auto\|own prog], ,true,select.thermostat_circulation_pump_mode,select.thermostat_wwcircmode -UI800,thermostat,4,wwchargeduration,charge duration,uint (>=0<=3810),minutes,true,number.thermostat_charge_duration,number.thermostat_wwchargeduration -UI800,thermostat,4,wwcharge,charge,boolean, ,true,switch.thermostat_charge,switch.thermostat_wwcharge -UI800,thermostat,4,wwextra1,circuit 1 extra,uint (>=0<=254),C,false,sensor.thermostat_circuit_1_extra,sensor.thermostat_wwextra1 -UI800,thermostat,4,wwextra2,circuit 2 extra,uint (>=0<=254),C,false,sensor.thermostat_circuit_2_extra,sensor.thermostat_wwextra2 -UI800,thermostat,4,wwdisinfecting,disinfecting,boolean, ,true,switch.thermostat_disinfecting,switch.thermostat_wwdisinfecting -UI800,thermostat,4,wwdisinfectday,disinfection day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all], ,true,select.thermostat_disinfection_day,select.thermostat_wwdisinfectday -UI800,thermostat,4,wwdisinfecttime,disinfection time,uint (>=0<=1431),minutes,true,number.thermostat_disinfection_time,number.thermostat_wwdisinfecttime -UI800,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 -UI800,thermostat,4,switchovertemp,outside switchover temperature,int (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp -UI800,thermostat,4,energycostratio,energy cost ratio,uint (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio -UI800,thermostat,4,fossilefactor,fossile energy factor,uint (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor -UI800,thermostat,4,electricfactor,electric energy factor,uint (>=0<=5), ,true,number.thermostat_electric_energy_factor,number.thermostat_electricfactor -UI800,thermostat,4,delayboiler,delay boiler support,uint (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler -UI800,thermostat,4,tempdiffboiler,temp diff boiler support,uint (>=1<=99),C,true,number.thermostat_temp_diff_boiler_support,number.thermostat_tempdiffboiler -UI800,thermostat,4,pvenableww,enable raise dhw,boolean, ,true,switch.thermostat_enable_raise_dhw,switch.thermostat_pvenableww -UI800,thermostat,4,pvraiseheat,raise heating with PV,int (>=0<=5),K,true,number.thermostat_raise_heating_with_PV,number.thermostat_pvraiseheat -UI800,thermostat,4,pvlowercool,lower cooling with PV,int (>=-5<=0),K,true,number.thermostat_lower_cooling_with_PV,number.thermostat_pvlowercool -UI800,thermostat,4,seltemp,selected room temperature,short (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp -UI800,thermostat,4,currtemp,current room temperature,short (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp -UI800,thermostat,4,haclimate,Discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_Discovery_current_room_temperature,sensor.thermostat_hc1_haclimate -UI800,thermostat,4,mode,mode,enum [manual\|auto], ,true,select.thermostat_hc1_mode,select.thermostat_hc1_mode -UI800,thermostat,4,modetype,mode type,enum [eco\|comfort], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype -UI800,thermostat,4,ecotemp,eco temperature,uint (>=0<=127),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp -UI800,thermostat,4,manualtemp,manual temperature,uint (>=0<=127),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp -UI800,thermostat,4,comforttemp,comfort temperature,uint (>=0<=127),C,true,number.thermostat_hc1_comfort_temperature,number.thermostat_hc1_comforttemp -UI800,thermostat,4,summertemp,summer temperature,uint (>=10<=30),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp -UI800,thermostat,4,designtemp,design temperature,uint (>=0<=254),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp -UI800,thermostat,4,offsettemp,offset temperature,int (>=-126<=126),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp -UI800,thermostat,4,minflowtemp,min flow temperature,uint (>=0<=254),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp -UI800,thermostat,4,maxflowtemp,max flow temperature,uint (>=0<=254),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp -UI800,thermostat,4,roominfluence,room influence,uint (>=0<=254),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence -UI800,thermostat,4,roominflfactor,room influence factor,uint (>=0<=25), ,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor -UI800,thermostat,4,curroominfl,current room influence,short (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_influence,sensor.thermostat_hc1_curroominfl -UI800,thermostat,4,nofrostmode,nofrost mode,enum [room\|outdoor\|room outdoor], ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode -UI800,thermostat,4,nofrosttemp,nofrost temperature,int (>=-126<=126),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp -UI800,thermostat,4,targetflowtemp,target flow temperature,uint (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp -UI800,thermostat,4,heatingtype,heating type,enum [off\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype -UI800,thermostat,4,summersetmode,set summer mode,enum [summer\|auto\|winter], ,true,select.thermostat_hc1_set_summer_mode,select.thermostat_hc1_summersetmode -UI800,thermostat,4,hpoperatingmode,heatpump operating mode,enum [off\|auto\|heating\|cooling], ,true,select.thermostat_hc1_heatpump_operating_mode,select.thermostat_hc1_hpoperatingmode -UI800,thermostat,4,summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode -UI800,thermostat,4,hpoperatingstate,heatpump operating state,enum [heating\|off\|cooling], ,false,sensor.thermostat_hc1_heatpump_operating_state,sensor.thermostat_hc1_hpoperatingstate -UI800,thermostat,4,controlmode,control mode,enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode -UI800,thermostat,4,program,program,enum [prog 1\|prog 2], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program -UI800,thermostat,4,tempautotemp,temporary set temperature automode,int (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp -UI800,thermostat,4,remoteseltemp,temporary set temperature from remote,int (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_from_remote,number.thermostat_hc1_remoteseltemp -UI800,thermostat,4,fastheatup,fast heatup,uint (>=0<=100),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup -UI800,thermostat,4,switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization -UI800,thermostat,4,reducemode,reduce mode,enum [outdoor\|room\|reduce], ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode -UI800,thermostat,4,noreducetemp,no reduce below temperature,int (>=-126<=126),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp -UI800,thermostat,4,reducetemp,off/reduce switch temperature,int (>=-126<=126),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp -UI800,thermostat,4,wwprio,dhw priority,boolean, ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_wwprio -UI800,thermostat,4,cooling,cooling,boolean, ,true,switch.thermostat_hc1_cooling,switch.thermostat_hc1_cooling -UI800,thermostat,4,coolingon,cooling,boolean, ,false,binary_sensor.thermostat_hc1_cooling,binary_sensor.thermostat_hc1_coolingon -UI800,thermostat,4,hpmode,HP Mode,enum [heating\|cooling\|heating&cooling], ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode -UI800,thermostat,4,dewoffset,dew point offset,uint (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset -UI800,thermostat,4,roomtempdiff,room temp difference,uint (>=0<=254),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff -UI800,thermostat,4,hpminflowtemp,HP min. flow temp.,uint (>=0<=254),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp +EasyControl/CT200,thermostat,203,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode +EasyControl/CT200,thermostat,203,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode +EasyControl/CT200,thermostat,203,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime +EasyControl/CT200,thermostat,203,seltemp,selected room temperature,short (>=-319<=319),C,false,sensor.thermostat_hc1_selected_room_temperature,sensor.thermostat_hc1_seltemp +EasyControl/CT200,thermostat,203,currtemp,current room temperature,short (>=-319<=319),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp +EasyControl/CT200,thermostat,203,haclimate,Discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_Discovery_current_room_temperature,sensor.thermostat_hc1_haclimate +UI800/BC400,thermostat,4,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode +UI800/BC400,thermostat,4,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode +UI800/BC400,thermostat,4,datetime,date/time,string, ,true,sensor.thermostat_date/time,sensor.thermostat_datetime +UI800/BC400,thermostat,4,intoffset,internal temperature offset,int (>=-12<=12),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset +UI800/BC400,thermostat,4,floordry,floor drying,enum [off\|start\|heat\|hold\|cool\|end], ,false,sensor.thermostat_floor_drying,sensor.thermostat_floordry +UI800/BC400,thermostat,4,dampedoutdoortemp,damped outdoor temperature,short (>=-3199<=3199),C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp +UI800/BC400,thermostat,4,floordrytemp,floor drying temperature,uint (>=0<=254),C,false,sensor.thermostat_floor_drying_temperature,sensor.thermostat_floordrytemp +UI800/BC400,thermostat,4,building,building type,enum [light\|medium\|heavy], ,true,select.thermostat_building_type,select.thermostat_building +UI800/BC400,thermostat,4,minexttemp,minimal external temperature,int (>=-126<=126),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp +UI800/BC400,thermostat,4,damping,damping outdoor temperature,boolean, ,true,switch.thermostat_damping_outdoor_temperature,switch.thermostat_damping +UI800/BC400,thermostat,4,wwsettemp,set temperature,uint (>=0<=254),C,true,number.thermostat_set_temperature,number.thermostat_wwsettemp +UI800/BC400,thermostat,4,wwmode,mode,enum [off\|normal\|comfort\|auto\|own prog\|eco], ,true,select.thermostat_mode,select.thermostat_wwmode +UI800/BC400,thermostat,4,wwsettemplow,set low temperature,uint (>=0<=254),C,true,number.thermostat_set_low_temperature,number.thermostat_wwsettemplow +UI800/BC400,thermostat,4,wwcircmode,circulation pump mode,enum [off\|on\|auto\|own prog], ,true,select.thermostat_circulation_pump_mode,select.thermostat_wwcircmode +UI800/BC400,thermostat,4,wwchargeduration,charge duration,uint (>=0<=3810),minutes,true,number.thermostat_charge_duration,number.thermostat_wwchargeduration +UI800/BC400,thermostat,4,wwcharge,charge,boolean, ,true,switch.thermostat_charge,switch.thermostat_wwcharge +UI800/BC400,thermostat,4,wwextra1,circuit 1 extra,uint (>=0<=254),C,false,sensor.thermostat_circuit_1_extra,sensor.thermostat_wwextra1 +UI800/BC400,thermostat,4,wwextra2,circuit 2 extra,uint (>=0<=254),C,false,sensor.thermostat_circuit_2_extra,sensor.thermostat_wwextra2 +UI800/BC400,thermostat,4,wwdisinfecting,disinfecting,boolean, ,true,switch.thermostat_disinfecting,switch.thermostat_wwdisinfecting +UI800/BC400,thermostat,4,wwdisinfectday,disinfection day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all], ,true,select.thermostat_disinfection_day,select.thermostat_wwdisinfectday +UI800/BC400,thermostat,4,wwdisinfecttime,disinfection time,uint (>=0<=1431),minutes,true,number.thermostat_disinfection_time,number.thermostat_wwdisinfecttime +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 +UI800/BC400,thermostat,4,switchovertemp,outside switchover temperature,int (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp +UI800/BC400,thermostat,4,energycostratio,energy cost ratio,uint (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio +UI800/BC400,thermostat,4,fossilefactor,fossile energy factor,uint (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor +UI800/BC400,thermostat,4,electricfactor,electric energy factor,uint (>=0<=5), ,true,number.thermostat_electric_energy_factor,number.thermostat_electricfactor +UI800/BC400,thermostat,4,delayboiler,delay boiler support,uint (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler +UI800/BC400,thermostat,4,tempdiffboiler,temp diff boiler support,uint (>=1<=99),C,true,number.thermostat_temp_diff_boiler_support,number.thermostat_tempdiffboiler +UI800/BC400,thermostat,4,pvenableww,enable raise dhw,boolean, ,true,switch.thermostat_enable_raise_dhw,switch.thermostat_pvenableww +UI800/BC400,thermostat,4,pvraiseheat,raise heating with PV,int (>=0<=5),K,true,number.thermostat_raise_heating_with_PV,number.thermostat_pvraiseheat +UI800/BC400,thermostat,4,pvlowercool,lower cooling with PV,int (>=-5<=0),K,true,number.thermostat_lower_cooling_with_PV,number.thermostat_pvlowercool +UI800/BC400,thermostat,4,seltemp,selected room temperature,short (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp +UI800/BC400,thermostat,4,currtemp,current room temperature,short (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp +UI800/BC400,thermostat,4,haclimate,Discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_Discovery_current_room_temperature,sensor.thermostat_hc1_haclimate +UI800/BC400,thermostat,4,mode,mode,enum [off\|manual\|auto], ,true,select.thermostat_hc1_mode,select.thermostat_hc1_mode +UI800/BC400,thermostat,4,modetype,mode type,enum [eco\|comfort], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype +UI800/BC400,thermostat,4,ecotemp,eco temperature,uint (>=0<=127),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp +UI800/BC400,thermostat,4,manualtemp,manual temperature,uint (>=0<=127),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp +UI800/BC400,thermostat,4,comforttemp,comfort temperature,uint (>=0<=127),C,true,number.thermostat_hc1_comfort_temperature,number.thermostat_hc1_comforttemp +UI800/BC400,thermostat,4,summertemp,summer temperature,uint (>=10<=30),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp +UI800/BC400,thermostat,4,designtemp,design temperature,uint (>=0<=254),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp +UI800/BC400,thermostat,4,offsettemp,offset temperature,int (>=-126<=126),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp +UI800/BC400,thermostat,4,minflowtemp,min flow temperature,uint (>=0<=254),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp +UI800/BC400,thermostat,4,maxflowtemp,max flow temperature,uint (>=0<=254),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp +UI800/BC400,thermostat,4,roominfluence,room influence,uint (>=0<=254),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence +UI800/BC400,thermostat,4,roominflfactor,room influence factor,uint (>=0<=25), ,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor +UI800/BC400,thermostat,4,curroominfl,current room influence,short (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_influence,sensor.thermostat_hc1_curroominfl +UI800/BC400,thermostat,4,nofrostmode,nofrost mode,enum [room\|outdoor\|room outdoor], ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode +UI800/BC400,thermostat,4,nofrosttemp,nofrost temperature,int (>=-126<=126),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp +UI800/BC400,thermostat,4,targetflowtemp,target flow temperature,uint (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp +UI800/BC400,thermostat,4,heatingtype,heating type,enum [off\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype +UI800/BC400,thermostat,4,summersetmode,set summer mode,enum [summer\|auto\|winter], ,true,select.thermostat_hc1_set_summer_mode,select.thermostat_hc1_summersetmode +UI800/BC400,thermostat,4,hpoperatingmode,heatpump operating mode,enum [off\|auto\|heating\|cooling], ,true,select.thermostat_hc1_heatpump_operating_mode,select.thermostat_hc1_hpoperatingmode +UI800/BC400,thermostat,4,summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode +UI800/BC400,thermostat,4,hpoperatingstate,heatpump operating state,enum [heating\|off\|cooling], ,false,sensor.thermostat_hc1_heatpump_operating_state,sensor.thermostat_hc1_hpoperatingstate +UI800/BC400,thermostat,4,controlmode,control mode,enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode +UI800/BC400,thermostat,4,program,program,enum [prog 1\|prog 2], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program +UI800/BC400,thermostat,4,tempautotemp,temporary set temperature automode,int (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp +UI800/BC400,thermostat,4,remoteseltemp,temporary set temperature from remote,int (>=-63<=63),C,false,sensor.thermostat_hc1_temporary_set_temperature_from_remote,sensor.thermostat_hc1_remoteseltemp +UI800/BC400,thermostat,4,fastheatup,fast heatup,uint (>=0<=100),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup +UI800/BC400,thermostat,4,switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization +UI800/BC400,thermostat,4,reducemode,reduce mode,enum [outdoor\|room\|reduce], ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode +UI800/BC400,thermostat,4,noreducetemp,no reduce below temperature,int (>=-126<=126),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp +UI800/BC400,thermostat,4,reducetemp,off/reduce switch temperature,int (>=-126<=126),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp +UI800/BC400,thermostat,4,wwprio,dhw priority,boolean, ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_wwprio +UI800/BC400,thermostat,4,cooling,cooling,boolean, ,true,switch.thermostat_hc1_cooling,switch.thermostat_hc1_cooling +UI800/BC400,thermostat,4,coolingon,cooling,boolean, ,false,binary_sensor.thermostat_hc1_cooling,binary_sensor.thermostat_hc1_coolingon +UI800/BC400,thermostat,4,hpmode,HP Mode,enum [heating\|cooling\|heating&cooling], ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode +UI800/BC400,thermostat,4,dewoffset,dew point offset,uint (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset +UI800/BC400,thermostat,4,roomtempdiff,room temp difference,uint (>=0<=254),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff +UI800/BC400,thermostat,4,hpminflowtemp,HP min. flow temp.,uint (>=0<=254),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp +UI800/BC400,thermostat,4,control,control device,enum [RC310\|RC200\|RC100\|RC100H\|TC100], ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control +UI800/BC400,thermostat,4,remotetemp,room temperature from remote,short (>=-1<=101),C,true,number.thermostat_hc1_room_temperature_from_remote,number.thermostat_hc1_remotetemp +UI800/BC400,thermostat,4,remotehum,room humidity from remote,uint (>=-1<=101),%,true,number.thermostat_hc1_room_humidity_from_remote,number.thermostat_hc1_remotehum RC10,thermostat,65,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode RC10,thermostat,65,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode RC10,thermostat,65,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime @@ -2719,7 +3021,7 @@ RC30,thermostat,67,noreducetemp,no reduce below temperature,int (>=-31<=10),C,tr RC30,thermostat,67,reducetemp,off/reduce switch temperature,int (>=-20<=10),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp RC30,thermostat,67,vacreducetemp,vacations off/reduce switch temperature,int (>=-20<=10),C,true,number.thermostat_hc1_vacations_off/reduce_switch_temperature,number.thermostat_hc1_vacreducetemp RC30,thermostat,67,vacreducemode,vacations reduce mode,enum [nofrost\|reduce\|room\|outdoor], ,true,select.thermostat_hc1_vacations_reduce_mode,select.thermostat_hc1_vacreducemode -RC30,thermostat,67,remotetemp,room temperature from remote,short (>=-3199<=3199),C,true,number.thermostat_hc1_room_temperature_from_remote,number.thermostat_hc1_remotetemp +RC30,thermostat,67,remotetemp,room temperature from remote,short (>=-1<=101),C,true,number.thermostat_hc1_room_temperature_from_remote,number.thermostat_hc1_remotetemp RC30,thermostat,67,wwprio,dhw priority,boolean, ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_wwprio RC30,thermostat,67,switchtime1,own1 program switchtime,string, ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1 RC30,thermostat,67,switchtime2,own2 program switchtime,string, ,true,sensor.thermostat_hc1_own2_program_switchtime,sensor.thermostat_hc1_switchtime2 @@ -2861,7 +3163,7 @@ RC35,thermostat,86,noreducetemp,no reduce below temperature,int (>=-31<=10),C,tr RC35,thermostat,86,reducetemp,off/reduce switch temperature,int (>=-20<=10),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp RC35,thermostat,86,vacreducetemp,vacations off/reduce switch temperature,int (>=-20<=10),C,true,number.thermostat_hc1_vacations_off/reduce_switch_temperature,number.thermostat_hc1_vacreducetemp RC35,thermostat,86,vacreducemode,vacations reduce mode,enum [nofrost\|reduce\|room\|outdoor], ,true,select.thermostat_hc1_vacations_reduce_mode,select.thermostat_hc1_vacreducemode -RC35,thermostat,86,remotetemp,room temperature from remote,short (>=-3199<=3199),C,true,number.thermostat_hc1_room_temperature_from_remote,number.thermostat_hc1_remotetemp +RC35,thermostat,86,remotetemp,room temperature from remote,short (>=-1<=101),C,true,number.thermostat_hc1_room_temperature_from_remote,number.thermostat_hc1_remotetemp RC35,thermostat,86,wwprio,dhw priority,boolean, ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_wwprio RC35,thermostat,86,switchtime1,own1 program switchtime,string, ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1 RC35,thermostat,86,switchtime2,own2 program switchtime,string, ,true,sensor.thermostat_hc1_own2_program_switchtime,sensor.thermostat_hc1_switchtime2 @@ -2956,7 +3258,7 @@ RC200/CW100,thermostat,157,pvlowercool,lower cooling with PV,int (>=-5<=0),K,tru RC200/CW100,thermostat,157,seltemp,selected room temperature,short (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp RC200/CW100,thermostat,157,currtemp,current room temperature,short (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp RC200/CW100,thermostat,157,haclimate,Discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_Discovery_current_room_temperature,sensor.thermostat_hc1_haclimate -RC200/CW100,thermostat,157,mode,mode,enum [manual\|auto], ,true,select.thermostat_hc1_mode,select.thermostat_hc1_mode +RC200/CW100,thermostat,157,mode,mode,enum [off\|manual\|auto], ,true,select.thermostat_hc1_mode,select.thermostat_hc1_mode RC200/CW100,thermostat,157,modetype,mode type,enum [eco\|comfort], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype RC200/CW100,thermostat,157,ecotemp,eco temperature,uint (>=0<=127),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp RC200/CW100,thermostat,157,manualtemp,manual temperature,uint (>=0<=127),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp @@ -2980,7 +3282,7 @@ RC200/CW100,thermostat,157,hpoperatingstate,heatpump operating state,enum [heati RC200/CW100,thermostat,157,controlmode,control mode,enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode RC200/CW100,thermostat,157,program,program,enum [prog 1\|prog 2], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program RC200/CW100,thermostat,157,tempautotemp,temporary set temperature automode,int (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp -RC200/CW100,thermostat,157,remoteseltemp,temporary set temperature from remote,int (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_from_remote,number.thermostat_hc1_remoteseltemp +RC200/CW100,thermostat,157,remoteseltemp,temporary set temperature from remote,int (>=-63<=63),C,false,sensor.thermostat_hc1_temporary_set_temperature_from_remote,sensor.thermostat_hc1_remoteseltemp RC200/CW100,thermostat,157,fastheatup,fast heatup,uint (>=0<=100),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup RC200/CW100,thermostat,157,switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization RC200/CW100,thermostat,157,reducemode,reduce mode,enum [outdoor\|room\|reduce], ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode @@ -2993,6 +3295,9 @@ RC200/CW100,thermostat,157,hpmode,HP Mode,enum [heating\|cooling\|heating&coolin RC200/CW100,thermostat,157,dewoffset,dew point offset,uint (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset RC200/CW100,thermostat,157,roomtempdiff,room temp difference,uint (>=0<=254),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff RC200/CW100,thermostat,157,hpminflowtemp,HP min. flow temp.,uint (>=0<=254),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp +RC200/CW100,thermostat,157,control,control device,enum [RC310\|RC200\|RC100\|RC100H\|TC100], ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control +RC200/CW100,thermostat,157,remotetemp,room temperature from remote,short (>=-1<=101),C,true,number.thermostat_hc1_room_temperature_from_remote,number.thermostat_hc1_remotetemp +RC200/CW100,thermostat,157,remotehum,room humidity from remote,uint (>=-1<=101),%,true,number.thermostat_hc1_room_humidity_from_remote,number.thermostat_hc1_remotehum RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,datetime,date/time,string, ,true,sensor.thermostat_date/time,sensor.thermostat_datetime @@ -3027,7 +3332,7 @@ RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,pvlowercool RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,seltemp,selected room temperature,short (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,currtemp,current room temperature,short (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,haclimate,Discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_Discovery_current_room_temperature,sensor.thermostat_hc1_haclimate -RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,mode,mode,enum [manual\|auto], ,true,select.thermostat_hc1_mode,select.thermostat_hc1_mode +RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,mode,mode,enum [off\|manual\|auto], ,true,select.thermostat_hc1_mode,select.thermostat_hc1_mode RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,modetype,mode type,enum [eco\|comfort], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,ecotemp,eco temperature,uint (>=0<=127),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,manualtemp,manual temperature,uint (>=0<=127),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp @@ -3051,7 +3356,7 @@ RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,hpoperating RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,controlmode,control mode,enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,program,program,enum [prog 1\|prog 2], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,tempautotemp,temporary set temperature automode,int (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp -RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,remoteseltemp,temporary set temperature from remote,int (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_from_remote,number.thermostat_hc1_remoteseltemp +RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,remoteseltemp,temporary set temperature from remote,int (>=-63<=63),C,false,sensor.thermostat_hc1_temporary_set_temperature_from_remote,sensor.thermostat_hc1_remoteseltemp RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,fastheatup,fast heatup,uint (>=0<=100),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,reducemode,reduce mode,enum [outdoor\|room\|reduce], ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode @@ -3064,6 +3369,9 @@ RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,hpmode,HP M RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,dewoffset,dew point offset,uint (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,roomtempdiff,room temp difference,uint (>=0<=254),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,hpminflowtemp,HP min. flow temp.,uint (>=0<=254),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp +RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,control,control device,enum [RC310\|RC200\|RC100\|RC100H\|TC100], ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control +RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,remotetemp,room temperature from remote,short (>=-1<=101),C,true,number.thermostat_hc1_room_temperature_from_remote,number.thermostat_hc1_remotetemp +RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410,thermostat,158,remotehum,room humidity from remote,uint (>=-1<=101),%,true,number.thermostat_hc1_room_humidity_from_remote,number.thermostat_hc1_remotehum RC100/Moduline 1000/1010,thermostat,165,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode RC100/Moduline 1000/1010,thermostat,165,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode RC100/Moduline 1000/1010,thermostat,165,datetime,date/time,string, ,true,sensor.thermostat_date/time,sensor.thermostat_datetime @@ -3098,7 +3406,7 @@ RC100/Moduline 1000/1010,thermostat,165,pvlowercool,lower cooling with PV,int (> RC100/Moduline 1000/1010,thermostat,165,seltemp,selected room temperature,short (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp RC100/Moduline 1000/1010,thermostat,165,currtemp,current room temperature,short (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp RC100/Moduline 1000/1010,thermostat,165,haclimate,Discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_Discovery_current_room_temperature,sensor.thermostat_hc1_haclimate -RC100/Moduline 1000/1010,thermostat,165,mode,mode,enum [manual\|auto], ,true,select.thermostat_hc1_mode,select.thermostat_hc1_mode +RC100/Moduline 1000/1010,thermostat,165,mode,mode,enum [off\|manual\|auto], ,true,select.thermostat_hc1_mode,select.thermostat_hc1_mode RC100/Moduline 1000/1010,thermostat,165,modetype,mode type,enum [eco\|comfort], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype RC100/Moduline 1000/1010,thermostat,165,ecotemp,eco temperature,uint (>=0<=127),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp RC100/Moduline 1000/1010,thermostat,165,manualtemp,manual temperature,uint (>=0<=127),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp @@ -3122,7 +3430,7 @@ RC100/Moduline 1000/1010,thermostat,165,hpoperatingstate,heatpump operating stat RC100/Moduline 1000/1010,thermostat,165,controlmode,control mode,enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode RC100/Moduline 1000/1010,thermostat,165,program,program,enum [prog 1\|prog 2], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program RC100/Moduline 1000/1010,thermostat,165,tempautotemp,temporary set temperature automode,int (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp -RC100/Moduline 1000/1010,thermostat,165,remoteseltemp,temporary set temperature from remote,int (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_from_remote,number.thermostat_hc1_remoteseltemp +RC100/Moduline 1000/1010,thermostat,165,remoteseltemp,temporary set temperature from remote,int (>=-63<=63),C,false,sensor.thermostat_hc1_temporary_set_temperature_from_remote,sensor.thermostat_hc1_remoteseltemp RC100/Moduline 1000/1010,thermostat,165,fastheatup,fast heatup,uint (>=0<=100),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup RC100/Moduline 1000/1010,thermostat,165,switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization RC100/Moduline 1000/1010,thermostat,165,reducemode,reduce mode,enum [outdoor\|room\|reduce], ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode @@ -3135,6 +3443,9 @@ RC100/Moduline 1000/1010,thermostat,165,hpmode,HP Mode,enum [heating\|cooling\|h RC100/Moduline 1000/1010,thermostat,165,dewoffset,dew point offset,uint (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset RC100/Moduline 1000/1010,thermostat,165,roomtempdiff,room temp difference,uint (>=0<=254),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff RC100/Moduline 1000/1010,thermostat,165,hpminflowtemp,HP min. flow temp.,uint (>=0<=254),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp +RC100/Moduline 1000/1010,thermostat,165,control,control device,enum [RC310\|RC200\|RC100\|RC100H\|TC100], ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control +RC100/Moduline 1000/1010,thermostat,165,remotetemp,room temperature from remote,short (>=-1<=101),C,true,number.thermostat_hc1_room_temperature_from_remote,number.thermostat_hc1_remotetemp +RC100/Moduline 1000/1010,thermostat,165,remotehum,room humidity from remote,uint (>=-1<=101),%,true,number.thermostat_hc1_room_humidity_from_remote,number.thermostat_hc1_remotehum Rego 2000/3000,thermostat,172,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode Rego 2000/3000,thermostat,172,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode Rego 2000/3000,thermostat,172,datetime,date/time,string, ,true,sensor.thermostat_date/time,sensor.thermostat_datetime @@ -3169,7 +3480,7 @@ Rego 2000/3000,thermostat,172,pvlowercool,lower cooling with PV,int (>=-5<=0),K, Rego 2000/3000,thermostat,172,seltemp,selected room temperature,short (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp Rego 2000/3000,thermostat,172,currtemp,current room temperature,short (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp Rego 2000/3000,thermostat,172,haclimate,Discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_Discovery_current_room_temperature,sensor.thermostat_hc1_haclimate -Rego 2000/3000,thermostat,172,mode,mode,enum [manual\|auto], ,true,select.thermostat_hc1_mode,select.thermostat_hc1_mode +Rego 2000/3000,thermostat,172,mode,mode,enum [off\|manual\|auto], ,true,select.thermostat_hc1_mode,select.thermostat_hc1_mode Rego 2000/3000,thermostat,172,modetype,mode type,enum [eco\|comfort], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype Rego 2000/3000,thermostat,172,ecotemp,eco temperature,uint (>=0<=127),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp Rego 2000/3000,thermostat,172,manualtemp,manual temperature,uint (>=0<=127),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp @@ -3193,7 +3504,7 @@ Rego 2000/3000,thermostat,172,hpoperatingstate,heatpump operating state,enum [he Rego 2000/3000,thermostat,172,controlmode,control mode,enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode Rego 2000/3000,thermostat,172,program,program,enum [prog 1\|prog 2], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program Rego 2000/3000,thermostat,172,tempautotemp,temporary set temperature automode,int (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp -Rego 2000/3000,thermostat,172,remoteseltemp,temporary set temperature from remote,int (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_from_remote,number.thermostat_hc1_remoteseltemp +Rego 2000/3000,thermostat,172,remoteseltemp,temporary set temperature from remote,int (>=-63<=63),C,false,sensor.thermostat_hc1_temporary_set_temperature_from_remote,sensor.thermostat_hc1_remoteseltemp Rego 2000/3000,thermostat,172,fastheatup,fast heatup,uint (>=0<=100),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup Rego 2000/3000,thermostat,172,switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization Rego 2000/3000,thermostat,172,reducemode,reduce mode,enum [outdoor\|room\|reduce], ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode @@ -3206,6 +3517,9 @@ Rego 2000/3000,thermostat,172,hpmode,HP Mode,enum [heating\|cooling\|heating&coo Rego 2000/3000,thermostat,172,dewoffset,dew point offset,uint (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset Rego 2000/3000,thermostat,172,roomtempdiff,room temp difference,uint (>=0<=254),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff Rego 2000/3000,thermostat,172,hpminflowtemp,HP min. flow temp.,uint (>=0<=254),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp +Rego 2000/3000,thermostat,172,control,control device,enum [RC310\|RC200\|RC100\|RC100H\|TC100], ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control +Rego 2000/3000,thermostat,172,remotetemp,room temperature from remote,short (>=-1<=101),C,true,number.thermostat_hc1_room_temperature_from_remote,number.thermostat_hc1_remotetemp +Rego 2000/3000,thermostat,172,remotehum,room humidity from remote,uint (>=-1<=101),%,true,number.thermostat_hc1_room_humidity_from_remote,number.thermostat_hc1_remotehum Comfort RF,thermostat,215,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode Comfort RF,thermostat,215,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode Comfort RF,thermostat,215,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime @@ -3233,77 +3547,80 @@ Comfort+2RF,thermostat,246,haclimate,Discovery current room temperature,enum [se Comfort+2RF,thermostat,246,mode,mode,enum [auto\|off], ,false,sensor.thermostat_hc1_mode,sensor.thermostat_hc1_mode Comfort+2RF,thermostat,246,modetype,mode type,enum [off\|on], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype Comfort+2RF,thermostat,246,targetflowtemp,target flow temperature,uint (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp -Rego 3000/UI800,thermostat,253,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode -Rego 3000/UI800,thermostat,253,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode -Rego 3000/UI800,thermostat,253,datetime,date/time,string, ,true,sensor.thermostat_date/time,sensor.thermostat_datetime -Rego 3000/UI800,thermostat,253,intoffset,internal temperature offset,int (>=-12<=12),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset -Rego 3000/UI800,thermostat,253,floordry,floor drying,enum [off\|start\|heat\|hold\|cool\|end], ,false,sensor.thermostat_floor_drying,sensor.thermostat_floordry -Rego 3000/UI800,thermostat,253,dampedoutdoortemp,damped outdoor temperature,short (>=-3199<=3199),C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp -Rego 3000/UI800,thermostat,253,floordrytemp,floor drying temperature,uint (>=0<=254),C,false,sensor.thermostat_floor_drying_temperature,sensor.thermostat_floordrytemp -Rego 3000/UI800,thermostat,253,building,building type,enum [light\|medium\|heavy], ,true,select.thermostat_building_type,select.thermostat_building -Rego 3000/UI800,thermostat,253,minexttemp,minimal external temperature,int (>=-126<=126),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp -Rego 3000/UI800,thermostat,253,damping,damping outdoor temperature,boolean, ,true,switch.thermostat_damping_outdoor_temperature,switch.thermostat_damping -Rego 3000/UI800,thermostat,253,wwsettemp,set temperature,uint (>=0<=254),C,true,number.thermostat_set_temperature,number.thermostat_wwsettemp -Rego 3000/UI800,thermostat,253,wwmode,mode,enum [off\|normal\|comfort\|auto\|own prog\|eco], ,true,select.thermostat_mode,select.thermostat_wwmode -Rego 3000/UI800,thermostat,253,wwsettemplow,set low temperature,uint (>=0<=254),C,true,number.thermostat_set_low_temperature,number.thermostat_wwsettemplow -Rego 3000/UI800,thermostat,253,wwcircmode,circulation pump mode,enum [off\|on\|auto\|own prog], ,true,select.thermostat_circulation_pump_mode,select.thermostat_wwcircmode -Rego 3000/UI800,thermostat,253,wwchargeduration,charge duration,uint (>=0<=3810),minutes,true,number.thermostat_charge_duration,number.thermostat_wwchargeduration -Rego 3000/UI800,thermostat,253,wwcharge,charge,boolean, ,true,switch.thermostat_charge,switch.thermostat_wwcharge -Rego 3000/UI800,thermostat,253,wwextra1,circuit 1 extra,uint (>=0<=254),C,false,sensor.thermostat_circuit_1_extra,sensor.thermostat_wwextra1 -Rego 3000/UI800,thermostat,253,wwextra2,circuit 2 extra,uint (>=0<=254),C,false,sensor.thermostat_circuit_2_extra,sensor.thermostat_wwextra2 -Rego 3000/UI800,thermostat,253,wwdisinfecting,disinfecting,boolean, ,true,switch.thermostat_disinfecting,switch.thermostat_wwdisinfecting -Rego 3000/UI800,thermostat,253,wwdisinfectday,disinfection day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all], ,true,select.thermostat_disinfection_day,select.thermostat_wwdisinfectday -Rego 3000/UI800,thermostat,253,wwdisinfecttime,disinfection time,uint (>=0<=1431),minutes,true,number.thermostat_disinfection_time,number.thermostat_wwdisinfecttime -Rego 3000/UI800,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 -Rego 3000/UI800,thermostat,253,switchovertemp,outside switchover temperature,int (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp -Rego 3000/UI800,thermostat,253,energycostratio,energy cost ratio,uint (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio -Rego 3000/UI800,thermostat,253,fossilefactor,fossile energy factor,uint (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor -Rego 3000/UI800,thermostat,253,electricfactor,electric energy factor,uint (>=0<=5), ,true,number.thermostat_electric_energy_factor,number.thermostat_electricfactor -Rego 3000/UI800,thermostat,253,delayboiler,delay boiler support,uint (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler -Rego 3000/UI800,thermostat,253,tempdiffboiler,temp diff boiler support,uint (>=1<=99),C,true,number.thermostat_temp_diff_boiler_support,number.thermostat_tempdiffboiler -Rego 3000/UI800,thermostat,253,pvenableww,enable raise dhw,boolean, ,true,switch.thermostat_enable_raise_dhw,switch.thermostat_pvenableww -Rego 3000/UI800,thermostat,253,pvraiseheat,raise heating with PV,int (>=0<=5),K,true,number.thermostat_raise_heating_with_PV,number.thermostat_pvraiseheat -Rego 3000/UI800,thermostat,253,pvlowercool,lower cooling with PV,int (>=-5<=0),K,true,number.thermostat_lower_cooling_with_PV,number.thermostat_pvlowercool -Rego 3000/UI800,thermostat,253,seltemp,selected room temperature,short (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp -Rego 3000/UI800,thermostat,253,currtemp,current room temperature,short (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp -Rego 3000/UI800,thermostat,253,haclimate,Discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_Discovery_current_room_temperature,sensor.thermostat_hc1_haclimate -Rego 3000/UI800,thermostat,253,mode,mode,enum [manual\|auto], ,true,select.thermostat_hc1_mode,select.thermostat_hc1_mode -Rego 3000/UI800,thermostat,253,modetype,mode type,enum [eco\|comfort], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype -Rego 3000/UI800,thermostat,253,ecotemp,eco temperature,uint (>=0<=127),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp -Rego 3000/UI800,thermostat,253,manualtemp,manual temperature,uint (>=0<=127),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp -Rego 3000/UI800,thermostat,253,comforttemp,comfort temperature,uint (>=0<=127),C,true,number.thermostat_hc1_comfort_temperature,number.thermostat_hc1_comforttemp -Rego 3000/UI800,thermostat,253,summertemp,summer temperature,uint (>=10<=30),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp -Rego 3000/UI800,thermostat,253,designtemp,design temperature,uint (>=0<=254),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp -Rego 3000/UI800,thermostat,253,offsettemp,offset temperature,int (>=-126<=126),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp -Rego 3000/UI800,thermostat,253,minflowtemp,min flow temperature,uint (>=0<=254),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp -Rego 3000/UI800,thermostat,253,maxflowtemp,max flow temperature,uint (>=0<=254),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp -Rego 3000/UI800,thermostat,253,roominfluence,room influence,uint (>=0<=254),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence -Rego 3000/UI800,thermostat,253,roominflfactor,room influence factor,uint (>=0<=25), ,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor -Rego 3000/UI800,thermostat,253,curroominfl,current room influence,short (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_influence,sensor.thermostat_hc1_curroominfl -Rego 3000/UI800,thermostat,253,nofrostmode,nofrost mode,enum [room\|outdoor\|room outdoor], ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode -Rego 3000/UI800,thermostat,253,nofrosttemp,nofrost temperature,int (>=-126<=126),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp -Rego 3000/UI800,thermostat,253,targetflowtemp,target flow temperature,uint (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp -Rego 3000/UI800,thermostat,253,heatingtype,heating type,enum [off\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype -Rego 3000/UI800,thermostat,253,summersetmode,set summer mode,enum [summer\|auto\|winter], ,true,select.thermostat_hc1_set_summer_mode,select.thermostat_hc1_summersetmode -Rego 3000/UI800,thermostat,253,hpoperatingmode,heatpump operating mode,enum [off\|auto\|heating\|cooling], ,true,select.thermostat_hc1_heatpump_operating_mode,select.thermostat_hc1_hpoperatingmode -Rego 3000/UI800,thermostat,253,summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode -Rego 3000/UI800,thermostat,253,hpoperatingstate,heatpump operating state,enum [heating\|off\|cooling], ,false,sensor.thermostat_hc1_heatpump_operating_state,sensor.thermostat_hc1_hpoperatingstate -Rego 3000/UI800,thermostat,253,controlmode,control mode,enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode -Rego 3000/UI800,thermostat,253,program,program,enum [prog 1\|prog 2], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program -Rego 3000/UI800,thermostat,253,tempautotemp,temporary set temperature automode,int (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp -Rego 3000/UI800,thermostat,253,remoteseltemp,temporary set temperature from remote,int (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_from_remote,number.thermostat_hc1_remoteseltemp -Rego 3000/UI800,thermostat,253,fastheatup,fast heatup,uint (>=0<=100),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup -Rego 3000/UI800,thermostat,253,switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization -Rego 3000/UI800,thermostat,253,reducemode,reduce mode,enum [outdoor\|room\|reduce], ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode -Rego 3000/UI800,thermostat,253,noreducetemp,no reduce below temperature,int (>=-126<=126),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp -Rego 3000/UI800,thermostat,253,reducetemp,off/reduce switch temperature,int (>=-126<=126),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp -Rego 3000/UI800,thermostat,253,wwprio,dhw priority,boolean, ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_wwprio -Rego 3000/UI800,thermostat,253,cooling,cooling,boolean, ,true,switch.thermostat_hc1_cooling,switch.thermostat_hc1_cooling -Rego 3000/UI800,thermostat,253,coolingon,cooling,boolean, ,false,binary_sensor.thermostat_hc1_cooling,binary_sensor.thermostat_hc1_coolingon -Rego 3000/UI800,thermostat,253,hpmode,HP Mode,enum [heating\|cooling\|heating&cooling], ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode -Rego 3000/UI800,thermostat,253,dewoffset,dew point offset,uint (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset -Rego 3000/UI800,thermostat,253,roomtempdiff,room temp difference,uint (>=0<=254),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff -Rego 3000/UI800,thermostat,253,hpminflowtemp,HP min. flow temp.,uint (>=0<=254),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp +Rego 3000/UI800/WSW196i/BC400,thermostat,253,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode +Rego 3000/UI800/WSW196i/BC400,thermostat,253,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode +Rego 3000/UI800/WSW196i/BC400,thermostat,253,datetime,date/time,string, ,true,sensor.thermostat_date/time,sensor.thermostat_datetime +Rego 3000/UI800/WSW196i/BC400,thermostat,253,intoffset,internal temperature offset,int (>=-12<=12),C,true,number.thermostat_internal_temperature_offset,number.thermostat_intoffset +Rego 3000/UI800/WSW196i/BC400,thermostat,253,floordry,floor drying,enum [off\|start\|heat\|hold\|cool\|end], ,false,sensor.thermostat_floor_drying,sensor.thermostat_floordry +Rego 3000/UI800/WSW196i/BC400,thermostat,253,dampedoutdoortemp,damped outdoor temperature,short (>=-3199<=3199),C,false,sensor.thermostat_damped_outdoor_temperature,sensor.thermostat_dampedoutdoortemp +Rego 3000/UI800/WSW196i/BC400,thermostat,253,floordrytemp,floor drying temperature,uint (>=0<=254),C,false,sensor.thermostat_floor_drying_temperature,sensor.thermostat_floordrytemp +Rego 3000/UI800/WSW196i/BC400,thermostat,253,building,building type,enum [light\|medium\|heavy], ,true,select.thermostat_building_type,select.thermostat_building +Rego 3000/UI800/WSW196i/BC400,thermostat,253,minexttemp,minimal external temperature,int (>=-126<=126),C,true,number.thermostat_minimal_external_temperature,number.thermostat_minexttemp +Rego 3000/UI800/WSW196i/BC400,thermostat,253,damping,damping outdoor temperature,boolean, ,true,switch.thermostat_damping_outdoor_temperature,switch.thermostat_damping +Rego 3000/UI800/WSW196i/BC400,thermostat,253,wwsettemp,set temperature,uint (>=0<=254),C,true,number.thermostat_set_temperature,number.thermostat_wwsettemp +Rego 3000/UI800/WSW196i/BC400,thermostat,253,wwmode,mode,enum [off\|normal\|comfort\|auto\|own prog\|eco], ,true,select.thermostat_mode,select.thermostat_wwmode +Rego 3000/UI800/WSW196i/BC400,thermostat,253,wwsettemplow,set low temperature,uint (>=0<=254),C,true,number.thermostat_set_low_temperature,number.thermostat_wwsettemplow +Rego 3000/UI800/WSW196i/BC400,thermostat,253,wwcircmode,circulation pump mode,enum [off\|on\|auto\|own prog], ,true,select.thermostat_circulation_pump_mode,select.thermostat_wwcircmode +Rego 3000/UI800/WSW196i/BC400,thermostat,253,wwchargeduration,charge duration,uint (>=0<=3810),minutes,true,number.thermostat_charge_duration,number.thermostat_wwchargeduration +Rego 3000/UI800/WSW196i/BC400,thermostat,253,wwcharge,charge,boolean, ,true,switch.thermostat_charge,switch.thermostat_wwcharge +Rego 3000/UI800/WSW196i/BC400,thermostat,253,wwextra1,circuit 1 extra,uint (>=0<=254),C,false,sensor.thermostat_circuit_1_extra,sensor.thermostat_wwextra1 +Rego 3000/UI800/WSW196i/BC400,thermostat,253,wwextra2,circuit 2 extra,uint (>=0<=254),C,false,sensor.thermostat_circuit_2_extra,sensor.thermostat_wwextra2 +Rego 3000/UI800/WSW196i/BC400,thermostat,253,wwdisinfecting,disinfecting,boolean, ,true,switch.thermostat_disinfecting,switch.thermostat_wwdisinfecting +Rego 3000/UI800/WSW196i/BC400,thermostat,253,wwdisinfectday,disinfection day,enum [mo\|tu\|we\|th\|fr\|sa\|su\|all], ,true,select.thermostat_disinfection_day,select.thermostat_wwdisinfectday +Rego 3000/UI800/WSW196i/BC400,thermostat,253,wwdisinfecttime,disinfection time,uint (>=0<=1431),minutes,true,number.thermostat_disinfection_time,number.thermostat_wwdisinfecttime +Rego 3000/UI800/WSW196i/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 +Rego 3000/UI800/WSW196i/BC400,thermostat,253,switchovertemp,outside switchover temperature,int (>=-20<=20),C,true,number.thermostat_outside_switchover_temperature,number.thermostat_switchovertemp +Rego 3000/UI800/WSW196i/BC400,thermostat,253,energycostratio,energy cost ratio,uint (>=0<=20), ,true,number.thermostat_energy_cost_ratio,number.thermostat_energycostratio +Rego 3000/UI800/WSW196i/BC400,thermostat,253,fossilefactor,fossile energy factor,uint (>=0<=5), ,true,number.thermostat_fossile_energy_factor,number.thermostat_fossilefactor +Rego 3000/UI800/WSW196i/BC400,thermostat,253,electricfactor,electric energy factor,uint (>=0<=5), ,true,number.thermostat_electric_energy_factor,number.thermostat_electricfactor +Rego 3000/UI800/WSW196i/BC400,thermostat,253,delayboiler,delay boiler support,uint (>=5<=120),minutes,true,number.thermostat_delay_boiler_support,number.thermostat_delayboiler +Rego 3000/UI800/WSW196i/BC400,thermostat,253,tempdiffboiler,temp diff boiler support,uint (>=1<=99),C,true,number.thermostat_temp_diff_boiler_support,number.thermostat_tempdiffboiler +Rego 3000/UI800/WSW196i/BC400,thermostat,253,pvenableww,enable raise dhw,boolean, ,true,switch.thermostat_enable_raise_dhw,switch.thermostat_pvenableww +Rego 3000/UI800/WSW196i/BC400,thermostat,253,pvraiseheat,raise heating with PV,int (>=0<=5),K,true,number.thermostat_raise_heating_with_PV,number.thermostat_pvraiseheat +Rego 3000/UI800/WSW196i/BC400,thermostat,253,pvlowercool,lower cooling with PV,int (>=-5<=0),K,true,number.thermostat_lower_cooling_with_PV,number.thermostat_pvlowercool +Rego 3000/UI800/WSW196i/BC400,thermostat,253,seltemp,selected room temperature,short (>=0<=30),C,true,number.thermostat_hc1_selected_room_temperature,number.thermostat_hc1_seltemp +Rego 3000/UI800/WSW196i/BC400,thermostat,253,currtemp,current room temperature,short (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_temperature,sensor.thermostat_hc1_currtemp +Rego 3000/UI800/WSW196i/BC400,thermostat,253,haclimate,Discovery current room temperature,enum [selTemp\|roomTemp] (>=5<=30), ,false,sensor.thermostat_hc1_Discovery_current_room_temperature,sensor.thermostat_hc1_haclimate +Rego 3000/UI800/WSW196i/BC400,thermostat,253,mode,mode,enum [off\|manual\|auto], ,true,select.thermostat_hc1_mode,select.thermostat_hc1_mode +Rego 3000/UI800/WSW196i/BC400,thermostat,253,modetype,mode type,enum [eco\|comfort], ,false,sensor.thermostat_hc1_mode_type,sensor.thermostat_hc1_modetype +Rego 3000/UI800/WSW196i/BC400,thermostat,253,ecotemp,eco temperature,uint (>=0<=127),C,true,number.thermostat_hc1_eco_temperature,number.thermostat_hc1_ecotemp +Rego 3000/UI800/WSW196i/BC400,thermostat,253,manualtemp,manual temperature,uint (>=0<=127),C,true,number.thermostat_hc1_manual_temperature,number.thermostat_hc1_manualtemp +Rego 3000/UI800/WSW196i/BC400,thermostat,253,comforttemp,comfort temperature,uint (>=0<=127),C,true,number.thermostat_hc1_comfort_temperature,number.thermostat_hc1_comforttemp +Rego 3000/UI800/WSW196i/BC400,thermostat,253,summertemp,summer temperature,uint (>=10<=30),C,true,number.thermostat_hc1_summer_temperature,number.thermostat_hc1_summertemp +Rego 3000/UI800/WSW196i/BC400,thermostat,253,designtemp,design temperature,uint (>=0<=254),C,true,number.thermostat_hc1_design_temperature,number.thermostat_hc1_designtemp +Rego 3000/UI800/WSW196i/BC400,thermostat,253,offsettemp,offset temperature,int (>=-126<=126),C,true,number.thermostat_hc1_offset_temperature,number.thermostat_hc1_offsettemp +Rego 3000/UI800/WSW196i/BC400,thermostat,253,minflowtemp,min flow temperature,uint (>=0<=254),C,true,number.thermostat_hc1_min_flow_temperature,number.thermostat_hc1_minflowtemp +Rego 3000/UI800/WSW196i/BC400,thermostat,253,maxflowtemp,max flow temperature,uint (>=0<=254),C,true,number.thermostat_hc1_max_flow_temperature,number.thermostat_hc1_maxflowtemp +Rego 3000/UI800/WSW196i/BC400,thermostat,253,roominfluence,room influence,uint (>=0<=254),C,true,number.thermostat_hc1_room_influence,number.thermostat_hc1_roominfluence +Rego 3000/UI800/WSW196i/BC400,thermostat,253,roominflfactor,room influence factor,uint (>=0<=25), ,true,number.thermostat_hc1_room_influence_factor,number.thermostat_hc1_roominflfactor +Rego 3000/UI800/WSW196i/BC400,thermostat,253,curroominfl,current room influence,short (>=-3199<=3199),C,false,sensor.thermostat_hc1_current_room_influence,sensor.thermostat_hc1_curroominfl +Rego 3000/UI800/WSW196i/BC400,thermostat,253,nofrostmode,nofrost mode,enum [room\|outdoor\|room outdoor], ,true,select.thermostat_hc1_nofrost_mode,select.thermostat_hc1_nofrostmode +Rego 3000/UI800/WSW196i/BC400,thermostat,253,nofrosttemp,nofrost temperature,int (>=-126<=126),C,true,number.thermostat_hc1_nofrost_temperature,number.thermostat_hc1_nofrosttemp +Rego 3000/UI800/WSW196i/BC400,thermostat,253,targetflowtemp,target flow temperature,uint (>=0<=254),C,false,sensor.thermostat_hc1_target_flow_temperature,sensor.thermostat_hc1_targetflowtemp +Rego 3000/UI800/WSW196i/BC400,thermostat,253,heatingtype,heating type,enum [off\|radiator\|convector\|floor], ,true,select.thermostat_hc1_heating_type,select.thermostat_hc1_heatingtype +Rego 3000/UI800/WSW196i/BC400,thermostat,253,summersetmode,set summer mode,enum [summer\|auto\|winter], ,true,select.thermostat_hc1_set_summer_mode,select.thermostat_hc1_summersetmode +Rego 3000/UI800/WSW196i/BC400,thermostat,253,hpoperatingmode,heatpump operating mode,enum [off\|auto\|heating\|cooling], ,true,select.thermostat_hc1_heatpump_operating_mode,select.thermostat_hc1_hpoperatingmode +Rego 3000/UI800/WSW196i/BC400,thermostat,253,summermode,summer mode,enum [winter\|summer], ,false,sensor.thermostat_hc1_summer_mode,sensor.thermostat_hc1_summermode +Rego 3000/UI800/WSW196i/BC400,thermostat,253,hpoperatingstate,heatpump operating state,enum [heating\|off\|cooling], ,false,sensor.thermostat_hc1_heatpump_operating_state,sensor.thermostat_hc1_hpoperatingstate +Rego 3000/UI800/WSW196i/BC400,thermostat,253,controlmode,control mode,enum [weather compensated\|outside basepoint\|n/a\|room\|power\|constant], ,true,select.thermostat_hc1_control_mode,select.thermostat_hc1_controlmode +Rego 3000/UI800/WSW196i/BC400,thermostat,253,program,program,enum [prog 1\|prog 2], ,true,select.thermostat_hc1_program,select.thermostat_hc1_program +Rego 3000/UI800/WSW196i/BC400,thermostat,253,tempautotemp,temporary set temperature automode,int (>=-1<=30),C,true,number.thermostat_hc1_temporary_set_temperature_automode,number.thermostat_hc1_tempautotemp +Rego 3000/UI800/WSW196i/BC400,thermostat,253,remoteseltemp,temporary set temperature from remote,int (>=-63<=63),C,false,sensor.thermostat_hc1_temporary_set_temperature_from_remote,sensor.thermostat_hc1_remoteseltemp +Rego 3000/UI800/WSW196i/BC400,thermostat,253,fastheatup,fast heatup,uint (>=0<=100),%,true,number.thermostat_hc1_fast_heatup,number.thermostat_hc1_fastheatup +Rego 3000/UI800/WSW196i/BC400,thermostat,253,switchonoptimization,switch-on optimization,boolean, ,true,switch.thermostat_hc1_switch-on_optimization,switch.thermostat_hc1_switchonoptimization +Rego 3000/UI800/WSW196i/BC400,thermostat,253,reducemode,reduce mode,enum [outdoor\|room\|reduce], ,true,select.thermostat_hc1_reduce_mode,select.thermostat_hc1_reducemode +Rego 3000/UI800/WSW196i/BC400,thermostat,253,noreducetemp,no reduce below temperature,int (>=-126<=126),C,true,number.thermostat_hc1_no_reduce_below_temperature,number.thermostat_hc1_noreducetemp +Rego 3000/UI800/WSW196i/BC400,thermostat,253,reducetemp,off/reduce switch temperature,int (>=-126<=126),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp +Rego 3000/UI800/WSW196i/BC400,thermostat,253,wwprio,dhw priority,boolean, ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_wwprio +Rego 3000/UI800/WSW196i/BC400,thermostat,253,cooling,cooling,boolean, ,true,switch.thermostat_hc1_cooling,switch.thermostat_hc1_cooling +Rego 3000/UI800/WSW196i/BC400,thermostat,253,coolingon,cooling,boolean, ,false,binary_sensor.thermostat_hc1_cooling,binary_sensor.thermostat_hc1_coolingon +Rego 3000/UI800/WSW196i/BC400,thermostat,253,hpmode,HP Mode,enum [heating\|cooling\|heating&cooling], ,true,select.thermostat_hc1_HP_Mode,select.thermostat_hc1_hpmode +Rego 3000/UI800/WSW196i/BC400,thermostat,253,dewoffset,dew point offset,uint (>=2<=10),K,true,number.thermostat_hc1_dew_point_offset,number.thermostat_hc1_dewoffset +Rego 3000/UI800/WSW196i/BC400,thermostat,253,roomtempdiff,room temp difference,uint (>=0<=254),K,true,number.thermostat_hc1_room_temp_difference,number.thermostat_hc1_roomtempdiff +Rego 3000/UI800/WSW196i/BC400,thermostat,253,hpminflowtemp,HP min. flow temp.,uint (>=0<=254),C,true,number.thermostat_hc1_HP_min._flow_temp.,number.thermostat_hc1_hpminflowtemp +Rego 3000/UI800/WSW196i/BC400,thermostat,253,control,control device,enum [RC310\|RC200\|RC100\|RC100H\|TC100], ,true,select.thermostat_hc1_control_device,select.thermostat_hc1_control +Rego 3000/UI800/WSW196i/BC400,thermostat,253,remotetemp,room temperature from remote,short (>=-1<=101),C,true,number.thermostat_hc1_room_temperature_from_remote,number.thermostat_hc1_remotetemp +Rego 3000/UI800/WSW196i/BC400,thermostat,253,remotehum,room humidity from remote,uint (>=-1<=101),%,true,number.thermostat_hc1_room_humidity_from_remote,number.thermostat_hc1_remotehum ES72/RC20,thermostat,66,errorcode,error code,string, ,false,sensor.thermostat_error_code,sensor.thermostat_errorcode ES72/RC20,thermostat,66,lastcode,last error code,string, ,false,sensor.thermostat_last_error_code,sensor.thermostat_lastcode ES72/RC20,thermostat,66,datetime,date/time,string, ,false,sensor.thermostat_date/time,sensor.thermostat_datetime @@ -3383,7 +3700,7 @@ ES73,thermostat,76,noreducetemp,no reduce below temperature,int (>=-31<=10),C,tr ES73,thermostat,76,reducetemp,off/reduce switch temperature,int (>=-20<=10),C,true,number.thermostat_hc1_off/reduce_switch_temperature,number.thermostat_hc1_reducetemp ES73,thermostat,76,vacreducetemp,vacations off/reduce switch temperature,int (>=-20<=10),C,true,number.thermostat_hc1_vacations_off/reduce_switch_temperature,number.thermostat_hc1_vacreducetemp ES73,thermostat,76,vacreducemode,vacations reduce mode,enum [nofrost\|reduce\|room\|outdoor], ,true,select.thermostat_hc1_vacations_reduce_mode,select.thermostat_hc1_vacreducemode -ES73,thermostat,76,remotetemp,room temperature from remote,short (>=-3199<=3199),C,true,number.thermostat_hc1_room_temperature_from_remote,number.thermostat_hc1_remotetemp +ES73,thermostat,76,remotetemp,room temperature from remote,short (>=-1<=101),C,true,number.thermostat_hc1_room_temperature_from_remote,number.thermostat_hc1_remotetemp ES73,thermostat,76,wwprio,dhw priority,boolean, ,true,switch.thermostat_hc1_dhw_priority,switch.thermostat_hc1_wwprio ES73,thermostat,76,switchtime1,own1 program switchtime,string, ,true,sensor.thermostat_hc1_own1_program_switchtime,sensor.thermostat_hc1_switchtime1 ES73,thermostat,76,switchtime2,own2 program switchtime,string, ,true,sensor.thermostat_hc1_own2_program_switchtime,sensor.thermostat_hc1_switchtime2 @@ -3732,7 +4049,7 @@ MP100,mixer,204,poolshunt,pool shunt open/close (0% = pool / 100% = heat),uint ( SM10,solar,73,collectortemp,collector temperature (TS1),short (>=-3199<=3199),C,false,sensor.solar_collector_temperature_(TS1),sensor.solar_collectortemp SM10,solar,73,cylbottomtemp,cylinder bottom temperature (TS2),short (>=-3199<=3199),C,false,sensor.solar_cylinder_bottom_temperature_(TS2),sensor.solar_cylbottomtemp SM10,solar,73,solarpump,pump (PS1),boolean, ,false,binary_sensor.solar_pump_(PS1),binary_sensor.solar_solarpump -SM10,solar,73,pumpworktime,pump working time,time (>=0<=65533),minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime +SM10,solar,73,pumpworktime,pump working time,time (>=0<=16777213),minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime SM10,solar,73,cylmaxtemp,maximum cylinder temperature,uint (>=0<=254),C,true,number.solar_maximum_cylinder_temperature,number.solar_cylmaxtemp SM10,solar,73,collectorshutdown,collector shutdown,boolean, ,false,binary_sensor.solar_collector_shutdown,binary_sensor.solar_collectorshutdown SM10,solar,73,cylheated,cyl heated,boolean, ,false,binary_sensor.solar_cyl_heated,binary_sensor.solar_cylheated @@ -3741,36 +4058,36 @@ SM10,solar,73,pumpminmod,minimum pump modulation,uint (>=0<=100),%,true,number.s SM10,solar,73,turnondiff,pump turn on difference,uint (>=0<=254),C,true,number.solar_pump_turn_on_difference,number.solar_turnondiff SM10,solar,73,turnoffdiff,pump turn off difference,uint (>=0<=254),C,true,number.solar_pump_turn_off_difference,number.solar_turnoffdiff SM10,solar,73,solarpower,actual solar power,short (>=-31999<=31999),W,false,sensor.solar_actual_solar_power,sensor.solar_solarpower -SM10,solar,73,energylasthour,energy last hour,ulong (>=0<=39321),Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour +SM10,solar,73,energylasthour,energy last hour,ulong (>=0<=1677721),Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour SM10,solar,73,maxflow,maximum solar flow,uint (>=0<=25),l/min,true,number.solar_maximum_solar_flow,number.solar_maxflow SM10,solar,73,wwmintemp,minimum temperature,uint (>=0<=254),C,true,number.solar_minimum_temperature,number.solar_wwmintemp SM10,solar,73,solarenabled,solarmodule enabled,boolean, ,true,switch.solar_solarmodule_enabled,switch.solar_solarenabled ISM1,solar,101,collectortemp,collector temperature (TS1),short (>=-3199<=3199),C,false,sensor.solar_collector_temperature_(TS1),sensor.solar_collectortemp ISM1,solar,101,cylbottomtemp,cylinder bottom temperature (TS2),short (>=-3199<=3199),C,false,sensor.solar_cylinder_bottom_temperature_(TS2),sensor.solar_cylbottomtemp ISM1,solar,101,solarpump,pump (PS1),boolean, ,false,binary_sensor.solar_pump_(PS1),binary_sensor.solar_solarpump -ISM1,solar,101,pumpworktime,pump working time,time (>=0<=65533),minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime +ISM1,solar,101,pumpworktime,pump working time,time (>=0<=16777213),minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime ISM1,solar,101,cylmaxtemp,maximum cylinder temperature,uint (>=0<=254),C,true,number.solar_maximum_cylinder_temperature,number.solar_cylmaxtemp ISM1,solar,101,collectorshutdown,collector shutdown,boolean, ,false,binary_sensor.solar_collector_shutdown,binary_sensor.solar_collectorshutdown ISM1,solar,101,cylheated,cyl heated,boolean, ,false,binary_sensor.solar_cyl_heated,binary_sensor.solar_cylheated ISM1,solar,101,cylmiddletemp,cylinder middle temperature (TS3),short (>=-3199<=3199),C,false,sensor.solar_cylinder_middle_temperature_(TS3),sensor.solar_cylmiddletemp ISM1,solar,101,retheatassist,return temperature heat assistance (TS4),short (>=-3199<=3199),C,false,sensor.solar_return_temperature_heat_assistance_(TS4),sensor.solar_retheatassist ISM1,solar,101,heatassistvalve,heat assistance valve (M1),boolean, ,false,binary_sensor.solar_heat_assistance_valve_(M1),binary_sensor.solar_heatassistvalve -ISM1,solar,101,energylasthour,energy last hour,ulong (>=0<=39321),Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour +ISM1,solar,101,energylasthour,energy last hour,ulong (>=0<=1677721),Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour ISM2,solar,103,collectortemp,collector temperature (TS1),short (>=-3199<=3199),C,false,sensor.solar_collector_temperature_(TS1),sensor.solar_collectortemp ISM2,solar,103,cylbottomtemp,cylinder bottom temperature (TS2),short (>=-3199<=3199),C,false,sensor.solar_cylinder_bottom_temperature_(TS2),sensor.solar_cylbottomtemp ISM2,solar,103,solarpump,pump (PS1),boolean, ,false,binary_sensor.solar_pump_(PS1),binary_sensor.solar_solarpump -ISM2,solar,103,pumpworktime,pump working time,time (>=0<=65533),minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime +ISM2,solar,103,pumpworktime,pump working time,time (>=0<=16777213),minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime ISM2,solar,103,cylmaxtemp,maximum cylinder temperature,uint (>=0<=254),C,true,number.solar_maximum_cylinder_temperature,number.solar_cylmaxtemp ISM2,solar,103,collectorshutdown,collector shutdown,boolean, ,false,binary_sensor.solar_collector_shutdown,binary_sensor.solar_collectorshutdown ISM2,solar,103,cylheated,cyl heated,boolean, ,false,binary_sensor.solar_cyl_heated,binary_sensor.solar_cylheated ISM2,solar,103,cylmiddletemp,cylinder middle temperature (TS3),short (>=-3199<=3199),C,false,sensor.solar_cylinder_middle_temperature_(TS3),sensor.solar_cylmiddletemp ISM2,solar,103,retheatassist,return temperature heat assistance (TS4),short (>=-3199<=3199),C,false,sensor.solar_return_temperature_heat_assistance_(TS4),sensor.solar_retheatassist ISM2,solar,103,heatassistvalve,heat assistance valve (M1),boolean, ,false,binary_sensor.solar_heat_assistance_valve_(M1),binary_sensor.solar_heatassistvalve -ISM2,solar,103,energylasthour,energy last hour,ulong (>=0<=39321),Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour +ISM2,solar,103,energylasthour,energy last hour,ulong (>=0<=1677721),Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour SM50,solar,162,collectortemp,collector temperature (TS1),short (>=-3199<=3199),C,false,sensor.solar_collector_temperature_(TS1),sensor.solar_collectortemp SM50,solar,162,cylbottomtemp,cylinder bottom temperature (TS2),short (>=-3199<=3199),C,false,sensor.solar_cylinder_bottom_temperature_(TS2),sensor.solar_cylbottomtemp SM50,solar,162,solarpump,pump (PS1),boolean, ,false,binary_sensor.solar_pump_(PS1),binary_sensor.solar_solarpump -SM50,solar,162,pumpworktime,pump working time,time (>=0<=65533),minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime +SM50,solar,162,pumpworktime,pump working time,time (>=0<=16777213),minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime SM50,solar,162,cylmaxtemp,maximum cylinder temperature,uint (>=0<=254),C,true,number.solar_maximum_cylinder_temperature,number.solar_cylmaxtemp SM50,solar,162,collectorshutdown,collector shutdown,boolean, ,false,binary_sensor.solar_collector_shutdown,binary_sensor.solar_collectorshutdown SM50,solar,162,cylheated,cyl heated,boolean, ,false,binary_sensor.solar_cyl_heated,binary_sensor.solar_cylheated @@ -3794,11 +4111,11 @@ SM50,solar,162,cylheated,cyl heated,boolean, ,false,binary_sensor.solar_cyl_heat SM50,solar,162,collectorshutdown,collector shutdown,boolean, ,false,binary_sensor.solar_collector_shutdown,binary_sensor.solar_collectorshutdown SM50,solar,162,collectormaxtemp,maximum collector temperature,uint (>=0<=254),C,true,number.solar_maximum_collector_temperature,number.solar_collectormaxtemp SM50,solar,162,collectormintemp,minimum collector temperature,uint (>=0<=254),C,true,number.solar_minimum_collector_temperature,number.solar_collectormintemp -SM50,solar,162,energylasthour,energy last hour,ulong (>=0<=39321),Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour -SM50,solar,162,energytoday,total energy today,ulong (>=0<=65533),Wh,false,sensor.solar_total_energy_today,sensor.solar_energytoday -SM50,solar,162,energytotal,total energy,ulong (>=0<=39321),kWh,false,sensor.solar_total_energy,sensor.solar_energytotal -SM50,solar,162,pump2worktime,pump 2 working time,time (>=0<=65533),minutes,false,sensor.solar_pump_2_working_time,sensor.solar_pump2worktime -SM50,solar,162,m1worktime,differential control working time,time (>=0<=65533),minutes,false,sensor.solar_differential_control_working_time,sensor.solar_m1worktime +SM50,solar,162,energylasthour,energy last hour,ulong (>=0<=1677721),Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour +SM50,solar,162,energytoday,total energy today,ulong (>=0<=16777213),Wh,false,sensor.solar_total_energy_today,sensor.solar_energytoday +SM50,solar,162,energytotal,total energy,ulong (>=0<=1677721),kWh,false,sensor.solar_total_energy,sensor.solar_energytotal +SM50,solar,162,pump2worktime,pump 2 working time,time (>=0<=16777213),minutes,false,sensor.solar_pump_2_working_time,sensor.solar_pump2worktime +SM50,solar,162,m1worktime,differential control working time,time (>=0<=16777213),minutes,false,sensor.solar_differential_control_working_time,sensor.solar_m1worktime SM50,solar,162,heattransfersystem,heattransfer system,boolean, ,true,switch.solar_heattransfer_system,switch.solar_heattransfersystem SM50,solar,162,externalcyl,external cylinder,boolean, ,true,switch.solar_external_cylinder,switch.solar_externalcyl SM50,solar,162,thermaldisinfect,thermal disinfection,boolean, ,true,switch.solar_thermal_disinfection,switch.solar_thermaldisinfect @@ -3826,7 +4143,7 @@ SM50,solar,162,swaprettemp,swap return temperature (TS15),ushort (>=0<=3199),C,f SM100/MS100,solar,163,collectortemp,collector temperature (TS1),short (>=-3199<=3199),C,false,sensor.solar_collector_temperature_(TS1),sensor.solar_collectortemp SM100/MS100,solar,163,cylbottomtemp,cylinder bottom temperature (TS2),short (>=-3199<=3199),C,false,sensor.solar_cylinder_bottom_temperature_(TS2),sensor.solar_cylbottomtemp SM100/MS100,solar,163,solarpump,pump (PS1),boolean, ,false,binary_sensor.solar_pump_(PS1),binary_sensor.solar_solarpump -SM100/MS100,solar,163,pumpworktime,pump working time,time (>=0<=65533),minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime +SM100/MS100,solar,163,pumpworktime,pump working time,time (>=0<=16777213),minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime SM100/MS100,solar,163,cylmaxtemp,maximum cylinder temperature,uint (>=0<=254),C,true,number.solar_maximum_cylinder_temperature,number.solar_cylmaxtemp SM100/MS100,solar,163,collectorshutdown,collector shutdown,boolean, ,false,binary_sensor.solar_collector_shutdown,binary_sensor.solar_collectorshutdown SM100/MS100,solar,163,cylheated,cyl heated,boolean, ,false,binary_sensor.solar_cyl_heated,binary_sensor.solar_cylheated @@ -3850,11 +4167,11 @@ SM100/MS100,solar,163,cylheated,cyl heated,boolean, ,false,binary_sensor.solar_c SM100/MS100,solar,163,collectorshutdown,collector shutdown,boolean, ,false,binary_sensor.solar_collector_shutdown,binary_sensor.solar_collectorshutdown SM100/MS100,solar,163,collectormaxtemp,maximum collector temperature,uint (>=0<=254),C,true,number.solar_maximum_collector_temperature,number.solar_collectormaxtemp SM100/MS100,solar,163,collectormintemp,minimum collector temperature,uint (>=0<=254),C,true,number.solar_minimum_collector_temperature,number.solar_collectormintemp -SM100/MS100,solar,163,energylasthour,energy last hour,ulong (>=0<=39321),Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour -SM100/MS100,solar,163,energytoday,total energy today,ulong (>=0<=65533),Wh,false,sensor.solar_total_energy_today,sensor.solar_energytoday -SM100/MS100,solar,163,energytotal,total energy,ulong (>=0<=39321),kWh,false,sensor.solar_total_energy,sensor.solar_energytotal -SM100/MS100,solar,163,pump2worktime,pump 2 working time,time (>=0<=65533),minutes,false,sensor.solar_pump_2_working_time,sensor.solar_pump2worktime -SM100/MS100,solar,163,m1worktime,differential control working time,time (>=0<=65533),minutes,false,sensor.solar_differential_control_working_time,sensor.solar_m1worktime +SM100/MS100,solar,163,energylasthour,energy last hour,ulong (>=0<=1677721),Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour +SM100/MS100,solar,163,energytoday,total energy today,ulong (>=0<=16777213),Wh,false,sensor.solar_total_energy_today,sensor.solar_energytoday +SM100/MS100,solar,163,energytotal,total energy,ulong (>=0<=1677721),kWh,false,sensor.solar_total_energy,sensor.solar_energytotal +SM100/MS100,solar,163,pump2worktime,pump 2 working time,time (>=0<=16777213),minutes,false,sensor.solar_pump_2_working_time,sensor.solar_pump2worktime +SM100/MS100,solar,163,m1worktime,differential control working time,time (>=0<=16777213),minutes,false,sensor.solar_differential_control_working_time,sensor.solar_m1worktime SM100/MS100,solar,163,heattransfersystem,heattransfer system,boolean, ,true,switch.solar_heattransfer_system,switch.solar_heattransfersystem SM100/MS100,solar,163,externalcyl,external cylinder,boolean, ,true,switch.solar_external_cylinder,switch.solar_externalcyl SM100/MS100,solar,163,thermaldisinfect,thermal disinfection,boolean, ,true,switch.solar_thermal_disinfection,switch.solar_thermaldisinfect @@ -3882,7 +4199,7 @@ SM100/MS100,solar,163,swaprettemp,swap return temperature (TS15),ushort (>=0<=31 SM200/MS200,solar,164,collectortemp,collector temperature (TS1),short (>=-3199<=3199),C,false,sensor.solar_collector_temperature_(TS1),sensor.solar_collectortemp SM200/MS200,solar,164,cylbottomtemp,cylinder bottom temperature (TS2),short (>=-3199<=3199),C,false,sensor.solar_cylinder_bottom_temperature_(TS2),sensor.solar_cylbottomtemp SM200/MS200,solar,164,solarpump,pump (PS1),boolean, ,false,binary_sensor.solar_pump_(PS1),binary_sensor.solar_solarpump -SM200/MS200,solar,164,pumpworktime,pump working time,time (>=0<=65533),minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime +SM200/MS200,solar,164,pumpworktime,pump working time,time (>=0<=16777213),minutes,false,sensor.solar_pump_working_time,sensor.solar_pumpworktime SM200/MS200,solar,164,cylmaxtemp,maximum cylinder temperature,uint (>=0<=254),C,true,number.solar_maximum_cylinder_temperature,number.solar_cylmaxtemp SM200/MS200,solar,164,collectorshutdown,collector shutdown,boolean, ,false,binary_sensor.solar_collector_shutdown,binary_sensor.solar_collectorshutdown SM200/MS200,solar,164,cylheated,cyl heated,boolean, ,false,binary_sensor.solar_cyl_heated,binary_sensor.solar_cylheated @@ -3906,11 +4223,11 @@ SM200/MS200,solar,164,cylheated,cyl heated,boolean, ,false,binary_sensor.solar_c SM200/MS200,solar,164,collectorshutdown,collector shutdown,boolean, ,false,binary_sensor.solar_collector_shutdown,binary_sensor.solar_collectorshutdown SM200/MS200,solar,164,collectormaxtemp,maximum collector temperature,uint (>=0<=254),C,true,number.solar_maximum_collector_temperature,number.solar_collectormaxtemp SM200/MS200,solar,164,collectormintemp,minimum collector temperature,uint (>=0<=254),C,true,number.solar_minimum_collector_temperature,number.solar_collectormintemp -SM200/MS200,solar,164,energylasthour,energy last hour,ulong (>=0<=39321),Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour -SM200/MS200,solar,164,energytoday,total energy today,ulong (>=0<=65533),Wh,false,sensor.solar_total_energy_today,sensor.solar_energytoday -SM200/MS200,solar,164,energytotal,total energy,ulong (>=0<=39321),kWh,false,sensor.solar_total_energy,sensor.solar_energytotal -SM200/MS200,solar,164,pump2worktime,pump 2 working time,time (>=0<=65533),minutes,false,sensor.solar_pump_2_working_time,sensor.solar_pump2worktime -SM200/MS200,solar,164,m1worktime,differential control working time,time (>=0<=65533),minutes,false,sensor.solar_differential_control_working_time,sensor.solar_m1worktime +SM200/MS200,solar,164,energylasthour,energy last hour,ulong (>=0<=1677721),Wh,false,sensor.solar_energy_last_hour,sensor.solar_energylasthour +SM200/MS200,solar,164,energytoday,total energy today,ulong (>=0<=16777213),Wh,false,sensor.solar_total_energy_today,sensor.solar_energytoday +SM200/MS200,solar,164,energytotal,total energy,ulong (>=0<=1677721),kWh,false,sensor.solar_total_energy,sensor.solar_energytotal +SM200/MS200,solar,164,pump2worktime,pump 2 working time,time (>=0<=16777213),minutes,false,sensor.solar_pump_2_working_time,sensor.solar_pump2worktime +SM200/MS200,solar,164,m1worktime,differential control working time,time (>=0<=16777213),minutes,false,sensor.solar_differential_control_working_time,sensor.solar_m1worktime SM200/MS200,solar,164,heattransfersystem,heattransfer system,boolean, ,true,switch.solar_heattransfer_system,switch.solar_heattransfersystem SM200/MS200,solar,164,externalcyl,external cylinder,boolean, ,true,switch.solar_external_cylinder,switch.solar_externalcyl SM200/MS200,solar,164,thermaldisinfect,thermal disinfection,boolean, ,true,switch.solar_thermal_disinfection,switch.solar_thermaldisinfect @@ -4001,6 +4318,18 @@ WM10,switch,71,activated,activated,boolean, ,false,binary_sensor.switch_activate WM10,switch,71,flowtemphc,flow temperature (TC1),ushort (>=0<=3199),C,false,sensor.switch_flow_temperature_(TC1),sensor.switch_flowtemphc WM10,switch,71,status,status,int (>=-126<=126), ,false,sensor.switch_status,sensor.switch_status Rego 3000,controller,240,datetime,date/time,string, ,false,sensor.controller_date/time,sensor.controller_datetime +EM10,alert,74,setflowtemp,set flow temperature,uint (>=0<=254),C,false,sensor.alert_set_flow_temperature,sensor.alert_setflowtemp +EM10,alert,74,setburnpow,burner set power,uint (>=0<=100),%,false,sensor.alert_burner_set_power,sensor.alert_setburnpow +EM10/EM100,extension,243,flowtempvf,flow temperature in header (T0/Vf),short (>=-3199<=3199),C,false,sensor.extension_flow_temperature_in_header_(T0/Vf),sensor.extension_flowtempvf +EM10/EM100,extension,243,input,input,uint (>=0<=25),V,false,sensor.extension_input,sensor.extension_input +EM10/EM100,extension,243,outpow,output IO1,uint (>=0<=100),%,false,sensor.extension_output_IO1,sensor.extension_outpow +EM10/EM100,extension,243,setpower,request power,uint (>=0<=100),%,false,sensor.extension_request_power,sensor.extension_setpower +EM10/EM100,extension,243,setpoint,set temp.,uint (>=0<=254),C,false,sensor.extension_set_temp.,sensor.extension_setpoint +EM10/EM100,extension,243,minv,min volt.,uint (>=0<=25),V,true,number.extension_min_volt.,number.extension_minv +EM10/EM100,extension,243,maxv,max volt.,uint (>=0<=25),V,true,number.extension_max_volt.,number.extension_maxv +EM10/EM100,extension,243,mint,min temp.,uint (>=0<=254),C,true,number.extension_min_temp.,number.extension_mint +EM10/EM100,extension,243,maxt,max temp.,uint (>=0<=254),C,true,number.extension_max_temp.,number.extension_maxt +EM10/EM100,extension,243,mode,mode,uint (>=0<=254), ,false,sensor.extension_mode,sensor.extension_mode Logavent HRV176,ventilation,231,outfresh,outdoor fresh air,short (>=-3199<=3199),C,false,sensor.ventilation_outdoor_fresh_air,sensor.ventilation_outfresh Logavent HRV176,ventilation,231,infresh,indoor fresh air,short (>=-3199<=3199),C,false,sensor.ventilation_indoor_fresh_air,sensor.ventilation_infresh Logavent HRV176,ventilation,231,outexhaust,outdoor exhaust air,short (>=-3199<=3199),C,false,sensor.ventilation_outdoor_exhaust_air,sensor.ventilation_outexhaust @@ -4009,3 +4338,4 @@ Logavent HRV176,ventilation,231,ventinspeed,in blower speed,uint (>=0<=100),%,fa Logavent HRV176,ventilation,231,ventoutspeed,out blower speed,uint (>=0<=100),%,false,sensor.ventilation_out_blower_speed,sensor.ventilation_ventoutspeed Logavent HRV176,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 Logavent HRV176,ventilation,231,airquality,air quality (voc),ushort (>=0<=31999), ,false,sensor.ventilation_air_quality_(voc),sensor.ventilation_airquality +Logavent HRV176,ventilation,231,airhumidity,relative air humidity,uint (>=0<=100),%,false,sensor.ventilation_relative_air_humidity,sensor.ventilation_airhumidity diff --git a/interface/package.json b/interface/package.json index b0d378263..c84bd3b09 100644 --- a/interface/package.json +++ b/interface/package.json @@ -27,13 +27,13 @@ "@mui/icons-material": "^5.14.18", "@mui/material": "^5.14.18", "@table-library/react-table-library": "4.1.7", - "@types/imagemin": "^8.0.4", + "@types/imagemin": "^8.0.5", "@types/lodash-es": "^4.17.11", - "@types/node": "^20.9.2", - "@types/react": "^18.2.37", - "@types/react-dom": "^18.2.15", + "@types/node": "^20.9.3", + "@types/react": "^18.2.38", + "@types/react-dom": "^18.2.16", "@types/react-router-dom": "^5.3.3", - "alova": "^2.13.1", + "alova": "^2.13.2", "async-validator": "^4.2.5", "history": "^5.3.0", "jwt-decode": "^4.0.0", @@ -47,13 +47,13 @@ "react-toastify": "^9.1.3", "sockette": "^2.0.6", "typesafe-i18n": "^5.26.2", - "typescript": "^5.2.2" + "typescript": "^5.3.2" }, "devDependencies": { "@preact/compat": "^17.1.2", "@preact/preset-vite": "^2.7.0", - "@typescript-eslint/eslint-plugin": "^6.11.0", - "@typescript-eslint/parser": "^6.11.0", + "@typescript-eslint/eslint-plugin": "^6.12.0", + "@typescript-eslint/parser": "^6.12.0", "concurrently": "^8.2.2", "eslint": "^8.54.0", "eslint-config-airbnb": "^19.0.4", diff --git a/interface/yarn.lock b/interface/yarn.lock index e980015d4..a0447cd7b 100644 --- a/interface/yarn.lock +++ b/interface/yarn.lock @@ -1414,12 +1414,12 @@ __metadata: languageName: node linkType: hard -"@types/imagemin@npm:^8.0.4": - version: 8.0.4 - resolution: "@types/imagemin@npm:8.0.4" +"@types/imagemin@npm:^8.0.5": + version: 8.0.5 + resolution: "@types/imagemin@npm:8.0.5" dependencies: "@types/node": "npm:*" - checksum: 29c490a18aced93634d9e0b7cb240041cb540bd0bc596c23af4e05be0a3db0681508599a8b6863b025cf91b0a6ca948496bebe041fcd8e90424594f1c562ca9b + checksum: 7d492a0953b932546ff952370f21f62067a2311809f6e6c23288745e6e7ec70e2dad443a455e4ab1b63e6e8d9780cbe4dfc3f3519a6e78d6812b55dc642706ac languageName: node linkType: hard @@ -1478,12 +1478,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^20.9.2": - version: 20.9.2 - resolution: "@types/node@npm:20.9.2" +"@types/node@npm:^20.9.3": + version: 20.9.3 + resolution: "@types/node@npm:20.9.3" dependencies: undici-types: "npm:~5.26.4" - checksum: 8bab2870bfc02efc988c53dfb0149634f8feb824132cc7f20b36f3d55d89ef893e3a43d545524a5cb3a284f4ce68ae4181d75a4a39cee6b79c586d719e6b7461 + checksum: 5d2a3a6b2b900814eab8c5093dabb7aa10895928719ec0074b9ac5584bcc83f5b680e2d2cb6c8b9751511b7b1b7fdd8586d2fc827b156f0263fdb65c4741bdef languageName: node linkType: hard @@ -1508,12 +1508,12 @@ __metadata: languageName: node linkType: hard -"@types/react-dom@npm:^18.2.15": - version: 18.2.15 - resolution: "@types/react-dom@npm:18.2.15" +"@types/react-dom@npm:^18.2.16": + version: 18.2.16 + resolution: "@types/react-dom@npm:18.2.16" dependencies: "@types/react": "npm:*" - checksum: 57ea7e9e210d95fa18fde82fc585cb6252c9118c8793a38b37b07ccbba05d09d14f88cf76af46eecda41c430b4400f789a4bbc505eec459a15cbaf13f56f887a + checksum: c0be61864a9f50bb8cd29c719d170b03b36149f4fbe308faa40194d15492c4a13814a2f344fc5ceb99b4747bfa11cdfb2d15a141ed37218a32ec0edf98b90f2b languageName: node linkType: hard @@ -1558,14 +1558,14 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:^18.2.37": - version: 18.2.37 - resolution: "@types/react@npm:18.2.37" +"@types/react@npm:^18.2.38": + version: 18.2.38 + resolution: "@types/react@npm:18.2.38" dependencies: "@types/prop-types": "npm:*" "@types/scheduler": "npm:*" csstype: "npm:^3.0.2" - checksum: fab3a5960e710aad6c16ffe57f48a470c6bbbe9e6363f70accf114191ea3192a204e33b5657324f14e64b2095986327db6b728fc15156e05f7d30b6dca0d66a3 + checksum: 9f9b9925c979e848d572dce6fff34951708127ba6b1fd4306c93fbcab74f5c6cff2b2e47d4222339eeb6c19d264e93450cb2ad6b255c73c536d0a1e2093cc98a languageName: node linkType: hard @@ -1601,15 +1601,15 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^6.11.0": - version: 6.11.0 - resolution: "@typescript-eslint/eslint-plugin@npm:6.11.0" +"@typescript-eslint/eslint-plugin@npm:^6.12.0": + version: 6.12.0 + resolution: "@typescript-eslint/eslint-plugin@npm:6.12.0" dependencies: "@eslint-community/regexpp": "npm:^4.5.1" - "@typescript-eslint/scope-manager": "npm:6.11.0" - "@typescript-eslint/type-utils": "npm:6.11.0" - "@typescript-eslint/utils": "npm:6.11.0" - "@typescript-eslint/visitor-keys": "npm:6.11.0" + "@typescript-eslint/scope-manager": "npm:6.12.0" + "@typescript-eslint/type-utils": "npm:6.12.0" + "@typescript-eslint/utils": "npm:6.12.0" + "@typescript-eslint/visitor-keys": "npm:6.12.0" debug: "npm:^4.3.4" graphemer: "npm:^1.4.0" ignore: "npm:^5.2.4" @@ -1622,44 +1622,44 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: c9c9e7a918e2f3ef8cb200c9158b70553a1014529867411b35e141c1d26713dd281907af1a231e640e8c4c73c3245a20cfc0e56a1cc95874889ce88c04706c78 + checksum: 1b9d2bb88f3e793067d7ec1e24e11b9d22891314bd5ebdef80a11a0ddde19f5c052b341e2f2c8a466b3af48e492f1028023566feaeb10a826d3928380c3d3d88 languageName: node linkType: hard -"@typescript-eslint/parser@npm:^6.11.0": - version: 6.11.0 - resolution: "@typescript-eslint/parser@npm:6.11.0" +"@typescript-eslint/parser@npm:^6.12.0": + version: 6.12.0 + resolution: "@typescript-eslint/parser@npm:6.12.0" dependencies: - "@typescript-eslint/scope-manager": "npm:6.11.0" - "@typescript-eslint/types": "npm:6.11.0" - "@typescript-eslint/typescript-estree": "npm:6.11.0" - "@typescript-eslint/visitor-keys": "npm:6.11.0" + "@typescript-eslint/scope-manager": "npm:6.12.0" + "@typescript-eslint/types": "npm:6.12.0" + "@typescript-eslint/typescript-estree": "npm:6.12.0" + "@typescript-eslint/visitor-keys": "npm:6.12.0" debug: "npm:^4.3.4" peerDependencies: eslint: ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: abb2aff0d4f06937337d1b2da77df4e1501d708b0bce1707c523206ee10e6aa732e1ae6548da56b9889459f23c375a6f0ae2e3a208e972dab8eb3b46680d839a + checksum: 2e33b581bcf882336bd4734e90a90dc3618960f8c07f5f7d16e4f3a0f00af97d3b3c8adc366170e1d9c8afd922068b3cfc5e9e997fd4ca6ebcb7c46a9e5b30a1 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:6.11.0": - version: 6.11.0 - resolution: "@typescript-eslint/scope-manager@npm:6.11.0" +"@typescript-eslint/scope-manager@npm:6.12.0": + version: 6.12.0 + resolution: "@typescript-eslint/scope-manager@npm:6.12.0" dependencies: - "@typescript-eslint/types": "npm:6.11.0" - "@typescript-eslint/visitor-keys": "npm:6.11.0" - checksum: 60702ab23710c59ab0b52ffc66f77e24382cec8f684e3e43d4269cc17f414d3cb3a3bb85e232ea9f1e0f7e85506529978a5eea3c08945c01ed7aed4d4997b472 + "@typescript-eslint/types": "npm:6.12.0" + "@typescript-eslint/visitor-keys": "npm:6.12.0" + checksum: 46c4a5575fbbb70a800934c93e89795cceef268a140b786a8d22615a0577a5356e42e316dfb23dbb43cec7271b480e712e3127ba33642040bd292fbb6a5de278 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:6.11.0": - version: 6.11.0 - resolution: "@typescript-eslint/type-utils@npm:6.11.0" +"@typescript-eslint/type-utils@npm:6.12.0": + version: 6.12.0 + resolution: "@typescript-eslint/type-utils@npm:6.12.0" dependencies: - "@typescript-eslint/typescript-estree": "npm:6.11.0" - "@typescript-eslint/utils": "npm:6.11.0" + "@typescript-eslint/typescript-estree": "npm:6.12.0" + "@typescript-eslint/utils": "npm:6.12.0" debug: "npm:^4.3.4" ts-api-utils: "npm:^1.0.1" peerDependencies: @@ -1667,23 +1667,23 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 478819bbbab39a0d11dc6276fc9b90e0b2576d7e32d761c811369657dc12bfaf95084bf951714ea82015259d736dec70770d229d6547b066ea0fc4133039082f + checksum: e92709a0ea5d5aee86def3da40fe4190235d3560f41e77a73d4bc10f6f59e0df367d5a1263d4e05aa44af4deb158ca6f37b09e483248e341a38fd5e2e8b70f72 languageName: node linkType: hard -"@typescript-eslint/types@npm:6.11.0": - version: 6.11.0 - resolution: "@typescript-eslint/types@npm:6.11.0" - checksum: 3ea55101325950d9594f839b38aa1c0958c3b8401ca9a8d2e4247997bb30dff7ac5e760e888de48a3ea9af3cb656eafb3e2cddc837a523a300ebccb63e150185 +"@typescript-eslint/types@npm:6.12.0": + version: 6.12.0 + resolution: "@typescript-eslint/types@npm:6.12.0" + checksum: e52f12d01e2f543927fde985d709616dec1ef310da3a00e3d239874752ba7635e04d325e2a7cf6403d19977282f15fed7629d2477aeeb57df9140fa424f530fe languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:6.11.0": - version: 6.11.0 - resolution: "@typescript-eslint/typescript-estree@npm:6.11.0" +"@typescript-eslint/typescript-estree@npm:6.12.0": + version: 6.12.0 + resolution: "@typescript-eslint/typescript-estree@npm:6.12.0" dependencies: - "@typescript-eslint/types": "npm:6.11.0" - "@typescript-eslint/visitor-keys": "npm:6.11.0" + "@typescript-eslint/types": "npm:6.12.0" + "@typescript-eslint/visitor-keys": "npm:6.12.0" debug: "npm:^4.3.4" globby: "npm:^11.1.0" is-glob: "npm:^4.0.3" @@ -1692,34 +1692,34 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 9d2333e517d50035f2c962b3966ebf8b35db0ac139c537cf4f1c4fd7b8d8914671671ad3bccdd59ef88fc4d29f441c0412a6c119ac6463bd2fbe8059d5209219 + checksum: 16f327faf736becb145894380e059a68a993b14fdf6dab50c5b79ff3c027a1e1a61274742f44f6ecd9ebbfadfc55559f94fad52e1596e1ed2656a3053367de85 languageName: node linkType: hard -"@typescript-eslint/utils@npm:6.11.0": - version: 6.11.0 - resolution: "@typescript-eslint/utils@npm:6.11.0" +"@typescript-eslint/utils@npm:6.12.0": + version: 6.12.0 + resolution: "@typescript-eslint/utils@npm:6.12.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.4.0" "@types/json-schema": "npm:^7.0.12" "@types/semver": "npm:^7.5.0" - "@typescript-eslint/scope-manager": "npm:6.11.0" - "@typescript-eslint/types": "npm:6.11.0" - "@typescript-eslint/typescript-estree": "npm:6.11.0" + "@typescript-eslint/scope-manager": "npm:6.12.0" + "@typescript-eslint/types": "npm:6.12.0" + "@typescript-eslint/typescript-estree": "npm:6.12.0" semver: "npm:^7.5.4" peerDependencies: eslint: ^7.0.0 || ^8.0.0 - checksum: 7b8c17bd191b06cc77fe341f32fb7b4126d47a6ec05e5112567d4424a1896cf851935ff867c825d7e3361c317a48fe5304f95e454089f9aecc182bd42b1e4176 + checksum: 84091ddc0f0cceb5d0a2e366139d65413867cf648f805355ab4a42ee273cdd691b9083084d1c1feb9cb3c1934c1ed338fbf92146c738a96b84de3d2ec2dfdec5 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:6.11.0": - version: 6.11.0 - resolution: "@typescript-eslint/visitor-keys@npm:6.11.0" +"@typescript-eslint/visitor-keys@npm:6.12.0": + version: 6.12.0 + resolution: "@typescript-eslint/visitor-keys@npm:6.12.0" dependencies: - "@typescript-eslint/types": "npm:6.11.0" + "@typescript-eslint/types": "npm:6.12.0" eslint-visitor-keys: "npm:^3.4.1" - checksum: d89ef8579737f23a1a81506724e2c5cfec92fa4431232f93c4b6970a21382c6c0ad09ba21ffe8d25725d43aecce351fee2797c9170012ef0c00e5be7592e8233 + checksum: edf3537c8176059e8fdea680c10f85a635e427fb5caa6f88473077f50edbec7b011b0dc1e4499543519085559268d30a166b1cb160d30a1315ef818fc181a6a4 languageName: node linkType: hard @@ -1743,15 +1743,15 @@ __metadata: "@preact/compat": "npm:^17.1.2" "@preact/preset-vite": "npm:^2.7.0" "@table-library/react-table-library": "npm:4.1.7" - "@types/imagemin": "npm:^8.0.4" + "@types/imagemin": "npm:^8.0.5" "@types/lodash-es": "npm:^4.17.11" - "@types/node": "npm:^20.9.2" - "@types/react": "npm:^18.2.37" - "@types/react-dom": "npm:^18.2.15" + "@types/node": "npm:^20.9.3" + "@types/react": "npm:^18.2.38" + "@types/react-dom": "npm:^18.2.16" "@types/react-router-dom": "npm:^5.3.3" - "@typescript-eslint/eslint-plugin": "npm:^6.11.0" - "@typescript-eslint/parser": "npm:^6.11.0" - alova: "npm:^2.13.1" + "@typescript-eslint/eslint-plugin": "npm:^6.12.0" + "@typescript-eslint/parser": "npm:^6.12.0" + alova: "npm:^2.13.2" async-validator: "npm:^4.2.5" concurrently: "npm:^8.2.2" eslint: "npm:^8.54.0" @@ -1781,7 +1781,7 @@ __metadata: sockette: "npm:^2.0.6" terser: "npm:^5.24.0" typesafe-i18n: "npm:^5.26.2" - typescript: "npm:^5.2.2" + typescript: "npm:^5.3.2" vite: "npm:^5.0.0" vite-plugin-imagemin: "npm:^0.6.1" vite-tsconfig-paths: "npm:^4.2.1" @@ -1853,10 +1853,10 @@ __metadata: languageName: node linkType: hard -"alova@npm:^2.13.1": - version: 2.13.1 - resolution: "alova@npm:2.13.1" - checksum: f0ef3ac891aa26d4cc125b8e601f8efac2517109ecfb75598e6ecb0872fb8e0c62d1dfc633b7920e6f57deaec377489e828960968c4534b6ab7f69ff7e29af6e +"alova@npm:^2.13.2": + version: 2.13.2 + resolution: "alova@npm:2.13.2" + checksum: 09d3949b20094833ae9a2861b7408b6697e2e7fa677d6bbb31a7c43a756bef1033a999a9aa94aff94f392eb5186f9ae2e63a381560fd42c59987948740f6a043 languageName: node linkType: hard @@ -8362,23 +8362,23 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^5.2.2": - version: 5.2.2 - resolution: "typescript@npm:5.2.2" +"typescript@npm:^5.3.2": + version: 5.3.2 + resolution: "typescript@npm:5.3.2" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: d65e50eb849bd21ff8677e5b9447f9c6e74777e346afd67754934264dcbf4bd59e7d2473f6062d9a015d66bd573311166357e3eb07fea0b52859cf9bb2b58555 + checksum: 415e5fb6611f5713e460bad48039f00bcfdbde53a2f911727862d5aa9c5d5edd250059a419df382d8f031709e15a169c41eb62b6a401da5eec7ac0f4e359d6ac languageName: node linkType: hard -"typescript@patch:typescript@npm%3A^5.2.2#optional!builtin": - version: 5.2.2 - resolution: "typescript@patch:typescript@npm%3A5.2.2#optional!builtin::version=5.2.2&hash=f3b441" +"typescript@patch:typescript@npm%3A^5.3.2#optional!builtin": + version: 5.3.2 + resolution: "typescript@patch:typescript@npm%3A5.3.2#optional!builtin::version=5.3.2&hash=e012d7" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: f79cc2ba802c94c2b78dbb00d767a10adb67368ae764709737dc277273ec148aa4558033a03ce901406b35fddf4eac46dabc94a1e1d12d2587e2b9cfe5707b4a + checksum: 1b45cdfb577a78ae7a9a9d0b77a7b772142cb98ba05e4e5aefba7044a028ded885bcecef63166407a5986645cea816fe4986894336aacd5e791796ea79a6a7ed languageName: node linkType: hard diff --git a/src/version.h b/src/version.h index 29351a9ae..b7afb6a19 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.6.4-dev.0" +#define EMSESP_APP_VERSION "3.6.4-dev.1" From 4db1c7dfca245f7b597edb140cf7300d5fbe97b0 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Tue, 21 Nov 2023 11:25:25 +0100 Subject: [PATCH 48/91] add boostmode/time #1446 --- src/devices/thermostat.cpp | 31 +++++++++++++++++++++++++++++++ src/devices/thermostat.h | 4 ++++ src/locale_translations.h | 2 ++ 3 files changed, 37 insertions(+) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 7faac02e2..769abe751 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -1050,6 +1050,8 @@ void Thermostat::process_RC300Set(std::shared_ptr telegram) { has_update(telegram, hc->reducetemp, 9); has_update(telegram, hc->noreducetemp, 12); has_update(telegram, hc->remoteseltemp, 17); // see https://github.com/emsesp/EMS-ESP32/issues/590 + has_update(telegram, hc->boost, 23); + has_update(telegram, hc->boosttime, 24); has_update(telegram, hc->cooling, 28); } @@ -2668,7 +2670,34 @@ bool Thermostat::set_switchonoptimization(const char * value, const int8_t id) { write_command(curve_typeids[hc->hc()], 4, b ? 0xFF : 0x00, curve_typeids[hc->hc()]); return true; } +bool Thermostat::set_boost(const char * value, const int8_t id) { + uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id; + std::shared_ptr hc = heating_circuit(hc_num); + if (hc == nullptr) { + return false; + } + bool b; + if (!Helpers::value2bool(value, b)) { + return false; + } + write_command(set_typeids[hc->hc()], 23, b ? 0xFF : 0x00, set_typeids[hc->hc()]); + return true; +} +bool Thermostat::set_boosttime(const char * value, const int8_t id) { + uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id; + std::shared_ptr hc = heating_circuit(hc_num); + if (hc == nullptr) { + return false; + } + int v; + if (!Helpers::value2number(value, v)) { + return false; + } + write_command(set_typeids[hc->hc()], 24, (uint8_t)v, set_typeids[hc->hc()]); + return true; + +} // sets the thermostat reducemode for RC35 and RC310 bool Thermostat::set_reducemode(const char * value, const int8_t id) { @@ -4270,6 +4299,8 @@ void Thermostat::register_device_values_hc(std::shared_ptrremotehum, DeviceValueType::UINT, FL_(remotehum), DeviceValueUOM::PERCENT, MAKE_CF_CB(set_remotehum), -1, 101); + register_device_value(tag, &hc->boost, DeviceValueType::BOOL, FL_(boost), DeviceValueUOM::NONE, MAKE_CF_CB(set_boost)); + register_device_value(tag, &hc->boosttime, DeviceValueType::UINT, FL_(boosttime), DeviceValueUOM::HOURS, MAKE_CF_CB(set_boosttime)); break; case EMS_DEVICE_FLAG_CRF: diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index 3ad8bec68..27c694936 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -98,6 +98,8 @@ class Thermostat : public EMSdevice { uint8_t hpmode; uint8_t cooling; uint8_t coolingon; + uint8_t boost; + uint8_t boosttime; uint8_t hc_num() const { return hc_num_; @@ -439,6 +441,8 @@ class Thermostat : public EMSdevice { bool set_wwprio(const char * value, const int8_t id); bool set_fastheatup(const char * value, const int8_t id); bool set_switchonoptimization(const char * value, const int8_t id); + bool set_boost(const char * value, const int8_t id); + bool set_boosttime(const char * value, const int8_t id); inline bool set_temp(const char * value, const int8_t id) { return set_temperature_value(value, id, HeatingCircuit::Mode::AUTO); diff --git a/src/locale_translations.h b/src/locale_translations.h index 033effe57..75e3d3486 100644 --- a/src/locale_translations.h +++ b/src/locale_translations.h @@ -455,6 +455,8 @@ MAKE_TRANSLATION(wwAlternatingOper, "wwalternatingop", "alternating operation", MAKE_TRANSLATION(wwAltOpPrioHeat, "wwaltopprioheat", "prioritise heating during dhw", "Heizen bevorzugt vor WW", "Proriteit verwarming boven ww", "", "czas na ogrzewanie w trakcie c.w.u", "prioritert oppvarmning", "", "sıcak kullanım suyu esnasında ısıtmayı öne al", "dare la priorità al riscaldamento durante l'ACS") // TODO translate MAKE_TRANSLATION(wwAltOpPrioWw, "wwaltopprioww", "prioritise dhw during heating", "WW bevorzugt vor Heizen", "Prioriteit ww boven verwarming", "", "czas na c.w.u w trakcie ogrzewania", "prioritert varmtvann", "", "ısıtma esnasında sıcak kullanım suyunu öne al", "dare priorità all'acqua calda durante il riscaldamento") // TODO translate MAKE_TRANSLATION(hpEA0, "hpea0", "condensate reservoir heating (EA0)", "Heizung Kondensatwanne (EA0)", "", "", "", "", "", "", "") // TODO translate +MAKE_TRANSLATION(boost, "boost", "boost mode", "Boost", "", "", "", "", "", "", "") // TODO translate +MAKE_TRANSLATION(boosttime, "boosttime", "boost time", "Boost Dauer", "", "", "", "", "", "", "") // TODO translate // hybrid heatpump MAKE_TRANSLATION(hybridStrategy, "hybridstrategy", "hybrid control strategy", "Hybrid Strategie", "Hybride strategie", "Hybrid kontrollstrategi", "strategia sterowania hybrydowego", "hybrid kontrollstrategi", "stratégie contrôle hybride", "hibrit kontrol stratejisi", "strategia comtrollo ibrido") From 4dcfe8e0f687ed2ae3ed5eb4112bda53285603f5 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Tue, 21 Nov 2023 21:58:10 +0100 Subject: [PATCH 49/91] get mode for seltemp, fix #1450 --- src/devices/thermostat.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 7faac02e2..555b8cffe 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -479,8 +479,10 @@ uint8_t Thermostat::HeatingCircuit::get_mode() const { } } else if ((model == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model == EMSdevice::EMS_DEVICE_FLAG_RC100)) { if (mode == 0) { - return HeatingCircuit::Mode::MANUAL; + return HeatingCircuit::Mode::OFF; } else if (mode == 1) { + return HeatingCircuit::Mode::MANUAL; + } else { return HeatingCircuit::Mode::AUTO; } } else if (model == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) { From a2eb8dfe83cc370437447e164be715367206442b Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 22 Nov 2023 07:37:32 +0100 Subject: [PATCH 50/91] update packages --- interface/package.json | 8 ++++---- interface/yarn.lock | 40 ++++++++++++++++++++-------------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/interface/package.json b/interface/package.json index c84bd3b09..50eb2bd15 100644 --- a/interface/package.json +++ b/interface/package.json @@ -28,10 +28,10 @@ "@mui/material": "^5.14.18", "@table-library/react-table-library": "4.1.7", "@types/imagemin": "^8.0.5", - "@types/lodash-es": "^4.17.11", - "@types/node": "^20.9.3", + "@types/lodash-es": "^4.17.12", + "@types/node": "^20.9.4", "@types/react": "^18.2.38", - "@types/react-dom": "^18.2.16", + "@types/react-dom": "^18.2.17", "@types/react-router-dom": "^5.3.3", "alova": "^2.13.2", "async-validator": "^4.2.5", @@ -70,7 +70,7 @@ "prettier": "^3.1.0", "rollup-plugin-visualizer": "^5.9.2", "terser": "^5.24.0", - "vite": "^5.0.0", + "vite": "^5.0.2", "vite-plugin-imagemin": "^0.6.1", "vite-tsconfig-paths": "^4.2.1" }, diff --git a/interface/yarn.lock b/interface/yarn.lock index a0447cd7b..12c63413c 100644 --- a/interface/yarn.lock +++ b/interface/yarn.lock @@ -1446,12 +1446,12 @@ __metadata: languageName: node linkType: hard -"@types/lodash-es@npm:^4.17.11": - version: 4.17.11 - resolution: "@types/lodash-es@npm:4.17.11" +"@types/lodash-es@npm:^4.17.12": + version: 4.17.12 + resolution: "@types/lodash-es@npm:4.17.12" dependencies: "@types/lodash": "npm:*" - checksum: 87516f652eb13a544590351dd1986df37929c83d3393491c1b5f0e8d36a604ed9c00d4da9c77df052f38affd9bac33a4534ec52f679989e38bedb595fbbc23bb + checksum: 56b9a433348b11c31051c6fa9028540a033a08fb80b400c589d740446c19444d73b217cf1471d4036448ef686a83e8cf2a35d1fadcb3f2105f26701f94aebb07 languageName: node linkType: hard @@ -1478,12 +1478,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^20.9.3": - version: 20.9.3 - resolution: "@types/node@npm:20.9.3" +"@types/node@npm:^20.9.4": + version: 20.9.4 + resolution: "@types/node@npm:20.9.4" dependencies: undici-types: "npm:~5.26.4" - checksum: 5d2a3a6b2b900814eab8c5093dabb7aa10895928719ec0074b9ac5584bcc83f5b680e2d2cb6c8b9751511b7b1b7fdd8586d2fc827b156f0263fdb65c4741bdef + checksum: d567855b48e453b443499c17fc6c939d154732b54319a05b9b31db6e475e6458f053838635b201b1bb493d349d9b1af0aecc58b28fd6062e564e9fbf593199eb languageName: node linkType: hard @@ -1508,12 +1508,12 @@ __metadata: languageName: node linkType: hard -"@types/react-dom@npm:^18.2.16": - version: 18.2.16 - resolution: "@types/react-dom@npm:18.2.16" +"@types/react-dom@npm:^18.2.17": + version: 18.2.17 + resolution: "@types/react-dom@npm:18.2.17" dependencies: "@types/react": "npm:*" - checksum: c0be61864a9f50bb8cd29c719d170b03b36149f4fbe308faa40194d15492c4a13814a2f344fc5ceb99b4747bfa11cdfb2d15a141ed37218a32ec0edf98b90f2b + checksum: fe0dbb3224b48515da8fe25559e3777d756a27c3f22903f0b1b020de8d68bd57eb1f0af62b52ee65d9632637950afed8cbad24d158c4f3d910d083d49bd73fba languageName: node linkType: hard @@ -1744,10 +1744,10 @@ __metadata: "@preact/preset-vite": "npm:^2.7.0" "@table-library/react-table-library": "npm:4.1.7" "@types/imagemin": "npm:^8.0.5" - "@types/lodash-es": "npm:^4.17.11" - "@types/node": "npm:^20.9.3" + "@types/lodash-es": "npm:^4.17.12" + "@types/node": "npm:^20.9.4" "@types/react": "npm:^18.2.38" - "@types/react-dom": "npm:^18.2.16" + "@types/react-dom": "npm:^18.2.17" "@types/react-router-dom": "npm:^5.3.3" "@typescript-eslint/eslint-plugin": "npm:^6.12.0" "@typescript-eslint/parser": "npm:^6.12.0" @@ -1782,7 +1782,7 @@ __metadata: terser: "npm:^5.24.0" typesafe-i18n: "npm:^5.26.2" typescript: "npm:^5.3.2" - vite: "npm:^5.0.0" + vite: "npm:^5.0.2" vite-plugin-imagemin: "npm:^0.6.1" vite-tsconfig-paths: "npm:^4.2.1" languageName: unknown @@ -8566,9 +8566,9 @@ __metadata: languageName: node linkType: hard -"vite@npm:^5.0.0": - version: 5.0.0 - resolution: "vite@npm:5.0.0" +"vite@npm:^5.0.2": + version: 5.0.2 + resolution: "vite@npm:5.0.2" dependencies: esbuild: "npm:^0.19.3" fsevents: "npm:~2.3.3" @@ -8602,7 +8602,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 9a247a5657330ede5c131e782f2fb2adda77d493db2d528524378706108c1560ca4fe9ec0a865e5250978f5e2649c4da690834d2aab4dbf6175f1782cff6bd03 + checksum: 74f1a6d49a02106796b5fcc04dbe4a92925fba413191718fb37485a29f606b7f80abd371a3ef6b598e8a04f05c09c0b9a5de6bf844dfecb7253798097ddaab35 languageName: node linkType: hard From 2edfe0f42c1c0aab4733cb1367cbca8a597f27ed Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 22 Nov 2023 07:37:40 +0100 Subject: [PATCH 51/91] add hpPumpMode #1449 --- src/devices/boiler.cpp | 11 +++++++++++ src/devices/boiler.h | 2 ++ src/locale_common.h | 1 + src/locale_translations.h | 1 + 4 files changed, 15 insertions(+) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 0ea71603e..0a2d334c6 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -720,6 +720,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const DeviceValueUOM::NONE, MAKE_CF_CB(set_elHeatStep3)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpEA0_, DeviceValueType::BOOL, FL_(hpEA0), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpPumpMode_, DeviceValueType::ENUM, FL_(enum_hpPumpMode), FL_(hpPumpMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_hpPumpMode)); // heatpump DHW settings register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwAlternatingOper_, @@ -1815,6 +1816,7 @@ void Boiler::process_HpValve(std::shared_ptr telegram) { void Boiler::process_HpPumps(std::shared_ptr telegram) { has_update(telegram, tempDiffHeat_, 4); // is * 10 has_update(telegram, tempDiffCool_, 3); // is * 10 + has_update(telegram, hpPumpMode_, 18); } // Boiler(0x08) -> All(0x00), ?(0x0491), data: 03 01 00 00 00 02 64 00 00 14 01 2C 00 0A 00 1E 00 1E 00 00 1E 0A 1E 05 05 @@ -2854,6 +2856,15 @@ bool Boiler::set_hpCircPumpWw(const char * value, const int8_t id) { return false; } +bool Boiler::set_hpPumpMode(const char * value, const int8_t id) { + uint8_t v; + if (Helpers::value2enum(value, v, FL_(enum_hpPumpMode))) { + write_command(0x48B, 18, v, 0x48B); + return true; + } + return false; +} + bool Boiler::set_vp_cooling(const char * value, const int8_t id) { bool v; if (Helpers::value2bool(value, v)) { diff --git a/src/devices/boiler.h b/src/devices/boiler.h index fa686b493..4ad48e2ee 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -219,6 +219,7 @@ class Boiler : public EMSdevice { uint32_t meterComp_; uint32_t meterEHeat_; uint8_t hpEA0_; + uint8_t hpPumpMode_; // Pool unit int8_t poolSetTemp_; @@ -430,6 +431,7 @@ class Boiler : public EMSdevice { bool set_manDefrost(const char * value, const int8_t id); bool set_pvCooling(const char * value, const int8_t id); bool set_hpCircPumpWw(const char * value, const int8_t id); + bool set_hpPumpMode(const char * value, const int8_t id); bool set_auxLimit(const char * value, const int8_t id); inline bool set_auxMaxLimit(const char * value, const int8_t id) { diff --git a/src/locale_common.h b/src/locale_common.h index a2d327835..f94834f5e 100644 --- a/src/locale_common.h +++ b/src/locale_common.h @@ -285,6 +285,7 @@ MAKE_ENUM(enum_flow, FL_(off), FL_(flow), FL_(bufferedflow), FL_(buffer), FL_(la MAKE_ENUM(enum_reset, FL_(dash), FL_(maintenance), FL_(error)) MAKE_ENUM(enum_maxHeat, FL_(0kW), FL_(2kW), FL_(3kW), FL_(4kW), FL_(6kW), FL_(9kW)) MAKE_ENUM(enum_pumpMode, FL_(proportional), FL_(deltaP1), FL_(deltaP2), FL_(deltaP3), FL_(deltaP4)) +MAKE_ENUM(enum_hpPumpMode, FL_(auto), FL_(continuous)) // thermostat lists MAKE_ENUM(enum_ibaMainDisplay, FL_(internal_temperature), FL_(internal_setpoint), FL_(external_temperature), FL_(burner_temperature), FL_(ww_temperature), FL_(functioning_mode), FL_(time), FL_(date), FL_(smoke_temperature)) diff --git a/src/locale_translations.h b/src/locale_translations.h index 75e3d3486..af67b3b3b 100644 --- a/src/locale_translations.h +++ b/src/locale_translations.h @@ -457,6 +457,7 @@ MAKE_TRANSLATION(wwAltOpPrioWw, "wwaltopprioww", "prioritise dhw during heating" MAKE_TRANSLATION(hpEA0, "hpea0", "condensate reservoir heating (EA0)", "Heizung Kondensatwanne (EA0)", "", "", "", "", "", "", "") // TODO translate MAKE_TRANSLATION(boost, "boost", "boost mode", "Boost", "", "", "", "", "", "", "") // TODO translate MAKE_TRANSLATION(boosttime, "boosttime", "boost time", "Boost Dauer", "", "", "", "", "", "", "") // TODO translate +MAKE_TRANSLATION(hpPumpMode, "hppumpmode", "primary heatpump mode", "Modus Hauptpumpe", "", "", "", "", "", "", "") // TODO translate // hybrid heatpump MAKE_TRANSLATION(hybridStrategy, "hybridstrategy", "hybrid control strategy", "Hybrid Strategie", "Hybride strategie", "Hybrid kontrollstrategi", "strategia sterowania hybrydowego", "hybrid kontrollstrategi", "stratégie contrôle hybride", "hibrit kontrol stratejisi", "strategia comtrollo ibrido") From 0818728c254ad36ef4e5456918c9f550adf5e834 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 22 Nov 2023 07:50:21 +0100 Subject: [PATCH 52/91] update packages --- interface/package.json | 8 ++++---- interface/yarn.lock | 40 ++++++++++++++++++++-------------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/interface/package.json b/interface/package.json index c84bd3b09..50eb2bd15 100644 --- a/interface/package.json +++ b/interface/package.json @@ -28,10 +28,10 @@ "@mui/material": "^5.14.18", "@table-library/react-table-library": "4.1.7", "@types/imagemin": "^8.0.5", - "@types/lodash-es": "^4.17.11", - "@types/node": "^20.9.3", + "@types/lodash-es": "^4.17.12", + "@types/node": "^20.9.4", "@types/react": "^18.2.38", - "@types/react-dom": "^18.2.16", + "@types/react-dom": "^18.2.17", "@types/react-router-dom": "^5.3.3", "alova": "^2.13.2", "async-validator": "^4.2.5", @@ -70,7 +70,7 @@ "prettier": "^3.1.0", "rollup-plugin-visualizer": "^5.9.2", "terser": "^5.24.0", - "vite": "^5.0.0", + "vite": "^5.0.2", "vite-plugin-imagemin": "^0.6.1", "vite-tsconfig-paths": "^4.2.1" }, diff --git a/interface/yarn.lock b/interface/yarn.lock index a0447cd7b..12c63413c 100644 --- a/interface/yarn.lock +++ b/interface/yarn.lock @@ -1446,12 +1446,12 @@ __metadata: languageName: node linkType: hard -"@types/lodash-es@npm:^4.17.11": - version: 4.17.11 - resolution: "@types/lodash-es@npm:4.17.11" +"@types/lodash-es@npm:^4.17.12": + version: 4.17.12 + resolution: "@types/lodash-es@npm:4.17.12" dependencies: "@types/lodash": "npm:*" - checksum: 87516f652eb13a544590351dd1986df37929c83d3393491c1b5f0e8d36a604ed9c00d4da9c77df052f38affd9bac33a4534ec52f679989e38bedb595fbbc23bb + checksum: 56b9a433348b11c31051c6fa9028540a033a08fb80b400c589d740446c19444d73b217cf1471d4036448ef686a83e8cf2a35d1fadcb3f2105f26701f94aebb07 languageName: node linkType: hard @@ -1478,12 +1478,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^20.9.3": - version: 20.9.3 - resolution: "@types/node@npm:20.9.3" +"@types/node@npm:^20.9.4": + version: 20.9.4 + resolution: "@types/node@npm:20.9.4" dependencies: undici-types: "npm:~5.26.4" - checksum: 5d2a3a6b2b900814eab8c5093dabb7aa10895928719ec0074b9ac5584bcc83f5b680e2d2cb6c8b9751511b7b1b7fdd8586d2fc827b156f0263fdb65c4741bdef + checksum: d567855b48e453b443499c17fc6c939d154732b54319a05b9b31db6e475e6458f053838635b201b1bb493d349d9b1af0aecc58b28fd6062e564e9fbf593199eb languageName: node linkType: hard @@ -1508,12 +1508,12 @@ __metadata: languageName: node linkType: hard -"@types/react-dom@npm:^18.2.16": - version: 18.2.16 - resolution: "@types/react-dom@npm:18.2.16" +"@types/react-dom@npm:^18.2.17": + version: 18.2.17 + resolution: "@types/react-dom@npm:18.2.17" dependencies: "@types/react": "npm:*" - checksum: c0be61864a9f50bb8cd29c719d170b03b36149f4fbe308faa40194d15492c4a13814a2f344fc5ceb99b4747bfa11cdfb2d15a141ed37218a32ec0edf98b90f2b + checksum: fe0dbb3224b48515da8fe25559e3777d756a27c3f22903f0b1b020de8d68bd57eb1f0af62b52ee65d9632637950afed8cbad24d158c4f3d910d083d49bd73fba languageName: node linkType: hard @@ -1744,10 +1744,10 @@ __metadata: "@preact/preset-vite": "npm:^2.7.0" "@table-library/react-table-library": "npm:4.1.7" "@types/imagemin": "npm:^8.0.5" - "@types/lodash-es": "npm:^4.17.11" - "@types/node": "npm:^20.9.3" + "@types/lodash-es": "npm:^4.17.12" + "@types/node": "npm:^20.9.4" "@types/react": "npm:^18.2.38" - "@types/react-dom": "npm:^18.2.16" + "@types/react-dom": "npm:^18.2.17" "@types/react-router-dom": "npm:^5.3.3" "@typescript-eslint/eslint-plugin": "npm:^6.12.0" "@typescript-eslint/parser": "npm:^6.12.0" @@ -1782,7 +1782,7 @@ __metadata: terser: "npm:^5.24.0" typesafe-i18n: "npm:^5.26.2" typescript: "npm:^5.3.2" - vite: "npm:^5.0.0" + vite: "npm:^5.0.2" vite-plugin-imagemin: "npm:^0.6.1" vite-tsconfig-paths: "npm:^4.2.1" languageName: unknown @@ -8566,9 +8566,9 @@ __metadata: languageName: node linkType: hard -"vite@npm:^5.0.0": - version: 5.0.0 - resolution: "vite@npm:5.0.0" +"vite@npm:^5.0.2": + version: 5.0.2 + resolution: "vite@npm:5.0.2" dependencies: esbuild: "npm:^0.19.3" fsevents: "npm:~2.3.3" @@ -8602,7 +8602,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 9a247a5657330ede5c131e782f2fb2adda77d493db2d528524378706108c1560ca4fe9ec0a865e5250978f5e2649c4da690834d2aab4dbf6175f1782cff6bd03 + checksum: 74f1a6d49a02106796b5fcc04dbe4a92925fba413191718fb37485a29f606b7f80abd371a3ef6b598e8a04f05c09c0b9a5de6bf844dfecb7253798097ddaab35 languageName: node linkType: hard From 1e15f65b0d8d83ce8ed1174f6829fee99520d9c4 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 22 Nov 2023 07:50:50 +0100 Subject: [PATCH 53/91] get mode for seltemp, fix #1450 --- src/devices/thermostat.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 7faac02e2..156294e53 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -479,8 +479,10 @@ uint8_t Thermostat::HeatingCircuit::get_mode() const { } } else if ((model == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model == EMSdevice::EMS_DEVICE_FLAG_RC100)) { if (mode == 0) { - return HeatingCircuit::Mode::MANUAL; + return HeatingCircuit::Mode::OFF; } else if (mode == 1) { + return HeatingCircuit::Mode::MANUAL; + } else if (mode == 2) { return HeatingCircuit::Mode::AUTO; } } else if (model == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) { From 40a79c51cebbdd1c02a112995b144a5b630e8484 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 22 Nov 2023 19:45:06 +0100 Subject: [PATCH 54/91] add EMS_DEVICE_FLAG_BC400, sort wwmodes #1452 --- CHANGELOG_LATEST.md | 2 + src/device_library.h | 4 +- src/devices/thermostat.cpp | 115 ++++++++++++++++++++++++++----------- src/devices/thermostat.h | 2 +- src/emsdevice.h | 1 + src/locale_common.h | 7 ++- src/locale_translations.h | 1 + src/version.h | 2 +- 8 files changed, 94 insertions(+), 40 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 948c83dc3..ea3f0134d 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -14,3 +14,5 @@ ## Fixed ## Changed + +- use flag for BC400 compatible thermostats, manage different mode settings diff --git a/src/device_library.h b/src/device_library.h index 42367883c..fb37e08e0 100644 --- a/src/device_library.h +++ b/src/device_library.h @@ -82,7 +82,7 @@ {203, DeviceType::THERMOSTAT, "EasyControl/CT200", DeviceFlags::EMS_DEVICE_FLAG_EASY | DeviceFlags::EMS_DEVICE_FLAG_NO_WRITE}, // 0x18, cannot write // Thermostat - Buderus/Nefit/Bosch specific - 0x17 / 0x10 / 0x18 / 0x19-0x1B for hc2-4 / 0x38 -{ 4, DeviceType::THERMOSTAT, "UI800/BC400", DeviceFlags::EMS_DEVICE_FLAG_RC300}, // 0x10 +{ 4, DeviceType::THERMOSTAT, "UI800/BC400", DeviceFlags::EMS_DEVICE_FLAG_BC400}, // 0x10 { 65, DeviceType::THERMOSTAT, "RC10", DeviceFlags::EMS_DEVICE_FLAG_RC20_N},// 0x17 { 67, DeviceType::THERMOSTAT, "RC30", DeviceFlags::EMS_DEVICE_FLAG_RC30_N},// 0x10 - based on RC35 { 77, DeviceType::THERMOSTAT, "RC20/Moduline 300", DeviceFlags::EMS_DEVICE_FLAG_RC20},// 0x17 @@ -101,7 +101,7 @@ {215, DeviceType::THERMOSTAT, "Comfort RF", DeviceFlags::EMS_DEVICE_FLAG_CRF | DeviceFlags::EMS_DEVICE_FLAG_NO_WRITE}, // 0x18 {216, DeviceType::THERMOSTAT, "CRF200S", DeviceFlags::EMS_DEVICE_FLAG_CRF | DeviceFlags::EMS_DEVICE_FLAG_NO_WRITE}, // 0x18 {246, DeviceType::THERMOSTAT, "Comfort+2RF", DeviceFlags::EMS_DEVICE_FLAG_CRF | DeviceFlags::EMS_DEVICE_FLAG_NO_WRITE}, // 0x18 -{253, DeviceType::THERMOSTAT, "Rego 3000/UI800/WSW196i/BC400", DeviceFlags::EMS_DEVICE_FLAG_RC300}, // 0x10 +{253, DeviceType::THERMOSTAT, "Rego 3000/UI800/WSW196i/BC400", DeviceFlags::EMS_DEVICE_FLAG_BC400}, // 0x10 // Thermostat - Sieger - 0x10 / 0x17 { 66, DeviceType::THERMOSTAT, "ES72/RC20", DeviceFlags::EMS_DEVICE_FLAG_RC20_N}, // 0x17 or remote diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 658213f53..fcf3f8ce7 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -142,7 +142,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i } // RC300/RC100 - } else if ((model == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model == EMSdevice::EMS_DEVICE_FLAG_RC100)) { + } else if ((model == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model == EMSdevice::EMS_DEVICE_FLAG_RC100)) { monitor_typeids = {0x02A5, 0x02A6, 0x02A7, 0x02A8, 0x02A9, 0x02AA, 0x02AB, 0x02AC}; set_typeids = {0x02B9, 0x02BA, 0x02BB, 0x02BC, 0x02BD, 0x02BE, 0x02BF, 0x02C0}; set2_typeids = {0x02CC, 0x02CE, 0x02D0, 0x02D2}; // max. 4 heating circuits supported ny RC310 @@ -477,7 +477,7 @@ uint8_t Thermostat::HeatingCircuit::get_mode() const { } else if (mode == 1) { return HeatingCircuit::Mode::OFF; } - } else if ((model == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model == EMSdevice::EMS_DEVICE_FLAG_RC100)) { + } else if (model == EMSdevice::EMS_DEVICE_FLAG_BC400) { if (mode == 0) { return HeatingCircuit::Mode::OFF; } else if (mode == 1) { @@ -485,6 +485,12 @@ uint8_t Thermostat::HeatingCircuit::get_mode() const { } else if (mode == 2) { return HeatingCircuit::Mode::AUTO; } + } else if ((model == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model == EMSdevice::EMS_DEVICE_FLAG_RC100)) { + if (mode == 0) { + return HeatingCircuit::Mode::MANUAL; + } else if (mode == 1) { + return HeatingCircuit::Mode::AUTO; + } } else if (model == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) { if (mode == 1) { return HeatingCircuit::Mode::MANUAL; @@ -531,7 +537,7 @@ uint8_t Thermostat::HeatingCircuit::get_mode_type() const { } else if (modetype == 1) { return HeatingCircuit::Mode::ON; } - } else if (model == EMS_DEVICE_FLAG_RC300) { + } else if ((model == EMS_DEVICE_FLAG_BC400) || (model == EMS_DEVICE_FLAG_RC300)) { if (modetype == 0) { return HeatingCircuit::Mode::ECO; } else if (modetype == 1) { @@ -1024,6 +1030,9 @@ void Thermostat::process_RC300Set(std::shared_ptr telegram) { // has_update(telegram, hc->selTemp, 8, 1); // single byte conversion, value is * 2 - auto? // has_update(telegram, hc->selTemp, 10, 1); // single byte conversion, value is * 2 - manual + has_update(telegram, hc->mode_new, 21); // for BC400 + has_bitupdate(telegram, hc->mode, 2, 0); // RC300, RC100 + /* telegram->read_value(hc->mode_new, 21); // 0-off, 1-manual, 2-auto if (Helpers::hasValue(hc->mode_new)) { has_update(hc->mode, hc->mode_new); @@ -1032,6 +1041,7 @@ void Thermostat::process_RC300Set(std::shared_ptr telegram) { telegram->read_value(mode, 0); has_update(hc->mode, mode == 0xFF ? 2 : 1); } + */ has_update(telegram, hc->daytemp, 2); // is * 2 has_update(telegram, hc->nighttemp, 4); // is * 2 @@ -1133,7 +1143,15 @@ void Thermostat::process_RC300WWmode(std::shared_ptr telegram) { // circulation pump see: https://github.com/Th3M3/buderus_ems-wiki/blob/master/Einstellungen%20der%20Bedieneinheit%20RC310.md has_update(telegram, wwCircPump_, 1); // FF=off, 0=on ? - has_update(telegram, wwMode_, 2); // 0=off, 1=low, 2=high, 3=auto, 4=own prog + if (model() == EMS_DEVICE_FLAG_BC400) { + const uint8_t modes[] = {0, 5, 1, 2, 4}; // off, eco+, eco, comfort, auto + uint8_t wwmode = wwMode_ < sizeof(modes) ? modes[wwMode_] : EMS_VALUE_UINT_NOTSET; + telegram->read_value(wwmode, 2); + const uint8_t modes1[] = {0, 2, 3, 0, 4, 1}; + has_update(wwMode_, wwmode < sizeof(modes1) ? modes1[wwmode] : EMS_VALUE_UINT_NOTSET); + } else { + has_update(telegram, wwMode_, 2); // 0=off, 1=low, 2=high, 3=auto, 4=own prog + } has_update(telegram, wwCircMode_, 3); // 0=off, 1=on, 2=auto, 4=own? has_update(telegram, wwChargeDuration_, 10); // value in steps of 15 min has_update(telegram, wwCharge_, 11); // boolv0xFF on @@ -1683,7 +1701,7 @@ bool Thermostat::set_minexttemp(const char * value, const int8_t id) { if ((model() == EMS_DEVICE_FLAG_RC20_N) || (model() == EMS_DEVICE_FLAG_RC25)) { write_command(0xAD, 14, mt, 0xAD); - } else if ((model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { + } else if ((model() == EMS_DEVICE_FLAG_BC400) || (model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { write_command(0x240, 10, mt, 0x240); } else { write_command(EMS_TYPE_IBASettings, 5, mt, EMS_TYPE_IBASettings); @@ -1724,7 +1742,7 @@ bool Thermostat::set_calinttemp(const char * value, const int8_t id) { write_command(EMS_TYPE_RC30Settings, 1, t, EMS_TYPE_RC30Settings); } else if (model() == EMS_DEVICE_FLAG_RC100H) { write_command(0x273, 0, t, 0x273); - } else if (model() == EMS_DEVICE_FLAG_RC100 || model() == EMS_DEVICE_FLAG_RC300) { + } else if ((model() == EMS_DEVICE_FLAG_BC400) || model() == EMS_DEVICE_FLAG_RC100 || model() == EMS_DEVICE_FLAG_RC300) { write_command(0x240, 7, t, 0x240); } else { write_command(EMS_TYPE_IBASettings, 2, t, EMS_TYPE_IBASettings); @@ -1779,7 +1797,7 @@ bool Thermostat::set_remotetemp(const char * value, const int8_t id) { Roomctrl::set_remotetemp(Roomctrl::FB10, hc->hc(), hc->remotetemp); // FB10 } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC35 || model() == EMSdevice::EMS_DEVICE_FLAG_RC30_N) { Roomctrl::set_remotetemp(Roomctrl::RC20, hc->hc(), hc->remotetemp); // RC20 - } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) { + } else if ((model() == EMS_DEVICE_FLAG_BC400) || model() == EMSdevice::EMS_DEVICE_FLAG_RC300) { Roomctrl::set_remotetemp(Roomctrl::RC100H, hc->hc(), hc->remotetemp); // RC100H } @@ -1804,7 +1822,7 @@ bool Thermostat::set_remotehum(const char * value, const int8_t id) { hc->remotehum = h; } - if (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) { + if ((model() == EMS_DEVICE_FLAG_BC400) || model() == EMSdevice::EMS_DEVICE_FLAG_RC300) { Roomctrl::set_remotehum(Roomctrl::RC100H, hc->hc(), hc->remotehum); // RC100H return true; } @@ -1818,7 +1836,7 @@ bool Thermostat::set_building(const char * value, const int8_t id) { return false; } - if ((model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { + if ((model() == EMS_DEVICE_FLAG_BC400) || (model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { write_command(0x240, 9, bd + 1, 0x240); } else if (model() == EMS_DEVICE_FLAG_RC30) { write_command(EMS_TYPE_RC30Settings, 4, bd, EMS_TYPE_RC30Settings); @@ -1848,7 +1866,7 @@ bool Thermostat::set_heatingpid(const char * value, const int8_t id) { // 0xA5 and 0x0240- Set the damping settings bool Thermostat::set_damping(const char * value, const int8_t id) { bool dmp; - if (model() == EMS_DEVICE_FLAG_RC300) { + if ((model() == EMS_DEVICE_FLAG_BC400) || model() == EMS_DEVICE_FLAG_RC300) { if (Helpers::value2bool(value, dmp)) { write_command(0x240, 8, dmp ? 0xFF : 0, 0x240); return true; @@ -1895,7 +1913,7 @@ bool Thermostat::set_control(const char * value, const int8_t id) { write_command(set_typeids[hc->hc()], 1, ctrl); return true; } - } else if (model() == EMS_DEVICE_FLAG_RC300 || model() == EMS_DEVICE_FLAG_RC100) { + } else if (model() == EMS_DEVICE_FLAG_BC400 || model() == EMS_DEVICE_FLAG_RC300 || model() == EMS_DEVICE_FLAG_RC100) { if (Helpers::value2enum(value, ctrl, FL_(enum_control1))) { write_command(hpmode_typeids[hc->hc()], 3, ctrl); return true; @@ -1935,6 +1953,12 @@ bool Thermostat::set_wwmode(const char * value, const int8_t id) { return false; } write_command(0xB0, 2, set, 0xB0); + } else if (model() == EMS_DEVICE_FLAG_BC400) { + if (!Helpers::value2enum(value, set, FL_(enum_wwMode4))) { + return false; + } + const uint8_t modes[] = {0, 5, 1, 2, 4}; + write_command(0x02F5, 2, modes[set], 0x02F5); } else if ((model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { if (!Helpers::value2enum(value, set, FL_(enum_wwMode))) { return false; @@ -2031,7 +2055,7 @@ bool Thermostat::set_wwprio(const char * value, const int8_t id) { if (!Helpers::value2bool(value, b)) { return false; } - if ((model() == EMS_DEVICE_FLAG_RC300)) { + if ((model() == EMS_DEVICE_FLAG_BC400) || (model() == EMS_DEVICE_FLAG_RC300)) { write_command(set2_typeids[hc->hc()], 3, b ? 0xFF : 0x00, set2_typeids[hc->hc()]); } else { write_command(set_typeids[hc->hc()], 21, b ? 0xFF : 0x00, set_typeids[hc->hc()]); @@ -2059,7 +2083,7 @@ bool Thermostat::set_cooling(const char * value, const int8_t id) { bool Thermostat::set_wwcircmode(const char * value, const int8_t id) { uint8_t set; - if ((model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { + if ((model() == EMS_DEVICE_FLAG_BC400) || (model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { if (!Helpers::value2enum(value, set, FL_(enum_wwCircMode))) { return false; } @@ -2091,7 +2115,7 @@ bool Thermostat::set_wwDailyHeatTime(const char * value, const int8_t id) { return false; } - if ((model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { + if ((model() == EMS_DEVICE_FLAG_BC400) || (model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { uint8_t t = (set + 8) / 15; if (t > 95) { return false; @@ -2108,7 +2132,7 @@ bool Thermostat::set_wwDisinfect(const char * value, const int8_t id) { return false; } - if ((model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { + if ((model() == EMS_DEVICE_FLAG_BC400) || (model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { write_command(0x2F5, 5, b ? 0xFF : 0x00, 0x2F5); } else if (model() == EMS_DEVICE_FLAG_RC30) { write_command(EMS_TYPE_RC30wwSettings, 2, b ? 0xFF : 0x00, EMS_TYPE_RC30wwSettings); @@ -2125,7 +2149,7 @@ bool Thermostat::set_wwDisinfectDay(const char * value, const int8_t id) { return false; } - if ((model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { + if ((model() == EMS_DEVICE_FLAG_BC400) || (model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { write_command(0x2F5, 7, set, 0x2F5); } else if (model() == EMS_DEVICE_FLAG_RC30) { write_command(EMS_TYPE_RC30wwSettings, 3, set, EMS_TYPE_RC30wwSettings); @@ -2138,7 +2162,7 @@ bool Thermostat::set_wwDisinfectDay(const char * value, const int8_t id) { bool Thermostat::set_wwDisinfectHour(const char * value, const int8_t id) { int set; - if ((model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { + if ((model() == EMS_DEVICE_FLAG_BC400) || (model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { if (!Helpers::value2number(value, set, 0, 1431)) { return false; } @@ -2439,6 +2463,9 @@ bool Thermostat::set_mode(const char * value, const int8_t id) { case EMSdevice::EMS_DEVICE_FLAG_RC30_N: mode_list = FL_(enum_mode3); break; + case EMSdevice::EMS_DEVICE_FLAG_BC400: + mode_list = FL_(enum_mode2); + break; case EMSdevice::EMS_DEVICE_FLAG_RC300: case EMSdevice::EMS_DEVICE_FLAG_RC100: mode_list = FL_(enum_mode); @@ -2562,14 +2589,13 @@ bool Thermostat::set_mode_n(const uint8_t mode, const uint8_t hc_num) { case EMSdevice::EMS_DEVICE_FLAG_RC30_N: offset = EMS_OFFSET_RC35Set_mode; break; + case EMSdevice::EMS_DEVICE_FLAG_BC400: + offset = EMS_OFFSET_RCPLUSSet_mode_new; + break; case EMSdevice::EMS_DEVICE_FLAG_RC300: case EMSdevice::EMS_DEVICE_FLAG_RC100: - if (Helpers::hasValue(hc->mode_new)) { - offset = EMS_OFFSET_RCPLUSSet_mode_new; - } else { - offset = EMS_OFFSET_RCPLUSSet_mode; - set_mode_value = set_mode_value == 2 ? 0xFF : 0; - } + offset = EMS_OFFSET_RCPLUSSet_mode; + set_mode_value = set_mode_value == 2 ? 0xFF : 0; break; case EMSdevice::EMS_DEVICE_FLAG_JUNKERS: if (has_flags(EMS_DEVICE_FLAG_JUNKERS_OLD)) { @@ -2600,8 +2626,10 @@ bool Thermostat::set_mode_n(const uint8_t mode, const uint8_t hc_num) { // set hc->mode temporary until validate is received if (model_ == EMSdevice::EMS_DEVICE_FLAG_RC10) { hc->mode = set_mode_value >> 1; + } else if (model_ == EMS_DEVICE_FLAG_BC400) { + hc->mode_new = set_mode_value; } else if (model_ == EMSdevice::EMS_DEVICE_FLAG_RC300 || model_ == EMSdevice::EMS_DEVICE_FLAG_RC100) { - hc->mode = Helpers::hasValue(hc->mode_new) ? set_mode_value : set_mode_value == 0xFF ? 2 : 1; + hc->mode = set_mode_value == 0xFF ? 1 : 0; } else if (model_ == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) { hc->mode = set_mode_value - 1; } else { @@ -2698,7 +2726,6 @@ bool Thermostat::set_boosttime(const char * value, const int8_t id) { } write_command(set_typeids[hc->hc()], 24, (uint8_t)v, set_typeids[hc->hc()]); return true; - } // sets the thermostat reducemode for RC35 and RC310 @@ -2710,7 +2737,7 @@ bool Thermostat::set_reducemode(const char * value, const int8_t id) { } uint8_t set; - if (model() == EMS_DEVICE_FLAG_RC300 || model() == EMS_DEVICE_FLAG_RC100) { + if (model() == EMS_DEVICE_FLAG_BC400 || model() == EMS_DEVICE_FLAG_RC300 || model() == EMS_DEVICE_FLAG_RC100) { if (Helpers::value2enum(value, set, FL_(enum_reducemode1))) { write_command(set_typeids[hc->hc()], 5, set + 1, set_typeids[hc->hc()]); return true; @@ -2750,7 +2777,7 @@ bool Thermostat::set_nofrostmode(const char * value, const int8_t id) { return false; } uint8_t set; - if (model() == EMS_DEVICE_FLAG_RC300 || model() == EMS_DEVICE_FLAG_RC100) { + if (model() == EMS_DEVICE_FLAG_BC400 || model() == EMS_DEVICE_FLAG_RC300 || model() == EMS_DEVICE_FLAG_RC100) { if (Helpers::value2enum(value, set, FL_(enum_nofrostmode1))) { write_command(curve_typeids[hc->hc()], 5, set + 1, curve_typeids[hc->hc()]); return true; @@ -2803,7 +2830,7 @@ bool Thermostat::set_controlmode(const char * value, const int8_t id) { write_command(curve_typeids[hc->hc()], 0, set, curve_typeids[hc->hc()]); return true; } - } else if (model() == EMS_DEVICE_FLAG_RC300) { + } else if (model() == EMS_DEVICE_FLAG_BC400 || model() == EMS_DEVICE_FLAG_RC300) { if (Helpers::value2enum(value, set, FL_(enum_controlmode1))) { write_command(curve_typeids[hc->hc()], 0, set + 1, curve_typeids[hc->hc()]); return true; @@ -3053,7 +3080,7 @@ bool Thermostat::set_program(const char * value, const int8_t id) { write_command(timer_typeids[hc->hc()], 84, set, timer_typeids[hc->hc()]); return true; } - } else if (model() == EMS_DEVICE_FLAG_RC300 || model() == EMS_DEVICE_FLAG_RC100) { + } else if (model() == EMS_DEVICE_FLAG_BC400 || model() == EMS_DEVICE_FLAG_RC300 || model() == EMS_DEVICE_FLAG_RC100) { if (Helpers::value2enum(value, set, FL_(enum_progMode))) { write_command(set_typeids[hc->hc()], 11, set + 1, set_typeids[hc->hc()]); return true; @@ -3198,7 +3225,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co break; } - } else if ((model == EMS_DEVICE_FLAG_RC300) || (model == EMS_DEVICE_FLAG_RC100)) { + } else if (model == EMS_DEVICE_FLAG_BC400 || (model == EMS_DEVICE_FLAG_RC300) || (model == EMS_DEVICE_FLAG_RC100)) { validate_typeid = set_typeids[hc->hc()]; switch (mode) { case HeatingCircuit::Mode::SUMMER: @@ -3553,6 +3580,7 @@ void Thermostat::register_device_values() { switch (this->model()) { case EMS_DEVICE_FLAG_RC100: case EMS_DEVICE_FLAG_RC300: + case EMS_DEVICE_FLAG_BC400: register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &dateTime_, DeviceValueType::STRING, @@ -3595,8 +3623,24 @@ void Thermostat::register_device_values() { MAKE_CF_CB(set_minexttemp)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &ibaDamping_, DeviceValueType::BOOL, FL_(damping), DeviceValueUOM::NONE, MAKE_CF_CB(set_damping)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwSetTemp_, DeviceValueType::UINT, FL_(wwSetTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwtemp)); - register_device_value( - DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwMode_, DeviceValueType::ENUM, FL_(enum_wwMode), FL_(wwMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwmode)); + if (model() == EMS_DEVICE_FLAG_BC400) { + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, + &wwMode_, + DeviceValueType::ENUM, + FL_(enum_wwMode4), + FL_(wwMode), + DeviceValueUOM::NONE, + MAKE_CF_CB(set_wwmode)); + + } else { + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, + &wwMode_, + DeviceValueType::ENUM, + FL_(enum_wwMode), + FL_(wwMode), + DeviceValueUOM::NONE, + MAKE_CF_CB(set_wwmode)); + } register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwSetTempLow_, DeviceValueType::UINT, @@ -4219,7 +4263,12 @@ void Thermostat::register_device_values_hc(std::shared_ptrmode, DeviceValueType::ENUM, FL_(enum_mode), FL_(mode), DeviceValueUOM::NONE, MAKE_CF_CB(set_mode)); + case EMS_DEVICE_FLAG_BC400: + if (model == EMS_DEVICE_FLAG_BC400) { + register_device_value(tag, &hc->mode_new, DeviceValueType::ENUM, FL_(enum_mode2), FL_(mode), DeviceValueUOM::NONE, MAKE_CF_CB(set_mode)); + } else { + register_device_value(tag, &hc->mode, DeviceValueType::ENUM, FL_(enum_mode), FL_(mode), DeviceValueUOM::NONE, MAKE_CF_CB(set_mode)); + } register_device_value(tag, &hc->modetype, DeviceValueType::ENUM, FL_(enum_modetype), FL_(modetype), DeviceValueUOM::NONE); register_device_value( tag, &hc->nighttemp, DeviceValueType::UINT, DeviceValueNumOp::DV_NUMOP_DIV2, FL_(ecotemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_ecotemp)); diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index 27c694936..4b8b52a24 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -41,7 +41,7 @@ class Thermostat : public EMSdevice { uint8_t tempautotemp; int8_t remoteseltemp; uint8_t mode; - uint8_t mode_new = EMS_VALUE_UINT_NOTSET; // not initialized by register_value + uint8_t mode_new; uint8_t modetype; uint8_t summermode; uint8_t holidaymode; diff --git a/src/emsdevice.h b/src/emsdevice.h index c022c8e78..ff284ade9 100644 --- a/src/emsdevice.h +++ b/src/emsdevice.h @@ -436,6 +436,7 @@ class EMSdevice { static constexpr uint8_t EMS_DEVICE_FLAG_JUNKERS = 11; static constexpr uint8_t EMS_DEVICE_FLAG_CRF = 12; // CRF200 only monitor static constexpr uint8_t EMS_DEVICE_FLAG_RC100H = 13; // with humidity + static constexpr uint8_t EMS_DEVICE_FLAG_BC400 = 14; // mostly like RC300, but some changes uint8_t count_entities(); bool has_entities() const; diff --git a/src/locale_common.h b/src/locale_common.h index f94834f5e..9a4f69c07 100644 --- a/src/locale_common.h +++ b/src/locale_common.h @@ -294,10 +294,11 @@ MAKE_ENUM(enum_ibaLanguage_RC30, FL_(german), FL_(dutch)) MAKE_ENUM(enum_floordrystatus, FL_(off), FL_(start), FL_(heat), FL_(hold), FL_(cool), FL_(end)) MAKE_ENUM(enum_ibaBuildingType, FL_(light), FL_(medium), FL_(heavy)) MAKE_ENUM(enum_PID, FL_(fast), FL_(medium), FL_(slow)) -MAKE_ENUM(enum_wwMode, FL_(off), FL_(normal), FL_(comfort), FL_(auto), FL_(own_prog), FL_(eco)) +MAKE_ENUM(enum_wwMode, FL_(off), FL_(normal), FL_(comfort), FL_(auto), FL_(own_prog)) MAKE_ENUM(enum_wwCircMode, FL_(off), FL_(on), FL_(auto), FL_(own_prog)) MAKE_ENUM(enum_wwMode2, FL_(off), FL_(on), FL_(auto)) MAKE_ENUM(enum_wwMode3, FL_(on), FL_(off), FL_(auto)) +MAKE_ENUM(enum_wwMode4, FL_(off), FL_(ecoplus), FL_(eco), FL_(comfort), FL_(auto)) MAKE_ENUM(enum_heatingtype, FL_(off), FL_(radiator), FL_(convector), FL_(floor)) MAKE_ENUM(enum_summermode, FL_(summer), FL_(auto), FL_(winter)) MAKE_ENUM(enum_hpoperatingmode, FL_(off), FL_(auto), FL_(heating), FL_(cooling)) @@ -305,8 +306,8 @@ MAKE_ENUM(enum_summer, FL_(winter), FL_(summer)) MAKE_ENUM(enum_operatingstate, FL_(heating), FL_(off), FL_(cooling)) MAKE_ENUM(enum_hpmode, FL_(heating), FL_(cooling), FL_(heatandcool)) -MAKE_ENUM(enum_mode, FL_(off), FL_(manual), FL_(auto)) // RC100, RC300, RC310 -MAKE_ENUM(enum_mode2, FL_(off), FL_(manual), FL_(auto)) // RC20, RC30 +MAKE_ENUM(enum_mode, FL_(manual), FL_(auto)) // RC100, RC300, RC310 +MAKE_ENUM(enum_mode2, FL_(off), FL_(manual), FL_(auto)) // RC20, RC30, BC400 MAKE_ENUM(enum_mode3, FL_(night), FL_(day), FL_(auto)) // RC35, RC30_N, RC25, RC20_N MAKE_ENUM(enum_mode4, FL_(nofrost), FL_(eco), FL_(heat), FL_(auto)) // JUNKERS MAKE_ENUM(enum_mode5, FL_(auto), FL_(off)) // CRF diff --git a/src/locale_translations.h b/src/locale_translations.h index af67b3b3b..7e923e9dd 100644 --- a/src/locale_translations.h +++ b/src/locale_translations.h @@ -177,6 +177,7 @@ MAKE_WORD_TRANSLATION(chargepump, "chargepump", "Ladepumpe", "laadpomp", "laddpu MAKE_WORD_TRANSLATION(hot, "hot", "Heiß", "heet", "Het", "gorący", "het", "chaud", "sıcak", "caldo") MAKE_WORD_TRANSLATION(high_comfort, "high comfort", "gehobener Komfort", "verhoogd comfort", "Förhöjd komfort", "wysoki komfort", "høy komfort", "comfort", "komfor", "comfort alto") MAKE_WORD_TRANSLATION(eco, "eco", "Eco", "Eco", "Eko", "eko", "øko", "éco", "eko", "Eco") +MAKE_WORD_TRANSLATION(ecoplus, "eco+", "Eco+", "Eco+", "Eko+", "eko+", "øko+", "éco+", "eko+", "Eco+") MAKE_WORD_TRANSLATION(intelligent, "intelligent", "Intelligent", "intelligent", "Intelligent", "inteligentny", "intelligent", "intelligent", "akıllı", "intelligente") MAKE_WORD_TRANSLATION(flow, "flow", "Durchfluss", "volumestroom", "Flöde", "przepływ", "strømme", "débit", "akım", "flusso") MAKE_WORD_TRANSLATION(manual, "manual", "Manuell", "handmatig", "Manuell", "ręczny", "manuell", "manuel", "manuel", "manuale") diff --git a/src/version.h b/src/version.h index 950704b49..a26bfc6c4 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.6.4-dev.1a" +#define EMSESP_APP_VERSION "3.6.4-dev.1b" From 09228e46379a7317ac6a8c81ecfa63cc37658ee3 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 23 Nov 2023 09:23:04 +0100 Subject: [PATCH 55/91] update MqttClient --- lib/espMqttClient/src/Config.h | 4 + lib/espMqttClient/src/MqttClientSetup.h | 143 ++++++++++++++++++++++-- 2 files changed, 140 insertions(+), 7 deletions(-) diff --git a/lib/espMqttClient/src/Config.h b/lib/espMqttClient/src/Config.h index 940c2dea8..7dcef59f0 100644 --- a/lib/espMqttClient/src/Config.h +++ b/lib/espMqttClient/src/Config.h @@ -53,6 +53,10 @@ the LICENSE file. #define EMC_TASK_STACK_SIZE 5120 #endif +#ifndef EMC_MULTIPLE_CALLBACKS +#define EMC_MULTIPLE_CALLBACKS 0 +#endif + #ifndef EMC_USE_WATCHDOG #define EMC_USE_WATCHDOG 0 #endif diff --git a/lib/espMqttClient/src/MqttClientSetup.h b/lib/espMqttClient/src/MqttClientSetup.h index 73458d477..67f46a079 100644 --- a/lib/espMqttClient/src/MqttClientSetup.h +++ b/lib/espMqttClient/src/MqttClientSetup.h @@ -11,6 +11,11 @@ the LICENSE file. #pragma once +#if EMC_MULTIPLE_CALLBACKS +#include +#include +#endif + #include "MqttClient.h" template @@ -73,36 +78,128 @@ class MqttClientSetup : public MqttClient { return static_cast(*this); } - T& onConnect(espMqttClientTypes::OnConnectCallback callback) { + T& onConnect(espMqttClientTypes::OnConnectCallback callback, uint32_t id = 0) { + #if EMC_MULTIPLE_CALLBACKS + _onConnectCallbacks.emplace_back(callback, id); + #else + (void) id; _onConnectCallback = callback; + #endif return static_cast(*this); } - T& onDisconnect(espMqttClientTypes::OnDisconnectCallback callback) { + T& onDisconnect(espMqttClientTypes::OnDisconnectCallback callback, uint32_t id = 0) { + #if EMC_MULTIPLE_CALLBACKS + _onDisconnectCallbacks.emplace_back(callback, id); + #else + (void) id; _onDisconnectCallback = callback; + #endif return static_cast(*this); } - T& onSubscribe(espMqttClientTypes::OnSubscribeCallback callback) { + T& onSubscribe(espMqttClientTypes::OnSubscribeCallback callback, uint32_t id = 0) { + #if EMC_MULTIPLE_CALLBACKS + _onSubscribeCallbacks.emplace_back(callback, id); + #else + (void) id; _onSubscribeCallback = callback; + #endif return static_cast(*this); } - T& onUnsubscribe(espMqttClientTypes::OnUnsubscribeCallback callback) { + T& onUnsubscribe(espMqttClientTypes::OnUnsubscribeCallback callback, uint32_t id = 0) { + #if EMC_MULTIPLE_CALLBACKS + _onUnsubscribeCallbacks.emplace_back(callback, id); + #else + (void) id; _onUnsubscribeCallback = callback; + #endif return static_cast(*this); } - T& onMessage(espMqttClientTypes::OnMessageCallback callback) { + T& onMessage(espMqttClientTypes::OnMessageCallback callback, uint32_t id = 0) { + #if EMC_MULTIPLE_CALLBACKS + _onMessageCallbacks.emplace_back(callback, id); + #else + (void) id; _onMessageCallback = callback; + #endif return static_cast(*this); } - T& onPublish(espMqttClientTypes::OnPublishCallback callback) { + T& onPublish(espMqttClientTypes::OnPublishCallback callback, uint32_t id = 0) { + #if EMC_MULTIPLE_CALLBACKS + _onPublishCallbacks.emplace_back(callback, id); + #else + (void) id; _onPublishCallback = callback; + #endif return static_cast(*this); } + #if EMC_MULTIPLE_CALLBACKS + T& removeOnConnect(uint32_t id) { + for (auto it = _onConnectCallbacks.begin(); it != _onConnectCallbacks.end(); ++it) { + if (it->second == id) { + _onConnectCallbacks.erase(it); + break; + } + } + return static_cast(*this); + } + + T& removeOnDisconnect(uint32_t id) { + for (auto it = _onDisconnectCallbacks.begin(); it != _onDisconnectCallbacks.end(); ++it) { + if (it->second == id) { + _onDisconnectCallbacks.erase(it); + break; + } + } + return static_cast(*this); + } + + T& removeOnSubscribe(uint32_t id) { + for (auto it = _onSubscribeCallbacks.begin(); it != _onSubscribeCallbacks.end(); ++it) { + if (it->second == id) { + _onSubscribeCallbacks.erase(it); + break; + } + } + return static_cast(*this); + } + + T& removeOnUnsubscribe(uint32_t id) { + for (auto it = _onUnsubscribeCallbacks.begin(); it != _onUnsubscribeCallbacks.end(); ++it) { + if (it->second == id) { + _onUnsubscribeCallbacks.erase(it); + break; + } + } + return static_cast(*this); + } + + T& removeOnMessage(uint32_t id) { + for (auto it = _onMessageCallbacks.begin(); it != _onMessageCallbacks.end(); ++it) { + if (it->second == id) { + _onMessageCallbacks.erase(it); + break; + } + } + return static_cast(*this); + } + + T& removeOnPublish(uint32_t id) { + for (auto it = _onPublishCallbacks.begin(); it != _onPublishCallbacks.end(); ++it) { + if (it->second == id) { + _onPublishCallbacks.erase(it); + break; + } + } + return static_cast(*this); + } + #endif + /* T& onError(espMqttClientTypes::OnErrorCallback callback) { _onErrorCallback = callback; @@ -112,5 +209,37 @@ class MqttClientSetup : public MqttClient { protected: explicit MqttClientSetup(espMqttClientTypes::UseInternalTask useInternalTask, uint8_t priority = 1, uint8_t core = 1) - : MqttClient(useInternalTask, priority, core) {} + : MqttClient(useInternalTask, priority, core) { + #if EMC_MULTIPLE_CALLBACKS + _onConnectCallback = [this](bool sessionPresent) { + for (auto callback : _onConnectCallbacks) if (callback.first) callback.first(sessionPresent); + }; + _onDisconnectCallback = [this](espMqttClientTypes::DisconnectReason reason) { + for (auto callback : _onDisconnectCallbacks) if (callback.first) callback.first(reason); + }; + _onSubscribeCallback = [this](uint16_t packetId, const espMqttClientTypes::SubscribeReturncode* returncodes, size_t len) { + for (auto callback : _onSubscribeCallbacks) if (callback.first) callback.first(packetId, returncodes, len); + }; + _onUnsubscribeCallback = [this](int16_t packetId) { + for (auto callback : _onUnsubscribeCallbacks) if (callback.first) callback.first(packetId); + }; + _onMessageCallback = [this](const espMqttClientTypes::MessageProperties& properties, const char* topic, const uint8_t* payload, size_t len, size_t index, size_t total) { + for (auto callback : _onMessageCallbacks) if (callback.first) callback.first(properties, topic, payload, len, index, total); + }; + _onPublishCallback = [this](uint16_t packetId) { + for (auto callback : _onPublishCallbacks) if (callback.first) callback.first(packetId); + }; + #else + // empty + #endif + } + + #if EMC_MULTIPLE_CALLBACKS + std::list> _onConnectCallbacks; + std::list> _onDisconnectCallbacks; + std::list> _onSubscribeCallbacks; + std::list> _onUnsubscribeCallbacks; + std::list> _onMessageCallbacks; + std::list> _onPublishCallbacks; + #endif }; From bd8472b34ebfa68b34c5441a9fc1597efda62865 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 23 Nov 2023 15:26:00 +0100 Subject: [PATCH 56/91] fix settings for EMS boilers --- src/devices/boiler.cpp | 46 +++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 0a2d334c6..2063bf7d9 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -2003,7 +2003,7 @@ bool Boiler::set_ww_temp(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) { + if (is_received(EMS_TYPE_UBAParameterWWPlus)) { // write_command(EMS_TYPE_UBAFlags, 3, v, EMS_TYPE_UBAParameterWWPlus); // test for #96 write_command(EMS_TYPE_UBAParameterWWPlus, 6, v, EMS_TYPE_UBAParameterWWPlus); } else { @@ -2056,7 +2056,7 @@ bool Boiler::set_ww_disinfect_temp(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) { + if (is_received(EMS_TYPE_UBAParameterWWPlus)) { write_command(EMS_TYPE_UBAParameterWWPlus, 12, v, EMS_TYPE_UBAParameterWWPlus); } else { write_command(EMS_TYPE_UBAParameterWW, 8, v, EMS_TYPE_UBAParameterWW); @@ -2106,7 +2106,7 @@ bool Boiler::set_ww_flowTempOffset(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) { + if (is_received(EMS_TYPE_UBAParameterWWPlus)) { write_command(EMS_TYPE_UBAParameterWWPlus, 9, v, EMS_TYPE_UBAParameterWWPlus); } else { write_command(EMS_TYPE_UBAParameterWW, 5, v, EMS_TYPE_UBAParameterWW); @@ -2122,7 +2122,7 @@ bool Boiler::set_heating_activated(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParametersPlus)) { + if (is_received(EMS_TYPE_UBAParametersPlus)) { write_command(EMS_TYPE_UBAParametersPlus, 0, v ? 0x01 : 0, EMS_TYPE_UBAParametersPlus); } else { write_command(EMS_TYPE_UBAParameters, 0, v ? 0xFF : 0, EMS_TYPE_UBAParameters); @@ -2138,7 +2138,7 @@ bool Boiler::set_heating_temp(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParametersPlus)) { + if (is_received(EMS_TYPE_UBAParametersPlus)) { write_command(EMS_TYPE_UBAParametersPlus, 1, v, EMS_TYPE_UBAParametersPlus); } else { write_command(EMS_TYPE_UBAParameters, 1, v, EMS_TYPE_UBAParameters); @@ -2154,7 +2154,7 @@ bool Boiler::set_min_power(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParametersPlus)) { + if (is_received(EMS_TYPE_UBAParametersPlus)) { write_command(EMS_TYPE_UBAParametersPlus, 5, v, EMS_TYPE_UBAParametersPlus); } else { write_command(EMS_TYPE_UBAParameters, 3, v, EMS_TYPE_UBAParameters); @@ -2170,7 +2170,7 @@ bool Boiler::set_max_power(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParametersPlus)) { + if (is_received(EMS_TYPE_UBAParametersPlus)) { write_command(EMS_TYPE_UBAParametersPlus, 4, v, EMS_TYPE_UBAParametersPlus); } else { write_command(EMS_TYPE_UBAParameters, 2, v, EMS_TYPE_UBAParameters); @@ -2186,7 +2186,7 @@ bool Boiler::set_ww_hyst_on(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) { + if (is_received(EMS_TYPE_UBAParameterWWPlus)) { write_command(EMS_TYPE_UBAParameterWWPlus, 7, v, EMS_TYPE_UBAParameterWWPlus); } else { write_command(EMS_TYPE_UBAParameterWW, 3, v, EMS_TYPE_UBAParameterWW); @@ -2202,7 +2202,7 @@ bool Boiler::set_ww_hyst_off(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) { + if (is_received(EMS_TYPE_UBAParameterWWPlus)) { write_command(EMS_TYPE_UBAParameterWWPlus, 8, v, EMS_TYPE_UBAParameterWWPlus); } else { write_command(EMS_TYPE_UBAParameterWW, 4, v, EMS_TYPE_UBAParameterWW); @@ -2218,7 +2218,7 @@ bool Boiler::set_ww_chargeOptimization(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) { + if (is_received(EMS_TYPE_UBAParameterWWPlus)) { write_command(EMS_TYPE_UBAParameterWWPlus, 25, v ? 1 : 0, EMS_TYPE_UBAParameterWWPlus); } @@ -2256,7 +2256,7 @@ bool Boiler::set_min_pump(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParametersPlus)) { + if (is_received(EMS_TYPE_UBAParametersPlus)) { write_command(EMS_TYPE_UBAParametersPlus, 14, v, EMS_TYPE_UBAParametersPlus); } else { write_command(EMS_TYPE_UBAParameters, 10, v, EMS_TYPE_UBAParameters); @@ -2272,7 +2272,7 @@ bool Boiler::set_max_pump(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParametersPlus)) { + if (is_received(EMS_TYPE_UBAParametersPlus)) { write_command(EMS_TYPE_UBAParametersPlus, 13, v, EMS_TYPE_UBAParametersPlus); } else { write_command(EMS_TYPE_UBAParameters, 9, v, EMS_TYPE_UBAParameters); @@ -2297,7 +2297,7 @@ bool Boiler::set_hyst_on(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParametersPlus)) { + if (is_received(EMS_TYPE_UBAParametersPlus)) { write_command(EMS_TYPE_UBAParametersPlus, 9, v, EMS_TYPE_UBAParametersPlus); } else { write_command(EMS_TYPE_UBAParameters, id == 2 ? 13 : 5, v, EMS_TYPE_UBAParameters); @@ -2313,7 +2313,7 @@ bool Boiler::set_hyst_off(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParametersPlus)) { + if (is_received(EMS_TYPE_UBAParametersPlus)) { write_command(EMS_TYPE_UBAParametersPlus, 8, v, EMS_TYPE_UBAParametersPlus); } else { write_command(EMS_TYPE_UBAParameters, id == 2 ? 12 : 4, v, EMS_TYPE_UBAParameters); @@ -2329,7 +2329,7 @@ bool Boiler::set_burn_period(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParametersPlus)) { + if (is_received(EMS_TYPE_UBAParametersPlus)) { write_command(EMS_TYPE_UBAParametersPlus, 10, v, EMS_TYPE_UBAParametersPlus); } else { write_command(EMS_TYPE_UBAParameters, 6, v, EMS_TYPE_UBAParameters); @@ -2345,7 +2345,7 @@ bool Boiler::set_pump_delay(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParameters)) { + if (is_received(EMS_TYPE_UBAParameters)) { write_command(EMS_TYPE_UBAParameters, 8, v, EMS_TYPE_UBAParameters); return true; } @@ -2361,7 +2361,7 @@ bool Boiler::set_ww_mode(const char * value, const int8_t id) { uint8_t set; uint8_t comfort[] = {0x00, 0xD8, 0xEC}; // heat, eco, intelligent - if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) { + if (is_received(EMS_TYPE_UBAParameterWWPlus)) { if (Helpers::value2enum(value, set, FL_(enum_comfort1))) { write_command(EMS_TYPE_UBAParameterWWPlus, 13, comfort[set], EMS_TYPE_UBAParameterWWPlus); write_command(0x05, 70, set ? 0xAA : 0x55); // @@ -2385,7 +2385,7 @@ bool Boiler::set_ww_activated(const char * value, const int8_t id) { // https://github.com/emsesp/EMS-ESP/issues/268 // 08 for HT3 seems to be wrong, see https://github.com/emsesp/EMS-ESP32/issues/89 - if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) { + if (is_received(EMS_TYPE_UBAParameterWWPlus)) { write_command(EMS_TYPE_UBAParameterWWPlus, 5, v ? 1 : 0, EMS_TYPE_UBAParameterWWPlus); } else { write_command(EMS_TYPE_UBAParameterWW, 1, v ? 0xFF : 0, EMS_TYPE_UBAParameterWW); @@ -2443,7 +2443,7 @@ bool Boiler::set_ww_onetime(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) { + if (is_received(EMS_TYPE_UBAParameterWWPlus)) { write_command(EMS_TYPE_UBAFlags, 0, (v ? 0x22 : 0x02), 0xE9); // not sure if this is in flags } else { write_command(EMS_TYPE_UBAFlags, 0, (v ? 0x23 : 0x03), 0x34); @@ -2459,7 +2459,7 @@ bool Boiler::set_ww_disinfect(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) { + if (is_received(EMS_TYPE_UBAParameterWWPlus)) { write_command(EMS_TYPE_UBAFlags, 0, (v ? 0x44 : 0x04), 0xE9); // not sure if this is in flags } else { write_command(EMS_TYPE_UBAFlags, 0, (v ? 0x44 : 0x04), 0x34); @@ -2476,7 +2476,7 @@ bool Boiler::set_ww_circulation(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) { + if (is_received(EMS_TYPE_UBAParameterWWPlus)) { write_command(EMS_TYPE_UBAFlags, 1, (v ? 0x22 : 0x02), 0xE9); // not sure if this is in flags } else { write_command(EMS_TYPE_UBAFlags, 1, (v ? 0x22 : 0x02), 0x34); @@ -2492,7 +2492,7 @@ bool Boiler::set_ww_circulation_pump(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) { + if (is_received(EMS_TYPE_UBAParameterWWPlus)) { write_command(EMS_TYPE_UBAParameterWWPlus, 10, v ? 0x01 : 0x00, EMS_TYPE_UBAParameterWWPlus); } else { write_command(EMS_TYPE_UBAParameterWW, 6, v ? 0xFF : 0x00, EMS_TYPE_UBAParameterWW); @@ -2509,7 +2509,7 @@ bool Boiler::set_ww_circulation_mode(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) { + if (is_received(EMS_TYPE_UBAParameterWWPlus)) { write_command(EMS_TYPE_UBAParameterWWPlus, 11, v, EMS_TYPE_UBAParameterWWPlus); } else { write_command(EMS_TYPE_UBAParameterWW, 7, v, EMS_TYPE_UBAParameterWW); From 96a04da1ff57a4105346c12d2e45ea77058484d3 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 23 Nov 2023 15:27:38 +0100 Subject: [PATCH 57/91] add settings for #1389 --- src/devices/thermostat.cpp | 48 ++++++++++++++++++++++++++++++++++++++ src/devices/thermostat.h | 9 ++++++- src/locale_translations.h | 3 +++ 3 files changed, 59 insertions(+), 1 deletion(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index fcf3f8ce7..5f96cacd1 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -1108,6 +1108,9 @@ void Thermostat::process_RC300Summer2(std::shared_ptr telegram) has_update(hc->summersetmode, EMS_VALUE_UINT_NOTSET); } has_update(telegram, hc->summertemp, 1); + has_update(telegram, hc->heatondelay, 2); + has_update(telegram, hc->heatoffdelay, 3); + has_update(telegram, hc->instantstart, 4); } // types 0x29B ff @@ -2728,6 +2731,48 @@ bool Thermostat::set_boosttime(const char * value, const int8_t id) { return true; } +bool Thermostat::set_heatondelay(const char * value, const int8_t id) { + uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id; + std::shared_ptr hc = heating_circuit(hc_num); + if (hc == nullptr) { + return false; + } + int v; + if (!Helpers::value2number(value, v)) { + return false; + } + write_command(summer2_typeids[hc->hc()], 2, (uint8_t)v, summer2_typeids[hc->hc()]); + return true; +} + +bool Thermostat::set_heatoffdelay(const char * value, const int8_t id) { + uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id; + std::shared_ptr hc = heating_circuit(hc_num); + if (hc == nullptr) { + return false; + } + int v; + if (!Helpers::value2number(value, v)) { + return false; + } + write_command(summer2_typeids[hc->hc()], 3, (uint8_t)v, summer2_typeids[hc->hc()]); + return true; +} + +bool Thermostat::set_instantstart(const char * value, const int8_t id) { + uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id; + std::shared_ptr hc = heating_circuit(hc_num); + if (hc == nullptr) { + return false; + } + int v; + if (!Helpers::value2number(value, v)) { + return false; + } + write_command(summer2_typeids[hc->hc()], 4, (uint8_t)v, summer2_typeids[hc->hc()]); + return true; +} + // sets the thermostat reducemode for RC35 and RC310 bool Thermostat::set_reducemode(const char * value, const int8_t id) { uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id; @@ -4350,6 +4395,9 @@ void Thermostat::register_device_values_hc(std::shared_ptrremotehum, DeviceValueType::UINT, FL_(remotehum), DeviceValueUOM::PERCENT, MAKE_CF_CB(set_remotehum), -1, 101); + register_device_value(tag, &hc->heatondelay, DeviceValueType::UINT, FL_(heatondelay), DeviceValueUOM::HOURS, MAKE_CF_CB(set_heatondelay), 1, 48); + register_device_value(tag, &hc->heatoffdelay, DeviceValueType::UINT, FL_(heatoffdelay), DeviceValueUOM::HOURS, MAKE_CF_CB(set_heatoffdelay), 1, 48); + register_device_value(tag, &hc->instantstart, DeviceValueType::UINT, FL_(instantstart), DeviceValueUOM::K, MAKE_CF_CB(set_instantstart), 1, 10); register_device_value(tag, &hc->boost, DeviceValueType::BOOL, FL_(boost), DeviceValueUOM::NONE, MAKE_CF_CB(set_boost)); register_device_value(tag, &hc->boosttime, DeviceValueType::UINT, FL_(boosttime), DeviceValueUOM::HOURS, MAKE_CF_CB(set_boosttime)); diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index 4b8b52a24..9af078913 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -98,8 +98,12 @@ class Thermostat : public EMSdevice { uint8_t hpmode; uint8_t cooling; uint8_t coolingon; + // RC300 + uint8_t heatoffdelay; // 1-48h + uint8_t heatondelay; // 1-48h + uint8_t instantstart; // 1-10K uint8_t boost; - uint8_t boosttime; + uint8_t boosttime; // hours uint8_t hc_num() const { return hc_num_; @@ -441,6 +445,9 @@ class Thermostat : public EMSdevice { bool set_wwprio(const char * value, const int8_t id); bool set_fastheatup(const char * value, const int8_t id); bool set_switchonoptimization(const char * value, const int8_t id); + bool set_heatondelay(const char * value, const int8_t id); + bool set_heatoffdelay(const char * value, const int8_t id); + bool set_instantstart(const char * value, const int8_t id); bool set_boost(const char * value, const int8_t id); bool set_boosttime(const char * value, const int8_t id); diff --git a/src/locale_translations.h b/src/locale_translations.h index 7e923e9dd..328368676 100644 --- a/src/locale_translations.h +++ b/src/locale_translations.h @@ -459,6 +459,9 @@ MAKE_TRANSLATION(hpEA0, "hpea0", "condensate reservoir heating (EA0)", "Heizung MAKE_TRANSLATION(boost, "boost", "boost mode", "Boost", "", "", "", "", "", "", "") // TODO translate MAKE_TRANSLATION(boosttime, "boosttime", "boost time", "Boost Dauer", "", "", "", "", "", "", "") // TODO translate MAKE_TRANSLATION(hpPumpMode, "hppumpmode", "primary heatpump mode", "Modus Hauptpumpe", "", "", "", "", "", "", "") // TODO translate +MAKE_TRANSLATION(instantstart, "instantstart", "instant start", "Sofortstart", "", "", "", "", "", "", "") // TODO translate +MAKE_TRANSLATION(heatondelay, "heatondelay", "heat-on delay", "Einschaltverzögerung Heizen", "", "", "", "", "", "", "") // TODO translate +MAKE_TRANSLATION(heatoffdelay, "heatoffdelay", "heat-off delay", "Ausschaltverzögerung Heizen", "", "", "", "", "", "", "") // TODO translate // hybrid heatpump MAKE_TRANSLATION(hybridStrategy, "hybridstrategy", "hybrid control strategy", "Hybrid Strategie", "Hybride strategie", "Hybrid kontrollstrategi", "strategia sterowania hybrydowego", "hybrid kontrollstrategi", "stratégie contrôle hybride", "hibrit kontrol stratejisi", "strategia comtrollo ibrido") From c61c34f10ebf31466015f07c03b845f8f5220081 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 23 Nov 2023 17:24:40 +0100 Subject: [PATCH 58/91] HIU heating/tapwater-active, always use `EMSdevice::` for flags --- src/devices/boiler.cpp | 21 +++- src/devices/thermostat.cpp | 218 ++++++++++++++++++------------------- 2 files changed, 125 insertions(+), 114 deletions(-) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 2063bf7d9..b0b500dca 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -179,7 +179,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const DeviceValueUOM::DEGREES); // exclude burner related entities from heatpump and HIU - if (model() != EMS_DEVICE_FLAG_HEATPUMP && model() != EMS_DEVICE_FLAG_HIU) { + if (model() != EMSdevice::EMS_DEVICE_FLAG_HEATPUMP && model() != EMSdevice::EMS_DEVICE_FLAG_HIU) { register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &exhaustTemp_, DeviceValueType::USHORT, @@ -367,7 +367,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const */ // heatpump info - if (model() == EMS_DEVICE_FLAG_HEATPUMP) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_HEATPUMP) { register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &nrgTotal_, DeviceValueType::ULONG, @@ -945,7 +945,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const EMSESP::send_read_request(0xC2, device_id); // read last errorcode on start (only published on errors) - if (model() != EMS_DEVICE_FLAG_HEATPUMP && model() != EMS_DEVICE_FLAG_HIU) { + if (model() != EMSdevice::EMS_DEVICE_FLAG_HEATPUMP && model() != EMSdevice::EMS_DEVICE_FLAG_HIU) { register_telegram_type(0x04, "UBAFactory", true, MAKE_PF_CB(process_UBAFactory)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &nomPower_, DeviceValueType::UINT, FL_(nomPower), DeviceValueUOM::KW, MAKE_CF_CB(set_nomPower)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, @@ -1066,7 +1066,7 @@ void Boiler::check_active() { } // calculate energy for boiler 0x08 from stored modulation an time in units of 0.01 Wh - if (model() != EMS_DEVICE_FLAG_HEATPUMP) { + if (model() != EMSdevice::EMS_DEVICE_FLAG_HEATPUMP && model() != EMSdevice::EMS_DEVICE_FLAG_HIU) { // remember values from last call static uint32_t powLastReadTime_ = uuid::get_uptime(); static uint8_t heatBurnPow = 0; @@ -1309,7 +1309,7 @@ void Boiler::process_UBAMonitorFastPlus(std::shared_ptr telegram // at this point do a quick check to see if the hot water or heating is active uint8_t state = EMS_VALUE_UINT_NOTSET; - if (telegram->read_value(state, 11)) { + if (telegram->read_value(state, 11) && model() != EMSdevice::EMS_DEVICE_FLAG_HIU) { boilerState_ = state & 0x01 ? 0x08 : 0; boilerState_ |= state & 0x02 ? 0x01 : 0; boilerState_ |= state & 0x04 ? 0x02 : 0; @@ -1348,6 +1348,17 @@ void Boiler::process_UBAMonitorSlow(std::shared_ptr telegram) { */ void Boiler::process_UBAMonitorSlowPlus2(std::shared_ptr telegram) { has_update(telegram, absBurnPow_, 13); // current burner absolute power (percent of rating plate power) + if (model() == EMSdevice::EMS_DEVICE_FLAG_HIU) { + uint8_t state = EMS_VALUE_UINT_NOTSET; + boilerState_ = 0; + if (telegram->read_value(state, 2)) { + boilerState_ |= state == 1 ? 0x09 : 0; // heating 0/1 + } + state = EMS_VALUE_UINT_NOTSET; + if (telegram->read_value(state, 5)) { + boilerState_ |= state == 1 ? 0x0A : 0; // dhw 0/1 + } + } } /* diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 5f96cacd1..6ea436794 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -180,7 +180,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i register_telegram_type(monitor_typeids[i], "JunkersMonitor", false, MAKE_PF_CB(process_JunkersMonitor)); } - if (has_flags(EMS_DEVICE_FLAG_JUNKERS_OLD)) { + if (has_flags(EMSdevice::EMS_DEVICE_FLAG_JUNKERS_OLD)) { // FR120, FR100 set_typeids = {0x0179, 0x017A, 0x017B, 0x017C}; for (uint8_t i = 0; i < monitor_typeids.size(); i++) { @@ -517,7 +517,7 @@ uint8_t Thermostat::HeatingCircuit::get_mode() const { uint8_t Thermostat::HeatingCircuit::get_mode_type() const { uint8_t model = get_model(); - if (model == EMS_DEVICE_FLAG_JUNKERS) { + if (model == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) { if (modetype == 2) { return HeatingCircuit::Mode::HEAT; } else if (modetype == 1) { @@ -525,25 +525,25 @@ uint8_t Thermostat::HeatingCircuit::get_mode_type() const { } else if (modetype == 0) { return HeatingCircuit::Mode::NOFROST; } - } else if ((model == EMS_DEVICE_FLAG_RC35) || (model == EMS_DEVICE_FLAG_RC30_N)) { + } else if ((model == EMSdevice::EMS_DEVICE_FLAG_RC35) || (model == EMSdevice::EMS_DEVICE_FLAG_RC30_N)) { if (modetype == 0) { return HeatingCircuit::Mode::NIGHT; } else if (modetype == 1) { return HeatingCircuit::Mode::DAY; } - } else if (model == EMS_DEVICE_FLAG_CRF) { + } else if (model == EMSdevice::EMS_DEVICE_FLAG_CRF) { if (modetype == 0) { return HeatingCircuit::Mode::OFF; } else if (modetype == 1) { return HeatingCircuit::Mode::ON; } - } else if ((model == EMS_DEVICE_FLAG_BC400) || (model == EMS_DEVICE_FLAG_RC300)) { + } else if ((model == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model == EMSdevice::EMS_DEVICE_FLAG_RC300)) { if (modetype == 0) { return HeatingCircuit::Mode::ECO; } else if (modetype == 1) { return HeatingCircuit::Mode::COMFORT; } - } else if (model == EMS_DEVICE_FLAG_RC100) { + } else if (model == EMSdevice::EMS_DEVICE_FLAG_RC100) { return HeatingCircuit::Mode::DAY; // no other modes on these devices } @@ -1146,7 +1146,7 @@ void Thermostat::process_RC300WWmode(std::shared_ptr telegram) { // circulation pump see: https://github.com/Th3M3/buderus_ems-wiki/blob/master/Einstellungen%20der%20Bedieneinheit%20RC310.md has_update(telegram, wwCircPump_, 1); // FF=off, 0=on ? - if (model() == EMS_DEVICE_FLAG_BC400) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400) { const uint8_t modes[] = {0, 5, 1, 2, 4}; // off, eco+, eco, comfort, auto uint8_t wwmode = wwMode_ < sizeof(modes) ? modes[wwMode_] : EMS_VALUE_UINT_NOTSET; telegram->read_value(wwmode, 2); @@ -1355,7 +1355,7 @@ void Thermostat::process_RC35Set(std::shared_ptr telegram) { has_update(telegram, hc->minflowtemp, 16); // RC35 stores values for floorheating in different position - if (hc->heatingtype == 3 && model() == EMS_DEVICE_FLAG_RC35) { + if (hc->heatingtype == 3 && model() == EMSdevice::EMS_DEVICE_FLAG_RC35) { has_update(telegram, hc->designtemp, 36); // is * 1 has_update(telegram, hc->maxflowtemp, 35); // is * 1 } else { // radiator/convector @@ -1378,14 +1378,14 @@ void Thermostat::process_RC35Timer(std::shared_ptr telegram) { char data[sizeof(hc->switchtime1)]; uint8_t no = telegram->offset / 2; uint8_t day = telegram->message_data[0] >> 5; - uint8_t on = model() == EMS_DEVICE_FLAG_RC30 ? telegram->message_data[0] & 7 : telegram->message_data[0] & 1; + uint8_t on = model() == EMSdevice::EMS_DEVICE_FLAG_RC30 ? telegram->message_data[0] & 7 : telegram->message_data[0] & 1; uint8_t time = telegram->message_data[1]; // we use EN settings for the day abbreviation auto sday = (FL_(enum_dayOfWeek)[day][0]); if (day == 7) { snprintf(data, sizeof(data), "%02d not_set", no); - } else if (model() == EMS_DEVICE_FLAG_RC30) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { snprintf(data, sizeof(data), "%02d %s %02d:%02d T%d", no, sday, time / 6, 10 * (time % 6), on); } else { snprintf(data, sizeof(data), "%02d %s %02d:%02d %s", no, sday, time / 6, 10 * (time % 6), on ? "on" : "off"); @@ -1441,7 +1441,7 @@ void Thermostat::process_RCTime(std::shared_ptr telegram) { return; } - if (flags() == EMS_DEVICE_FLAG_EASY) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_EASY) { return; // not supported } @@ -1702,9 +1702,9 @@ bool Thermostat::set_minexttemp(const char * value, const int8_t id) { return false; } - if ((model() == EMS_DEVICE_FLAG_RC20_N) || (model() == EMS_DEVICE_FLAG_RC25)) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_RC20_N) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC25)) { write_command(0xAD, 14, mt, 0xAD); - } else if ((model() == EMS_DEVICE_FLAG_BC400) || (model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { + } else if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) { write_command(0x240, 10, mt, 0x240); } else { write_command(EMS_TYPE_IBASettings, 5, mt, EMS_TYPE_IBASettings); @@ -1720,7 +1720,7 @@ bool Thermostat::set_clockoffset(const char * value, const int8_t id) { return false; } - if (model() == EMS_DEVICE_FLAG_RC30) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { write_command(EMS_TYPE_RC30Settings, 10, co, EMS_TYPE_RC30Settings); } else { write_command(EMS_TYPE_IBASettings, 12, co, EMS_TYPE_IBASettings); @@ -1739,13 +1739,13 @@ bool Thermostat::set_calinttemp(const char * value, const int8_t id) { auto t = (int8_t)(ct * 10); LOG_DEBUG("Calibrating internal temperature to %d.%d C", t / 10, t < 0 ? -t % 10 : t % 10); - if (model() == EMS_DEVICE_FLAG_RC10) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_RC10) { write_command(0xB0, 0, t, 0xB0); - } else if (model() == EMS_DEVICE_FLAG_RC30) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { write_command(EMS_TYPE_RC30Settings, 1, t, EMS_TYPE_RC30Settings); - } else if (model() == EMS_DEVICE_FLAG_RC100H) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC100H) { write_command(0x273, 0, t, 0x273); - } else if ((model() == EMS_DEVICE_FLAG_BC400) || model() == EMS_DEVICE_FLAG_RC100 || model() == EMS_DEVICE_FLAG_RC300) { + } else if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || model() == EMSdevice::EMS_DEVICE_FLAG_RC100 || model() == EMSdevice::EMS_DEVICE_FLAG_RC300) { write_command(0x240, 7, t, 0x240); } else { write_command(EMS_TYPE_IBASettings, 2, t, EMS_TYPE_IBASettings); @@ -1800,7 +1800,7 @@ bool Thermostat::set_remotetemp(const char * value, const int8_t id) { Roomctrl::set_remotetemp(Roomctrl::FB10, hc->hc(), hc->remotetemp); // FB10 } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC35 || model() == EMSdevice::EMS_DEVICE_FLAG_RC30_N) { Roomctrl::set_remotetemp(Roomctrl::RC20, hc->hc(), hc->remotetemp); // RC20 - } else if ((model() == EMS_DEVICE_FLAG_BC400) || model() == EMSdevice::EMS_DEVICE_FLAG_RC300) { + } else if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || model() == EMSdevice::EMS_DEVICE_FLAG_RC300) { Roomctrl::set_remotetemp(Roomctrl::RC100H, hc->hc(), hc->remotetemp); // RC100H } @@ -1825,7 +1825,7 @@ bool Thermostat::set_remotehum(const char * value, const int8_t id) { hc->remotehum = h; } - if ((model() == EMS_DEVICE_FLAG_BC400) || model() == EMSdevice::EMS_DEVICE_FLAG_RC300) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || model() == EMSdevice::EMS_DEVICE_FLAG_RC300) { Roomctrl::set_remotehum(Roomctrl::RC100H, hc->hc(), hc->remotehum); // RC100H return true; } @@ -1839,9 +1839,9 @@ bool Thermostat::set_building(const char * value, const int8_t id) { return false; } - if ((model() == EMS_DEVICE_FLAG_BC400) || (model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) { write_command(0x240, 9, bd + 1, 0x240); - } else if (model() == EMS_DEVICE_FLAG_RC30) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { write_command(EMS_TYPE_RC30Settings, 4, bd, EMS_TYPE_RC30Settings); } else { write_command(EMS_TYPE_IBASettings, 6, bd, EMS_TYPE_IBASettings); @@ -1857,9 +1857,9 @@ bool Thermostat::set_heatingpid(const char * value, const int8_t id) { return false; } - if (model() == EMS_DEVICE_FLAG_RC10) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_RC10) { write_command(0xB0, 6, pid, 0xB0); - } else if (model() == EMS_DEVICE_FLAG_RC30) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { write_command(EMS_TYPE_RC30Settings, 25, pid, EMS_TYPE_RC30Settings); } @@ -1869,7 +1869,7 @@ bool Thermostat::set_heatingpid(const char * value, const int8_t id) { // 0xA5 and 0x0240- Set the damping settings bool Thermostat::set_damping(const char * value, const int8_t id) { bool dmp; - if ((model() == EMS_DEVICE_FLAG_BC400) || model() == EMS_DEVICE_FLAG_RC300) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || model() == EMSdevice::EMS_DEVICE_FLAG_RC300) { if (Helpers::value2bool(value, dmp)) { write_command(0x240, 8, dmp ? 0xFF : 0, 0x240); return true; @@ -1887,7 +1887,7 @@ bool Thermostat::set_damping(const char * value, const int8_t id) { bool Thermostat::set_language(const char * value, const int8_t id) { uint8_t lg; - if (model() == EMS_DEVICE_FLAG_RC30) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { if (!Helpers::value2enum(value, lg, FL_(enum_ibaLanguage_RC30))) { return false; } @@ -1911,12 +1911,12 @@ bool Thermostat::set_control(const char * value, const int8_t id) { } uint8_t ctrl; - if (model() == EMS_DEVICE_FLAG_JUNKERS && !has_flags(EMS_DEVICE_FLAG_JUNKERS_OLD)) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_JUNKERS && !has_flags(EMSdevice::EMS_DEVICE_FLAG_JUNKERS_OLD)) { if (Helpers::value2enum(value, ctrl, FL_(enum_j_control))) { write_command(set_typeids[hc->hc()], 1, ctrl); return true; } - } else if (model() == EMS_DEVICE_FLAG_BC400 || model() == EMS_DEVICE_FLAG_RC300 || model() == EMS_DEVICE_FLAG_RC100) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400 || model() == EMSdevice::EMS_DEVICE_FLAG_RC300 || model() == EMSdevice::EMS_DEVICE_FLAG_RC100) { if (Helpers::value2enum(value, ctrl, FL_(enum_control1))) { write_command(hpmode_typeids[hc->hc()], 3, ctrl); return true; @@ -1938,7 +1938,7 @@ bool Thermostat::set_roomsensor(const char * value, const int8_t id) { } uint8_t ctrl; - if (model() == EMS_DEVICE_FLAG_JUNKERS && !has_flags(EMS_DEVICE_FLAG_JUNKERS_OLD)) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_JUNKERS && !has_flags(EMSdevice::EMS_DEVICE_FLAG_JUNKERS_OLD)) { if (Helpers::value2enum(value, ctrl, FL_(enum_roomsensor))) { write_command(set_typeids[hc->hc()], 9, ctrl + 1); return true; @@ -1951,23 +1951,23 @@ bool Thermostat::set_roomsensor(const char * value, const int8_t id) { bool Thermostat::set_wwmode(const char * value, const int8_t id) { uint8_t set; - if (model() == EMS_DEVICE_FLAG_RC10) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_RC10) { if (!Helpers::value2enum(value, set, FL_(enum_wwMode3))) { return false; } write_command(0xB0, 2, set, 0xB0); - } else if (model() == EMS_DEVICE_FLAG_BC400) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400) { if (!Helpers::value2enum(value, set, FL_(enum_wwMode4))) { return false; } const uint8_t modes[] = {0, 5, 1, 2, 4}; write_command(0x02F5, 2, modes[set], 0x02F5); - } else if ((model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { + } else if ((model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) { if (!Helpers::value2enum(value, set, FL_(enum_wwMode))) { return false; } write_command(0x02F5, 2, set, 0x02F5); - } else if (model() == EMS_DEVICE_FLAG_RC30) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { if (!Helpers::value2enum(value, set, FL_(enum_wwMode3))) { return false; } @@ -2025,7 +2025,7 @@ bool Thermostat::set_wwcharge(const char * value, const int8_t id) { return false; } - if ((model() == EMS_DEVICE_FLAG_JUNKERS)) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_JUNKERS)) { write_command(0x0115, 0, b ? 0xFF : 0x00, 0x01D3); } else { write_command(0x02F5, 11, b ? 0xFF : 0x00, 0x02F5); @@ -2058,7 +2058,7 @@ bool Thermostat::set_wwprio(const char * value, const int8_t id) { if (!Helpers::value2bool(value, b)) { return false; } - if ((model() == EMS_DEVICE_FLAG_BC400) || (model() == EMS_DEVICE_FLAG_RC300)) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300)) { write_command(set2_typeids[hc->hc()], 3, b ? 0xFF : 0x00, set2_typeids[hc->hc()]); } else { write_command(set_typeids[hc->hc()], 21, b ? 0xFF : 0x00, set_typeids[hc->hc()]); @@ -2086,7 +2086,7 @@ bool Thermostat::set_cooling(const char * value, const int8_t id) { bool Thermostat::set_wwcircmode(const char * value, const int8_t id) { uint8_t set; - if ((model() == EMS_DEVICE_FLAG_BC400) || (model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) { if (!Helpers::value2enum(value, set, FL_(enum_wwCircMode))) { return false; } @@ -2118,7 +2118,7 @@ bool Thermostat::set_wwDailyHeatTime(const char * value, const int8_t id) { return false; } - if ((model() == EMS_DEVICE_FLAG_BC400) || (model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) { uint8_t t = (set + 8) / 15; if (t > 95) { return false; @@ -2135,9 +2135,9 @@ bool Thermostat::set_wwDisinfect(const char * value, const int8_t id) { return false; } - if ((model() == EMS_DEVICE_FLAG_BC400) || (model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) { write_command(0x2F5, 5, b ? 0xFF : 0x00, 0x2F5); - } else if (model() == EMS_DEVICE_FLAG_RC30) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { write_command(EMS_TYPE_RC30wwSettings, 2, b ? 0xFF : 0x00, EMS_TYPE_RC30wwSettings); } else { write_command(0x37, 4, b ? 0xFF : 0x00, 0x37); @@ -2152,9 +2152,9 @@ bool Thermostat::set_wwDisinfectDay(const char * value, const int8_t id) { return false; } - if ((model() == EMS_DEVICE_FLAG_BC400) || (model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) { write_command(0x2F5, 7, set, 0x2F5); - } else if (model() == EMS_DEVICE_FLAG_RC30) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { write_command(EMS_TYPE_RC30wwSettings, 3, set, EMS_TYPE_RC30wwSettings); } else { write_command(0x37, 5, set, 0x37); @@ -2165,12 +2165,12 @@ bool Thermostat::set_wwDisinfectDay(const char * value, const int8_t id) { bool Thermostat::set_wwDisinfectHour(const char * value, const int8_t id) { int set; - if ((model() == EMS_DEVICE_FLAG_BC400) || (model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) { if (!Helpers::value2number(value, set, 0, 1431)) { return false; } write_command(0x2F5, 6, (set + 8) / 15, 0x2F5); - } else if (model() == EMS_DEVICE_FLAG_RC30) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { if (!Helpers::value2number(value, set, 0, 23)) { return false; } @@ -2197,7 +2197,7 @@ bool Thermostat::set_wwMaxTemp(const char * value, const int8_t id) { } bool Thermostat::set_wwOneTimeKey(const char * value, const int8_t id) { - bool b = false; + bool b; if (!Helpers::value2bool(value, b)) { return false; } @@ -2214,7 +2214,7 @@ bool Thermostat::set_backlight(const char * value, const int8_t id) { return false; } - if (model() == EMS_DEVICE_FLAG_RC30) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { write_command(EMS_TYPE_RC30Settings, 12, b ? 0xFF : 0x00, EMS_TYPE_RC30Settings); } else { write_command(0xB0, 1, b ? 0xFF : 0x00, 0xB0); @@ -2601,7 +2601,7 @@ bool Thermostat::set_mode_n(const uint8_t mode, const uint8_t hc_num) { set_mode_value = set_mode_value == 2 ? 0xFF : 0; break; case EMSdevice::EMS_DEVICE_FLAG_JUNKERS: - if (has_flags(EMS_DEVICE_FLAG_JUNKERS_OLD)) { + if (has_flags(EMSdevice::EMS_DEVICE_FLAG_JUNKERS_OLD)) { offset = EMS_OFFSET_JunkersSetMessage2_set_mode; } else { offset = EMS_OFFSET_JunkersSetMessage_set_mode; @@ -2629,7 +2629,7 @@ bool Thermostat::set_mode_n(const uint8_t mode, const uint8_t hc_num) { // set hc->mode temporary until validate is received if (model_ == EMSdevice::EMS_DEVICE_FLAG_RC10) { hc->mode = set_mode_value >> 1; - } else if (model_ == EMS_DEVICE_FLAG_BC400) { + } else if (model_ == EMSdevice::EMS_DEVICE_FLAG_BC400) { hc->mode_new = set_mode_value; } else if (model_ == EMSdevice::EMS_DEVICE_FLAG_RC300 || model_ == EMSdevice::EMS_DEVICE_FLAG_RC100) { hc->mode = set_mode_value == 0xFF ? 1 : 0; @@ -2782,7 +2782,7 @@ bool Thermostat::set_reducemode(const char * value, const int8_t id) { } uint8_t set; - if (model() == EMS_DEVICE_FLAG_BC400 || model() == EMS_DEVICE_FLAG_RC300 || model() == EMS_DEVICE_FLAG_RC100) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400 || model() == EMSdevice::EMS_DEVICE_FLAG_RC300 || model() == EMSdevice::EMS_DEVICE_FLAG_RC100) { if (Helpers::value2enum(value, set, FL_(enum_reducemode1))) { write_command(set_typeids[hc->hc()], 5, set + 1, set_typeids[hc->hc()]); return true; @@ -2822,7 +2822,7 @@ bool Thermostat::set_nofrostmode(const char * value, const int8_t id) { return false; } uint8_t set; - if (model() == EMS_DEVICE_FLAG_BC400 || model() == EMS_DEVICE_FLAG_RC300 || model() == EMS_DEVICE_FLAG_RC100) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400 || model() == EMSdevice::EMS_DEVICE_FLAG_RC300 || model() == EMSdevice::EMS_DEVICE_FLAG_RC100) { if (Helpers::value2enum(value, set, FL_(enum_nofrostmode1))) { write_command(curve_typeids[hc->hc()], 5, set + 1, curve_typeids[hc->hc()]); return true; @@ -2846,11 +2846,11 @@ bool Thermostat::set_heatingtype(const char * value, const int8_t id) { uint8_t set; if (Helpers::value2enum(value, set, FL_(enum_heatingtype))) { - if ((model() == EMS_DEVICE_FLAG_RC20_N) || (model() == EMS_DEVICE_FLAG_RC25)) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_RC20_N) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC25)) { write_command(set_typeids[hc->hc()], 0, set, set_typeids[hc->hc()]); - } else if (model() == EMS_DEVICE_FLAG_RC35 || model() == EMS_DEVICE_FLAG_RC30_N) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC35 || model() == EMSdevice::EMS_DEVICE_FLAG_RC30_N) { write_command(set_typeids[hc->hc()], 0, set, set_typeids[hc->hc()]); - } else if (model() == EMS_DEVICE_FLAG_RC30) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { write_command(curve_typeids[hc->hc()], 0, set, curve_typeids[hc->hc()]); } else { write_command(curve_typeids[hc->hc()], 1, set, curve_typeids[hc->hc()]); @@ -2870,22 +2870,22 @@ bool Thermostat::set_controlmode(const char * value, const int8_t id) { } uint8_t set; - if (model() == EMS_DEVICE_FLAG_RC100) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_RC100) { if (Helpers::value2enum(value, set, FL_(enum_controlmode))) { write_command(curve_typeids[hc->hc()], 0, set, curve_typeids[hc->hc()]); return true; } - } else if (model() == EMS_DEVICE_FLAG_BC400 || model() == EMS_DEVICE_FLAG_RC300) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400 || model() == EMSdevice::EMS_DEVICE_FLAG_RC300) { if (Helpers::value2enum(value, set, FL_(enum_controlmode1))) { write_command(curve_typeids[hc->hc()], 0, set + 1, curve_typeids[hc->hc()]); return true; } - } else if (model() == EMS_DEVICE_FLAG_RC30) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { if (Helpers::value2enum(value, set, FL_(enum_controlmode2))) { write_command(curve_typeids[hc->hc()], 1, set, curve_typeids[hc->hc()]); return true; } - } else if (model() == EMS_DEVICE_FLAG_RC35 || model() == EMS_DEVICE_FLAG_RC30_N) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC35 || model() == EMSdevice::EMS_DEVICE_FLAG_RC30_N) { if (Helpers::value2enum(value, set, FL_(enum_controlmode2))) { write_command(set_typeids[hc->hc()], 33, set, set_typeids[hc->hc()]); return true; @@ -2944,7 +2944,7 @@ bool Thermostat::set_switchtime(const char * value, const uint16_t type_id, char } const char * s_mode = doc["mode"]; const char * s_time = doc["time"]; - if (model() == EMS_DEVICE_FLAG_RC35 || model() == EMS_DEVICE_FLAG_RC30_N) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_RC35 || model() == EMSdevice::EMS_DEVICE_FLAG_RC30_N) { bool b; if (Helpers::value2bool(s_mode, b)) { on = b ? 1 : 0; @@ -2952,7 +2952,7 @@ bool Thermostat::set_switchtime(const char * value, const uint16_t type_id, char if (strlen(s_time) == 5 && s_time[2] == ':') { time = 6 * ((s_time[0] - '0') * 10 + (s_time[1] - '0')) + (s_time[3] - '0'); } - } else if ((model() == EMS_DEVICE_FLAG_RC20) || (model() == EMS_DEVICE_FLAG_RC30)) { + } else if ((model() == EMSdevice::EMS_DEVICE_FLAG_RC20) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC30)) { if (s_mode[0] == 'T') { on = s_mode[1] - '0'; } else { @@ -3018,7 +3018,7 @@ bool Thermostat::set_switchtime(const char * value, const uint16_t type_id, char uint8_t min_on = 1; uint8_t max_on = 4; - if ((model() == EMS_DEVICE_FLAG_RC35) || (model() == EMS_DEVICE_FLAG_RC30_N)) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_RC35) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC30_N)) { min_on = 0; max_on = 1; } @@ -3030,9 +3030,9 @@ bool Thermostat::set_switchtime(const char * value, const uint16_t type_id, char if (data[0] != 0xE7) { // we use EN settings for the day abbreviation auto sday = (FL_(enum_dayOfWeek)[day][0]); - if (model() == EMS_DEVICE_FLAG_RC35 || model() == EMS_DEVICE_FLAG_RC30_N) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_RC35 || model() == EMSdevice::EMS_DEVICE_FLAG_RC30_N) { snprintf(out, len, "%02d %s %02d:%02d %s", no, sday, time / 6, 10 * (time % 6), on ? "on" : "off"); - } else if ((model() == EMS_DEVICE_FLAG_RC20) || (model() == EMS_DEVICE_FLAG_RC30)) { + } else if ((model() == EMSdevice::EMS_DEVICE_FLAG_RC20) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC30)) { snprintf(out, len, "%02d %s %02d:%02d T%d", no, sday, time / 6, 10 * (time % 6), on); } else { auto son = (FL_(enum_switchmode)[on][0]); @@ -3115,24 +3115,24 @@ bool Thermostat::set_program(const char * value, const int8_t id) { } uint8_t set; - if ((model() == EMS_DEVICE_FLAG_RC20_N) || (model() == EMS_DEVICE_FLAG_RC25)) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_RC20_N) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC25)) { if (Helpers::value2enum(value, set, FL_(enum_progMode3))) { write_command(set_typeids[hc->hc()], 11, set + 1, set_typeids[hc->hc()]); return true; } - } else if (model() == EMS_DEVICE_FLAG_RC35 || model() == EMS_DEVICE_FLAG_RC30_N || model() == EMS_DEVICE_FLAG_RC30) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC35 || model() == EMSdevice::EMS_DEVICE_FLAG_RC30_N || model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { if (Helpers::value2enum(value, set, FL_(enum_progMode2))) { write_command(timer_typeids[hc->hc()], 84, set, timer_typeids[hc->hc()]); return true; } - } else if (model() == EMS_DEVICE_FLAG_BC400 || model() == EMS_DEVICE_FLAG_RC300 || model() == EMS_DEVICE_FLAG_RC100) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400 || model() == EMSdevice::EMS_DEVICE_FLAG_RC300 || model() == EMSdevice::EMS_DEVICE_FLAG_RC100) { if (Helpers::value2enum(value, set, FL_(enum_progMode))) { write_command(set_typeids[hc->hc()], 11, set + 1, set_typeids[hc->hc()]); return true; } - } else if (model() == EMS_DEVICE_FLAG_JUNKERS) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) { if (Helpers::value2enum(value, set, FL_(enum_progMode4))) { - if (has_flags(EMS_DEVICE_FLAG_JUNKERS_OLD)) { + if (has_flags(EMSdevice::EMS_DEVICE_FLAG_JUNKERS_OLD)) { write_command(set_typeids[hc->hc()], 10, set + 1, set_typeids[hc->hc()]); } else { write_command(set_typeids[hc->hc()], 13, set + 1, set_typeids[hc->hc()]); @@ -3158,7 +3158,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co uint16_t validate_typeid = monitor_typeids[hc->hc()]; uint16_t set_typeid = set_typeids[hc->hc()]; - if (model == EMS_DEVICE_FLAG_RC10) { + if (model == EMSdevice::EMS_DEVICE_FLAG_RC10) { switch (mode) { case HeatingCircuit::Mode::NIGHT: offset = 3; @@ -3177,7 +3177,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co break; } - } else if (model == EMS_DEVICE_FLAG_RC20) { + } else if (model == EMSdevice::EMS_DEVICE_FLAG_RC20) { switch (mode) { case HeatingCircuit::Mode::NIGHT: offset = 3; @@ -3220,7 +3220,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co break; } - } else if (model == EMS_DEVICE_FLAG_RC30) { + } else if (model == EMSdevice::EMS_DEVICE_FLAG_RC30) { switch (mode) { case HeatingCircuit::Mode::OFF: offset = EMS_OFFSET_RC30Set_temp_off; @@ -3270,7 +3270,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co break; } - } else if (model == EMS_DEVICE_FLAG_BC400 || (model == EMS_DEVICE_FLAG_RC300) || (model == EMS_DEVICE_FLAG_RC100)) { + } else if (model == EMSdevice::EMS_DEVICE_FLAG_BC400 || (model == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model == EMSdevice::EMS_DEVICE_FLAG_RC100)) { validate_typeid = set_typeids[hc->hc()]; switch (mode) { case HeatingCircuit::Mode::SUMMER: @@ -3372,7 +3372,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co break; } - } else if ((model == EMS_DEVICE_FLAG_RC20_N) || (model == EMS_DEVICE_FLAG_RC25)) { + } else if ((model == EMSdevice::EMS_DEVICE_FLAG_RC20_N) || (model == EMSdevice::EMS_DEVICE_FLAG_RC25)) { switch (mode) { case HeatingCircuit::Mode::MINFLOW: offset = 15; @@ -3408,7 +3408,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co break; } - } else if ((model == EMS_DEVICE_FLAG_RC35) || (model == EMS_DEVICE_FLAG_RC30_N)) { + } else if ((model == EMSdevice::EMS_DEVICE_FLAG_RC35) || (model == EMSdevice::EMS_DEVICE_FLAG_RC30_N)) { validate_typeid = set_typeids[hc->hc()]; switch (mode) { case HeatingCircuit::Mode::NIGHT: // change the night temp @@ -3428,7 +3428,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co factor = 1; break; case HeatingCircuit::Mode::DESIGN: - if (hc->heatingtype == 3 && model == EMS_DEVICE_FLAG_RC35) { + if (hc->heatingtype == 3 && model == EMSdevice::EMS_DEVICE_FLAG_RC35) { offset = EMS_OFFSET_RC35Set_temp_design_floor; } else { offset = EMS_OFFSET_RC35Set_temp_design; @@ -3467,7 +3467,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co factor = 1; break; case HeatingCircuit::Mode::MAXFLOW: - if (hc->heatingtype == 3 && model == EMS_DEVICE_FLAG_RC35) { + if (hc->heatingtype == 3 && model == EMSdevice::EMS_DEVICE_FLAG_RC35) { offset = 35; } else { offset = 15; @@ -3482,7 +3482,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co offset = EMS_OFFSET_RC35Set_temp_night; } else if (mode_ == HeatingCircuit::Mode::DAY) { offset = EMS_OFFSET_RC35Set_temp_day; - } else if (model == EMS_DEVICE_FLAG_RC35) { + } else if (model == EMSdevice::EMS_DEVICE_FLAG_RC35) { offset = EMS_OFFSET_RC35Set_seltemp; // https://github.com/emsesp/EMS-ESP/issues/310 } else { // RC30_N missing temporary auto temperature https://github.com/emsesp/EMS-ESP32/issues/395 @@ -3492,10 +3492,10 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co break; } - } else if (model == EMS_DEVICE_FLAG_JUNKERS) { + } else if (model == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) { // figure out if we have older or new thermostats, Heating Circuits on 0x65 or 0x79 // see https://github.com/emsesp/EMS-ESP/issues/335#issuecomment-593324716) - bool old_junkers = (has_flags(EMS_DEVICE_FLAG_JUNKERS_OLD)); + bool old_junkers = (has_flags(EMSdevice::EMS_DEVICE_FLAG_JUNKERS_OLD)); if (!old_junkers) { switch (mode) { case HeatingCircuit::Mode::NOFROST: @@ -3600,7 +3600,7 @@ void Thermostat::register_device_values() { register_device_value(tag, &tempsensor1_, DeviceValueType::SHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(RFTemp), DeviceValueUOM::DEGREES); return; } - // RC100H remote with humidity, this is also EMS_DEVICE_FLAG_RC100 for set_calinttemp + // RC100H remote with humidity, this is also EMSdevice::EMS_DEVICE_FLAG_RC100 for set_calinttemp if (device_id() >= 0x38 && device_id() <= 0x3F) { // each device controls only one hc, so we tag the values uint8_t tag = DeviceValueTAG::TAG_HC1 + device_id() - 0x38; @@ -3623,9 +3623,9 @@ void Thermostat::register_device_values() { register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &lastCode_, DeviceValueType::STRING, FL_(lastCode), DeviceValueUOM::NONE); switch (this->model()) { - case EMS_DEVICE_FLAG_RC100: - case EMS_DEVICE_FLAG_RC300: - case EMS_DEVICE_FLAG_BC400: + case EMSdevice::EMS_DEVICE_FLAG_RC100: + case EMSdevice::EMS_DEVICE_FLAG_RC300: + case EMSdevice::EMS_DEVICE_FLAG_BC400: register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &dateTime_, DeviceValueType::STRING, @@ -3668,7 +3668,7 @@ void Thermostat::register_device_values() { MAKE_CF_CB(set_minexttemp)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &ibaDamping_, DeviceValueType::BOOL, FL_(damping), DeviceValueUOM::NONE, MAKE_CF_CB(set_damping)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwSetTemp_, DeviceValueType::UINT, FL_(wwSetTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwtemp)); - if (model() == EMS_DEVICE_FLAG_BC400) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400) { register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwMode_, DeviceValueType::ENUM, @@ -3795,7 +3795,7 @@ void Thermostat::register_device_values() { register_device_value( DeviceValueTAG::TAG_DEVICE_DATA, &pvLowerCool_, DeviceValueType::INT, FL_(pvLowerCool), DeviceValueUOM::K, MAKE_CF_CB(set_pvLowerCool), -5, 0); break; - case EMS_DEVICE_FLAG_RC10: + case EMSdevice::EMS_DEVICE_FLAG_RC10: register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &ibaCalIntTemperature_, DeviceValueType::INT, @@ -3814,8 +3814,8 @@ void Thermostat::register_device_values() { register_device_value( DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwMode_, DeviceValueType::ENUM, FL_(enum_wwMode3), FL_(wwMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwmode)); break; - case EMS_DEVICE_FLAG_RC20_N: - case EMS_DEVICE_FLAG_RC25: + case EMSdevice::EMS_DEVICE_FLAG_RC20_N: + case EMSdevice::EMS_DEVICE_FLAG_RC25: register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &dateTime_, DeviceValueType::STRING, FL_(dateTime), DeviceValueUOM::NONE); // can't set datetime register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &ibaMinExtTemperature_, @@ -3824,10 +3824,10 @@ void Thermostat::register_device_values() { DeviceValueUOM::DEGREES, MAKE_CF_CB(set_minexttemp)); break; - case EMS_DEVICE_FLAG_RC20: + case EMSdevice::EMS_DEVICE_FLAG_RC20: register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &dateTime_, DeviceValueType::STRING, FL_(dateTime), DeviceValueUOM::NONE); // can't set datetime break; - case EMS_DEVICE_FLAG_RC30: + case EMSdevice::EMS_DEVICE_FLAG_RC30: register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &dateTime_, DeviceValueType::STRING, FL_(dateTime), DeviceValueUOM::NONE); // can't set datetime register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &ibaClockOffset_, @@ -3914,7 +3914,7 @@ void Thermostat::register_device_values() { DeviceValueUOM::NONE, MAKE_CF_CB(set_wwVacation)); break; - case EMS_DEVICE_FLAG_RC30_N: + case EMSdevice::EMS_DEVICE_FLAG_RC30_N: register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &dateTime_, DeviceValueType::STRING, FL_(dateTime), DeviceValueUOM::NONE); // can't set datetime register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &ibaMainDisplay_, @@ -4049,7 +4049,7 @@ void Thermostat::register_device_values() { DeviceValueUOM::NONE, MAKE_CF_CB(set_wwVacation)); break; - case EMS_DEVICE_FLAG_RC35: + case EMSdevice::EMS_DEVICE_FLAG_RC35: register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &dateTime_, DeviceValueType::STRING, @@ -4176,10 +4176,10 @@ void Thermostat::register_device_values() { DeviceValueUOM::NONE, MAKE_CF_CB(set_wwVacation)); break; - case EMS_DEVICE_FLAG_JUNKERS: + case EMSdevice::EMS_DEVICE_FLAG_JUNKERS: // FR100 is not writable, see. https://github.com/emsesp/EMS-ESP32/issues/536 // FW500 is not writable, see. https://github.com/emsesp/EMS-ESP32/issues/666 - if (has_flags(EMS_DEVICE_FLAG_JUNKERS_OLD)) { + if (has_flags(EMSdevice::EMS_DEVICE_FLAG_JUNKERS_OLD)) { register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &dateTime_, DeviceValueType::STRING, FL_(tpl_datetime), FL_(dateTime), DeviceValueUOM::NONE); } else { register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, @@ -4250,11 +4250,11 @@ void Thermostat::register_device_values() { 99); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwCharge_, DeviceValueType::BOOL, FL_(wwCharge), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwcharge)); break; - case EMS_DEVICE_FLAG_EASY: + case EMSdevice::EMS_DEVICE_FLAG_EASY: // Easy TC100 have no date/time, see issue #100, not sure about CT200, so leave it. register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &dateTime_, DeviceValueType::STRING, FL_(dateTime), DeviceValueUOM::NONE); // can't set datetime break; - case EMS_DEVICE_FLAG_CRF: + case EMSdevice::EMS_DEVICE_FLAG_CRF: default: register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &dateTime_, DeviceValueType::STRING, FL_(dateTime), DeviceValueUOM::NONE); // can't set datetime break; @@ -4277,10 +4277,10 @@ void Thermostat::register_device_values_hc(std::shared_ptrselTemp, DeviceValueType::SHORT, seltemp_divider, FL_(selRoomTemp), DeviceValueUOM::DEGREES); } else { register_device_value(tag, &hc->selTemp, DeviceValueType::SHORT, seltemp_divider, FL_(selRoomTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_temp), 0, 30); @@ -4297,7 +4297,7 @@ void Thermostat::register_device_values_hc(std::shared_ptrclimate, DeviceValueType::ENUM, FL_(enum_climate), FL_(haclimate), DeviceValueUOM::NONE, nullptr, 5, 30); switch (model) { - case EMS_DEVICE_FLAG_RC10: + case EMSdevice::EMS_DEVICE_FLAG_RC10: register_device_value(tag, &hc->mode, DeviceValueType::ENUM, FL_(enum_mode6), FL_(mode), DeviceValueUOM::NONE, MAKE_CF_CB(set_mode)); register_device_value( tag, &hc->daytemp, DeviceValueType::UINT, DeviceValueNumOp::DV_NUMOP_DIV2, FL_(daytemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_daytemp)); @@ -4306,10 +4306,10 @@ void Thermostat::register_device_values_hc(std::shared_ptrreducehours, DeviceValueType::UINT, FL_(reducehours), DeviceValueUOM::HOURS, MAKE_CF_CB(set_reducehours)); register_device_value(tag, &hc->reduceminutes, DeviceValueType::USHORT, FL_(reduceminutes), DeviceValueUOM::MINUTES); break; - case EMS_DEVICE_FLAG_RC100: - case EMS_DEVICE_FLAG_RC300: - case EMS_DEVICE_FLAG_BC400: - if (model == EMS_DEVICE_FLAG_BC400) { + case EMSdevice::EMS_DEVICE_FLAG_RC100: + case EMSdevice::EMS_DEVICE_FLAG_RC300: + case EMSdevice::EMS_DEVICE_FLAG_BC400: + if (model == EMSdevice::EMS_DEVICE_FLAG_BC400) { register_device_value(tag, &hc->mode_new, DeviceValueType::ENUM, FL_(enum_mode2), FL_(mode), DeviceValueUOM::NONE, MAKE_CF_CB(set_mode)); } else { register_device_value(tag, &hc->mode, DeviceValueType::ENUM, FL_(enum_mode), FL_(mode), DeviceValueUOM::NONE, MAKE_CF_CB(set_mode)); @@ -4402,12 +4402,12 @@ void Thermostat::register_device_values_hc(std::shared_ptrboosttime, DeviceValueType::UINT, FL_(boosttime), DeviceValueUOM::HOURS, MAKE_CF_CB(set_boosttime)); break; - case EMS_DEVICE_FLAG_CRF: + case EMSdevice::EMS_DEVICE_FLAG_CRF: register_device_value(tag, &hc->mode, DeviceValueType::ENUM, FL_(enum_mode5), FL_(mode), DeviceValueUOM::NONE); register_device_value(tag, &hc->modetype, DeviceValueType::ENUM, FL_(enum_modetype5), FL_(modetype), DeviceValueUOM::NONE); register_device_value(tag, &hc->targetflowtemp, DeviceValueType::UINT, FL_(targetflowtemp), DeviceValueUOM::DEGREES); break; - case EMS_DEVICE_FLAG_RC20: + case EMSdevice::EMS_DEVICE_FLAG_RC20: register_device_value(tag, &hc->mode, DeviceValueType::ENUM, FL_(enum_mode2), FL_(mode), DeviceValueUOM::NONE, MAKE_CF_CB(set_mode)); register_device_value( tag, &hc->manualtemp, DeviceValueType::UINT, DeviceValueNumOp::DV_NUMOP_DIV2, FL_(manualtemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_manualtemp)); @@ -4424,7 +4424,7 @@ void Thermostat::register_device_values_hc(std::shared_ptrswitchtime1, DeviceValueType::STRING, FL_(tpl_switchtime1), FL_(switchtime), DeviceValueUOM::NONE, MAKE_CF_CB(set_switchtime1)); break; - case EMS_DEVICE_FLAG_RC20_N: + case EMSdevice::EMS_DEVICE_FLAG_RC20_N: register_device_value(tag, &hc->mode, DeviceValueType::ENUM, FL_(enum_mode3), FL_(mode), DeviceValueUOM::NONE, MAKE_CF_CB(set_mode)); register_device_value(tag, &hc->modetype, DeviceValueType::ENUM, FL_(enum_modetype3), FL_(modetype), DeviceValueUOM::NONE); register_device_value( @@ -4447,7 +4447,7 @@ void Thermostat::register_device_values_hc(std::shared_ptrsummermode, DeviceValueType::ENUM, FL_(enum_summer), FL_(summermode), DeviceValueUOM::NONE); register_device_value(tag, &hc->remotetemp, DeviceValueType::SHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(remotetemp), DeviceValueUOM::DEGREES); break; - case EMS_DEVICE_FLAG_RC25: + case EMSdevice::EMS_DEVICE_FLAG_RC25: register_device_value(tag, &hc->mode, DeviceValueType::ENUM, FL_(enum_mode3), FL_(mode), DeviceValueUOM::NONE, MAKE_CF_CB(set_mode)); register_device_value(tag, &hc->modetype, DeviceValueType::ENUM, FL_(enum_modetype3), FL_(modetype), DeviceValueUOM::NONE); register_device_value( @@ -4469,7 +4469,7 @@ void Thermostat::register_device_values_hc(std::shared_ptrsummertemp, DeviceValueType::UINT, FL_(summertemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_summertemp), 9, 25); register_device_value(tag, &hc->summermode, DeviceValueType::ENUM, FL_(enum_summer), FL_(summermode), DeviceValueUOM::NONE); break; - case EMS_DEVICE_FLAG_RC30: + case EMSdevice::EMS_DEVICE_FLAG_RC30: register_device_value(tag, &hc->mode, DeviceValueType::ENUM, FL_(enum_mode2), FL_(mode), DeviceValueUOM::NONE, MAKE_CF_CB(set_mode)); register_device_value(tag, &hc->holiday, DeviceValueType::STRING, FL_(tpl_holidays), FL_(holidays), DeviceValueUOM::NONE, MAKE_CF_CB(set_holiday)); register_device_value(tag, &hc->vacation, DeviceValueType::STRING, FL_(tpl_holidays), FL_(vacations), DeviceValueUOM::NONE, MAKE_CF_CB(set_vacation)); @@ -4502,8 +4502,8 @@ void Thermostat::register_device_values_hc(std::shared_ptrnofrosttemp, DeviceValueType::UINT, DeviceValueNumOp::DV_NUMOP_DIV2, FL_(offtemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_offtemp)); break; - case EMS_DEVICE_FLAG_RC30_N: - case EMS_DEVICE_FLAG_RC35: + case EMSdevice::EMS_DEVICE_FLAG_RC30_N: + case EMSdevice::EMS_DEVICE_FLAG_RC35: register_device_value(tag, &hc->mode, DeviceValueType::ENUM, FL_(enum_mode3), FL_(mode), DeviceValueUOM::NONE, MAKE_CF_CB(set_mode)); register_device_value(tag, &hc->modetype, DeviceValueType::ENUM, FL_(enum_modetype3), FL_(modetype), DeviceValueUOM::NONE); register_device_value( @@ -4587,7 +4587,7 @@ void Thermostat::register_device_values_hc(std::shared_ptrswitchtime2, DeviceValueType::STRING, FL_(tpl_switchtime), FL_(switchtime2), DeviceValueUOM::NONE, MAKE_CF_CB(set_switchtime2)); break; - case EMS_DEVICE_FLAG_JUNKERS: + case EMSdevice::EMS_DEVICE_FLAG_JUNKERS: register_device_value(tag, &hc->mode, DeviceValueType::ENUM, FL_(enum_mode4), FL_(mode), DeviceValueUOM::NONE, MAKE_CF_CB(set_mode)); register_device_value(tag, &hc->modetype, DeviceValueType::ENUM, FL_(enum_modetype4), FL_(modetype), DeviceValueUOM::NONE); register_device_value( From 60beeddb66698a453ab2835bdc5705e3dfc005ab Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 23 Nov 2023 17:24:40 +0100 Subject: [PATCH 59/91] HIU heating/tapwater-active, always use `EMSdevice::` for flags --- src/devices/boiler.cpp | 21 +++- src/devices/controller.cpp | 2 +- src/devices/thermostat.cpp | 218 ++++++++++++++++++------------------- 3 files changed, 126 insertions(+), 115 deletions(-) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 2063bf7d9..b0b500dca 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -179,7 +179,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const DeviceValueUOM::DEGREES); // exclude burner related entities from heatpump and HIU - if (model() != EMS_DEVICE_FLAG_HEATPUMP && model() != EMS_DEVICE_FLAG_HIU) { + if (model() != EMSdevice::EMS_DEVICE_FLAG_HEATPUMP && model() != EMSdevice::EMS_DEVICE_FLAG_HIU) { register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &exhaustTemp_, DeviceValueType::USHORT, @@ -367,7 +367,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const */ // heatpump info - if (model() == EMS_DEVICE_FLAG_HEATPUMP) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_HEATPUMP) { register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &nrgTotal_, DeviceValueType::ULONG, @@ -945,7 +945,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const EMSESP::send_read_request(0xC2, device_id); // read last errorcode on start (only published on errors) - if (model() != EMS_DEVICE_FLAG_HEATPUMP && model() != EMS_DEVICE_FLAG_HIU) { + if (model() != EMSdevice::EMS_DEVICE_FLAG_HEATPUMP && model() != EMSdevice::EMS_DEVICE_FLAG_HIU) { register_telegram_type(0x04, "UBAFactory", true, MAKE_PF_CB(process_UBAFactory)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &nomPower_, DeviceValueType::UINT, FL_(nomPower), DeviceValueUOM::KW, MAKE_CF_CB(set_nomPower)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, @@ -1066,7 +1066,7 @@ void Boiler::check_active() { } // calculate energy for boiler 0x08 from stored modulation an time in units of 0.01 Wh - if (model() != EMS_DEVICE_FLAG_HEATPUMP) { + if (model() != EMSdevice::EMS_DEVICE_FLAG_HEATPUMP && model() != EMSdevice::EMS_DEVICE_FLAG_HIU) { // remember values from last call static uint32_t powLastReadTime_ = uuid::get_uptime(); static uint8_t heatBurnPow = 0; @@ -1309,7 +1309,7 @@ void Boiler::process_UBAMonitorFastPlus(std::shared_ptr telegram // at this point do a quick check to see if the hot water or heating is active uint8_t state = EMS_VALUE_UINT_NOTSET; - if (telegram->read_value(state, 11)) { + if (telegram->read_value(state, 11) && model() != EMSdevice::EMS_DEVICE_FLAG_HIU) { boilerState_ = state & 0x01 ? 0x08 : 0; boilerState_ |= state & 0x02 ? 0x01 : 0; boilerState_ |= state & 0x04 ? 0x02 : 0; @@ -1348,6 +1348,17 @@ void Boiler::process_UBAMonitorSlow(std::shared_ptr telegram) { */ void Boiler::process_UBAMonitorSlowPlus2(std::shared_ptr telegram) { has_update(telegram, absBurnPow_, 13); // current burner absolute power (percent of rating plate power) + if (model() == EMSdevice::EMS_DEVICE_FLAG_HIU) { + uint8_t state = EMS_VALUE_UINT_NOTSET; + boilerState_ = 0; + if (telegram->read_value(state, 2)) { + boilerState_ |= state == 1 ? 0x09 : 0; // heating 0/1 + } + state = EMS_VALUE_UINT_NOTSET; + if (telegram->read_value(state, 5)) { + boilerState_ |= state == 1 ? 0x0A : 0; // dhw 0/1 + } + } } /* diff --git a/src/devices/controller.cpp b/src/devices/controller.cpp index 56b768a3b..9419ff98e 100644 --- a/src/devices/controller.cpp +++ b/src/devices/controller.cpp @@ -25,7 +25,7 @@ REGISTER_FACTORY(Controller, EMSdevice::DeviceType::CONTROLLER); Controller::Controller(uint8_t device_type, uint8_t device_id, uint8_t product_id, const char * version, const char * name, uint8_t flags, uint8_t brand) : EMSdevice(device_type, device_id, product_id, version, name, flags, brand) { // IVT broadcasts Thermostat time from controller (0x09) if display is off. - if ((flags & 0x0F) == EMS_DEVICE_FLAG_IVT) { + if ((flags & 0x0F) == EMSdevice::EMS_DEVICE_FLAG_IVT) { register_telegram_type(0x06, "RCTime", false, MAKE_PF_CB(process_dateTime)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &dateTime_, DeviceValueType::STRING, FL_(dateTime), DeviceValueUOM::NONE); } diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 5f96cacd1..6ea436794 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -180,7 +180,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i register_telegram_type(monitor_typeids[i], "JunkersMonitor", false, MAKE_PF_CB(process_JunkersMonitor)); } - if (has_flags(EMS_DEVICE_FLAG_JUNKERS_OLD)) { + if (has_flags(EMSdevice::EMS_DEVICE_FLAG_JUNKERS_OLD)) { // FR120, FR100 set_typeids = {0x0179, 0x017A, 0x017B, 0x017C}; for (uint8_t i = 0; i < monitor_typeids.size(); i++) { @@ -517,7 +517,7 @@ uint8_t Thermostat::HeatingCircuit::get_mode() const { uint8_t Thermostat::HeatingCircuit::get_mode_type() const { uint8_t model = get_model(); - if (model == EMS_DEVICE_FLAG_JUNKERS) { + if (model == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) { if (modetype == 2) { return HeatingCircuit::Mode::HEAT; } else if (modetype == 1) { @@ -525,25 +525,25 @@ uint8_t Thermostat::HeatingCircuit::get_mode_type() const { } else if (modetype == 0) { return HeatingCircuit::Mode::NOFROST; } - } else if ((model == EMS_DEVICE_FLAG_RC35) || (model == EMS_DEVICE_FLAG_RC30_N)) { + } else if ((model == EMSdevice::EMS_DEVICE_FLAG_RC35) || (model == EMSdevice::EMS_DEVICE_FLAG_RC30_N)) { if (modetype == 0) { return HeatingCircuit::Mode::NIGHT; } else if (modetype == 1) { return HeatingCircuit::Mode::DAY; } - } else if (model == EMS_DEVICE_FLAG_CRF) { + } else if (model == EMSdevice::EMS_DEVICE_FLAG_CRF) { if (modetype == 0) { return HeatingCircuit::Mode::OFF; } else if (modetype == 1) { return HeatingCircuit::Mode::ON; } - } else if ((model == EMS_DEVICE_FLAG_BC400) || (model == EMS_DEVICE_FLAG_RC300)) { + } else if ((model == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model == EMSdevice::EMS_DEVICE_FLAG_RC300)) { if (modetype == 0) { return HeatingCircuit::Mode::ECO; } else if (modetype == 1) { return HeatingCircuit::Mode::COMFORT; } - } else if (model == EMS_DEVICE_FLAG_RC100) { + } else if (model == EMSdevice::EMS_DEVICE_FLAG_RC100) { return HeatingCircuit::Mode::DAY; // no other modes on these devices } @@ -1146,7 +1146,7 @@ void Thermostat::process_RC300WWmode(std::shared_ptr telegram) { // circulation pump see: https://github.com/Th3M3/buderus_ems-wiki/blob/master/Einstellungen%20der%20Bedieneinheit%20RC310.md has_update(telegram, wwCircPump_, 1); // FF=off, 0=on ? - if (model() == EMS_DEVICE_FLAG_BC400) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400) { const uint8_t modes[] = {0, 5, 1, 2, 4}; // off, eco+, eco, comfort, auto uint8_t wwmode = wwMode_ < sizeof(modes) ? modes[wwMode_] : EMS_VALUE_UINT_NOTSET; telegram->read_value(wwmode, 2); @@ -1355,7 +1355,7 @@ void Thermostat::process_RC35Set(std::shared_ptr telegram) { has_update(telegram, hc->minflowtemp, 16); // RC35 stores values for floorheating in different position - if (hc->heatingtype == 3 && model() == EMS_DEVICE_FLAG_RC35) { + if (hc->heatingtype == 3 && model() == EMSdevice::EMS_DEVICE_FLAG_RC35) { has_update(telegram, hc->designtemp, 36); // is * 1 has_update(telegram, hc->maxflowtemp, 35); // is * 1 } else { // radiator/convector @@ -1378,14 +1378,14 @@ void Thermostat::process_RC35Timer(std::shared_ptr telegram) { char data[sizeof(hc->switchtime1)]; uint8_t no = telegram->offset / 2; uint8_t day = telegram->message_data[0] >> 5; - uint8_t on = model() == EMS_DEVICE_FLAG_RC30 ? telegram->message_data[0] & 7 : telegram->message_data[0] & 1; + uint8_t on = model() == EMSdevice::EMS_DEVICE_FLAG_RC30 ? telegram->message_data[0] & 7 : telegram->message_data[0] & 1; uint8_t time = telegram->message_data[1]; // we use EN settings for the day abbreviation auto sday = (FL_(enum_dayOfWeek)[day][0]); if (day == 7) { snprintf(data, sizeof(data), "%02d not_set", no); - } else if (model() == EMS_DEVICE_FLAG_RC30) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { snprintf(data, sizeof(data), "%02d %s %02d:%02d T%d", no, sday, time / 6, 10 * (time % 6), on); } else { snprintf(data, sizeof(data), "%02d %s %02d:%02d %s", no, sday, time / 6, 10 * (time % 6), on ? "on" : "off"); @@ -1441,7 +1441,7 @@ void Thermostat::process_RCTime(std::shared_ptr telegram) { return; } - if (flags() == EMS_DEVICE_FLAG_EASY) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_EASY) { return; // not supported } @@ -1702,9 +1702,9 @@ bool Thermostat::set_minexttemp(const char * value, const int8_t id) { return false; } - if ((model() == EMS_DEVICE_FLAG_RC20_N) || (model() == EMS_DEVICE_FLAG_RC25)) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_RC20_N) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC25)) { write_command(0xAD, 14, mt, 0xAD); - } else if ((model() == EMS_DEVICE_FLAG_BC400) || (model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { + } else if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) { write_command(0x240, 10, mt, 0x240); } else { write_command(EMS_TYPE_IBASettings, 5, mt, EMS_TYPE_IBASettings); @@ -1720,7 +1720,7 @@ bool Thermostat::set_clockoffset(const char * value, const int8_t id) { return false; } - if (model() == EMS_DEVICE_FLAG_RC30) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { write_command(EMS_TYPE_RC30Settings, 10, co, EMS_TYPE_RC30Settings); } else { write_command(EMS_TYPE_IBASettings, 12, co, EMS_TYPE_IBASettings); @@ -1739,13 +1739,13 @@ bool Thermostat::set_calinttemp(const char * value, const int8_t id) { auto t = (int8_t)(ct * 10); LOG_DEBUG("Calibrating internal temperature to %d.%d C", t / 10, t < 0 ? -t % 10 : t % 10); - if (model() == EMS_DEVICE_FLAG_RC10) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_RC10) { write_command(0xB0, 0, t, 0xB0); - } else if (model() == EMS_DEVICE_FLAG_RC30) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { write_command(EMS_TYPE_RC30Settings, 1, t, EMS_TYPE_RC30Settings); - } else if (model() == EMS_DEVICE_FLAG_RC100H) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC100H) { write_command(0x273, 0, t, 0x273); - } else if ((model() == EMS_DEVICE_FLAG_BC400) || model() == EMS_DEVICE_FLAG_RC100 || model() == EMS_DEVICE_FLAG_RC300) { + } else if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || model() == EMSdevice::EMS_DEVICE_FLAG_RC100 || model() == EMSdevice::EMS_DEVICE_FLAG_RC300) { write_command(0x240, 7, t, 0x240); } else { write_command(EMS_TYPE_IBASettings, 2, t, EMS_TYPE_IBASettings); @@ -1800,7 +1800,7 @@ bool Thermostat::set_remotetemp(const char * value, const int8_t id) { Roomctrl::set_remotetemp(Roomctrl::FB10, hc->hc(), hc->remotetemp); // FB10 } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC35 || model() == EMSdevice::EMS_DEVICE_FLAG_RC30_N) { Roomctrl::set_remotetemp(Roomctrl::RC20, hc->hc(), hc->remotetemp); // RC20 - } else if ((model() == EMS_DEVICE_FLAG_BC400) || model() == EMSdevice::EMS_DEVICE_FLAG_RC300) { + } else if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || model() == EMSdevice::EMS_DEVICE_FLAG_RC300) { Roomctrl::set_remotetemp(Roomctrl::RC100H, hc->hc(), hc->remotetemp); // RC100H } @@ -1825,7 +1825,7 @@ bool Thermostat::set_remotehum(const char * value, const int8_t id) { hc->remotehum = h; } - if ((model() == EMS_DEVICE_FLAG_BC400) || model() == EMSdevice::EMS_DEVICE_FLAG_RC300) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || model() == EMSdevice::EMS_DEVICE_FLAG_RC300) { Roomctrl::set_remotehum(Roomctrl::RC100H, hc->hc(), hc->remotehum); // RC100H return true; } @@ -1839,9 +1839,9 @@ bool Thermostat::set_building(const char * value, const int8_t id) { return false; } - if ((model() == EMS_DEVICE_FLAG_BC400) || (model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) { write_command(0x240, 9, bd + 1, 0x240); - } else if (model() == EMS_DEVICE_FLAG_RC30) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { write_command(EMS_TYPE_RC30Settings, 4, bd, EMS_TYPE_RC30Settings); } else { write_command(EMS_TYPE_IBASettings, 6, bd, EMS_TYPE_IBASettings); @@ -1857,9 +1857,9 @@ bool Thermostat::set_heatingpid(const char * value, const int8_t id) { return false; } - if (model() == EMS_DEVICE_FLAG_RC10) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_RC10) { write_command(0xB0, 6, pid, 0xB0); - } else if (model() == EMS_DEVICE_FLAG_RC30) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { write_command(EMS_TYPE_RC30Settings, 25, pid, EMS_TYPE_RC30Settings); } @@ -1869,7 +1869,7 @@ bool Thermostat::set_heatingpid(const char * value, const int8_t id) { // 0xA5 and 0x0240- Set the damping settings bool Thermostat::set_damping(const char * value, const int8_t id) { bool dmp; - if ((model() == EMS_DEVICE_FLAG_BC400) || model() == EMS_DEVICE_FLAG_RC300) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || model() == EMSdevice::EMS_DEVICE_FLAG_RC300) { if (Helpers::value2bool(value, dmp)) { write_command(0x240, 8, dmp ? 0xFF : 0, 0x240); return true; @@ -1887,7 +1887,7 @@ bool Thermostat::set_damping(const char * value, const int8_t id) { bool Thermostat::set_language(const char * value, const int8_t id) { uint8_t lg; - if (model() == EMS_DEVICE_FLAG_RC30) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { if (!Helpers::value2enum(value, lg, FL_(enum_ibaLanguage_RC30))) { return false; } @@ -1911,12 +1911,12 @@ bool Thermostat::set_control(const char * value, const int8_t id) { } uint8_t ctrl; - if (model() == EMS_DEVICE_FLAG_JUNKERS && !has_flags(EMS_DEVICE_FLAG_JUNKERS_OLD)) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_JUNKERS && !has_flags(EMSdevice::EMS_DEVICE_FLAG_JUNKERS_OLD)) { if (Helpers::value2enum(value, ctrl, FL_(enum_j_control))) { write_command(set_typeids[hc->hc()], 1, ctrl); return true; } - } else if (model() == EMS_DEVICE_FLAG_BC400 || model() == EMS_DEVICE_FLAG_RC300 || model() == EMS_DEVICE_FLAG_RC100) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400 || model() == EMSdevice::EMS_DEVICE_FLAG_RC300 || model() == EMSdevice::EMS_DEVICE_FLAG_RC100) { if (Helpers::value2enum(value, ctrl, FL_(enum_control1))) { write_command(hpmode_typeids[hc->hc()], 3, ctrl); return true; @@ -1938,7 +1938,7 @@ bool Thermostat::set_roomsensor(const char * value, const int8_t id) { } uint8_t ctrl; - if (model() == EMS_DEVICE_FLAG_JUNKERS && !has_flags(EMS_DEVICE_FLAG_JUNKERS_OLD)) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_JUNKERS && !has_flags(EMSdevice::EMS_DEVICE_FLAG_JUNKERS_OLD)) { if (Helpers::value2enum(value, ctrl, FL_(enum_roomsensor))) { write_command(set_typeids[hc->hc()], 9, ctrl + 1); return true; @@ -1951,23 +1951,23 @@ bool Thermostat::set_roomsensor(const char * value, const int8_t id) { bool Thermostat::set_wwmode(const char * value, const int8_t id) { uint8_t set; - if (model() == EMS_DEVICE_FLAG_RC10) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_RC10) { if (!Helpers::value2enum(value, set, FL_(enum_wwMode3))) { return false; } write_command(0xB0, 2, set, 0xB0); - } else if (model() == EMS_DEVICE_FLAG_BC400) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400) { if (!Helpers::value2enum(value, set, FL_(enum_wwMode4))) { return false; } const uint8_t modes[] = {0, 5, 1, 2, 4}; write_command(0x02F5, 2, modes[set], 0x02F5); - } else if ((model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { + } else if ((model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) { if (!Helpers::value2enum(value, set, FL_(enum_wwMode))) { return false; } write_command(0x02F5, 2, set, 0x02F5); - } else if (model() == EMS_DEVICE_FLAG_RC30) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { if (!Helpers::value2enum(value, set, FL_(enum_wwMode3))) { return false; } @@ -2025,7 +2025,7 @@ bool Thermostat::set_wwcharge(const char * value, const int8_t id) { return false; } - if ((model() == EMS_DEVICE_FLAG_JUNKERS)) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_JUNKERS)) { write_command(0x0115, 0, b ? 0xFF : 0x00, 0x01D3); } else { write_command(0x02F5, 11, b ? 0xFF : 0x00, 0x02F5); @@ -2058,7 +2058,7 @@ bool Thermostat::set_wwprio(const char * value, const int8_t id) { if (!Helpers::value2bool(value, b)) { return false; } - if ((model() == EMS_DEVICE_FLAG_BC400) || (model() == EMS_DEVICE_FLAG_RC300)) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300)) { write_command(set2_typeids[hc->hc()], 3, b ? 0xFF : 0x00, set2_typeids[hc->hc()]); } else { write_command(set_typeids[hc->hc()], 21, b ? 0xFF : 0x00, set_typeids[hc->hc()]); @@ -2086,7 +2086,7 @@ bool Thermostat::set_cooling(const char * value, const int8_t id) { bool Thermostat::set_wwcircmode(const char * value, const int8_t id) { uint8_t set; - if ((model() == EMS_DEVICE_FLAG_BC400) || (model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) { if (!Helpers::value2enum(value, set, FL_(enum_wwCircMode))) { return false; } @@ -2118,7 +2118,7 @@ bool Thermostat::set_wwDailyHeatTime(const char * value, const int8_t id) { return false; } - if ((model() == EMS_DEVICE_FLAG_BC400) || (model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) { uint8_t t = (set + 8) / 15; if (t > 95) { return false; @@ -2135,9 +2135,9 @@ bool Thermostat::set_wwDisinfect(const char * value, const int8_t id) { return false; } - if ((model() == EMS_DEVICE_FLAG_BC400) || (model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) { write_command(0x2F5, 5, b ? 0xFF : 0x00, 0x2F5); - } else if (model() == EMS_DEVICE_FLAG_RC30) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { write_command(EMS_TYPE_RC30wwSettings, 2, b ? 0xFF : 0x00, EMS_TYPE_RC30wwSettings); } else { write_command(0x37, 4, b ? 0xFF : 0x00, 0x37); @@ -2152,9 +2152,9 @@ bool Thermostat::set_wwDisinfectDay(const char * value, const int8_t id) { return false; } - if ((model() == EMS_DEVICE_FLAG_BC400) || (model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) { write_command(0x2F5, 7, set, 0x2F5); - } else if (model() == EMS_DEVICE_FLAG_RC30) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { write_command(EMS_TYPE_RC30wwSettings, 3, set, EMS_TYPE_RC30wwSettings); } else { write_command(0x37, 5, set, 0x37); @@ -2165,12 +2165,12 @@ bool Thermostat::set_wwDisinfectDay(const char * value, const int8_t id) { bool Thermostat::set_wwDisinfectHour(const char * value, const int8_t id) { int set; - if ((model() == EMS_DEVICE_FLAG_BC400) || (model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) { if (!Helpers::value2number(value, set, 0, 1431)) { return false; } write_command(0x2F5, 6, (set + 8) / 15, 0x2F5); - } else if (model() == EMS_DEVICE_FLAG_RC30) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { if (!Helpers::value2number(value, set, 0, 23)) { return false; } @@ -2197,7 +2197,7 @@ bool Thermostat::set_wwMaxTemp(const char * value, const int8_t id) { } bool Thermostat::set_wwOneTimeKey(const char * value, const int8_t id) { - bool b = false; + bool b; if (!Helpers::value2bool(value, b)) { return false; } @@ -2214,7 +2214,7 @@ bool Thermostat::set_backlight(const char * value, const int8_t id) { return false; } - if (model() == EMS_DEVICE_FLAG_RC30) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { write_command(EMS_TYPE_RC30Settings, 12, b ? 0xFF : 0x00, EMS_TYPE_RC30Settings); } else { write_command(0xB0, 1, b ? 0xFF : 0x00, 0xB0); @@ -2601,7 +2601,7 @@ bool Thermostat::set_mode_n(const uint8_t mode, const uint8_t hc_num) { set_mode_value = set_mode_value == 2 ? 0xFF : 0; break; case EMSdevice::EMS_DEVICE_FLAG_JUNKERS: - if (has_flags(EMS_DEVICE_FLAG_JUNKERS_OLD)) { + if (has_flags(EMSdevice::EMS_DEVICE_FLAG_JUNKERS_OLD)) { offset = EMS_OFFSET_JunkersSetMessage2_set_mode; } else { offset = EMS_OFFSET_JunkersSetMessage_set_mode; @@ -2629,7 +2629,7 @@ bool Thermostat::set_mode_n(const uint8_t mode, const uint8_t hc_num) { // set hc->mode temporary until validate is received if (model_ == EMSdevice::EMS_DEVICE_FLAG_RC10) { hc->mode = set_mode_value >> 1; - } else if (model_ == EMS_DEVICE_FLAG_BC400) { + } else if (model_ == EMSdevice::EMS_DEVICE_FLAG_BC400) { hc->mode_new = set_mode_value; } else if (model_ == EMSdevice::EMS_DEVICE_FLAG_RC300 || model_ == EMSdevice::EMS_DEVICE_FLAG_RC100) { hc->mode = set_mode_value == 0xFF ? 1 : 0; @@ -2782,7 +2782,7 @@ bool Thermostat::set_reducemode(const char * value, const int8_t id) { } uint8_t set; - if (model() == EMS_DEVICE_FLAG_BC400 || model() == EMS_DEVICE_FLAG_RC300 || model() == EMS_DEVICE_FLAG_RC100) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400 || model() == EMSdevice::EMS_DEVICE_FLAG_RC300 || model() == EMSdevice::EMS_DEVICE_FLAG_RC100) { if (Helpers::value2enum(value, set, FL_(enum_reducemode1))) { write_command(set_typeids[hc->hc()], 5, set + 1, set_typeids[hc->hc()]); return true; @@ -2822,7 +2822,7 @@ bool Thermostat::set_nofrostmode(const char * value, const int8_t id) { return false; } uint8_t set; - if (model() == EMS_DEVICE_FLAG_BC400 || model() == EMS_DEVICE_FLAG_RC300 || model() == EMS_DEVICE_FLAG_RC100) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400 || model() == EMSdevice::EMS_DEVICE_FLAG_RC300 || model() == EMSdevice::EMS_DEVICE_FLAG_RC100) { if (Helpers::value2enum(value, set, FL_(enum_nofrostmode1))) { write_command(curve_typeids[hc->hc()], 5, set + 1, curve_typeids[hc->hc()]); return true; @@ -2846,11 +2846,11 @@ bool Thermostat::set_heatingtype(const char * value, const int8_t id) { uint8_t set; if (Helpers::value2enum(value, set, FL_(enum_heatingtype))) { - if ((model() == EMS_DEVICE_FLAG_RC20_N) || (model() == EMS_DEVICE_FLAG_RC25)) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_RC20_N) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC25)) { write_command(set_typeids[hc->hc()], 0, set, set_typeids[hc->hc()]); - } else if (model() == EMS_DEVICE_FLAG_RC35 || model() == EMS_DEVICE_FLAG_RC30_N) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC35 || model() == EMSdevice::EMS_DEVICE_FLAG_RC30_N) { write_command(set_typeids[hc->hc()], 0, set, set_typeids[hc->hc()]); - } else if (model() == EMS_DEVICE_FLAG_RC30) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { write_command(curve_typeids[hc->hc()], 0, set, curve_typeids[hc->hc()]); } else { write_command(curve_typeids[hc->hc()], 1, set, curve_typeids[hc->hc()]); @@ -2870,22 +2870,22 @@ bool Thermostat::set_controlmode(const char * value, const int8_t id) { } uint8_t set; - if (model() == EMS_DEVICE_FLAG_RC100) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_RC100) { if (Helpers::value2enum(value, set, FL_(enum_controlmode))) { write_command(curve_typeids[hc->hc()], 0, set, curve_typeids[hc->hc()]); return true; } - } else if (model() == EMS_DEVICE_FLAG_BC400 || model() == EMS_DEVICE_FLAG_RC300) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400 || model() == EMSdevice::EMS_DEVICE_FLAG_RC300) { if (Helpers::value2enum(value, set, FL_(enum_controlmode1))) { write_command(curve_typeids[hc->hc()], 0, set + 1, curve_typeids[hc->hc()]); return true; } - } else if (model() == EMS_DEVICE_FLAG_RC30) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { if (Helpers::value2enum(value, set, FL_(enum_controlmode2))) { write_command(curve_typeids[hc->hc()], 1, set, curve_typeids[hc->hc()]); return true; } - } else if (model() == EMS_DEVICE_FLAG_RC35 || model() == EMS_DEVICE_FLAG_RC30_N) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC35 || model() == EMSdevice::EMS_DEVICE_FLAG_RC30_N) { if (Helpers::value2enum(value, set, FL_(enum_controlmode2))) { write_command(set_typeids[hc->hc()], 33, set, set_typeids[hc->hc()]); return true; @@ -2944,7 +2944,7 @@ bool Thermostat::set_switchtime(const char * value, const uint16_t type_id, char } const char * s_mode = doc["mode"]; const char * s_time = doc["time"]; - if (model() == EMS_DEVICE_FLAG_RC35 || model() == EMS_DEVICE_FLAG_RC30_N) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_RC35 || model() == EMSdevice::EMS_DEVICE_FLAG_RC30_N) { bool b; if (Helpers::value2bool(s_mode, b)) { on = b ? 1 : 0; @@ -2952,7 +2952,7 @@ bool Thermostat::set_switchtime(const char * value, const uint16_t type_id, char if (strlen(s_time) == 5 && s_time[2] == ':') { time = 6 * ((s_time[0] - '0') * 10 + (s_time[1] - '0')) + (s_time[3] - '0'); } - } else if ((model() == EMS_DEVICE_FLAG_RC20) || (model() == EMS_DEVICE_FLAG_RC30)) { + } else if ((model() == EMSdevice::EMS_DEVICE_FLAG_RC20) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC30)) { if (s_mode[0] == 'T') { on = s_mode[1] - '0'; } else { @@ -3018,7 +3018,7 @@ bool Thermostat::set_switchtime(const char * value, const uint16_t type_id, char uint8_t min_on = 1; uint8_t max_on = 4; - if ((model() == EMS_DEVICE_FLAG_RC35) || (model() == EMS_DEVICE_FLAG_RC30_N)) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_RC35) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC30_N)) { min_on = 0; max_on = 1; } @@ -3030,9 +3030,9 @@ bool Thermostat::set_switchtime(const char * value, const uint16_t type_id, char if (data[0] != 0xE7) { // we use EN settings for the day abbreviation auto sday = (FL_(enum_dayOfWeek)[day][0]); - if (model() == EMS_DEVICE_FLAG_RC35 || model() == EMS_DEVICE_FLAG_RC30_N) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_RC35 || model() == EMSdevice::EMS_DEVICE_FLAG_RC30_N) { snprintf(out, len, "%02d %s %02d:%02d %s", no, sday, time / 6, 10 * (time % 6), on ? "on" : "off"); - } else if ((model() == EMS_DEVICE_FLAG_RC20) || (model() == EMS_DEVICE_FLAG_RC30)) { + } else if ((model() == EMSdevice::EMS_DEVICE_FLAG_RC20) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC30)) { snprintf(out, len, "%02d %s %02d:%02d T%d", no, sday, time / 6, 10 * (time % 6), on); } else { auto son = (FL_(enum_switchmode)[on][0]); @@ -3115,24 +3115,24 @@ bool Thermostat::set_program(const char * value, const int8_t id) { } uint8_t set; - if ((model() == EMS_DEVICE_FLAG_RC20_N) || (model() == EMS_DEVICE_FLAG_RC25)) { + if ((model() == EMSdevice::EMS_DEVICE_FLAG_RC20_N) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC25)) { if (Helpers::value2enum(value, set, FL_(enum_progMode3))) { write_command(set_typeids[hc->hc()], 11, set + 1, set_typeids[hc->hc()]); return true; } - } else if (model() == EMS_DEVICE_FLAG_RC35 || model() == EMS_DEVICE_FLAG_RC30_N || model() == EMS_DEVICE_FLAG_RC30) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC35 || model() == EMSdevice::EMS_DEVICE_FLAG_RC30_N || model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { if (Helpers::value2enum(value, set, FL_(enum_progMode2))) { write_command(timer_typeids[hc->hc()], 84, set, timer_typeids[hc->hc()]); return true; } - } else if (model() == EMS_DEVICE_FLAG_BC400 || model() == EMS_DEVICE_FLAG_RC300 || model() == EMS_DEVICE_FLAG_RC100) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400 || model() == EMSdevice::EMS_DEVICE_FLAG_RC300 || model() == EMSdevice::EMS_DEVICE_FLAG_RC100) { if (Helpers::value2enum(value, set, FL_(enum_progMode))) { write_command(set_typeids[hc->hc()], 11, set + 1, set_typeids[hc->hc()]); return true; } - } else if (model() == EMS_DEVICE_FLAG_JUNKERS) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) { if (Helpers::value2enum(value, set, FL_(enum_progMode4))) { - if (has_flags(EMS_DEVICE_FLAG_JUNKERS_OLD)) { + if (has_flags(EMSdevice::EMS_DEVICE_FLAG_JUNKERS_OLD)) { write_command(set_typeids[hc->hc()], 10, set + 1, set_typeids[hc->hc()]); } else { write_command(set_typeids[hc->hc()], 13, set + 1, set_typeids[hc->hc()]); @@ -3158,7 +3158,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co uint16_t validate_typeid = monitor_typeids[hc->hc()]; uint16_t set_typeid = set_typeids[hc->hc()]; - if (model == EMS_DEVICE_FLAG_RC10) { + if (model == EMSdevice::EMS_DEVICE_FLAG_RC10) { switch (mode) { case HeatingCircuit::Mode::NIGHT: offset = 3; @@ -3177,7 +3177,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co break; } - } else if (model == EMS_DEVICE_FLAG_RC20) { + } else if (model == EMSdevice::EMS_DEVICE_FLAG_RC20) { switch (mode) { case HeatingCircuit::Mode::NIGHT: offset = 3; @@ -3220,7 +3220,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co break; } - } else if (model == EMS_DEVICE_FLAG_RC30) { + } else if (model == EMSdevice::EMS_DEVICE_FLAG_RC30) { switch (mode) { case HeatingCircuit::Mode::OFF: offset = EMS_OFFSET_RC30Set_temp_off; @@ -3270,7 +3270,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co break; } - } else if (model == EMS_DEVICE_FLAG_BC400 || (model == EMS_DEVICE_FLAG_RC300) || (model == EMS_DEVICE_FLAG_RC100)) { + } else if (model == EMSdevice::EMS_DEVICE_FLAG_BC400 || (model == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model == EMSdevice::EMS_DEVICE_FLAG_RC100)) { validate_typeid = set_typeids[hc->hc()]; switch (mode) { case HeatingCircuit::Mode::SUMMER: @@ -3372,7 +3372,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co break; } - } else if ((model == EMS_DEVICE_FLAG_RC20_N) || (model == EMS_DEVICE_FLAG_RC25)) { + } else if ((model == EMSdevice::EMS_DEVICE_FLAG_RC20_N) || (model == EMSdevice::EMS_DEVICE_FLAG_RC25)) { switch (mode) { case HeatingCircuit::Mode::MINFLOW: offset = 15; @@ -3408,7 +3408,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co break; } - } else if ((model == EMS_DEVICE_FLAG_RC35) || (model == EMS_DEVICE_FLAG_RC30_N)) { + } else if ((model == EMSdevice::EMS_DEVICE_FLAG_RC35) || (model == EMSdevice::EMS_DEVICE_FLAG_RC30_N)) { validate_typeid = set_typeids[hc->hc()]; switch (mode) { case HeatingCircuit::Mode::NIGHT: // change the night temp @@ -3428,7 +3428,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co factor = 1; break; case HeatingCircuit::Mode::DESIGN: - if (hc->heatingtype == 3 && model == EMS_DEVICE_FLAG_RC35) { + if (hc->heatingtype == 3 && model == EMSdevice::EMS_DEVICE_FLAG_RC35) { offset = EMS_OFFSET_RC35Set_temp_design_floor; } else { offset = EMS_OFFSET_RC35Set_temp_design; @@ -3467,7 +3467,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co factor = 1; break; case HeatingCircuit::Mode::MAXFLOW: - if (hc->heatingtype == 3 && model == EMS_DEVICE_FLAG_RC35) { + if (hc->heatingtype == 3 && model == EMSdevice::EMS_DEVICE_FLAG_RC35) { offset = 35; } else { offset = 15; @@ -3482,7 +3482,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co offset = EMS_OFFSET_RC35Set_temp_night; } else if (mode_ == HeatingCircuit::Mode::DAY) { offset = EMS_OFFSET_RC35Set_temp_day; - } else if (model == EMS_DEVICE_FLAG_RC35) { + } else if (model == EMSdevice::EMS_DEVICE_FLAG_RC35) { offset = EMS_OFFSET_RC35Set_seltemp; // https://github.com/emsesp/EMS-ESP/issues/310 } else { // RC30_N missing temporary auto temperature https://github.com/emsesp/EMS-ESP32/issues/395 @@ -3492,10 +3492,10 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co break; } - } else if (model == EMS_DEVICE_FLAG_JUNKERS) { + } else if (model == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) { // figure out if we have older or new thermostats, Heating Circuits on 0x65 or 0x79 // see https://github.com/emsesp/EMS-ESP/issues/335#issuecomment-593324716) - bool old_junkers = (has_flags(EMS_DEVICE_FLAG_JUNKERS_OLD)); + bool old_junkers = (has_flags(EMSdevice::EMS_DEVICE_FLAG_JUNKERS_OLD)); if (!old_junkers) { switch (mode) { case HeatingCircuit::Mode::NOFROST: @@ -3600,7 +3600,7 @@ void Thermostat::register_device_values() { register_device_value(tag, &tempsensor1_, DeviceValueType::SHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(RFTemp), DeviceValueUOM::DEGREES); return; } - // RC100H remote with humidity, this is also EMS_DEVICE_FLAG_RC100 for set_calinttemp + // RC100H remote with humidity, this is also EMSdevice::EMS_DEVICE_FLAG_RC100 for set_calinttemp if (device_id() >= 0x38 && device_id() <= 0x3F) { // each device controls only one hc, so we tag the values uint8_t tag = DeviceValueTAG::TAG_HC1 + device_id() - 0x38; @@ -3623,9 +3623,9 @@ void Thermostat::register_device_values() { register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &lastCode_, DeviceValueType::STRING, FL_(lastCode), DeviceValueUOM::NONE); switch (this->model()) { - case EMS_DEVICE_FLAG_RC100: - case EMS_DEVICE_FLAG_RC300: - case EMS_DEVICE_FLAG_BC400: + case EMSdevice::EMS_DEVICE_FLAG_RC100: + case EMSdevice::EMS_DEVICE_FLAG_RC300: + case EMSdevice::EMS_DEVICE_FLAG_BC400: register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &dateTime_, DeviceValueType::STRING, @@ -3668,7 +3668,7 @@ void Thermostat::register_device_values() { MAKE_CF_CB(set_minexttemp)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &ibaDamping_, DeviceValueType::BOOL, FL_(damping), DeviceValueUOM::NONE, MAKE_CF_CB(set_damping)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwSetTemp_, DeviceValueType::UINT, FL_(wwSetTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwtemp)); - if (model() == EMS_DEVICE_FLAG_BC400) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400) { register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwMode_, DeviceValueType::ENUM, @@ -3795,7 +3795,7 @@ void Thermostat::register_device_values() { register_device_value( DeviceValueTAG::TAG_DEVICE_DATA, &pvLowerCool_, DeviceValueType::INT, FL_(pvLowerCool), DeviceValueUOM::K, MAKE_CF_CB(set_pvLowerCool), -5, 0); break; - case EMS_DEVICE_FLAG_RC10: + case EMSdevice::EMS_DEVICE_FLAG_RC10: register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &ibaCalIntTemperature_, DeviceValueType::INT, @@ -3814,8 +3814,8 @@ void Thermostat::register_device_values() { register_device_value( DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwMode_, DeviceValueType::ENUM, FL_(enum_wwMode3), FL_(wwMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwmode)); break; - case EMS_DEVICE_FLAG_RC20_N: - case EMS_DEVICE_FLAG_RC25: + case EMSdevice::EMS_DEVICE_FLAG_RC20_N: + case EMSdevice::EMS_DEVICE_FLAG_RC25: register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &dateTime_, DeviceValueType::STRING, FL_(dateTime), DeviceValueUOM::NONE); // can't set datetime register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &ibaMinExtTemperature_, @@ -3824,10 +3824,10 @@ void Thermostat::register_device_values() { DeviceValueUOM::DEGREES, MAKE_CF_CB(set_minexttemp)); break; - case EMS_DEVICE_FLAG_RC20: + case EMSdevice::EMS_DEVICE_FLAG_RC20: register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &dateTime_, DeviceValueType::STRING, FL_(dateTime), DeviceValueUOM::NONE); // can't set datetime break; - case EMS_DEVICE_FLAG_RC30: + case EMSdevice::EMS_DEVICE_FLAG_RC30: register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &dateTime_, DeviceValueType::STRING, FL_(dateTime), DeviceValueUOM::NONE); // can't set datetime register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &ibaClockOffset_, @@ -3914,7 +3914,7 @@ void Thermostat::register_device_values() { DeviceValueUOM::NONE, MAKE_CF_CB(set_wwVacation)); break; - case EMS_DEVICE_FLAG_RC30_N: + case EMSdevice::EMS_DEVICE_FLAG_RC30_N: register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &dateTime_, DeviceValueType::STRING, FL_(dateTime), DeviceValueUOM::NONE); // can't set datetime register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &ibaMainDisplay_, @@ -4049,7 +4049,7 @@ void Thermostat::register_device_values() { DeviceValueUOM::NONE, MAKE_CF_CB(set_wwVacation)); break; - case EMS_DEVICE_FLAG_RC35: + case EMSdevice::EMS_DEVICE_FLAG_RC35: register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &dateTime_, DeviceValueType::STRING, @@ -4176,10 +4176,10 @@ void Thermostat::register_device_values() { DeviceValueUOM::NONE, MAKE_CF_CB(set_wwVacation)); break; - case EMS_DEVICE_FLAG_JUNKERS: + case EMSdevice::EMS_DEVICE_FLAG_JUNKERS: // FR100 is not writable, see. https://github.com/emsesp/EMS-ESP32/issues/536 // FW500 is not writable, see. https://github.com/emsesp/EMS-ESP32/issues/666 - if (has_flags(EMS_DEVICE_FLAG_JUNKERS_OLD)) { + if (has_flags(EMSdevice::EMS_DEVICE_FLAG_JUNKERS_OLD)) { register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &dateTime_, DeviceValueType::STRING, FL_(tpl_datetime), FL_(dateTime), DeviceValueUOM::NONE); } else { register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, @@ -4250,11 +4250,11 @@ void Thermostat::register_device_values() { 99); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwCharge_, DeviceValueType::BOOL, FL_(wwCharge), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwcharge)); break; - case EMS_DEVICE_FLAG_EASY: + case EMSdevice::EMS_DEVICE_FLAG_EASY: // Easy TC100 have no date/time, see issue #100, not sure about CT200, so leave it. register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &dateTime_, DeviceValueType::STRING, FL_(dateTime), DeviceValueUOM::NONE); // can't set datetime break; - case EMS_DEVICE_FLAG_CRF: + case EMSdevice::EMS_DEVICE_FLAG_CRF: default: register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &dateTime_, DeviceValueType::STRING, FL_(dateTime), DeviceValueUOM::NONE); // can't set datetime break; @@ -4277,10 +4277,10 @@ void Thermostat::register_device_values_hc(std::shared_ptrselTemp, DeviceValueType::SHORT, seltemp_divider, FL_(selRoomTemp), DeviceValueUOM::DEGREES); } else { register_device_value(tag, &hc->selTemp, DeviceValueType::SHORT, seltemp_divider, FL_(selRoomTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_temp), 0, 30); @@ -4297,7 +4297,7 @@ void Thermostat::register_device_values_hc(std::shared_ptrclimate, DeviceValueType::ENUM, FL_(enum_climate), FL_(haclimate), DeviceValueUOM::NONE, nullptr, 5, 30); switch (model) { - case EMS_DEVICE_FLAG_RC10: + case EMSdevice::EMS_DEVICE_FLAG_RC10: register_device_value(tag, &hc->mode, DeviceValueType::ENUM, FL_(enum_mode6), FL_(mode), DeviceValueUOM::NONE, MAKE_CF_CB(set_mode)); register_device_value( tag, &hc->daytemp, DeviceValueType::UINT, DeviceValueNumOp::DV_NUMOP_DIV2, FL_(daytemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_daytemp)); @@ -4306,10 +4306,10 @@ void Thermostat::register_device_values_hc(std::shared_ptrreducehours, DeviceValueType::UINT, FL_(reducehours), DeviceValueUOM::HOURS, MAKE_CF_CB(set_reducehours)); register_device_value(tag, &hc->reduceminutes, DeviceValueType::USHORT, FL_(reduceminutes), DeviceValueUOM::MINUTES); break; - case EMS_DEVICE_FLAG_RC100: - case EMS_DEVICE_FLAG_RC300: - case EMS_DEVICE_FLAG_BC400: - if (model == EMS_DEVICE_FLAG_BC400) { + case EMSdevice::EMS_DEVICE_FLAG_RC100: + case EMSdevice::EMS_DEVICE_FLAG_RC300: + case EMSdevice::EMS_DEVICE_FLAG_BC400: + if (model == EMSdevice::EMS_DEVICE_FLAG_BC400) { register_device_value(tag, &hc->mode_new, DeviceValueType::ENUM, FL_(enum_mode2), FL_(mode), DeviceValueUOM::NONE, MAKE_CF_CB(set_mode)); } else { register_device_value(tag, &hc->mode, DeviceValueType::ENUM, FL_(enum_mode), FL_(mode), DeviceValueUOM::NONE, MAKE_CF_CB(set_mode)); @@ -4402,12 +4402,12 @@ void Thermostat::register_device_values_hc(std::shared_ptrboosttime, DeviceValueType::UINT, FL_(boosttime), DeviceValueUOM::HOURS, MAKE_CF_CB(set_boosttime)); break; - case EMS_DEVICE_FLAG_CRF: + case EMSdevice::EMS_DEVICE_FLAG_CRF: register_device_value(tag, &hc->mode, DeviceValueType::ENUM, FL_(enum_mode5), FL_(mode), DeviceValueUOM::NONE); register_device_value(tag, &hc->modetype, DeviceValueType::ENUM, FL_(enum_modetype5), FL_(modetype), DeviceValueUOM::NONE); register_device_value(tag, &hc->targetflowtemp, DeviceValueType::UINT, FL_(targetflowtemp), DeviceValueUOM::DEGREES); break; - case EMS_DEVICE_FLAG_RC20: + case EMSdevice::EMS_DEVICE_FLAG_RC20: register_device_value(tag, &hc->mode, DeviceValueType::ENUM, FL_(enum_mode2), FL_(mode), DeviceValueUOM::NONE, MAKE_CF_CB(set_mode)); register_device_value( tag, &hc->manualtemp, DeviceValueType::UINT, DeviceValueNumOp::DV_NUMOP_DIV2, FL_(manualtemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_manualtemp)); @@ -4424,7 +4424,7 @@ void Thermostat::register_device_values_hc(std::shared_ptrswitchtime1, DeviceValueType::STRING, FL_(tpl_switchtime1), FL_(switchtime), DeviceValueUOM::NONE, MAKE_CF_CB(set_switchtime1)); break; - case EMS_DEVICE_FLAG_RC20_N: + case EMSdevice::EMS_DEVICE_FLAG_RC20_N: register_device_value(tag, &hc->mode, DeviceValueType::ENUM, FL_(enum_mode3), FL_(mode), DeviceValueUOM::NONE, MAKE_CF_CB(set_mode)); register_device_value(tag, &hc->modetype, DeviceValueType::ENUM, FL_(enum_modetype3), FL_(modetype), DeviceValueUOM::NONE); register_device_value( @@ -4447,7 +4447,7 @@ void Thermostat::register_device_values_hc(std::shared_ptrsummermode, DeviceValueType::ENUM, FL_(enum_summer), FL_(summermode), DeviceValueUOM::NONE); register_device_value(tag, &hc->remotetemp, DeviceValueType::SHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(remotetemp), DeviceValueUOM::DEGREES); break; - case EMS_DEVICE_FLAG_RC25: + case EMSdevice::EMS_DEVICE_FLAG_RC25: register_device_value(tag, &hc->mode, DeviceValueType::ENUM, FL_(enum_mode3), FL_(mode), DeviceValueUOM::NONE, MAKE_CF_CB(set_mode)); register_device_value(tag, &hc->modetype, DeviceValueType::ENUM, FL_(enum_modetype3), FL_(modetype), DeviceValueUOM::NONE); register_device_value( @@ -4469,7 +4469,7 @@ void Thermostat::register_device_values_hc(std::shared_ptrsummertemp, DeviceValueType::UINT, FL_(summertemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_summertemp), 9, 25); register_device_value(tag, &hc->summermode, DeviceValueType::ENUM, FL_(enum_summer), FL_(summermode), DeviceValueUOM::NONE); break; - case EMS_DEVICE_FLAG_RC30: + case EMSdevice::EMS_DEVICE_FLAG_RC30: register_device_value(tag, &hc->mode, DeviceValueType::ENUM, FL_(enum_mode2), FL_(mode), DeviceValueUOM::NONE, MAKE_CF_CB(set_mode)); register_device_value(tag, &hc->holiday, DeviceValueType::STRING, FL_(tpl_holidays), FL_(holidays), DeviceValueUOM::NONE, MAKE_CF_CB(set_holiday)); register_device_value(tag, &hc->vacation, DeviceValueType::STRING, FL_(tpl_holidays), FL_(vacations), DeviceValueUOM::NONE, MAKE_CF_CB(set_vacation)); @@ -4502,8 +4502,8 @@ void Thermostat::register_device_values_hc(std::shared_ptrnofrosttemp, DeviceValueType::UINT, DeviceValueNumOp::DV_NUMOP_DIV2, FL_(offtemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_offtemp)); break; - case EMS_DEVICE_FLAG_RC30_N: - case EMS_DEVICE_FLAG_RC35: + case EMSdevice::EMS_DEVICE_FLAG_RC30_N: + case EMSdevice::EMS_DEVICE_FLAG_RC35: register_device_value(tag, &hc->mode, DeviceValueType::ENUM, FL_(enum_mode3), FL_(mode), DeviceValueUOM::NONE, MAKE_CF_CB(set_mode)); register_device_value(tag, &hc->modetype, DeviceValueType::ENUM, FL_(enum_modetype3), FL_(modetype), DeviceValueUOM::NONE); register_device_value( @@ -4587,7 +4587,7 @@ void Thermostat::register_device_values_hc(std::shared_ptrswitchtime2, DeviceValueType::STRING, FL_(tpl_switchtime), FL_(switchtime2), DeviceValueUOM::NONE, MAKE_CF_CB(set_switchtime2)); break; - case EMS_DEVICE_FLAG_JUNKERS: + case EMSdevice::EMS_DEVICE_FLAG_JUNKERS: register_device_value(tag, &hc->mode, DeviceValueType::ENUM, FL_(enum_mode4), FL_(mode), DeviceValueUOM::NONE, MAKE_CF_CB(set_mode)); register_device_value(tag, &hc->modetype, DeviceValueType::ENUM, FL_(enum_modetype4), FL_(modetype), DeviceValueUOM::NONE); register_device_value( From 751410ca58590079f30607a90995cb3e6694eb0f Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 23 Nov 2023 18:27:03 +0100 Subject: [PATCH 60/91] fix boiler commands to ems telegrams --- CHANGELOG_LATEST.md | 2 ++ src/devices/boiler.cpp | 46 +++++++++++++++++++++--------------------- src/version.h | 2 +- 3 files changed, 26 insertions(+), 24 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index fa7f75968..c325fe9d7 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -8,4 +8,6 @@ ## Fixed +- some setting commands for ems-boiler have used wrong ems+ telegram in 3.6.3 + ## Changed diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 0ea71603e..7ab38df00 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -2001,7 +2001,7 @@ bool Boiler::set_ww_temp(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) { + if (is_received(EMS_TYPE_UBAParameterWWPlus)) { // write_command(EMS_TYPE_UBAFlags, 3, v, EMS_TYPE_UBAParameterWWPlus); // test for #96 write_command(EMS_TYPE_UBAParameterWWPlus, 6, v, EMS_TYPE_UBAParameterWWPlus); } else { @@ -2054,7 +2054,7 @@ bool Boiler::set_ww_disinfect_temp(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) { + if (is_received(EMS_TYPE_UBAParameterWWPlus)) { write_command(EMS_TYPE_UBAParameterWWPlus, 12, v, EMS_TYPE_UBAParameterWWPlus); } else { write_command(EMS_TYPE_UBAParameterWW, 8, v, EMS_TYPE_UBAParameterWW); @@ -2104,7 +2104,7 @@ bool Boiler::set_ww_flowTempOffset(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) { + if (is_received(EMS_TYPE_UBAParameterWWPlus)) { write_command(EMS_TYPE_UBAParameterWWPlus, 9, v, EMS_TYPE_UBAParameterWWPlus); } else { write_command(EMS_TYPE_UBAParameterWW, 5, v, EMS_TYPE_UBAParameterWW); @@ -2120,7 +2120,7 @@ bool Boiler::set_heating_activated(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParametersPlus)) { + if (is_received(EMS_TYPE_UBAParametersPlus)) { write_command(EMS_TYPE_UBAParametersPlus, 0, v ? 0x01 : 0, EMS_TYPE_UBAParametersPlus); } else { write_command(EMS_TYPE_UBAParameters, 0, v ? 0xFF : 0, EMS_TYPE_UBAParameters); @@ -2136,7 +2136,7 @@ bool Boiler::set_heating_temp(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParametersPlus)) { + if (is_received(EMS_TYPE_UBAParametersPlus)) { write_command(EMS_TYPE_UBAParametersPlus, 1, v, EMS_TYPE_UBAParametersPlus); } else { write_command(EMS_TYPE_UBAParameters, 1, v, EMS_TYPE_UBAParameters); @@ -2152,7 +2152,7 @@ bool Boiler::set_min_power(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParametersPlus)) { + if (is_received(EMS_TYPE_UBAParametersPlus)) { write_command(EMS_TYPE_UBAParametersPlus, 5, v, EMS_TYPE_UBAParametersPlus); } else { write_command(EMS_TYPE_UBAParameters, 3, v, EMS_TYPE_UBAParameters); @@ -2168,7 +2168,7 @@ bool Boiler::set_max_power(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParametersPlus)) { + if (is_received(EMS_TYPE_UBAParametersPlus)) { write_command(EMS_TYPE_UBAParametersPlus, 4, v, EMS_TYPE_UBAParametersPlus); } else { write_command(EMS_TYPE_UBAParameters, 2, v, EMS_TYPE_UBAParameters); @@ -2184,7 +2184,7 @@ bool Boiler::set_ww_hyst_on(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) { + if (is_received(EMS_TYPE_UBAParameterWWPlus)) { write_command(EMS_TYPE_UBAParameterWWPlus, 7, v, EMS_TYPE_UBAParameterWWPlus); } else { write_command(EMS_TYPE_UBAParameterWW, 3, v, EMS_TYPE_UBAParameterWW); @@ -2200,7 +2200,7 @@ bool Boiler::set_ww_hyst_off(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) { + if (is_received(EMS_TYPE_UBAParameterWWPlus)) { write_command(EMS_TYPE_UBAParameterWWPlus, 8, v, EMS_TYPE_UBAParameterWWPlus); } else { write_command(EMS_TYPE_UBAParameterWW, 4, v, EMS_TYPE_UBAParameterWW); @@ -2216,7 +2216,7 @@ bool Boiler::set_ww_chargeOptimization(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) { + if (is_received(EMS_TYPE_UBAParameterWWPlus)) { write_command(EMS_TYPE_UBAParameterWWPlus, 25, v ? 1 : 0, EMS_TYPE_UBAParameterWWPlus); } @@ -2254,7 +2254,7 @@ bool Boiler::set_min_pump(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParametersPlus)) { + if (is_received(EMS_TYPE_UBAParametersPlus)) { write_command(EMS_TYPE_UBAParametersPlus, 14, v, EMS_TYPE_UBAParametersPlus); } else { write_command(EMS_TYPE_UBAParameters, 10, v, EMS_TYPE_UBAParameters); @@ -2270,7 +2270,7 @@ bool Boiler::set_max_pump(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParametersPlus)) { + if (is_received(EMS_TYPE_UBAParametersPlus)) { write_command(EMS_TYPE_UBAParametersPlus, 13, v, EMS_TYPE_UBAParametersPlus); } else { write_command(EMS_TYPE_UBAParameters, 9, v, EMS_TYPE_UBAParameters); @@ -2295,7 +2295,7 @@ bool Boiler::set_hyst_on(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParametersPlus)) { + if (is_received(EMS_TYPE_UBAParametersPlus)) { write_command(EMS_TYPE_UBAParametersPlus, 9, v, EMS_TYPE_UBAParametersPlus); } else { write_command(EMS_TYPE_UBAParameters, id == 2 ? 13 : 5, v, EMS_TYPE_UBAParameters); @@ -2311,7 +2311,7 @@ bool Boiler::set_hyst_off(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParametersPlus)) { + if (is_received(EMS_TYPE_UBAParametersPlus)) { write_command(EMS_TYPE_UBAParametersPlus, 8, v, EMS_TYPE_UBAParametersPlus); } else { write_command(EMS_TYPE_UBAParameters, id == 2 ? 12 : 4, v, EMS_TYPE_UBAParameters); @@ -2327,7 +2327,7 @@ bool Boiler::set_burn_period(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParametersPlus)) { + if (is_received(EMS_TYPE_UBAParametersPlus)) { write_command(EMS_TYPE_UBAParametersPlus, 10, v, EMS_TYPE_UBAParametersPlus); } else { write_command(EMS_TYPE_UBAParameters, 6, v, EMS_TYPE_UBAParameters); @@ -2343,7 +2343,7 @@ bool Boiler::set_pump_delay(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParameters)) { + if (is_received(EMS_TYPE_UBAParameters)) { write_command(EMS_TYPE_UBAParameters, 8, v, EMS_TYPE_UBAParameters); return true; } @@ -2359,7 +2359,7 @@ bool Boiler::set_ww_mode(const char * value, const int8_t id) { uint8_t set; uint8_t comfort[] = {0x00, 0xD8, 0xEC}; // heat, eco, intelligent - if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) { + if (is_received(EMS_TYPE_UBAParameterWWPlus)) { if (Helpers::value2enum(value, set, FL_(enum_comfort1))) { write_command(EMS_TYPE_UBAParameterWWPlus, 13, comfort[set], EMS_TYPE_UBAParameterWWPlus); write_command(0x05, 70, set ? 0xAA : 0x55); // @@ -2383,7 +2383,7 @@ bool Boiler::set_ww_activated(const char * value, const int8_t id) { // https://github.com/emsesp/EMS-ESP/issues/268 // 08 for HT3 seems to be wrong, see https://github.com/emsesp/EMS-ESP32/issues/89 - if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) { + if (is_received(EMS_TYPE_UBAParameterWWPlus)) { write_command(EMS_TYPE_UBAParameterWWPlus, 5, v ? 1 : 0, EMS_TYPE_UBAParameterWWPlus); } else { write_command(EMS_TYPE_UBAParameterWW, 1, v ? 0xFF : 0, EMS_TYPE_UBAParameterWW); @@ -2441,7 +2441,7 @@ bool Boiler::set_ww_onetime(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) { + if (is_received(EMS_TYPE_UBAParameterWWPlus)) { write_command(EMS_TYPE_UBAFlags, 0, (v ? 0x22 : 0x02), 0xE9); // not sure if this is in flags } else { write_command(EMS_TYPE_UBAFlags, 0, (v ? 0x23 : 0x03), 0x34); @@ -2457,7 +2457,7 @@ bool Boiler::set_ww_disinfect(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) { + if (is_received(EMS_TYPE_UBAParameterWWPlus)) { write_command(EMS_TYPE_UBAFlags, 0, (v ? 0x44 : 0x04), 0xE9); // not sure if this is in flags } else { write_command(EMS_TYPE_UBAFlags, 0, (v ? 0x44 : 0x04), 0x34); @@ -2474,7 +2474,7 @@ bool Boiler::set_ww_circulation(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) { + if (is_received(EMS_TYPE_UBAParameterWWPlus)) { write_command(EMS_TYPE_UBAFlags, 1, (v ? 0x22 : 0x02), 0xE9); // not sure if this is in flags } else { write_command(EMS_TYPE_UBAFlags, 1, (v ? 0x22 : 0x02), 0x34); @@ -2490,7 +2490,7 @@ bool Boiler::set_ww_circulation_pump(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) { + if (is_received(EMS_TYPE_UBAParameterWWPlus)) { write_command(EMS_TYPE_UBAParameterWWPlus, 10, v ? 0x01 : 0x00, EMS_TYPE_UBAParameterWWPlus); } else { write_command(EMS_TYPE_UBAParameterWW, 6, v ? 0xFF : 0x00, EMS_TYPE_UBAParameterWW); @@ -2507,7 +2507,7 @@ bool Boiler::set_ww_circulation_mode(const char * value, const int8_t id) { return false; } - if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) { + if (is_received(EMS_TYPE_UBAParameterWWPlus)) { write_command(EMS_TYPE_UBAParameterWWPlus, 11, v, EMS_TYPE_UBAParameterWWPlus); } else { write_command(EMS_TYPE_UBAParameterWW, 7, v, EMS_TYPE_UBAParameterWW); diff --git a/src/version.h b/src/version.h index b7afb6a19..d5365b3ed 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.6.4-dev.1" +#define EMSESP_APP_VERSION "3.6.4-dev.2" From 41443d4efef1db67e44a9b183cd1b4c430158798 Mon Sep 17 00:00:00 2001 From: Proddy Date: Fri, 24 Nov 2023 07:28:29 +0100 Subject: [PATCH 61/91] update packages --- interface/package.json | 6 ++--- interface/yarn.lock | 52 +++++++++++++++++++++--------------------- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/interface/package.json b/interface/package.json index 50eb2bd15..f8c6bd82a 100644 --- a/interface/package.json +++ b/interface/package.json @@ -29,11 +29,11 @@ "@table-library/react-table-library": "4.1.7", "@types/imagemin": "^8.0.5", "@types/lodash-es": "^4.17.12", - "@types/node": "^20.9.4", + "@types/node": "^20.9.5", "@types/react": "^18.2.38", "@types/react-dom": "^18.2.17", "@types/react-router-dom": "^5.3.3", - "alova": "^2.13.2", + "alova": "^2.14.0", "async-validator": "^4.2.5", "history": "^5.3.0", "jwt-decode": "^4.0.0", @@ -43,7 +43,7 @@ "react-dom": "latest", "react-dropzone": "^14.2.3", "react-icons": "^4.12.0", - "react-router-dom": "^6.19.0", + "react-router-dom": "^6.20.0", "react-toastify": "^9.1.3", "sockette": "^2.0.6", "typesafe-i18n": "^5.26.2", diff --git a/interface/yarn.lock b/interface/yarn.lock index 12c63413c..440fe5985 100644 --- a/interface/yarn.lock +++ b/interface/yarn.lock @@ -1187,10 +1187,10 @@ __metadata: languageName: node linkType: hard -"@remix-run/router@npm:1.12.0": - version: 1.12.0 - resolution: "@remix-run/router@npm:1.12.0" - checksum: f984e42cfe855991e1d3067f686f857614f12e8c1c45168a2d98e3fc3a427e232fd0b6cf145173b7cd132faf070702b532c34230a825d933908c54c85077fc69 +"@remix-run/router@npm:1.13.0": + version: 1.13.0 + resolution: "@remix-run/router@npm:1.13.0" + checksum: bb173a012d2036c5ee69babfe30c73975b970c2e5a0edaba138c302ae80d255e238e462e77365ab4efe819b6397e1a7f3a416d6200d17f9655f0ca1c51c4f45e languageName: node linkType: hard @@ -1478,12 +1478,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^20.9.4": - version: 20.9.4 - resolution: "@types/node@npm:20.9.4" +"@types/node@npm:^20.9.5": + version: 20.9.5 + resolution: "@types/node@npm:20.9.5" dependencies: undici-types: "npm:~5.26.4" - checksum: d567855b48e453b443499c17fc6c939d154732b54319a05b9b31db6e475e6458f053838635b201b1bb493d349d9b1af0aecc58b28fd6062e564e9fbf593199eb + checksum: f7d02ef84a449f079bc77d7494dc96a1d45006b3a7583a41430d8b62ad7dd914bcce8d1ed60584b8725289e609c20288c840aadb21cc52d5b656fa7731c1a528 languageName: node linkType: hard @@ -1745,13 +1745,13 @@ __metadata: "@table-library/react-table-library": "npm:4.1.7" "@types/imagemin": "npm:^8.0.5" "@types/lodash-es": "npm:^4.17.12" - "@types/node": "npm:^20.9.4" + "@types/node": "npm:^20.9.5" "@types/react": "npm:^18.2.38" "@types/react-dom": "npm:^18.2.17" "@types/react-router-dom": "npm:^5.3.3" "@typescript-eslint/eslint-plugin": "npm:^6.12.0" "@typescript-eslint/parser": "npm:^6.12.0" - alova: "npm:^2.13.2" + alova: "npm:^2.14.0" async-validator: "npm:^4.2.5" concurrently: "npm:^8.2.2" eslint: "npm:^8.54.0" @@ -1775,7 +1775,7 @@ __metadata: react-dom: "npm:latest" react-dropzone: "npm:^14.2.3" react-icons: "npm:^4.12.0" - react-router-dom: "npm:^6.19.0" + react-router-dom: "npm:^6.20.0" react-toastify: "npm:^9.1.3" rollup-plugin-visualizer: "npm:^5.9.2" sockette: "npm:^2.0.6" @@ -1853,10 +1853,10 @@ __metadata: languageName: node linkType: hard -"alova@npm:^2.13.2": - version: 2.13.2 - resolution: "alova@npm:2.13.2" - checksum: 09d3949b20094833ae9a2861b7408b6697e2e7fa677d6bbb31a7c43a756bef1033a999a9aa94aff94f392eb5186f9ae2e63a381560fd42c59987948740f6a043 +"alova@npm:^2.14.0": + version: 2.14.0 + resolution: "alova@npm:2.14.0" + checksum: 64482346dece670676908b00df93aba10f5da5f65f1b0b79673ac4f494969acfeefb87f5db1dea01de06e6bdca67e122fe8835fc10c1e7dc5202a8d8eeba92d8 languageName: node linkType: hard @@ -7020,27 +7020,27 @@ __metadata: languageName: node linkType: hard -"react-router-dom@npm:^6.19.0": - version: 6.19.0 - resolution: "react-router-dom@npm:6.19.0" +"react-router-dom@npm:^6.20.0": + version: 6.20.0 + resolution: "react-router-dom@npm:6.20.0" dependencies: - "@remix-run/router": "npm:1.12.0" - react-router: "npm:6.19.0" + "@remix-run/router": "npm:1.13.0" + react-router: "npm:6.20.0" peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 38312efc11d3ef688062301479a8257a1495a81cd8dd7039c1f81aba6774963df7d21aaee2ba1a3c152857b70f4fb9966a3ccff47aca12212e854dcd6fc4deab + checksum: 4b6741c545cedf5a5c4f996deb953679dcc985425e0664e27b97fdb9ab1387cbe1a6a12bfc7f7c38ec40b15759b4bf6396930ec26540a4a81ae16d154fd35049 languageName: node linkType: hard -"react-router@npm:6.19.0": - version: 6.19.0 - resolution: "react-router@npm:6.19.0" +"react-router@npm:6.20.0": + version: 6.20.0 + resolution: "react-router@npm:6.20.0" dependencies: - "@remix-run/router": "npm:1.12.0" + "@remix-run/router": "npm:1.13.0" peerDependencies: react: ">=16.8" - checksum: 5454f4a4d65401430ded8f1033cebe4ccca771c3c827e8329c77dcfd73618ca9a32488fb58722bf6a07afef7d8e7ef22a710aae0f3337e5c20962bf6473d81a3 + checksum: 2cdac5ad8b7a7bc230173b26768bcf3f6a9abc0a19983fa7b76b9ffdbeb44bfbd88fcc2033e9062defafef144db207859eb3162a9c9742d70cfce4e7166ff1e5 languageName: node linkType: hard From 19094d47aacad61a6fe5982147508bf74b2e17ea Mon Sep 17 00:00:00 2001 From: Proddy Date: Fri, 24 Nov 2023 07:41:23 +0100 Subject: [PATCH 62/91] 3.6.5-dev.0 --- CHANGELOG.md | 3 ++- CHANGELOG_LATEST.md | 4 +--- Makefile | 2 +- interface/package.json | 2 +- mock-api/server.js | 4 ++-- platformio.ini | 2 +- sonar-project.properties | 2 +- src/system.cpp | 2 +- src/version.h | 2 +- 9 files changed, 11 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0fe60ca33..7e1da56db 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.6.3] November 18 2023 +## [3.6.4] November 24 2023 ## **IMPORTANT! BREAKING CHANGES** @@ -34,6 +34,7 @@ Writeable Text entities have moved from type `sensor` to `text` in Home Assistan - fixed helper text in Web Device Entity dialog box for numerical ranges - MQTT base with paths not working in HA [#1393](https://github.com/emsesp/EMS-ESP32/issues/1393) - set/read thermostat mode for RC100-RC300, [#1440](https://github.com/emsesp/EMS-ESP32/issues/1440) [#1442](https://github.com/emsesp/EMS-ESP32/issues/1442) +- some setting commands for ems-boiler have used wrong ems+ telegram in 3.6.3 ## Changed diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index c325fe9d7..c48e0672e 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -1,6 +1,6 @@ # Changelog -## [3.6.4] +## [3.6.5] ## **IMPORTANT! BREAKING CHANGES** @@ -8,6 +8,4 @@ ## Fixed -- some setting commands for ems-boiler have used wrong ems+ telegram in 3.6.3 - ## Changed diff --git a/Makefile b/Makefile index 64e4b61b5..1beb818c8 100644 --- a/Makefile +++ b/Makefile @@ -42,7 +42,7 @@ DEFINES += -DARDUINOJSON_ENABLE_STD_STRING=1 -DARDUINOJSON_ENABLE_PROGMEM=1 -DAR DEFINES += -DEMSESP_DEBUG -DEMSESP_STANDALONE -DEMSESP_TEST -D__linux__ -DEMC_RX_BUFFER_SIZE=1500 DEFINES += $(ARGS) -DEFAULTS = -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_TX_MODE=8 -DEMSESP_DEFAULT_VERSION=\"3.6.3-dev\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32\" +DEFAULTS = -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_TX_MODE=8 -DEMSESP_DEFAULT_VERSION=\"3.6.4-dev\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32\" #---------------------------------------------------------------------- # Sources & Files diff --git a/interface/package.json b/interface/package.json index f8c6bd82a..5a8fd4fb1 100644 --- a/interface/package.json +++ b/interface/package.json @@ -1,6 +1,6 @@ { "name": "EMS-ESP", - "version": "3.6.3", + "version": "3.6.5", "description": "build EMS-ESP WebUI", "homepage": "https://emsesp.github.io/docs", "author": "proddy", diff --git a/mock-api/server.js b/mock-api/server.js index 2dc90b50d..88e478349 100644 --- a/mock-api/server.js +++ b/mock-api/server.js @@ -324,7 +324,7 @@ security_settings = { ] }; const features = { - version: 'v3.6.3-demo', + version: 'v3.6-demo', // platform: 'ESP32' platform: 'ESP32-S3' }; @@ -355,7 +355,7 @@ const EMSESP_WRITE_ENTITIES_ENDPOINT = REST_ENDPOINT_ROOT + 'entities'; const emsesp_info = { System: { - version: '3.6.3', + version: '3.6.5', uptime: '001+06:40:34.018', 'uptime (seconds)': 110434, freemem: 131, diff --git a/platformio.ini b/platformio.ini index 2fe2a578d..69521fe02 100644 --- a/platformio.ini +++ b/platformio.ini @@ -172,7 +172,7 @@ platform = native build_flags = -DARDUINOJSON_ENABLE_STD_STRING=1 -DARDUINOJSON_ENABLE_PROGMEM=1 -DARDUINOJSON_ENABLE_ARDUINO_STRING -DARDUINOJSON_USE_DOUBLE=0 -DEMSESP_DEBUG -DEMSESP_STANDALONE -DEMSESP_TEST -D__linux__ - -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_TX_MODE=8 -DEMSESP_DEFAULT_VERSION=\"3.6.3-dev\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32\" + -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_TX_MODE=8 -DEMSESP_DEFAULT_VERSION=\"3.6.4-dev\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32\" -lpthread -std=gnu++11 -Og -ggdb build_src_flags = diff --git a/sonar-project.properties b/sonar-project.properties index 877b44ec4..fdd85ff20 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1,7 +1,7 @@ sonar.organization=emsesp sonar.projectKey=emsesp_EMS-ESP32 sonar.projectName=EMS-ESP32 -sonar.projectVersion=3.6.3 +sonar.projectVersion=3.6.5 sonar.sources=./src sonar.cfamily.build-wrapper-output=bw-output sonar.sourceEncoding=UTF-8 diff --git a/src/system.cpp b/src/system.cpp index f1d5b013f..6677c5ff6 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -1096,7 +1096,7 @@ bool System::check_upgrade(bool factory_settings) { missing_version = (settingsVersion.empty() || (settingsVersion.length() < 5)); if (missing_version) { LOG_WARNING("No version information found (%s)", settingsVersion.c_str()); - settingsVersion = "3.6.3"; // this was the last stable version + settingsVersion = "3.6.4"; // this was the last stable version } } diff --git a/src/version.h b/src/version.h index d5365b3ed..fa47481b3 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.6.4-dev.2" +#define EMSESP_APP_VERSION "3.6.5-dev.0" From 932a496f4760b4ecc13d80e0638ada2a80430a26 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 24 Nov 2023 10:15:34 +0100 Subject: [PATCH 63/91] revert to react-router-dom 6.19.0 to fix tab-routing-issue --- interface/package.json | 2 +- interface/yarn.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/package.json b/interface/package.json index 5a8fd4fb1..f70c6168d 100644 --- a/interface/package.json +++ b/interface/package.json @@ -43,7 +43,7 @@ "react-dom": "latest", "react-dropzone": "^14.2.3", "react-icons": "^4.12.0", - "react-router-dom": "^6.20.0", + "react-router-dom": "^6.19.0", "react-toastify": "^9.1.3", "sockette": "^2.0.6", "typesafe-i18n": "^5.26.2", diff --git a/interface/yarn.lock b/interface/yarn.lock index 440fe5985..f0fc827b5 100644 --- a/interface/yarn.lock +++ b/interface/yarn.lock @@ -1775,7 +1775,7 @@ __metadata: react-dom: "npm:latest" react-dropzone: "npm:^14.2.3" react-icons: "npm:^4.12.0" - react-router-dom: "npm:^6.20.0" + react-router-dom: "npm:^6.19.0" react-toastify: "npm:^9.1.3" rollup-plugin-visualizer: "npm:^5.9.2" sockette: "npm:^2.0.6" @@ -7020,7 +7020,7 @@ __metadata: languageName: node linkType: hard -"react-router-dom@npm:^6.20.0": +"react-router-dom@npm:^6.19.0": version: 6.20.0 resolution: "react-router-dom@npm:6.20.0" dependencies: From 2b486ffa36f11bbb9e9f70d785e3c3e4afd4d9c0 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 24 Nov 2023 12:27:32 +0100 Subject: [PATCH 64/91] revert package update --- interface/package.json | 4 ++-- interface/yarn.lock | 38 +++++++++++++++++++------------------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/interface/package.json b/interface/package.json index f70c6168d..85de31536 100644 --- a/interface/package.json +++ b/interface/package.json @@ -1,6 +1,6 @@ { "name": "EMS-ESP", - "version": "3.6.5", + "version": "3.6.3", "description": "build EMS-ESP WebUI", "homepage": "https://emsesp.github.io/docs", "author": "proddy", @@ -29,7 +29,7 @@ "@table-library/react-table-library": "4.1.7", "@types/imagemin": "^8.0.5", "@types/lodash-es": "^4.17.12", - "@types/node": "^20.9.5", + "@types/node": "^20.10.0", "@types/react": "^18.2.38", "@types/react-dom": "^18.2.17", "@types/react-router-dom": "^5.3.3", diff --git a/interface/yarn.lock b/interface/yarn.lock index f0fc827b5..1a109c51b 100644 --- a/interface/yarn.lock +++ b/interface/yarn.lock @@ -1187,10 +1187,10 @@ __metadata: languageName: node linkType: hard -"@remix-run/router@npm:1.13.0": - version: 1.13.0 - resolution: "@remix-run/router@npm:1.13.0" - checksum: bb173a012d2036c5ee69babfe30c73975b970c2e5a0edaba138c302ae80d255e238e462e77365ab4efe819b6397e1a7f3a416d6200d17f9655f0ca1c51c4f45e +"@remix-run/router@npm:1.12.0": + version: 1.12.0 + resolution: "@remix-run/router@npm:1.12.0" + checksum: f984e42cfe855991e1d3067f686f857614f12e8c1c45168a2d98e3fc3a427e232fd0b6cf145173b7cd132faf070702b532c34230a825d933908c54c85077fc69 languageName: node linkType: hard @@ -1478,12 +1478,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^20.9.5": - version: 20.9.5 - resolution: "@types/node@npm:20.9.5" +"@types/node@npm:^20.10.0": + version: 20.10.0 + resolution: "@types/node@npm:20.10.0" dependencies: undici-types: "npm:~5.26.4" - checksum: f7d02ef84a449f079bc77d7494dc96a1d45006b3a7583a41430d8b62ad7dd914bcce8d1ed60584b8725289e609c20288c840aadb21cc52d5b656fa7731c1a528 + checksum: c7d5ddbdbf3491e2363135c9611eb6bfae90eda2957279237fa232bcb29cd0df1cc3ee149d6de9915b754262a531ee2d57d33c9ecd58d763e8ad4856113822f3 languageName: node linkType: hard @@ -1745,7 +1745,7 @@ __metadata: "@table-library/react-table-library": "npm:4.1.7" "@types/imagemin": "npm:^8.0.5" "@types/lodash-es": "npm:^4.17.12" - "@types/node": "npm:^20.9.5" + "@types/node": "npm:^20.10.0" "@types/react": "npm:^18.2.38" "@types/react-dom": "npm:^18.2.17" "@types/react-router-dom": "npm:^5.3.3" @@ -7021,26 +7021,26 @@ __metadata: linkType: hard "react-router-dom@npm:^6.19.0": - version: 6.20.0 - resolution: "react-router-dom@npm:6.20.0" + version: 6.19.0 + resolution: "react-router-dom@npm:6.19.0" dependencies: - "@remix-run/router": "npm:1.13.0" - react-router: "npm:6.20.0" + "@remix-run/router": "npm:1.12.0" + react-router: "npm:6.19.0" peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 4b6741c545cedf5a5c4f996deb953679dcc985425e0664e27b97fdb9ab1387cbe1a6a12bfc7f7c38ec40b15759b4bf6396930ec26540a4a81ae16d154fd35049 + checksum: 38312efc11d3ef688062301479a8257a1495a81cd8dd7039c1f81aba6774963df7d21aaee2ba1a3c152857b70f4fb9966a3ccff47aca12212e854dcd6fc4deab languageName: node linkType: hard -"react-router@npm:6.20.0": - version: 6.20.0 - resolution: "react-router@npm:6.20.0" +"react-router@npm:6.19.0": + version: 6.19.0 + resolution: "react-router@npm:6.19.0" dependencies: - "@remix-run/router": "npm:1.13.0" + "@remix-run/router": "npm:1.12.0" peerDependencies: react: ">=16.8" - checksum: 2cdac5ad8b7a7bc230173b26768bcf3f6a9abc0a19983fa7b76b9ffdbeb44bfbd88fcc2033e9062defafef144db207859eb3162a9c9742d70cfce4e7166ff1e5 + checksum: 5454f4a4d65401430ded8f1033cebe4ccca771c3c827e8329c77dcfd73618ca9a32488fb58722bf6a07afef7d8e7ef22a710aae0f3337e5c20962bf6473d81a3 languageName: node linkType: hard From 095255b9b742e3f996c6da95dc1155efe8bef4a4 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 24 Nov 2023 10:15:34 +0100 Subject: [PATCH 65/91] revert to react-router-dom 6.19.0 to fix tab-routing-issue --- interface/package.json | 4 ++-- interface/yarn.lock | 42 +++++++++++++++++++++--------------------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/interface/package.json b/interface/package.json index 5a8fd4fb1..090becfe8 100644 --- a/interface/package.json +++ b/interface/package.json @@ -29,7 +29,7 @@ "@table-library/react-table-library": "4.1.7", "@types/imagemin": "^8.0.5", "@types/lodash-es": "^4.17.12", - "@types/node": "^20.9.5", + "@types/node": "^20.10.0", "@types/react": "^18.2.38", "@types/react-dom": "^18.2.17", "@types/react-router-dom": "^5.3.3", @@ -43,7 +43,7 @@ "react-dom": "latest", "react-dropzone": "^14.2.3", "react-icons": "^4.12.0", - "react-router-dom": "^6.20.0", + "react-router-dom": "^6.19.0", "react-toastify": "^9.1.3", "sockette": "^2.0.6", "typesafe-i18n": "^5.26.2", diff --git a/interface/yarn.lock b/interface/yarn.lock index 440fe5985..1a109c51b 100644 --- a/interface/yarn.lock +++ b/interface/yarn.lock @@ -1187,10 +1187,10 @@ __metadata: languageName: node linkType: hard -"@remix-run/router@npm:1.13.0": - version: 1.13.0 - resolution: "@remix-run/router@npm:1.13.0" - checksum: bb173a012d2036c5ee69babfe30c73975b970c2e5a0edaba138c302ae80d255e238e462e77365ab4efe819b6397e1a7f3a416d6200d17f9655f0ca1c51c4f45e +"@remix-run/router@npm:1.12.0": + version: 1.12.0 + resolution: "@remix-run/router@npm:1.12.0" + checksum: f984e42cfe855991e1d3067f686f857614f12e8c1c45168a2d98e3fc3a427e232fd0b6cf145173b7cd132faf070702b532c34230a825d933908c54c85077fc69 languageName: node linkType: hard @@ -1478,12 +1478,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^20.9.5": - version: 20.9.5 - resolution: "@types/node@npm:20.9.5" +"@types/node@npm:^20.10.0": + version: 20.10.0 + resolution: "@types/node@npm:20.10.0" dependencies: undici-types: "npm:~5.26.4" - checksum: f7d02ef84a449f079bc77d7494dc96a1d45006b3a7583a41430d8b62ad7dd914bcce8d1ed60584b8725289e609c20288c840aadb21cc52d5b656fa7731c1a528 + checksum: c7d5ddbdbf3491e2363135c9611eb6bfae90eda2957279237fa232bcb29cd0df1cc3ee149d6de9915b754262a531ee2d57d33c9ecd58d763e8ad4856113822f3 languageName: node linkType: hard @@ -1745,7 +1745,7 @@ __metadata: "@table-library/react-table-library": "npm:4.1.7" "@types/imagemin": "npm:^8.0.5" "@types/lodash-es": "npm:^4.17.12" - "@types/node": "npm:^20.9.5" + "@types/node": "npm:^20.10.0" "@types/react": "npm:^18.2.38" "@types/react-dom": "npm:^18.2.17" "@types/react-router-dom": "npm:^5.3.3" @@ -1775,7 +1775,7 @@ __metadata: react-dom: "npm:latest" react-dropzone: "npm:^14.2.3" react-icons: "npm:^4.12.0" - react-router-dom: "npm:^6.20.0" + react-router-dom: "npm:^6.19.0" react-toastify: "npm:^9.1.3" rollup-plugin-visualizer: "npm:^5.9.2" sockette: "npm:^2.0.6" @@ -7020,27 +7020,27 @@ __metadata: languageName: node linkType: hard -"react-router-dom@npm:^6.20.0": - version: 6.20.0 - resolution: "react-router-dom@npm:6.20.0" +"react-router-dom@npm:^6.19.0": + version: 6.19.0 + resolution: "react-router-dom@npm:6.19.0" dependencies: - "@remix-run/router": "npm:1.13.0" - react-router: "npm:6.20.0" + "@remix-run/router": "npm:1.12.0" + react-router: "npm:6.19.0" peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 4b6741c545cedf5a5c4f996deb953679dcc985425e0664e27b97fdb9ab1387cbe1a6a12bfc7f7c38ec40b15759b4bf6396930ec26540a4a81ae16d154fd35049 + checksum: 38312efc11d3ef688062301479a8257a1495a81cd8dd7039c1f81aba6774963df7d21aaee2ba1a3c152857b70f4fb9966a3ccff47aca12212e854dcd6fc4deab languageName: node linkType: hard -"react-router@npm:6.20.0": - version: 6.20.0 - resolution: "react-router@npm:6.20.0" +"react-router@npm:6.19.0": + version: 6.19.0 + resolution: "react-router@npm:6.19.0" dependencies: - "@remix-run/router": "npm:1.13.0" + "@remix-run/router": "npm:1.12.0" peerDependencies: react: ">=16.8" - checksum: 2cdac5ad8b7a7bc230173b26768bcf3f6a9abc0a19983fa7b76b9ffdbeb44bfbd88fcc2033e9062defafef144db207859eb3162a9c9742d70cfce4e7166ff1e5 + checksum: 5454f4a4d65401430ded8f1033cebe4ccca771c3c827e8329c77dcfd73618ca9a32488fb58722bf6a07afef7d8e7ef22a710aae0f3337e5c20962bf6473d81a3 languageName: node linkType: hard From 548fdd823b23f8381f7647ac14a3b63679ca2c70 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sat, 25 Nov 2023 15:50:42 +0100 Subject: [PATCH 66/91] version --- interface/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/package.json b/interface/package.json index 85de31536..090becfe8 100644 --- a/interface/package.json +++ b/interface/package.json @@ -1,6 +1,6 @@ { "name": "EMS-ESP", - "version": "3.6.3", + "version": "3.6.5", "description": "build EMS-ESP WebUI", "homepage": "https://emsesp.github.io/docs", "author": "proddy", From 8898ec94190e49a89c5b78c9ff001fbb150d7c54 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 26 Nov 2023 08:59:32 +0100 Subject: [PATCH 67/91] revert to react-router-dom 6.18.0 to bring blue tab line back --- interface/package.json | 2 +- .../framework/security/ManageUsersForm.tsx | 2 +- .../src/project/SettingsCustomization.tsx | 2 +- interface/src/project/SettingsEntities.tsx | 2 +- interface/src/project/SettingsScheduler.tsx | 2 +- interface/src/utils/useRest.ts | 2 +- interface/yarn.lock | 32 +++++++++---------- 7 files changed, 22 insertions(+), 22 deletions(-) diff --git a/interface/package.json b/interface/package.json index 090becfe8..45a97dd8a 100644 --- a/interface/package.json +++ b/interface/package.json @@ -43,7 +43,7 @@ "react-dom": "latest", "react-dropzone": "^14.2.3", "react-icons": "^4.12.0", - "react-router-dom": "^6.19.0", + "react-router-dom": "6.18.0", "react-toastify": "^9.1.3", "sockette": "^2.0.6", "typesafe-i18n": "^5.26.2", diff --git a/interface/src/framework/security/ManageUsersForm.tsx b/interface/src/framework/security/ManageUsersForm.tsx index f60c8e0c0..a8d8c9afb 100644 --- a/interface/src/framework/security/ManageUsersForm.tsx +++ b/interface/src/framework/security/ManageUsersForm.tsx @@ -12,7 +12,7 @@ import { Table, Header, HeaderRow, HeaderCell, Body, Row, Cell } from '@table-li import { useTheme } from '@table-library/react-table-library/theme'; import { useContext, useState } from 'react'; -import { useBlocker } from 'react-router-dom'; +import { unstable_useBlocker as useBlocker } from 'react-router-dom'; import GenerateToken from './GenerateToken'; import UserForm from './UserForm'; import type { FC } from 'react'; diff --git a/interface/src/project/SettingsCustomization.tsx b/interface/src/project/SettingsCustomization.tsx index 463ec3518..183d32778 100644 --- a/interface/src/project/SettingsCustomization.tsx +++ b/interface/src/project/SettingsCustomization.tsx @@ -23,7 +23,7 @@ import { Table, Header, HeaderRow, HeaderCell, Body, Row, Cell } from '@table-li import { useTheme } from '@table-library/react-table-library/theme'; import { useRequest } from 'alova'; import { useState, useEffect, useCallback } from 'react'; -import { useBlocker, useLocation } from 'react-router-dom'; +import { unstable_useBlocker as useBlocker, useLocation } from 'react-router-dom'; import { toast } from 'react-toastify'; import EntityMaskToggle from './EntityMaskToggle'; diff --git a/interface/src/project/SettingsEntities.tsx b/interface/src/project/SettingsEntities.tsx index 708d86513..1128dd645 100644 --- a/interface/src/project/SettingsEntities.tsx +++ b/interface/src/project/SettingsEntities.tsx @@ -7,7 +7,7 @@ import { useTheme } from '@table-library/react-table-library/theme'; // eslint-disable-next-line import/named import { updateState, useRequest } from 'alova'; import { useState, useCallback } from 'react'; -import { useBlocker } from 'react-router-dom'; +import { unstable_useBlocker as useBlocker } from 'react-router-dom'; import { toast } from 'react-toastify'; diff --git a/interface/src/project/SettingsScheduler.tsx b/interface/src/project/SettingsScheduler.tsx index f8d2d8f72..7ba89969f 100644 --- a/interface/src/project/SettingsScheduler.tsx +++ b/interface/src/project/SettingsScheduler.tsx @@ -9,7 +9,7 @@ import { useTheme } from '@table-library/react-table-library/theme'; // eslint-disable-next-line import/named import { updateState, useRequest } from 'alova'; import { useState, useEffect, useCallback } from 'react'; -import { useBlocker } from 'react-router-dom'; +import { unstable_useBlocker as useBlocker } from 'react-router-dom'; import { toast } from 'react-toastify'; import SettingsSchedulerDialog from './SettingsSchedulerDialog'; import * as EMSESP from './api'; diff --git a/interface/src/utils/useRest.ts b/interface/src/utils/useRest.ts index bce61546e..921513bba 100644 --- a/interface/src/utils/useRest.ts +++ b/interface/src/utils/useRest.ts @@ -1,6 +1,6 @@ import { useRequest, type Method } from 'alova'; import { useState } from 'react'; -import { useBlocker } from 'react-router-dom'; +import { unstable_useBlocker as useBlocker } from 'react-router-dom'; import { toast } from 'react-toastify'; import { useI18nContext } from 'i18n/i18n-react'; diff --git a/interface/yarn.lock b/interface/yarn.lock index 1a109c51b..d273a7f3b 100644 --- a/interface/yarn.lock +++ b/interface/yarn.lock @@ -1187,10 +1187,10 @@ __metadata: languageName: node linkType: hard -"@remix-run/router@npm:1.12.0": - version: 1.12.0 - resolution: "@remix-run/router@npm:1.12.0" - checksum: f984e42cfe855991e1d3067f686f857614f12e8c1c45168a2d98e3fc3a427e232fd0b6cf145173b7cd132faf070702b532c34230a825d933908c54c85077fc69 +"@remix-run/router@npm:1.11.0": + version: 1.11.0 + resolution: "@remix-run/router@npm:1.11.0" + checksum: 629ec578b9dfd3c5cb5de64a0798dd7846ec5ba0351aa66f42b1c65efb43da8f30366be59b825303648965b0df55b638c110949b24ef94fd62e98117fdfb0c0f languageName: node linkType: hard @@ -1775,7 +1775,7 @@ __metadata: react-dom: "npm:latest" react-dropzone: "npm:^14.2.3" react-icons: "npm:^4.12.0" - react-router-dom: "npm:^6.19.0" + react-router-dom: "npm:6.18.0" react-toastify: "npm:^9.1.3" rollup-plugin-visualizer: "npm:^5.9.2" sockette: "npm:^2.0.6" @@ -7020,27 +7020,27 @@ __metadata: languageName: node linkType: hard -"react-router-dom@npm:^6.19.0": - version: 6.19.0 - resolution: "react-router-dom@npm:6.19.0" +"react-router-dom@npm:6.18.0": + version: 6.18.0 + resolution: "react-router-dom@npm:6.18.0" dependencies: - "@remix-run/router": "npm:1.12.0" - react-router: "npm:6.19.0" + "@remix-run/router": "npm:1.11.0" + react-router: "npm:6.18.0" peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 38312efc11d3ef688062301479a8257a1495a81cd8dd7039c1f81aba6774963df7d21aaee2ba1a3c152857b70f4fb9966a3ccff47aca12212e854dcd6fc4deab + checksum: b0e72603d73172b6c6662afe2faed326753d5bbd9905aa560e3dade7996fc13d19e34e3ed668d2849efd685e2db2f711129c84b1439870e92c9cc91ddc343cf5 languageName: node linkType: hard -"react-router@npm:6.19.0": - version: 6.19.0 - resolution: "react-router@npm:6.19.0" +"react-router@npm:6.18.0": + version: 6.18.0 + resolution: "react-router@npm:6.18.0" dependencies: - "@remix-run/router": "npm:1.12.0" + "@remix-run/router": "npm:1.11.0" peerDependencies: react: ">=16.8" - checksum: 5454f4a4d65401430ded8f1033cebe4ccca771c3c827e8329c77dcfd73618ca9a32488fb58722bf6a07afef7d8e7ef22a710aae0f3337e5c20962bf6473d81a3 + checksum: a00c8f347b7ffee575f4a7731782e688e3fca458ca5bd970fb41cef66a6851853caa24464155ab438d5879f367b1223a539642a405a865913ffe7e63e53b1245 languageName: node linkType: hard From 2a6fedc6b3c46872526e3820e4914ff6c03c5d76 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 26 Nov 2023 09:11:46 +0100 Subject: [PATCH 68/91] hetpump energy meters, sync with HP id 0x08 --- src/devices/heatpump.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ src/devices/heatpump.h | 10 ++++++++++ 2 files changed, 50 insertions(+) diff --git a/src/devices/heatpump.cpp b/src/devices/heatpump.cpp index edb25e6bb..e9f74e672 100644 --- a/src/devices/heatpump.cpp +++ b/src/devices/heatpump.cpp @@ -33,6 +33,8 @@ Heatpump::Heatpump(uint8_t device_type, uint8_t device_id, uint8_t product_id, c register_telegram_type(0x9A0, "HPTemperature", false, MAKE_PF_CB(process_HPTemperature)); register_telegram_type(0x99B, "HPFlowTemp", false, MAKE_PF_CB(process_HPFlowTemp)); register_telegram_type(0x99C, "HPComp", false, MAKE_PF_CB(process_HPComp)); + register_telegram_type(0x4AE, "HPEnergy", true, MAKE_PF_CB(process_HpEnergy)); + register_telegram_type(0x4AF, "HPMeters", true, MAKE_PF_CB(process_HpMeters)); // device values register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &airHumidity_, DeviceValueType::UINT, FL_(airHumidity), DeviceValueUOM::PERCENT); @@ -146,6 +148,27 @@ Heatpump::Heatpump(uint8_t device_type, uint8_t device_id, uint8_t product_id, c DeviceValueUOM::NONE, MAKE_CF_CB(set_heatDrainPan)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &heatCable_, DeviceValueType::BOOL, FL_(heatCable), DeviceValueUOM::NONE, MAKE_CF_CB(set_heatCable)); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &nrgTotal_, DeviceValueType::ULONG, DeviceValueNumOp::DV_NUMOP_DIV100, FL_(nrgTotal), DeviceValueUOM::KWH); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &nrgWw_, DeviceValueType::ULONG, DeviceValueNumOp::DV_NUMOP_DIV100, FL_(nrgWw), DeviceValueUOM::KWH); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &nrgHeat_, DeviceValueType::ULONG, DeviceValueNumOp::DV_NUMOP_DIV100, FL_(nrgHeat), DeviceValueUOM::KWH); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &meterTotal_, + DeviceValueType::ULONG, + DeviceValueNumOp::DV_NUMOP_DIV100, + FL_(meterTotal), + DeviceValueUOM::KWH); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &meterComp_, + DeviceValueType::ULONG, + DeviceValueNumOp::DV_NUMOP_DIV100, + FL_(meterComp), + DeviceValueUOM::KWH); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &meterEHeat_, + DeviceValueType::ULONG, + DeviceValueNumOp::DV_NUMOP_DIV100, + FL_(meterEHeat), + DeviceValueUOM::KWH); } /* @@ -226,6 +249,23 @@ void Heatpump::process_HPFunctionTest(std::shared_ptr telegram) has_update(telegram, heatCable_, 10); } +// boiler(0x08) -W-> Me(0x0B), ?(0x04AE), data: 00 00 BD C4 00 00 5B 6A 00 00 00 24 00 00 62 59 00 00 00 00 00 00 00 00 +// boiler(0x08) -W-> Me(0x0B), ?(0x04AE), data: 00 00 00 00 00 00 00 00 (offset 24) +void Heatpump::process_HpEnergy(std::shared_ptr telegram) { + has_update(telegram, nrgTotal_, 0); + has_update(telegram, nrgHeat_, 4); + has_update(telegram, nrgWw_, 12); +} + +// boiler(0x08) -W-> Me(0x0B), ?(0x04AF), data: 00 00 48 B2 00 00 48 55 00 00 00 5D 00 00 01 78 00 00 00 00 00 00 07 61 +// boiler(0x08) -W-> Me(0x0B), ?(0x04AF), data: 00 00 24 B0 00 00 00 12 00 00 23 A5 00 00 00 4B 00 00 00 00 00 00 00 00 (offset 24) +// boiler(0x08) -W-> Me(0x0B), ?(0x04AF), data: 00 00 00 00 00 00 00 00 (offset 48) +void Heatpump::process_HpMeters(std::shared_ptr telegram) { + has_update(telegram, meterTotal_, 0); + has_update(telegram, meterComp_, 4); + has_update(telegram, meterEHeat_, 8); +} + /* * Broadcast (0x099A), data: 05 00 00 00 00 00 00 37 00 00 1D 00 00 52 00 00 13 01 00 01 7C * Broadcast (0x099B), data: 80 00 80 00 01 3C 01 38 80 00 80 00 80 00 01 37 00 00 00 00 64 diff --git a/src/devices/heatpump.h b/src/devices/heatpump.h index e13aad81f..e99748836 100644 --- a/src/devices/heatpump.h +++ b/src/devices/heatpump.h @@ -67,6 +67,14 @@ class Heatpump : public EMSdevice { int16_t hpJr0_; // low pressure sensor int16_t hpJr1_; // high pressure sensor + uint32_t nrgTotal_; + uint32_t nrgWw_; + uint32_t nrgHeat_; + uint32_t meterTotal_; + uint32_t meterComp_; + uint32_t meterEHeat_; + + void process_HPMonitor1(std::shared_ptr telegram); void process_HPMonitor2(std::shared_ptr telegram); void process_HPSettings(std::shared_ptr telegram); @@ -74,6 +82,8 @@ class Heatpump : public EMSdevice { void process_HPTemperature(std::shared_ptr telegram); void process_HPFlowTemp(std::shared_ptr telegram); void process_HPComp(std::shared_ptr telegram); + void process_HpEnergy(std::shared_ptr telegram); + void process_HpMeters(std::shared_ptr telegram); bool set_controlStrategy(const char * value, const int8_t id); bool set_lowNoiseMode(const char * value, const int8_t id); From 7d6bb6b9c821688e29a1ba1cdcfe6efc9dba2bf1 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 26 Nov 2023 10:34:39 +0100 Subject: [PATCH 69/91] add meter heating 0x4AF, offset 24 --- src/devices/boiler.cpp | 7 +++++++ src/devices/boiler.h | 1 + src/devices/heatpump.cpp | 7 +++++++ src/devices/heatpump.h | 1 + src/locale_translations.h | 1 + src/version.h | 2 +- 6 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index b0b500dca..049c4ac08 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -399,6 +399,12 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const DeviceValueNumOp::DV_NUMOP_DIV100, FL_(meterEHeat), DeviceValueUOM::KWH); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &meterHeat_, + DeviceValueType::ULONG, + DeviceValueNumOp::DV_NUMOP_DIV100, + FL_(meterHeat), + DeviceValueUOM::KWH); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &upTimeTotal_, DeviceValueType::TIME, @@ -1884,6 +1890,7 @@ void Boiler::process_HpMeters(std::shared_ptr telegram) { has_update(telegram, meterTotal_, 0); has_update(telegram, meterComp_, 4); has_update(telegram, meterEHeat_, 8); + has_update(telegram, meterHeat_, 24); } // HIU unit diff --git a/src/devices/boiler.h b/src/devices/boiler.h index 4ad48e2ee..13fe3b18c 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -218,6 +218,7 @@ class Boiler : public EMSdevice { uint32_t meterTotal_; uint32_t meterComp_; uint32_t meterEHeat_; + uint32_t meterHeat_; uint8_t hpEA0_; uint8_t hpPumpMode_; diff --git a/src/devices/heatpump.cpp b/src/devices/heatpump.cpp index e9f74e672..8a1c214b6 100644 --- a/src/devices/heatpump.cpp +++ b/src/devices/heatpump.cpp @@ -169,6 +169,12 @@ Heatpump::Heatpump(uint8_t device_type, uint8_t device_id, uint8_t product_id, c DeviceValueNumOp::DV_NUMOP_DIV100, FL_(meterEHeat), DeviceValueUOM::KWH); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &meterHeat_, + DeviceValueType::ULONG, + DeviceValueNumOp::DV_NUMOP_DIV100, + FL_(meterHeat), + DeviceValueUOM::KWH); } /* @@ -264,6 +270,7 @@ void Heatpump::process_HpMeters(std::shared_ptr telegram) { has_update(telegram, meterTotal_, 0); has_update(telegram, meterComp_, 4); has_update(telegram, meterEHeat_, 8); + has_update(telegram, meterHeat_, 24); } /* diff --git a/src/devices/heatpump.h b/src/devices/heatpump.h index e99748836..cb0fbcab1 100644 --- a/src/devices/heatpump.h +++ b/src/devices/heatpump.h @@ -73,6 +73,7 @@ class Heatpump : public EMSdevice { uint32_t meterTotal_; uint32_t meterComp_; uint32_t meterEHeat_; + uint32_t meterHeat_; void process_HPMonitor1(std::shared_ptr telegram); diff --git a/src/locale_translations.h b/src/locale_translations.h index 328368676..62d5cb055 100644 --- a/src/locale_translations.h +++ b/src/locale_translations.h @@ -529,6 +529,7 @@ MAKE_TRANSLATION(nomPower, "nompower", "nominal Power", "Brennerleistung", "", " MAKE_TRANSLATION(meterTotal, "metertotal", "meter total", "Messung gesamt", "", "", "licznik całkowity", "", "", "", "") // TODO translate MAKE_TRANSLATION(meterComp, "metercomp", "meter compressor", "Messung Kompressor", "", "", "licznik sprężarki", "", "", "", "") // TODO translate MAKE_TRANSLATION(meterEHeat, "metereheat", "meter e-heater", "Messung E-Heizer", "", "", "licznik e-heater", "", "", "", "") // TODO translate +MAKE_TRANSLATION(meterHeat, "meterheat", "meter heating", "Messung Heizen", "", "", "licznik grzania", "", "", "", "") // TODO translate // HIU MAKE_TRANSLATION(netFlowTemp, "netflowtemp", "heat network flow temp", "System Vorlauftemperatur", "Netto aanvoertemperatuur", "", "temp. zasilania sieci cieplnej", "", "", "ısıtma şebekesi akış derecesi", "temperatura di mandata della rete di riscaldamento") // TODO translate diff --git a/src/version.h b/src/version.h index f7792c02d..bf32d726a 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.6.5-test.0a" +#define EMSESP_APP_VERSION "3.6.5-test.0b" From 1cbfc91912a760fa473b63ffb4069983df27b1d8 Mon Sep 17 00:00:00 2001 From: Proddy Date: Sun, 26 Nov 2023 15:56:30 +0100 Subject: [PATCH 70/91] remove tab from help page --- interface/src/project/Help.tsx | 89 ++++++++++++++++++----- interface/src/project/HelpInformation.tsx | 85 ---------------------- 2 files changed, 72 insertions(+), 102 deletions(-) delete mode 100644 interface/src/project/HelpInformation.tsx diff --git a/interface/src/project/Help.tsx b/interface/src/project/Help.tsx index d5b355823..49f6cc75a 100644 --- a/interface/src/project/Help.tsx +++ b/interface/src/project/Help.tsx @@ -1,28 +1,83 @@ -import { Tab } from '@mui/material'; -import { Navigate, Route, Routes } from 'react-router-dom'; -import HelpInformation from './HelpInformation'; +import CommentIcon from '@mui/icons-material/CommentTwoTone'; +import EastIcon from '@mui/icons-material/East'; +import GitHubIcon from '@mui/icons-material/GitHub'; +import MenuBookIcon from '@mui/icons-material/MenuBookTwoTone'; +import { Box, List, ListItem, ListItemAvatar, ListItemText, Link, Typography } from '@mui/material'; import type { FC } from 'react'; - -import { RouterTabs, useRouterTab, useLayoutTitle } from 'components'; - +import { SectionContent, useLayoutTitle } from 'components'; import { useI18nContext } from 'i18n/i18n-react'; const Help: FC = () => { const { LL } = useI18nContext(); - const { routerTab } = useRouterTab(); - useLayoutTitle(LL.HELP_OF('')); + const uploadURL = window.location.origin + '/system/upload'; + return ( - <> - - - - - } /> - } /> - - + + + + + + + + {LL.HELP_INFORMATION_1()}  + +   + + {LL.CLICK_HERE()} + + + + + + + + + + {LL.HELP_INFORMATION_2()}  + +   + + {LL.CLICK_HERE()} + + + + + + + + + + {LL.HELP_INFORMATION_3()}  + + + {LL.CLICK_HERE()} + +
+ ({LL.HELP_INFORMATION_4()}  + + {LL.UPLOAD()} + + ) +
+
+
+ + + + {LL.HELP_INFORMATION_5()} + + + + {'github.com/emsesp/EMS-ESP32'} + + + + @proddy @MichaelDvP + + +
); }; diff --git a/interface/src/project/HelpInformation.tsx b/interface/src/project/HelpInformation.tsx deleted file mode 100644 index 9aae937f9..000000000 --- a/interface/src/project/HelpInformation.tsx +++ /dev/null @@ -1,85 +0,0 @@ -import CommentIcon from '@mui/icons-material/CommentTwoTone'; -import EastIcon from '@mui/icons-material/East'; -import GitHubIcon from '@mui/icons-material/GitHub'; -import MenuBookIcon from '@mui/icons-material/MenuBookTwoTone'; -import { Typography, Box, List, ListItem, ListItemText, Link, ListItemAvatar } from '@mui/material'; -import type { FC } from 'react'; - -import { SectionContent } from 'components'; - -import { useI18nContext } from 'i18n/i18n-react'; - -const HelpInformation: FC = () => { - const { LL } = useI18nContext(); - - const uploadURL = window.location.origin + '/system/upload'; - - return ( - - - - - - - - {LL.HELP_INFORMATION_1()}  - -   - - {LL.CLICK_HERE()} - - - - - - - - - - {LL.HELP_INFORMATION_2()}  - -   - - {LL.CLICK_HERE()} - - - - - - - - - - {LL.HELP_INFORMATION_3()}  - - - {LL.CLICK_HERE()} - -
- ({LL.HELP_INFORMATION_4()}  - - {LL.UPLOAD()} - - ) -
-
-
- - - - {LL.HELP_INFORMATION_5()} - - - - {'github.com/emsesp/EMS-ESP32'} - - - - @proddy @MichaelDvP - - -
- ); -}; - -export default HelpInformation; From 76901d97d2e92722c3b696e2961a7822cd2e370d Mon Sep 17 00:00:00 2001 From: Proddy Date: Sun, 26 Nov 2023 15:56:46 +0100 Subject: [PATCH 71/91] fix router --- interface/package.json | 4 +- .../src/components/routing/useRouterTab.ts | 7 ++- interface/src/framework/ap/AccessPoint.tsx | 10 +++-- interface/src/framework/mqtt/Mqtt.tsx | 6 +-- .../framework/network/NetworkConnection.tsx | 12 +++-- interface/src/framework/ntp/NetworkTime.tsx | 6 +-- .../framework/security/ManageUsersForm.tsx | 2 +- interface/src/framework/security/Security.tsx | 6 +-- interface/src/framework/system/System.tsx | 10 ++--- interface/src/project/Dashboard.tsx | 8 ++-- interface/src/project/Settings.tsx | 10 ++--- .../src/project/SettingsCustomization.tsx | 2 +- interface/src/project/SettingsEntities.tsx | 2 +- interface/src/project/SettingsScheduler.tsx | 2 +- interface/src/utils/useRest.ts | 2 +- interface/yarn.lock | 44 +++++++++---------- 16 files changed, 70 insertions(+), 63 deletions(-) diff --git a/interface/package.json b/interface/package.json index 45a97dd8a..4a2642391 100644 --- a/interface/package.json +++ b/interface/package.json @@ -43,7 +43,7 @@ "react-dom": "latest", "react-dropzone": "^14.2.3", "react-icons": "^4.12.0", - "react-router-dom": "6.18.0", + "react-router-dom": "6.20.0", "react-toastify": "^9.1.3", "sockette": "^2.0.6", "typesafe-i18n": "^5.26.2", @@ -68,7 +68,7 @@ "eslint-plugin-react-hooks": "^4.6.0", "preact": "^10.19.2", "prettier": "^3.1.0", - "rollup-plugin-visualizer": "^5.9.2", + "rollup-plugin-visualizer": "^5.9.3", "terser": "^5.24.0", "vite": "^5.0.2", "vite-plugin-imagemin": "^0.6.1", diff --git a/interface/src/components/routing/useRouterTab.ts b/interface/src/components/routing/useRouterTab.ts index 5dff86fd8..52cfe55cb 100644 --- a/interface/src/components/routing/useRouterTab.ts +++ b/interface/src/components/routing/useRouterTab.ts @@ -1,9 +1,8 @@ -import { useMatch, useResolvedPath } from 'react-router-dom'; +import { useLocation } from 'react-router-dom'; export const useRouterTab = () => { - const routerTabPath = useResolvedPath(':tab'); - const routerTabPathMatch = useMatch(routerTabPath.pathname); + const loc = useLocation().pathname; + const routerTab = loc.substring(0, loc.lastIndexOf('/')) ? loc : false; - const routerTab = routerTabPathMatch?.params?.tab || false; return { routerTab } as const; }; diff --git a/interface/src/framework/ap/AccessPoint.tsx b/interface/src/framework/ap/AccessPoint.tsx index 87fecefb3..5d74cd7f6 100644 --- a/interface/src/framework/ap/AccessPoint.tsx +++ b/interface/src/framework/ap/AccessPoint.tsx @@ -22,8 +22,12 @@ const AccessPoint: FC = () => { return ( <> - - + + } /> @@ -36,7 +40,7 @@ const AccessPoint: FC = () => { } /> - } /> + } /> ); diff --git a/interface/src/framework/mqtt/Mqtt.tsx b/interface/src/framework/mqtt/Mqtt.tsx index 7520b0eec..f65ea4181 100644 --- a/interface/src/framework/mqtt/Mqtt.tsx +++ b/interface/src/framework/mqtt/Mqtt.tsx @@ -21,8 +21,8 @@ const Mqtt: FC = () => { return ( <> - - + + } /> @@ -34,7 +34,7 @@ const Mqtt: FC = () => { } /> - } /> + } /> ); diff --git a/interface/src/framework/network/NetworkConnection.tsx b/interface/src/framework/network/NetworkConnection.tsx index 18d1842ef..cd9113398 100644 --- a/interface/src/framework/network/NetworkConnection.tsx +++ b/interface/src/framework/network/NetworkConnection.tsx @@ -44,9 +44,13 @@ const NetworkConnection: FC = () => { }} > - - - + + + } /> @@ -66,7 +70,7 @@ const NetworkConnection: FC = () => { } /> - } /> + } /> ); diff --git a/interface/src/framework/ntp/NetworkTime.tsx b/interface/src/framework/ntp/NetworkTime.tsx index d41d1fb8c..21a110001 100644 --- a/interface/src/framework/ntp/NetworkTime.tsx +++ b/interface/src/framework/ntp/NetworkTime.tsx @@ -20,8 +20,8 @@ const NetworkTime: FC = () => { return ( <> - - + + } /> @@ -33,7 +33,7 @@ const NetworkTime: FC = () => { } /> - } /> + } /> ); diff --git a/interface/src/framework/security/ManageUsersForm.tsx b/interface/src/framework/security/ManageUsersForm.tsx index a8d8c9afb..f60c8e0c0 100644 --- a/interface/src/framework/security/ManageUsersForm.tsx +++ b/interface/src/framework/security/ManageUsersForm.tsx @@ -12,7 +12,7 @@ import { Table, Header, HeaderRow, HeaderCell, Body, Row, Cell } from '@table-li import { useTheme } from '@table-library/react-table-library/theme'; import { useContext, useState } from 'react'; -import { unstable_useBlocker as useBlocker } from 'react-router-dom'; +import { useBlocker } from 'react-router-dom'; import GenerateToken from './GenerateToken'; import UserForm from './UserForm'; import type { FC } from 'react'; diff --git a/interface/src/framework/security/Security.tsx b/interface/src/framework/security/Security.tsx index d55a171e1..b6be5ddfd 100644 --- a/interface/src/framework/security/Security.tsx +++ b/interface/src/framework/security/Security.tsx @@ -17,13 +17,13 @@ const Security: FC = () => { return ( <> - - + + } /> } /> - } /> + } /> ); diff --git a/interface/src/framework/system/System.tsx b/interface/src/framework/system/System.tsx index 2caf4b7c6..8dc373cf2 100644 --- a/interface/src/framework/system/System.tsx +++ b/interface/src/framework/system/System.tsx @@ -23,10 +23,10 @@ const System: FC = () => { return ( <> - - - - + + + + } /> @@ -47,7 +47,7 @@ const System: FC = () => { } /> - } /> + } /> ); diff --git a/interface/src/project/Dashboard.tsx b/interface/src/project/Dashboard.tsx index bfbaa8923..ea1d441f8 100644 --- a/interface/src/project/Dashboard.tsx +++ b/interface/src/project/Dashboard.tsx @@ -20,15 +20,15 @@ const Dashboard: FC = () => { return ( <> - - - + + + } /> } /> } /> - } /> + } /> ); diff --git a/interface/src/project/Settings.tsx b/interface/src/project/Settings.tsx index 29edb1c13..5a0de5b82 100644 --- a/interface/src/project/Settings.tsx +++ b/interface/src/project/Settings.tsx @@ -18,17 +18,17 @@ const Settings: FC = () => { return ( <> - - - - + + + + } /> } /> } /> } /> - } /> + } /> ); diff --git a/interface/src/project/SettingsCustomization.tsx b/interface/src/project/SettingsCustomization.tsx index 183d32778..463ec3518 100644 --- a/interface/src/project/SettingsCustomization.tsx +++ b/interface/src/project/SettingsCustomization.tsx @@ -23,7 +23,7 @@ import { Table, Header, HeaderRow, HeaderCell, Body, Row, Cell } from '@table-li import { useTheme } from '@table-library/react-table-library/theme'; import { useRequest } from 'alova'; import { useState, useEffect, useCallback } from 'react'; -import { unstable_useBlocker as useBlocker, useLocation } from 'react-router-dom'; +import { useBlocker, useLocation } from 'react-router-dom'; import { toast } from 'react-toastify'; import EntityMaskToggle from './EntityMaskToggle'; diff --git a/interface/src/project/SettingsEntities.tsx b/interface/src/project/SettingsEntities.tsx index 1128dd645..708d86513 100644 --- a/interface/src/project/SettingsEntities.tsx +++ b/interface/src/project/SettingsEntities.tsx @@ -7,7 +7,7 @@ import { useTheme } from '@table-library/react-table-library/theme'; // eslint-disable-next-line import/named import { updateState, useRequest } from 'alova'; import { useState, useCallback } from 'react'; -import { unstable_useBlocker as useBlocker } from 'react-router-dom'; +import { useBlocker } from 'react-router-dom'; import { toast } from 'react-toastify'; diff --git a/interface/src/project/SettingsScheduler.tsx b/interface/src/project/SettingsScheduler.tsx index 7ba89969f..f8d2d8f72 100644 --- a/interface/src/project/SettingsScheduler.tsx +++ b/interface/src/project/SettingsScheduler.tsx @@ -9,7 +9,7 @@ import { useTheme } from '@table-library/react-table-library/theme'; // eslint-disable-next-line import/named import { updateState, useRequest } from 'alova'; import { useState, useEffect, useCallback } from 'react'; -import { unstable_useBlocker as useBlocker } from 'react-router-dom'; +import { useBlocker } from 'react-router-dom'; import { toast } from 'react-toastify'; import SettingsSchedulerDialog from './SettingsSchedulerDialog'; import * as EMSESP from './api'; diff --git a/interface/src/utils/useRest.ts b/interface/src/utils/useRest.ts index 921513bba..bce61546e 100644 --- a/interface/src/utils/useRest.ts +++ b/interface/src/utils/useRest.ts @@ -1,6 +1,6 @@ import { useRequest, type Method } from 'alova'; import { useState } from 'react'; -import { unstable_useBlocker as useBlocker } from 'react-router-dom'; +import { useBlocker } from 'react-router-dom'; import { toast } from 'react-toastify'; import { useI18nContext } from 'i18n/i18n-react'; diff --git a/interface/yarn.lock b/interface/yarn.lock index d273a7f3b..51e254188 100644 --- a/interface/yarn.lock +++ b/interface/yarn.lock @@ -1187,10 +1187,10 @@ __metadata: languageName: node linkType: hard -"@remix-run/router@npm:1.11.0": - version: 1.11.0 - resolution: "@remix-run/router@npm:1.11.0" - checksum: 629ec578b9dfd3c5cb5de64a0798dd7846ec5ba0351aa66f42b1c65efb43da8f30366be59b825303648965b0df55b638c110949b24ef94fd62e98117fdfb0c0f +"@remix-run/router@npm:1.13.0": + version: 1.13.0 + resolution: "@remix-run/router@npm:1.13.0" + checksum: bb173a012d2036c5ee69babfe30c73975b970c2e5a0edaba138c302ae80d255e238e462e77365ab4efe819b6397e1a7f3a416d6200d17f9655f0ca1c51c4f45e languageName: node linkType: hard @@ -1775,9 +1775,9 @@ __metadata: react-dom: "npm:latest" react-dropzone: "npm:^14.2.3" react-icons: "npm:^4.12.0" - react-router-dom: "npm:6.18.0" + react-router-dom: "npm:6.20.0" react-toastify: "npm:^9.1.3" - rollup-plugin-visualizer: "npm:^5.9.2" + rollup-plugin-visualizer: "npm:^5.9.3" sockette: "npm:^2.0.6" terser: "npm:^5.24.0" typesafe-i18n: "npm:^5.26.2" @@ -7020,27 +7020,27 @@ __metadata: languageName: node linkType: hard -"react-router-dom@npm:6.18.0": - version: 6.18.0 - resolution: "react-router-dom@npm:6.18.0" +"react-router-dom@npm:6.20.0": + version: 6.20.0 + resolution: "react-router-dom@npm:6.20.0" dependencies: - "@remix-run/router": "npm:1.11.0" - react-router: "npm:6.18.0" + "@remix-run/router": "npm:1.13.0" + react-router: "npm:6.20.0" peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: b0e72603d73172b6c6662afe2faed326753d5bbd9905aa560e3dade7996fc13d19e34e3ed668d2849efd685e2db2f711129c84b1439870e92c9cc91ddc343cf5 + checksum: 4b6741c545cedf5a5c4f996deb953679dcc985425e0664e27b97fdb9ab1387cbe1a6a12bfc7f7c38ec40b15759b4bf6396930ec26540a4a81ae16d154fd35049 languageName: node linkType: hard -"react-router@npm:6.18.0": - version: 6.18.0 - resolution: "react-router@npm:6.18.0" +"react-router@npm:6.20.0": + version: 6.20.0 + resolution: "react-router@npm:6.20.0" dependencies: - "@remix-run/router": "npm:1.11.0" + "@remix-run/router": "npm:1.13.0" peerDependencies: react: ">=16.8" - checksum: a00c8f347b7ffee575f4a7731782e688e3fca458ca5bd970fb41cef66a6851853caa24464155ab438d5879f367b1223a539642a405a865913ffe7e63e53b1245 + checksum: 2cdac5ad8b7a7bc230173b26768bcf3f6a9abc0a19983fa7b76b9ffdbeb44bfbd88fcc2033e9062defafef144db207859eb3162a9c9742d70cfce4e7166ff1e5 languageName: node linkType: hard @@ -7326,22 +7326,22 @@ __metadata: languageName: node linkType: hard -"rollup-plugin-visualizer@npm:^5.9.2": - version: 5.9.2 - resolution: "rollup-plugin-visualizer@npm:5.9.2" +"rollup-plugin-visualizer@npm:^5.9.3": + version: 5.9.3 + resolution: "rollup-plugin-visualizer@npm:5.9.3" dependencies: open: "npm:^8.4.0" picomatch: "npm:^2.3.1" source-map: "npm:^0.7.4" yargs: "npm:^17.5.1" peerDependencies: - rollup: 2.x || 3.x + rollup: 2.x || 3.x || 4.x peerDependenciesMeta: rollup: optional: true bin: rollup-plugin-visualizer: dist/bin/cli.js - checksum: 9cc5b140cdb384cd16538537ed41b8ecc97a21ee1fe7974775c6fbbb7522ed1733da7c47ab8b619c9b4f190de5de3b2ad34303afe94f943c41f2ce2ec621b6cb + checksum: 569acbdf9401fb5e23456d889b1094e95a003331c63428732f94418eda59850fd74994587353f58c833a535cc24cdef56c06872996f76f98802ff22939ebbf0d languageName: node linkType: hard From 8574b44d4ebc41419b7116a96631fe34bcee5f6c Mon Sep 17 00:00:00 2001 From: Proddy Date: Sun, 26 Nov 2023 18:44:15 +0100 Subject: [PATCH 72/91] react-router-dom 6.20.0 minimal --- interface/package.json | 2 +- interface/yarn.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/package.json b/interface/package.json index 4a2642391..457488a7e 100644 --- a/interface/package.json +++ b/interface/package.json @@ -43,7 +43,7 @@ "react-dom": "latest", "react-dropzone": "^14.2.3", "react-icons": "^4.12.0", - "react-router-dom": "6.20.0", + "react-router-dom": "^6.20.0", "react-toastify": "^9.1.3", "sockette": "^2.0.6", "typesafe-i18n": "^5.26.2", diff --git a/interface/yarn.lock b/interface/yarn.lock index 51e254188..7d151a850 100644 --- a/interface/yarn.lock +++ b/interface/yarn.lock @@ -1775,7 +1775,7 @@ __metadata: react-dom: "npm:latest" react-dropzone: "npm:^14.2.3" react-icons: "npm:^4.12.0" - react-router-dom: "npm:6.20.0" + react-router-dom: "npm:^6.20.0" react-toastify: "npm:^9.1.3" rollup-plugin-visualizer: "npm:^5.9.3" sockette: "npm:^2.0.6" @@ -7020,7 +7020,7 @@ __metadata: languageName: node linkType: hard -"react-router-dom@npm:6.20.0": +"react-router-dom@npm:^6.20.0": version: 6.20.0 resolution: "react-router-dom@npm:6.20.0" dependencies: From 9118cd7c5b130edd4971a9ba804285f632a82c16 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Tue, 28 Nov 2023 17:54:47 +0100 Subject: [PATCH 73/91] init for second exhaustTemp value (test.0c) --- src/devices/boiler.h | 31 ++++++++++++++++--------------- src/version.h | 2 +- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/devices/boiler.h b/src/devices/boiler.h index 13fe3b18c..af870c59b 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -101,21 +101,22 @@ class Boiler : public EMSdevice { uint8_t wwTapActivated_; // maintenance-mode to switch DHW off // main - uint8_t reset_; // for reset command - uint8_t heatingActive_; // Central heating is on/off - uint8_t tapwaterActive_; // Hot tap water is on/off - uint8_t selFlowTemp_; // Selected flow temperature - uint8_t selBurnPow_; // Burner max power % (can be > 100%) - uint8_t absBurnPow_; // absolute burner power in % of rating plate - uint8_t heatingPumpMod_; // Pump modulation % - int16_t outdoorTemp_; // Outside temperature - uint16_t curFlowTemp_; // Current flow temperature - uint16_t retTemp_; // Return temperature - uint16_t switchTemp_; // Switch temperature - uint8_t sysPress_; // System pressure - uint16_t boilTemp_; // Boiler temperature - uint16_t exhaustTemp_; // Exhaust temperature published - uint16_t exhaustTemp1_; // read from E4 + uint8_t reset_; // for reset command + uint8_t heatingActive_; // Central heating is on/off + uint8_t tapwaterActive_; // Hot tap water is on/off + uint8_t selFlowTemp_; // Selected flow temperature + uint8_t selBurnPow_; // Burner max power % (can be > 100%) + uint8_t absBurnPow_; // absolute burner power in % of rating plate + uint8_t heatingPumpMod_; // Pump modulation % + int16_t outdoorTemp_; // Outside temperature + uint16_t curFlowTemp_; // Current flow temperature + uint16_t retTemp_; // Return temperature + uint16_t switchTemp_; // Switch temperature + uint8_t sysPress_; // System pressure + uint16_t boilTemp_; // Boiler temperature + uint16_t exhaustTemp_; // Exhaust temperature published + // read second value from E4 and initialize it + uint16_t exhaustTemp1_ = EMS_VALUE_USHORT_NOTSET; uint8_t burnGas_; // Gas on/off uint8_t burnGas2_; // Gas stage 2 on/off uint16_t flameCurr_; // Flame current in micro amps diff --git a/src/version.h b/src/version.h index bf32d726a..f2b128a14 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.6.5-test.0b" +#define EMSESP_APP_VERSION "3.6.5-test.0c" From 3a36663d94145e13ce778947163864d50bbd0196 Mon Sep 17 00:00:00 2001 From: Proddy Date: Tue, 28 Nov 2023 20:52:27 +0100 Subject: [PATCH 74/91] package update --- interface/package.json | 10 +-- interface/yarn.lock | 134 ++++++++++++++++++++--------------------- 2 files changed, 72 insertions(+), 72 deletions(-) diff --git a/interface/package.json b/interface/package.json index 457488a7e..6d63dd8a4 100644 --- a/interface/package.json +++ b/interface/package.json @@ -30,10 +30,10 @@ "@types/imagemin": "^8.0.5", "@types/lodash-es": "^4.17.12", "@types/node": "^20.10.0", - "@types/react": "^18.2.38", + "@types/react": "^18.2.39", "@types/react-dom": "^18.2.17", "@types/react-router-dom": "^5.3.3", - "alova": "^2.14.0", + "alova": "^2.15.0", "async-validator": "^4.2.5", "history": "^5.3.0", "jwt-decode": "^4.0.0", @@ -52,8 +52,8 @@ "devDependencies": { "@preact/compat": "^17.1.2", "@preact/preset-vite": "^2.7.0", - "@typescript-eslint/eslint-plugin": "^6.12.0", - "@typescript-eslint/parser": "^6.12.0", + "@typescript-eslint/eslint-plugin": "^6.13.1", + "@typescript-eslint/parser": "^6.13.1", "concurrently": "^8.2.2", "eslint": "^8.54.0", "eslint-config-airbnb": "^19.0.4", @@ -70,7 +70,7 @@ "prettier": "^3.1.0", "rollup-plugin-visualizer": "^5.9.3", "terser": "^5.24.0", - "vite": "^5.0.2", + "vite": "^5.0.3", "vite-plugin-imagemin": "^0.6.1", "vite-tsconfig-paths": "^4.2.1" }, diff --git a/interface/yarn.lock b/interface/yarn.lock index 7d151a850..b49e9bd11 100644 --- a/interface/yarn.lock +++ b/interface/yarn.lock @@ -1558,14 +1558,14 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:^18.2.38": - version: 18.2.38 - resolution: "@types/react@npm:18.2.38" +"@types/react@npm:^18.2.39": + version: 18.2.39 + resolution: "@types/react@npm:18.2.39" dependencies: "@types/prop-types": "npm:*" "@types/scheduler": "npm:*" csstype: "npm:^3.0.2" - checksum: 9f9b9925c979e848d572dce6fff34951708127ba6b1fd4306c93fbcab74f5c6cff2b2e47d4222339eeb6c19d264e93450cb2ad6b255c73c536d0a1e2093cc98a + checksum: 870f7774c676ae0f3ab6339a62b3315f5a296e89412358b15a5249a61e781a8807a2253ef7ad2ec98e7a5bea1e8c3ddd95b02226d6b8ac4a085da59b4a496564 languageName: node linkType: hard @@ -1601,15 +1601,15 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^6.12.0": - version: 6.12.0 - resolution: "@typescript-eslint/eslint-plugin@npm:6.12.0" +"@typescript-eslint/eslint-plugin@npm:^6.13.1": + version: 6.13.1 + resolution: "@typescript-eslint/eslint-plugin@npm:6.13.1" dependencies: "@eslint-community/regexpp": "npm:^4.5.1" - "@typescript-eslint/scope-manager": "npm:6.12.0" - "@typescript-eslint/type-utils": "npm:6.12.0" - "@typescript-eslint/utils": "npm:6.12.0" - "@typescript-eslint/visitor-keys": "npm:6.12.0" + "@typescript-eslint/scope-manager": "npm:6.13.1" + "@typescript-eslint/type-utils": "npm:6.13.1" + "@typescript-eslint/utils": "npm:6.13.1" + "@typescript-eslint/visitor-keys": "npm:6.13.1" debug: "npm:^4.3.4" graphemer: "npm:^1.4.0" ignore: "npm:^5.2.4" @@ -1622,44 +1622,44 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 1b9d2bb88f3e793067d7ec1e24e11b9d22891314bd5ebdef80a11a0ddde19f5c052b341e2f2c8a466b3af48e492f1028023566feaeb10a826d3928380c3d3d88 + checksum: cae42c77404d8e6c149d68aca75bb3ce83cff5de8713d82e87e93bafae2839f29d261bc75b68f315b6b23858a85ea2f22ed8468cf5c7331e8330f7cee2129522 languageName: node linkType: hard -"@typescript-eslint/parser@npm:^6.12.0": - version: 6.12.0 - resolution: "@typescript-eslint/parser@npm:6.12.0" +"@typescript-eslint/parser@npm:^6.13.1": + version: 6.13.1 + resolution: "@typescript-eslint/parser@npm:6.13.1" dependencies: - "@typescript-eslint/scope-manager": "npm:6.12.0" - "@typescript-eslint/types": "npm:6.12.0" - "@typescript-eslint/typescript-estree": "npm:6.12.0" - "@typescript-eslint/visitor-keys": "npm:6.12.0" + "@typescript-eslint/scope-manager": "npm:6.13.1" + "@typescript-eslint/types": "npm:6.13.1" + "@typescript-eslint/typescript-estree": "npm:6.13.1" + "@typescript-eslint/visitor-keys": "npm:6.13.1" debug: "npm:^4.3.4" peerDependencies: eslint: ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 2e33b581bcf882336bd4734e90a90dc3618960f8c07f5f7d16e4f3a0f00af97d3b3c8adc366170e1d9c8afd922068b3cfc5e9e997fd4ca6ebcb7c46a9e5b30a1 + checksum: cdc328d157a8b8a6babad88360451c177ea41666e2150f3822a474ed287a12336517dccf9f475f75a007d4aa622cb74f1442f17d17b87e19cc2c839784742351 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:6.12.0": - version: 6.12.0 - resolution: "@typescript-eslint/scope-manager@npm:6.12.0" +"@typescript-eslint/scope-manager@npm:6.13.1": + version: 6.13.1 + resolution: "@typescript-eslint/scope-manager@npm:6.13.1" dependencies: - "@typescript-eslint/types": "npm:6.12.0" - "@typescript-eslint/visitor-keys": "npm:6.12.0" - checksum: 46c4a5575fbbb70a800934c93e89795cceef268a140b786a8d22615a0577a5356e42e316dfb23dbb43cec7271b480e712e3127ba33642040bd292fbb6a5de278 + "@typescript-eslint/types": "npm:6.13.1" + "@typescript-eslint/visitor-keys": "npm:6.13.1" + checksum: f728dbd995c58fadfc390411fe31b1b8a729b1c85ecf0ae2fe70f97f613298feab78c05bc180e03612f595b24cf0090476a0b8234c617b3edf1dae568342a7cf languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:6.12.0": - version: 6.12.0 - resolution: "@typescript-eslint/type-utils@npm:6.12.0" +"@typescript-eslint/type-utils@npm:6.13.1": + version: 6.13.1 + resolution: "@typescript-eslint/type-utils@npm:6.13.1" dependencies: - "@typescript-eslint/typescript-estree": "npm:6.12.0" - "@typescript-eslint/utils": "npm:6.12.0" + "@typescript-eslint/typescript-estree": "npm:6.13.1" + "@typescript-eslint/utils": "npm:6.13.1" debug: "npm:^4.3.4" ts-api-utils: "npm:^1.0.1" peerDependencies: @@ -1667,23 +1667,23 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: e92709a0ea5d5aee86def3da40fe4190235d3560f41e77a73d4bc10f6f59e0df367d5a1263d4e05aa44af4deb158ca6f37b09e483248e341a38fd5e2e8b70f72 + checksum: 484e5f74fc604b24687fe6426e650f40f679d62216ee5e45bf6d1f91edd60cd8deef747ca43f7dc3c22b2b76f030477603c82559e44c3f2fb5c8877a0c65aefa languageName: node linkType: hard -"@typescript-eslint/types@npm:6.12.0": - version: 6.12.0 - resolution: "@typescript-eslint/types@npm:6.12.0" - checksum: e52f12d01e2f543927fde985d709616dec1ef310da3a00e3d239874752ba7635e04d325e2a7cf6403d19977282f15fed7629d2477aeeb57df9140fa424f530fe +"@typescript-eslint/types@npm:6.13.1": + version: 6.13.1 + resolution: "@typescript-eslint/types@npm:6.13.1" + checksum: 350c7f847052f7c24629d41645c02be152c512f3e5c21a79f53c04821b1fff3019416b18d9b72e5ca5c3c5f62f210301f2bb69080b84e67fe83af27751a7af18 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:6.12.0": - version: 6.12.0 - resolution: "@typescript-eslint/typescript-estree@npm:6.12.0" +"@typescript-eslint/typescript-estree@npm:6.13.1": + version: 6.13.1 + resolution: "@typescript-eslint/typescript-estree@npm:6.13.1" dependencies: - "@typescript-eslint/types": "npm:6.12.0" - "@typescript-eslint/visitor-keys": "npm:6.12.0" + "@typescript-eslint/types": "npm:6.13.1" + "@typescript-eslint/visitor-keys": "npm:6.13.1" debug: "npm:^4.3.4" globby: "npm:^11.1.0" is-glob: "npm:^4.0.3" @@ -1692,34 +1692,34 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 16f327faf736becb145894380e059a68a993b14fdf6dab50c5b79ff3c027a1e1a61274742f44f6ecd9ebbfadfc55559f94fad52e1596e1ed2656a3053367de85 + checksum: 1df965c5b202664da1a4a1ffc51bda3d85e581d8c206cd4be63653e2558775104258f6071e1f35a269619ebfb81bd18ee74e3fcb724fed15d3a2577d0ee5a34f languageName: node linkType: hard -"@typescript-eslint/utils@npm:6.12.0": - version: 6.12.0 - resolution: "@typescript-eslint/utils@npm:6.12.0" +"@typescript-eslint/utils@npm:6.13.1": + version: 6.13.1 + resolution: "@typescript-eslint/utils@npm:6.13.1" dependencies: "@eslint-community/eslint-utils": "npm:^4.4.0" "@types/json-schema": "npm:^7.0.12" "@types/semver": "npm:^7.5.0" - "@typescript-eslint/scope-manager": "npm:6.12.0" - "@typescript-eslint/types": "npm:6.12.0" - "@typescript-eslint/typescript-estree": "npm:6.12.0" + "@typescript-eslint/scope-manager": "npm:6.13.1" + "@typescript-eslint/types": "npm:6.13.1" + "@typescript-eslint/typescript-estree": "npm:6.13.1" semver: "npm:^7.5.4" peerDependencies: eslint: ^7.0.0 || ^8.0.0 - checksum: 84091ddc0f0cceb5d0a2e366139d65413867cf648f805355ab4a42ee273cdd691b9083084d1c1feb9cb3c1934c1ed338fbf92146c738a96b84de3d2ec2dfdec5 + checksum: 6fab1122071c7a2da959dcf16cdd723a65bd8ba8e55af9cea11bb1707c4d047e94c3daaed2ab504cdbd2ca0d052f2a33de5290b28de0277ba00210569673ac9b languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:6.12.0": - version: 6.12.0 - resolution: "@typescript-eslint/visitor-keys@npm:6.12.0" +"@typescript-eslint/visitor-keys@npm:6.13.1": + version: 6.13.1 + resolution: "@typescript-eslint/visitor-keys@npm:6.13.1" dependencies: - "@typescript-eslint/types": "npm:6.12.0" + "@typescript-eslint/types": "npm:6.13.1" eslint-visitor-keys: "npm:^3.4.1" - checksum: edf3537c8176059e8fdea680c10f85a635e427fb5caa6f88473077f50edbec7b011b0dc1e4499543519085559268d30a166b1cb160d30a1315ef818fc181a6a4 + checksum: 27ccc4bfe940e50b0977838356b7feda95b68754fa544a988588a159a2619eb04d07c67e55d16bfea1b0dc6184a7fb5daff1366b266c9f5fd19d72831dea6163 languageName: node linkType: hard @@ -1746,12 +1746,12 @@ __metadata: "@types/imagemin": "npm:^8.0.5" "@types/lodash-es": "npm:^4.17.12" "@types/node": "npm:^20.10.0" - "@types/react": "npm:^18.2.38" + "@types/react": "npm:^18.2.39" "@types/react-dom": "npm:^18.2.17" "@types/react-router-dom": "npm:^5.3.3" - "@typescript-eslint/eslint-plugin": "npm:^6.12.0" - "@typescript-eslint/parser": "npm:^6.12.0" - alova: "npm:^2.14.0" + "@typescript-eslint/eslint-plugin": "npm:^6.13.1" + "@typescript-eslint/parser": "npm:^6.13.1" + alova: "npm:^2.15.0" async-validator: "npm:^4.2.5" concurrently: "npm:^8.2.2" eslint: "npm:^8.54.0" @@ -1782,7 +1782,7 @@ __metadata: terser: "npm:^5.24.0" typesafe-i18n: "npm:^5.26.2" typescript: "npm:^5.3.2" - vite: "npm:^5.0.2" + vite: "npm:^5.0.3" vite-plugin-imagemin: "npm:^0.6.1" vite-tsconfig-paths: "npm:^4.2.1" languageName: unknown @@ -1853,10 +1853,10 @@ __metadata: languageName: node linkType: hard -"alova@npm:^2.14.0": - version: 2.14.0 - resolution: "alova@npm:2.14.0" - checksum: 64482346dece670676908b00df93aba10f5da5f65f1b0b79673ac4f494969acfeefb87f5db1dea01de06e6bdca67e122fe8835fc10c1e7dc5202a8d8eeba92d8 +"alova@npm:^2.15.0": + version: 2.15.0 + resolution: "alova@npm:2.15.0" + checksum: 2fb4eac4bd5c01d00823b34ed62d8c3b4ace444d8f693a5134b3b6c9746ee9c544760b8d9cd2b7af34658151a5b472fbd90b52482e389a39c1c145ff377f5640 languageName: node linkType: hard @@ -8566,9 +8566,9 @@ __metadata: languageName: node linkType: hard -"vite@npm:^5.0.2": - version: 5.0.2 - resolution: "vite@npm:5.0.2" +"vite@npm:^5.0.3": + version: 5.0.3 + resolution: "vite@npm:5.0.3" dependencies: esbuild: "npm:^0.19.3" fsevents: "npm:~2.3.3" @@ -8602,7 +8602,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 74f1a6d49a02106796b5fcc04dbe4a92925fba413191718fb37485a29f606b7f80abd371a3ef6b598e8a04f05c09c0b9a5de6bf844dfecb7253798097ddaab35 + checksum: 3f2cc01eaa632df89c1486dccdbea7df1e7b1d7e4f9270b987502096ac97038b0c7d5989ea04e7d095e3eaa5669e78e700470690b0f12076e2a58b97cda24351 languageName: node linkType: hard From 7ce99cb1fb191417a54d2a53d8071a28c73cba87 Mon Sep 17 00:00:00 2001 From: Proddy Date: Tue, 28 Nov 2023 20:52:44 +0100 Subject: [PATCH 75/91] 3.6.5-dev.1 --- src/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/version.h b/src/version.h index fa47481b3..d1d7e9b7b 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.6.5-dev.0" +#define EMSESP_APP_VERSION "3.6.5-dev.1" From cb1989b2ea6086ffaa343e47cd89b0ab03fae11f Mon Sep 17 00:00:00 2001 From: Proddy Date: Tue, 28 Nov 2023 20:52:59 +0100 Subject: [PATCH 76/91] HA don't set entity_category to Diagnostic/Configuration for EMS entities --- CHANGELOG_LATEST.md | 2 ++ src/mqtt.cpp | 9 ++++++--- src/shower.cpp | 4 ++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index c48e0672e..bf8cd2d41 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -9,3 +9,5 @@ ## Fixed ## Changed + +- HA don't set entity_category to Diagnostic/Configuration for EMS entities [#1459](https://github.com/emsesp/EMS-ESP32/discussions/1459) diff --git a/src/mqtt.cpp b/src/mqtt.cpp index 168a0f31f..9ca917724 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -922,7 +922,7 @@ bool Mqtt::publish_ha_sensor_config(uint8_t type, // EMSdev // we add the command topic parameter for commands if (has_cmd) { // add category - doc["ent_cat"] = "config"; // for writeable entities, like switch, number, text, select + // doc["ent_cat"] = "config"; // for writeable entities, like switch, number, text, select char command_topic[MQTT_TOPIC_MAX_SIZE]; // add command topic @@ -1050,8 +1050,11 @@ bool Mqtt::publish_ha_sensor_config(uint8_t type, // EMSdev // Add the state class, device class and sometimes the icon. Used only for read-only sensors Sensor and Binary Sensor if (readonly_sensors) { - // first set the catagory - doc["ent_cat"] = "diagnostic"; + // first set the catagory for System entities + // https://github.com/emsesp/EMS-ESP32/discussions/1459#discussioncomment-7694873 + if (device_type == EMSdevice::DeviceType::SYSTEM) { + doc["ent_cat"] = "diagnostic"; + } const char * dc_ha = "dev_cla"; // device class const char * sc_ha = "stat_cla"; // state class diff --git a/src/shower.cpp b/src/shower.cpp index cea52509e..f83813cb1 100644 --- a/src/shower.cpp +++ b/src/shower.cpp @@ -238,7 +238,7 @@ void Shower::set_shower_state(bool state, bool force) { doc["unit_of_meas"] = "s"; doc["stat_cla"] = "measurement"; doc["dev_cla"] = "duration"; - doc["ent_cat"] = "diagnostic"; + // doc["ent_cat"] = "diagnostic"; JsonObject dev2 = doc.createNestedObject("dev"); dev2["name"] = "EMS-ESP"; @@ -265,7 +265,7 @@ void Shower::set_shower_state(bool state, bool force) { doc["name"] = "Shower Timestamp"; doc["val_tpl"] = "{{value_json.timestamp if value_json.timestamp is defined else 0}}"; - doc["ent_cat"] = "diagnostic"; + // doc["ent_cat"] = "diagnostic"; JsonObject dev3 = doc.createNestedObject("dev"); dev3["name"] = "EMS-ESP"; From 0d4607a9223d06bd1ab93739bf0f166845c7a046 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 29 Nov 2023 11:55:27 +0100 Subject: [PATCH 77/91] send "step" as string --- interface/src/project/types.ts | 2 +- src/emsdevice.cpp | 9 ++------- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/interface/src/project/types.ts b/interface/src/project/types.ts index 97dceded3..10ea8cd7c 100644 --- a/interface/src/project/types.ts +++ b/interface/src/project/types.ts @@ -130,7 +130,7 @@ export interface DeviceValue { c?: string; // command, optional l?: string[]; // list, optional h?: string; // help text, optional - s?: number; // steps for up/down, optional + s?: string; // steps for up/down, optional m?: number; // min, optional x?: number; // max, optional } diff --git a/src/emsdevice.cpp b/src/emsdevice.cpp index 30464f989..468a406e5 100644 --- a/src/emsdevice.cpp +++ b/src/emsdevice.cpp @@ -983,19 +983,14 @@ void EMSdevice::generate_values_web(JsonObject & output) { } // handle INTs else { - // add step if it's not 1 - if (dv.numeric_operator > 0) { - obj["s"] = (float)1 / dv.numeric_operator; - } else if (dv.numeric_operator < 0) { - obj["s"] = (float)(-1) * dv.numeric_operator; - } - // add min and max values, if available int16_t dv_set_min; uint32_t dv_set_max; if (dv.get_min_max(dv_set_min, dv_set_max)) { obj["m"] = dv_set_min; obj["x"] = dv_set_max; + char s[10]; + obj["s"] = Helpers::render_value(s, (uint32_t)1, dv.numeric_operator); } } } From 03b6ebd86189818c0f2d01980856644bbff82d79 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 29 Nov 2023 12:05:46 +0100 Subject: [PATCH 78/91] fix exhaust temperature #1467 --- src/devices/boiler.h | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/devices/boiler.h b/src/devices/boiler.h index fa686b493..c4bca7a04 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -101,21 +101,22 @@ class Boiler : public EMSdevice { uint8_t wwTapActivated_; // maintenance-mode to switch DHW off // main - uint8_t reset_; // for reset command - uint8_t heatingActive_; // Central heating is on/off - uint8_t tapwaterActive_; // Hot tap water is on/off - uint8_t selFlowTemp_; // Selected flow temperature - uint8_t selBurnPow_; // Burner max power % (can be > 100%) - uint8_t absBurnPow_; // absolute burner power in % of rating plate - uint8_t heatingPumpMod_; // Pump modulation % - int16_t outdoorTemp_; // Outside temperature - uint16_t curFlowTemp_; // Current flow temperature - uint16_t retTemp_; // Return temperature - uint16_t switchTemp_; // Switch temperature - uint8_t sysPress_; // System pressure - uint16_t boilTemp_; // Boiler temperature - uint16_t exhaustTemp_; // Exhaust temperature published - uint16_t exhaustTemp1_; // read from E4 + uint8_t reset_; // for reset command + uint8_t heatingActive_; // Central heating is on/off + uint8_t tapwaterActive_; // Hot tap water is on/off + uint8_t selFlowTemp_; // Selected flow temperature + uint8_t selBurnPow_; // Burner max power % (can be > 100%) + uint8_t absBurnPow_; // absolute burner power in % of rating plate + uint8_t heatingPumpMod_; // Pump modulation % + int16_t outdoorTemp_; // Outside temperature + uint16_t curFlowTemp_; // Current flow temperature + uint16_t retTemp_; // Return temperature + uint16_t switchTemp_; // Switch temperature + uint8_t sysPress_; // System pressure + uint16_t boilTemp_; // Boiler temperature + uint16_t exhaustTemp_; // Exhaust temperature published + // read second value from E4 and initialize it + uint16_t exhaustTemp1_ = EMS_VALUE_USHORT_NOTSET; uint8_t burnGas_; // Gas on/off uint8_t burnGas2_; // Gas stage 2 on/off uint16_t flameCurr_; // Flame current in micro amps From f83f22a6fbccd68b2a51ad500e54efb2ef2eafba Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 29 Nov 2023 12:06:56 +0100 Subject: [PATCH 79/91] send step as string to avoid js-rounding issue for 0.1 --- interface/src/project/types.ts | 2 +- src/emsdevice.cpp | 10 +++------- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/interface/src/project/types.ts b/interface/src/project/types.ts index 05cf46073..9fe1bde37 100644 --- a/interface/src/project/types.ts +++ b/interface/src/project/types.ts @@ -130,7 +130,7 @@ export interface DeviceValue { c?: string; // command, optional l?: string[]; // list, optional h?: string; // help text, optional - s?: number; // steps for up/down, optional + s?: string; // steps for up/down, optional m?: number; // min, optional x?: number; // max, optional } diff --git a/src/emsdevice.cpp b/src/emsdevice.cpp index 08ccb9b3f..c9c6bc6a5 100644 --- a/src/emsdevice.cpp +++ b/src/emsdevice.cpp @@ -969,19 +969,15 @@ void EMSdevice::generate_values_web(JsonObject & output) { } // handle INTs else { - // add step if it's not 1 - if (dv.numeric_operator > 0) { - obj["s"] = (float)1 / dv.numeric_operator; - } else if (dv.numeric_operator < 0) { - obj["s"] = (float)(-1) * dv.numeric_operator; - } - // add min and max values, if available int16_t dv_set_min; uint32_t dv_set_max; if (dv.get_min_max(dv_set_min, dv_set_max)) { obj["m"] = dv_set_min; obj["x"] = dv_set_max; + // add steps to numeric values as rendered string to avoid rounding floats in js + char s[10]; + obj["s"] = Helpers::render_value(s, (uint32_t)1, dv.numeric_operator); } } } From 8d778f902fd769c5f8d9658625557dd182c19a5a Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 29 Nov 2023 12:31:05 +0100 Subject: [PATCH 80/91] add heatpump energy meters --- src/devices/heatpump.cpp | 47 ++++++++++++++++++++++++++++++++++++++++ src/devices/heatpump.h | 11 ++++++++++ 2 files changed, 58 insertions(+) diff --git a/src/devices/heatpump.cpp b/src/devices/heatpump.cpp index edb25e6bb..8a1c214b6 100644 --- a/src/devices/heatpump.cpp +++ b/src/devices/heatpump.cpp @@ -33,6 +33,8 @@ Heatpump::Heatpump(uint8_t device_type, uint8_t device_id, uint8_t product_id, c register_telegram_type(0x9A0, "HPTemperature", false, MAKE_PF_CB(process_HPTemperature)); register_telegram_type(0x99B, "HPFlowTemp", false, MAKE_PF_CB(process_HPFlowTemp)); register_telegram_type(0x99C, "HPComp", false, MAKE_PF_CB(process_HPComp)); + register_telegram_type(0x4AE, "HPEnergy", true, MAKE_PF_CB(process_HpEnergy)); + register_telegram_type(0x4AF, "HPMeters", true, MAKE_PF_CB(process_HpMeters)); // device values register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &airHumidity_, DeviceValueType::UINT, FL_(airHumidity), DeviceValueUOM::PERCENT); @@ -146,6 +148,33 @@ Heatpump::Heatpump(uint8_t device_type, uint8_t device_id, uint8_t product_id, c DeviceValueUOM::NONE, MAKE_CF_CB(set_heatDrainPan)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &heatCable_, DeviceValueType::BOOL, FL_(heatCable), DeviceValueUOM::NONE, MAKE_CF_CB(set_heatCable)); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &nrgTotal_, DeviceValueType::ULONG, DeviceValueNumOp::DV_NUMOP_DIV100, FL_(nrgTotal), DeviceValueUOM::KWH); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &nrgWw_, DeviceValueType::ULONG, DeviceValueNumOp::DV_NUMOP_DIV100, FL_(nrgWw), DeviceValueUOM::KWH); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &nrgHeat_, DeviceValueType::ULONG, DeviceValueNumOp::DV_NUMOP_DIV100, FL_(nrgHeat), DeviceValueUOM::KWH); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &meterTotal_, + DeviceValueType::ULONG, + DeviceValueNumOp::DV_NUMOP_DIV100, + FL_(meterTotal), + DeviceValueUOM::KWH); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &meterComp_, + DeviceValueType::ULONG, + DeviceValueNumOp::DV_NUMOP_DIV100, + FL_(meterComp), + DeviceValueUOM::KWH); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &meterEHeat_, + DeviceValueType::ULONG, + DeviceValueNumOp::DV_NUMOP_DIV100, + FL_(meterEHeat), + DeviceValueUOM::KWH); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &meterHeat_, + DeviceValueType::ULONG, + DeviceValueNumOp::DV_NUMOP_DIV100, + FL_(meterHeat), + DeviceValueUOM::KWH); } /* @@ -226,6 +255,24 @@ void Heatpump::process_HPFunctionTest(std::shared_ptr telegram) has_update(telegram, heatCable_, 10); } +// boiler(0x08) -W-> Me(0x0B), ?(0x04AE), data: 00 00 BD C4 00 00 5B 6A 00 00 00 24 00 00 62 59 00 00 00 00 00 00 00 00 +// boiler(0x08) -W-> Me(0x0B), ?(0x04AE), data: 00 00 00 00 00 00 00 00 (offset 24) +void Heatpump::process_HpEnergy(std::shared_ptr telegram) { + has_update(telegram, nrgTotal_, 0); + has_update(telegram, nrgHeat_, 4); + has_update(telegram, nrgWw_, 12); +} + +// boiler(0x08) -W-> Me(0x0B), ?(0x04AF), data: 00 00 48 B2 00 00 48 55 00 00 00 5D 00 00 01 78 00 00 00 00 00 00 07 61 +// boiler(0x08) -W-> Me(0x0B), ?(0x04AF), data: 00 00 24 B0 00 00 00 12 00 00 23 A5 00 00 00 4B 00 00 00 00 00 00 00 00 (offset 24) +// boiler(0x08) -W-> Me(0x0B), ?(0x04AF), data: 00 00 00 00 00 00 00 00 (offset 48) +void Heatpump::process_HpMeters(std::shared_ptr telegram) { + has_update(telegram, meterTotal_, 0); + has_update(telegram, meterComp_, 4); + has_update(telegram, meterEHeat_, 8); + has_update(telegram, meterHeat_, 24); +} + /* * Broadcast (0x099A), data: 05 00 00 00 00 00 00 37 00 00 1D 00 00 52 00 00 13 01 00 01 7C * Broadcast (0x099B), data: 80 00 80 00 01 3C 01 38 80 00 80 00 80 00 01 37 00 00 00 00 64 diff --git a/src/devices/heatpump.h b/src/devices/heatpump.h index e13aad81f..cb0fbcab1 100644 --- a/src/devices/heatpump.h +++ b/src/devices/heatpump.h @@ -67,6 +67,15 @@ class Heatpump : public EMSdevice { int16_t hpJr0_; // low pressure sensor int16_t hpJr1_; // high pressure sensor + uint32_t nrgTotal_; + uint32_t nrgWw_; + uint32_t nrgHeat_; + uint32_t meterTotal_; + uint32_t meterComp_; + uint32_t meterEHeat_; + uint32_t meterHeat_; + + void process_HPMonitor1(std::shared_ptr telegram); void process_HPMonitor2(std::shared_ptr telegram); void process_HPSettings(std::shared_ptr telegram); @@ -74,6 +83,8 @@ class Heatpump : public EMSdevice { void process_HPTemperature(std::shared_ptr telegram); void process_HPFlowTemp(std::shared_ptr telegram); void process_HPComp(std::shared_ptr telegram); + void process_HpEnergy(std::shared_ptr telegram); + void process_HpMeters(std::shared_ptr telegram); bool set_controlStrategy(const char * value, const int8_t id); bool set_lowNoiseMode(const char * value, const int8_t id); From 7f794f35a6fa68ab68a09075986f5517b9c12aae Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 29 Nov 2023 12:32:04 +0100 Subject: [PATCH 81/91] add thermostat heatdelays, instantstart and boost --- src/devices/thermostat.cpp | 78 ++++++++++++++++++++++++++++++++++++++ src/devices/thermostat.h | 11 ++++++ 2 files changed, 89 insertions(+) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 156294e53..c0f6176bb 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -1052,6 +1052,8 @@ void Thermostat::process_RC300Set(std::shared_ptr telegram) { has_update(telegram, hc->reducetemp, 9); has_update(telegram, hc->noreducetemp, 12); has_update(telegram, hc->remoteseltemp, 17); // see https://github.com/emsesp/EMS-ESP32/issues/590 + has_update(telegram, hc->boost, 23); + has_update(telegram, hc->boosttime, 24); has_update(telegram, hc->cooling, 28); } @@ -1096,6 +1098,9 @@ void Thermostat::process_RC300Summer2(std::shared_ptr telegram) has_update(hc->summersetmode, EMS_VALUE_UINT_NOTSET); } has_update(telegram, hc->summertemp, 1); + has_update(telegram, hc->heatondelay, 2); + has_update(telegram, hc->heatoffdelay, 3); + has_update(telegram, hc->instantstart, 4); } // types 0x29B ff @@ -2670,7 +2675,75 @@ bool Thermostat::set_switchonoptimization(const char * value, const int8_t id) { write_command(curve_typeids[hc->hc()], 4, b ? 0xFF : 0x00, curve_typeids[hc->hc()]); return true; } +bool Thermostat::set_boost(const char * value, const int8_t id) { + uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id; + std::shared_ptr hc = heating_circuit(hc_num); + if (hc == nullptr) { + return false; + } + bool b; + if (!Helpers::value2bool(value, b)) { + return false; + } + write_command(set_typeids[hc->hc()], 23, b ? 0xFF : 0x00, set_typeids[hc->hc()]); + return true; +} +bool Thermostat::set_boosttime(const char * value, const int8_t id) { + uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id; + std::shared_ptr hc = heating_circuit(hc_num); + if (hc == nullptr) { + return false; + } + int v; + if (!Helpers::value2number(value, v)) { + return false; + } + write_command(set_typeids[hc->hc()], 24, (uint8_t)v, set_typeids[hc->hc()]); + return true; +} + +bool Thermostat::set_heatondelay(const char * value, const int8_t id) { + uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id; + std::shared_ptr hc = heating_circuit(hc_num); + if (hc == nullptr) { + return false; + } + int v; + if (!Helpers::value2number(value, v)) { + return false; + } + write_command(summer2_typeids[hc->hc()], 2, (uint8_t)v, summer2_typeids[hc->hc()]); + return true; +} + +bool Thermostat::set_heatoffdelay(const char * value, const int8_t id) { + uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id; + std::shared_ptr hc = heating_circuit(hc_num); + if (hc == nullptr) { + return false; + } + int v; + if (!Helpers::value2number(value, v)) { + return false; + } + write_command(summer2_typeids[hc->hc()], 3, (uint8_t)v, summer2_typeids[hc->hc()]); + return true; +} + +bool Thermostat::set_instantstart(const char * value, const int8_t id) { + uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id; + std::shared_ptr hc = heating_circuit(hc_num); + if (hc == nullptr) { + return false; + } + int v; + if (!Helpers::value2number(value, v)) { + return false; + } + write_command(summer2_typeids[hc->hc()], 4, (uint8_t)v, summer2_typeids[hc->hc()]); + return true; +} // sets the thermostat reducemode for RC35 and RC310 bool Thermostat::set_reducemode(const char * value, const int8_t id) { @@ -4272,6 +4345,11 @@ void Thermostat::register_device_values_hc(std::shared_ptrremotehum, DeviceValueType::UINT, FL_(remotehum), DeviceValueUOM::PERCENT, MAKE_CF_CB(set_remotehum), -1, 101); + register_device_value(tag, &hc->heatondelay, DeviceValueType::UINT, FL_(heatondelay), DeviceValueUOM::HOURS, MAKE_CF_CB(set_heatondelay), 1, 48); + register_device_value(tag, &hc->heatoffdelay, DeviceValueType::UINT, FL_(heatoffdelay), DeviceValueUOM::HOURS, MAKE_CF_CB(set_heatoffdelay), 1, 48); + register_device_value(tag, &hc->instantstart, DeviceValueType::UINT, FL_(instantstart), DeviceValueUOM::K, MAKE_CF_CB(set_instantstart), 1, 10); + register_device_value(tag, &hc->boost, DeviceValueType::BOOL, FL_(boost), DeviceValueUOM::NONE, MAKE_CF_CB(set_boost)); + register_device_value(tag, &hc->boosttime, DeviceValueType::UINT, FL_(boosttime), DeviceValueUOM::HOURS, MAKE_CF_CB(set_boosttime)); break; case EMS_DEVICE_FLAG_CRF: diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index 3ad8bec68..32072fa85 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -98,6 +98,12 @@ class Thermostat : public EMSdevice { uint8_t hpmode; uint8_t cooling; uint8_t coolingon; + // RC300 + uint8_t heatoffdelay; // 1-48h + uint8_t heatondelay; // 1-48h + uint8_t instantstart; // 1-10K + uint8_t boost; + uint8_t boosttime; // hours uint8_t hc_num() const { return hc_num_; @@ -439,6 +445,11 @@ class Thermostat : public EMSdevice { bool set_wwprio(const char * value, const int8_t id); bool set_fastheatup(const char * value, const int8_t id); bool set_switchonoptimization(const char * value, const int8_t id); + bool set_heatondelay(const char * value, const int8_t id); + bool set_heatoffdelay(const char * value, const int8_t id); + bool set_instantstart(const char * value, const int8_t id); + bool set_boost(const char * value, const int8_t id); + bool set_boosttime(const char * value, const int8_t id); inline bool set_temp(const char * value, const int8_t id) { return set_temperature_value(value, id, HeatingCircuit::Mode::AUTO); From 4275d144caa85b941c407925d90104b9aa53c6c2 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 29 Nov 2023 12:32:42 +0100 Subject: [PATCH 82/91] add boiler pumpmode and HP heat meter --- src/devices/boiler.cpp | 39 ++++++++++++++++++++++++++++++++++----- src/devices/boiler.h | 3 +++ 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 7ab38df00..a0ec1bd2d 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -399,6 +399,12 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const DeviceValueNumOp::DV_NUMOP_DIV100, FL_(meterEHeat), DeviceValueUOM::KWH); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &meterHeat_, + DeviceValueType::ULONG, + DeviceValueNumOp::DV_NUMOP_DIV100, + FL_(meterHeat), + DeviceValueUOM::KWH); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &upTimeTotal_, DeviceValueType::TIME, @@ -720,6 +726,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const DeviceValueUOM::NONE, MAKE_CF_CB(set_elHeatStep3)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpEA0_, DeviceValueType::BOOL, FL_(hpEA0), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpPumpMode_, DeviceValueType::ENUM, FL_(enum_hpPumpMode), FL_(hpPumpMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_hpPumpMode)); // heatpump DHW settings register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwAlternatingOper_, @@ -1065,7 +1072,7 @@ void Boiler::check_active() { } // calculate energy for boiler 0x08 from stored modulation an time in units of 0.01 Wh - if (model() != EMS_DEVICE_FLAG_HEATPUMP) { + if (model() != EMSdevice::EMS_DEVICE_FLAG_HEATPUMP && model() != EMSdevice::EMS_DEVICE_FLAG_HIU) { // remember values from last call static uint32_t powLastReadTime_ = uuid::get_uptime(); static uint8_t heatBurnPow = 0; @@ -1308,10 +1315,10 @@ void Boiler::process_UBAMonitorFastPlus(std::shared_ptr telegram // at this point do a quick check to see if the hot water or heating is active uint8_t state = EMS_VALUE_UINT_NOTSET; - if (telegram->read_value(state, 11)) { - boilerState_ = state & 0x01 ? 0x08 : 0; - boilerState_ |= state & 0x02 ? 0x01 : 0; - boilerState_ |= state & 0x04 ? 0x02 : 0; + if (telegram->read_value(state, 11) && model() != EMSdevice::EMS_DEVICE_FLAG_HIU) { + boilerState_ = state & 0x01 ? 0x08 : 0; // burnGas + boilerState_ |= state & 0x02 ? 0x01 : 0; // heatingPump + boilerState_ |= state & 0x04 ? 0x02 : 0; // 3-way-valve } if (telegram->offset <= 10 && telegram->offset + telegram->message_length > 11) { @@ -1347,6 +1354,17 @@ void Boiler::process_UBAMonitorSlow(std::shared_ptr telegram) { */ void Boiler::process_UBAMonitorSlowPlus2(std::shared_ptr telegram) { has_update(telegram, absBurnPow_, 13); // current burner absolute power (percent of rating plate power) + if (model() == EMSdevice::EMS_DEVICE_FLAG_HIU) { + uint8_t state = EMS_VALUE_UINT_NOTSET; + boilerState_ = 0; + if (telegram->read_value(state, 2)) { + boilerState_ |= state == 1 ? 0x09 : 0; // heating 0/1 + } + state = EMS_VALUE_UINT_NOTSET; + if (telegram->read_value(state, 5)) { + boilerState_ |= state == 1 ? 0x0A : 0; // dhw 0/1 + } + } } /* @@ -1815,6 +1833,7 @@ void Boiler::process_HpValve(std::shared_ptr telegram) { void Boiler::process_HpPumps(std::shared_ptr telegram) { has_update(telegram, tempDiffHeat_, 4); // is * 10 has_update(telegram, tempDiffCool_, 3); // is * 10 + has_update(telegram, hpPumpMode_, 18); } // Boiler(0x08) -> All(0x00), ?(0x0491), data: 03 01 00 00 00 02 64 00 00 14 01 2C 00 0A 00 1E 00 1E 00 00 1E 0A 1E 05 05 @@ -1871,6 +1890,7 @@ void Boiler::process_HpMeters(std::shared_ptr telegram) { has_update(telegram, meterTotal_, 0); has_update(telegram, meterComp_, 4); has_update(telegram, meterEHeat_, 8); + has_update(telegram, meterHeat_, 24); } // HIU unit @@ -2854,6 +2874,15 @@ bool Boiler::set_hpCircPumpWw(const char * value, const int8_t id) { return false; } +bool Boiler::set_hpPumpMode(const char * value, const int8_t id) { + uint8_t v; + if (Helpers::value2enum(value, v, FL_(enum_hpPumpMode))) { + write_command(0x48B, 18, v, 0x48B); + return true; + } + return false; +} + bool Boiler::set_vp_cooling(const char * value, const int8_t id) { bool v; if (Helpers::value2bool(value, v)) { diff --git a/src/devices/boiler.h b/src/devices/boiler.h index c4bca7a04..af870c59b 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -219,7 +219,9 @@ class Boiler : public EMSdevice { uint32_t meterTotal_; uint32_t meterComp_; uint32_t meterEHeat_; + uint32_t meterHeat_; uint8_t hpEA0_; + uint8_t hpPumpMode_; // Pool unit int8_t poolSetTemp_; @@ -431,6 +433,7 @@ class Boiler : public EMSdevice { bool set_manDefrost(const char * value, const int8_t id); bool set_pvCooling(const char * value, const int8_t id); bool set_hpCircPumpWw(const char * value, const int8_t id); + bool set_hpPumpMode(const char * value, const int8_t id); bool set_auxLimit(const char * value, const int8_t id); inline bool set_auxMaxLimit(const char * value, const int8_t id) { From b5633cd5797eae7046e527801e991c296ae5502f Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 29 Nov 2023 13:02:43 +0100 Subject: [PATCH 83/91] add texts --- src/locale_common.h | 1 + src/locale_translations.h | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/src/locale_common.h b/src/locale_common.h index 82e3833e8..1c69a1870 100644 --- a/src/locale_common.h +++ b/src/locale_common.h @@ -283,6 +283,7 @@ MAKE_ENUM(enum_flow, FL_(off), FL_(flow), FL_(bufferedflow), FL_(buffer), FL_(la MAKE_ENUM(enum_reset, FL_(dash), FL_(maintenance), FL_(error)) MAKE_ENUM(enum_maxHeat, FL_(0kW), FL_(2kW), FL_(3kW), FL_(4kW), FL_(6kW), FL_(9kW)) MAKE_ENUM(enum_pumpMode, FL_(proportional), FL_(deltaP1), FL_(deltaP2), FL_(deltaP3), FL_(deltaP4)) +MAKE_ENUM(enum_hpPumpMode, FL_(auto), FL_(continuous)) // thermostat lists MAKE_ENUM(enum_ibaMainDisplay, FL_(internal_temperature), FL_(internal_setpoint), FL_(external_temperature), FL_(burner_temperature), FL_(ww_temperature), FL_(functioning_mode), FL_(time), FL_(date), FL_(smoke_temperature)) diff --git a/src/locale_translations.h b/src/locale_translations.h index e82f1f585..ba2a50fbd 100644 --- a/src/locale_translations.h +++ b/src/locale_translations.h @@ -453,6 +453,12 @@ MAKE_TRANSLATION(wwAlternatingOper, "wwalternatingop", "alternating operation", MAKE_TRANSLATION(wwAltOpPrioHeat, "wwaltopprioheat", "prioritise heating during dhw", "Heizen bevorzugt vor WW", "Proriteit verwarming boven ww", "", "czas na ogrzewanie w trakcie c.w.u", "prioritert oppvarmning", "", "sıcak kullanım suyu esnasında ısıtmayı öne al", "dare la priorità al riscaldamento durante l'ACS") // TODO translate MAKE_TRANSLATION(wwAltOpPrioWw, "wwaltopprioww", "prioritise dhw during heating", "WW bevorzugt vor Heizen", "Prioriteit ww boven verwarming", "", "czas na c.w.u w trakcie ogrzewania", "prioritert varmtvann", "", "ısıtma esnasında sıcak kullanım suyunu öne al", "dare priorità all'acqua calda durante il riscaldamento") // TODO translate MAKE_TRANSLATION(hpEA0, "hpea0", "condensate reservoir heating (EA0)", "Heizung Kondensatwanne (EA0)", "", "", "", "", "", "", "") // TODO translate +MAKE_TRANSLATION(boost, "boost", "boost mode", "Boost", "", "", "", "", "", "", "") // TODO translate +MAKE_TRANSLATION(boosttime, "boosttime", "boost time", "Boost Dauer", "", "", "", "", "", "", "") // TODO translate +MAKE_TRANSLATION(hpPumpMode, "hppumpmode", "primary heatpump mode", "Modus Hauptpumpe", "", "", "", "", "", "", "") // TODO translate +MAKE_TRANSLATION(instantstart, "instantstart", "instant start", "Sofortstart", "", "", "", "", "", "", "") // TODO translate +MAKE_TRANSLATION(heatondelay, "heatondelay", "heat-on delay", "Einschaltverzögerung Heizen", "", "", "", "", "", "", "") // TODO translate +MAKE_TRANSLATION(heatoffdelay, "heatoffdelay", "heat-off delay", "Ausschaltverzögerung Heizen", "", "", "", "", "", "", "") // TODO translate // hybrid heatpump MAKE_TRANSLATION(hybridStrategy, "hybridstrategy", "hybrid control strategy", "Hybrid Strategie", "Hybride strategie", "Hybrid kontrollstrategi", "strategia sterowania hybrydowego", "hybrid kontrollstrategi", "stratégie contrôle hybride", "hibrit kontrol stratejisi", "strategia comtrollo ibrido") @@ -520,6 +526,7 @@ MAKE_TRANSLATION(nomPower, "nompower", "nominal Power", "Brennerleistung", "", " MAKE_TRANSLATION(meterTotal, "metertotal", "meter total", "Messung gesamt", "", "", "licznik całkowity", "", "", "", "") // TODO translate MAKE_TRANSLATION(meterComp, "metercomp", "meter compressor", "Messung Kompressor", "", "", "licznik sprężarki", "", "", "", "") // TODO translate MAKE_TRANSLATION(meterEHeat, "metereheat", "meter e-heater", "Messung E-Heizer", "", "", "licznik e-heater", "", "", "", "") // TODO translate +MAKE_TRANSLATION(meterHeat, "meterheat", "meter heating", "Messung Heizen", "", "", "licznik grzania", "", "", "", "") // TODO translate // HIU MAKE_TRANSLATION(netFlowTemp, "netflowtemp", "heat network flow temp", "System Vorlauftemperatur", "Netto aanvoertemperatuur", "", "temp. zasilania sieci cieplnej", "", "", "ısıtma şebekesi akış derecesi", "temperatura di mandata della rete di riscaldamento") // TODO translate From 2faa78bc3269da36c13258e3f5cff3d4cbde705b Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 29 Nov 2023 13:12:22 +0100 Subject: [PATCH 84/91] version 3.6.5-dev.2, changelog --- CHANGELOG_LATEST.md | 5 +++++ src/version.h | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index bf8cd2d41..c3788cd5c 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -6,8 +6,13 @@ ## Added +- thermostat boost mode and boost time +- heatpump energy meters + ## Fixed +- exhaust temperature for some boilers + ## Changed - HA don't set entity_category to Diagnostic/Configuration for EMS entities [#1459](https://github.com/emsesp/EMS-ESP32/discussions/1459) diff --git a/src/version.h b/src/version.h index d1d7e9b7b..c145362b2 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.6.5-dev.1" +#define EMSESP_APP_VERSION "3.6.5-dev.2" From c38832ef0661ae4927e1a490363906ebe0081f9f Mon Sep 17 00:00:00 2001 From: Proddy Date: Sat, 2 Dec 2023 11:04:45 +0100 Subject: [PATCH 85/91] fix warning --- interface/src/components/routing/RouterTabs.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/components/routing/RouterTabs.tsx b/interface/src/components/routing/RouterTabs.tsx index 485a0d995..2167b099c 100644 --- a/interface/src/components/routing/RouterTabs.tsx +++ b/interface/src/components/routing/RouterTabs.tsx @@ -14,7 +14,7 @@ const RouterTabs: FC = ({ value, children }) => { const theme = useTheme(); const smallDown = useMediaQuery(theme.breakpoints.down('sm')); - const handleTabChange = (event: React.ChangeEvent, path: string) => { + const handleTabChange = (_event: any, path: string) => { navigate(path); }; From 06bf2f34277481e8df39bdc384b9418b36dd40b3 Mon Sep 17 00:00:00 2001 From: Proddy Date: Sat, 2 Dec 2023 11:05:17 +0100 Subject: [PATCH 86/91] rollback dom router changes - https://github.com/emsesp/EMS-ESP32/pull/1465 --- interface/package.json | 18 +- .../src/components/routing/useRouterTab.ts | 10 +- interface/src/framework/ap/AccessPoint.tsx | 10 +- interface/src/framework/mqtt/Mqtt.tsx | 6 +- .../framework/network/NetworkConnection.tsx | 12 +- interface/src/framework/ntp/NetworkTime.tsx | 6 +- interface/src/framework/security/Security.tsx | 6 +- interface/src/framework/system/System.tsx | 10 +- interface/src/project/Dashboard.tsx | 8 +- interface/src/project/Settings.tsx | 10 +- interface/yarn.lock | 350 ++++++++++-------- src/version.h | 2 +- 12 files changed, 246 insertions(+), 202 deletions(-) diff --git a/interface/package.json b/interface/package.json index 6d63dd8a4..7469a2c6a 100644 --- a/interface/package.json +++ b/interface/package.json @@ -21,16 +21,16 @@ }, "dependencies": { "@alova/adapter-xhr": "^1.0.1", - "@babel/core": "^7.23.3", + "@babel/core": "^7.23.5", "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", - "@mui/icons-material": "^5.14.18", - "@mui/material": "^5.14.18", + "@mui/icons-material": "^5.14.19", + "@mui/material": "^5.14.19", "@table-library/react-table-library": "4.1.7", "@types/imagemin": "^8.0.5", "@types/lodash-es": "^4.17.12", - "@types/node": "^20.10.0", - "@types/react": "^18.2.39", + "@types/node": "^20.10.2", + "@types/react": "^18.2.40", "@types/react-dom": "^18.2.17", "@types/react-router-dom": "^5.3.3", "alova": "^2.15.0", @@ -43,7 +43,7 @@ "react-dom": "latest", "react-dropzone": "^14.2.3", "react-icons": "^4.12.0", - "react-router-dom": "^6.20.0", + "react-router-dom": "^6.20.1", "react-toastify": "^9.1.3", "sockette": "^2.0.6", "typesafe-i18n": "^5.26.2", @@ -55,10 +55,10 @@ "@typescript-eslint/eslint-plugin": "^6.13.1", "@typescript-eslint/parser": "^6.13.1", "concurrently": "^8.2.2", - "eslint": "^8.54.0", + "eslint": "^8.55.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb-typescript": "^17.1.0", - "eslint-config-prettier": "^9.0.0", + "eslint-config-prettier": "^9.1.0", "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-autofix": "^1.1.0", "eslint-plugin-import": "^2.29.0", @@ -70,7 +70,7 @@ "prettier": "^3.1.0", "rollup-plugin-visualizer": "^5.9.3", "terser": "^5.24.0", - "vite": "^5.0.3", + "vite": "^5.0.4", "vite-plugin-imagemin": "^0.6.1", "vite-tsconfig-paths": "^4.2.1" }, diff --git a/interface/src/components/routing/useRouterTab.ts b/interface/src/components/routing/useRouterTab.ts index 52cfe55cb..4858f8ceb 100644 --- a/interface/src/components/routing/useRouterTab.ts +++ b/interface/src/components/routing/useRouterTab.ts @@ -1,8 +1,12 @@ -import { useLocation } from 'react-router-dom'; +import { useMatch, useResolvedPath } from 'react-router-dom'; export const useRouterTab = () => { - const loc = useLocation().pathname; - const routerTab = loc.substring(0, loc.lastIndexOf('/')) ? loc : false; + // const loc = useLocation().pathname; + // const routerTab = loc.substring(0, loc.lastIndexOf('/')) ? loc : false; + + const routerTabPath = useResolvedPath(':tab'); + const routerTabPathMatch = useMatch(routerTabPath.pathname); + const routerTab = routerTabPathMatch?.params?.tab || false; return { routerTab } as const; }; diff --git a/interface/src/framework/ap/AccessPoint.tsx b/interface/src/framework/ap/AccessPoint.tsx index 5d74cd7f6..87fecefb3 100644 --- a/interface/src/framework/ap/AccessPoint.tsx +++ b/interface/src/framework/ap/AccessPoint.tsx @@ -22,12 +22,8 @@ const AccessPoint: FC = () => { return ( <> - - + + } /> @@ -40,7 +36,7 @@ const AccessPoint: FC = () => { } /> - } /> + } /> ); diff --git a/interface/src/framework/mqtt/Mqtt.tsx b/interface/src/framework/mqtt/Mqtt.tsx index f65ea4181..7520b0eec 100644 --- a/interface/src/framework/mqtt/Mqtt.tsx +++ b/interface/src/framework/mqtt/Mqtt.tsx @@ -21,8 +21,8 @@ const Mqtt: FC = () => { return ( <> - - + + } /> @@ -34,7 +34,7 @@ const Mqtt: FC = () => { } /> - } /> + } /> ); diff --git a/interface/src/framework/network/NetworkConnection.tsx b/interface/src/framework/network/NetworkConnection.tsx index cd9113398..18d1842ef 100644 --- a/interface/src/framework/network/NetworkConnection.tsx +++ b/interface/src/framework/network/NetworkConnection.tsx @@ -44,13 +44,9 @@ const NetworkConnection: FC = () => { }} > - - - + + + } /> @@ -70,7 +66,7 @@ const NetworkConnection: FC = () => { } /> - } /> + } /> ); diff --git a/interface/src/framework/ntp/NetworkTime.tsx b/interface/src/framework/ntp/NetworkTime.tsx index 21a110001..d41d1fb8c 100644 --- a/interface/src/framework/ntp/NetworkTime.tsx +++ b/interface/src/framework/ntp/NetworkTime.tsx @@ -20,8 +20,8 @@ const NetworkTime: FC = () => { return ( <> - - + + } /> @@ -33,7 +33,7 @@ const NetworkTime: FC = () => { } /> - } /> + } /> ); diff --git a/interface/src/framework/security/Security.tsx b/interface/src/framework/security/Security.tsx index b6be5ddfd..d55a171e1 100644 --- a/interface/src/framework/security/Security.tsx +++ b/interface/src/framework/security/Security.tsx @@ -17,13 +17,13 @@ const Security: FC = () => { return ( <> - - + + } /> } /> - } /> + } /> ); diff --git a/interface/src/framework/system/System.tsx b/interface/src/framework/system/System.tsx index 8dc373cf2..2caf4b7c6 100644 --- a/interface/src/framework/system/System.tsx +++ b/interface/src/framework/system/System.tsx @@ -23,10 +23,10 @@ const System: FC = () => { return ( <> - - - - + + + + } /> @@ -47,7 +47,7 @@ const System: FC = () => { } /> - } /> + } /> ); diff --git a/interface/src/project/Dashboard.tsx b/interface/src/project/Dashboard.tsx index ea1d441f8..bfbaa8923 100644 --- a/interface/src/project/Dashboard.tsx +++ b/interface/src/project/Dashboard.tsx @@ -20,15 +20,15 @@ const Dashboard: FC = () => { return ( <> - - - + + + } /> } /> } /> - } /> + } /> ); diff --git a/interface/src/project/Settings.tsx b/interface/src/project/Settings.tsx index 5a0de5b82..29edb1c13 100644 --- a/interface/src/project/Settings.tsx +++ b/interface/src/project/Settings.tsx @@ -18,17 +18,17 @@ const Settings: FC = () => { return ( <> - - - - + + + + } /> } /> } /> } /> - } /> + } /> ); diff --git a/interface/yarn.lock b/interface/yarn.lock index b49e9bd11..259d4b6c7 100644 --- a/interface/yarn.lock +++ b/interface/yarn.lock @@ -39,6 +39,16 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:^7.23.5": + version: 7.23.5 + resolution: "@babel/code-frame@npm:7.23.5" + dependencies: + "@babel/highlight": "npm:^7.23.4" + chalk: "npm:^2.4.2" + checksum: 44e58529c9d93083288dc9e649c553c5ba997475a7b0758cc3ddc4d77b8a7d985dbe78cc39c9bbc61f26d50af6da1ddf0a3427eae8cc222a9370619b671ed8f5 + languageName: node + linkType: hard + "@babel/compat-data@npm:^7.22.9": version: 7.23.2 resolution: "@babel/compat-data@npm:7.23.2" @@ -69,26 +79,26 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/core@npm:7.23.3" +"@babel/core@npm:^7.23.5": + version: 7.23.5 + resolution: "@babel/core@npm:7.23.5" dependencies: "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.22.13" - "@babel/generator": "npm:^7.23.3" + "@babel/code-frame": "npm:^7.23.5" + "@babel/generator": "npm:^7.23.5" "@babel/helper-compilation-targets": "npm:^7.22.15" "@babel/helper-module-transforms": "npm:^7.23.3" - "@babel/helpers": "npm:^7.23.2" - "@babel/parser": "npm:^7.23.3" + "@babel/helpers": "npm:^7.23.5" + "@babel/parser": "npm:^7.23.5" "@babel/template": "npm:^7.22.15" - "@babel/traverse": "npm:^7.23.3" - "@babel/types": "npm:^7.23.3" + "@babel/traverse": "npm:^7.23.5" + "@babel/types": "npm:^7.23.5" convert-source-map: "npm:^2.0.0" debug: "npm:^4.1.0" gensync: "npm:^1.0.0-beta.2" json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: f9e7016b62842d23f78c98dc31daa3bd9161c5770c1e9df0557f78186ed75fd2cfc8e7161975fe8c6ad147665b1881790139da91de34ec03cf8b9f6a256d86eb + checksum: f24265172610dbffe0e315b6a8e8f87cf87d2643c8915196adcddd81c66a8eaeb1b36fea851e2308961636a180089a5f10becaa340d5b707d5f64e2e5ffb2bc8 languageName: node linkType: hard @@ -104,15 +114,15 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/generator@npm:7.23.3" +"@babel/generator@npm:^7.23.5": + version: 7.23.5 + resolution: "@babel/generator@npm:7.23.5" dependencies: - "@babel/types": "npm:^7.23.3" + "@babel/types": "npm:^7.23.5" "@jridgewell/gen-mapping": "npm:^0.3.2" "@jridgewell/trace-mapping": "npm:^0.3.17" jsesc: "npm:^2.5.1" - checksum: 0f815d275cb3de97ec4724b959b3c7a67b1cde1861eda6612b50c6ba22565f12536d1f004dd48e7bad5e059751950265c6ff546ef48b7a719a11d7b512f1e29d + checksum: 094af79c2e8fdb0cfd06b42ff6a39a8a95639bc987cace44f52ed5c46127f5469eb20ab5f4c8991fc00fa9c1445a1977cde8e44289d6be29ddbb315fb0fc1b45 languageName: node linkType: hard @@ -235,6 +245,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-string-parser@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/helper-string-parser@npm:7.23.4" + checksum: c352082474a2ee1d2b812bd116a56b2e8b38065df9678a32a535f151ec6f58e54633cc778778374f10544b930703cca6ddf998803888a636afa27e2658068a9c + languageName: node + linkType: hard + "@babel/helper-validator-identifier@npm:^7.22.20": version: 7.22.20 resolution: "@babel/helper-validator-identifier@npm:7.22.20" @@ -260,6 +277,17 @@ __metadata: languageName: node linkType: hard +"@babel/helpers@npm:^7.23.5": + version: 7.23.5 + resolution: "@babel/helpers@npm:7.23.5" + dependencies: + "@babel/template": "npm:^7.22.15" + "@babel/traverse": "npm:^7.23.5" + "@babel/types": "npm:^7.23.5" + checksum: 84a813db55e03b5f47cef1210eb22751dae5dc3605bf62ff9acd4c248d857f94cb43dc7299e0edcec9312b31088f0d77f881282df2957e65a322b5412801cc24 + languageName: node + linkType: hard + "@babel/highlight@npm:^7.22.13": version: 7.22.20 resolution: "@babel/highlight@npm:7.22.20" @@ -271,6 +299,17 @@ __metadata: languageName: node linkType: hard +"@babel/highlight@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/highlight@npm:7.23.4" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.22.20" + chalk: "npm:^2.4.2" + js-tokens: "npm:^4.0.0" + checksum: 62fef9b5bcea7131df4626d009029b1ae85332042f4648a4ce6e740c3fd23112603c740c45575caec62f260c96b11054d3be5987f4981a5479793579c3aac71f + languageName: node + linkType: hard + "@babel/parser@npm:^7.22.15, @babel/parser@npm:^7.23.0": version: 7.23.0 resolution: "@babel/parser@npm:7.23.0" @@ -280,12 +319,12 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/parser@npm:7.23.3" +"@babel/parser@npm:^7.23.5": + version: 7.23.5 + resolution: "@babel/parser@npm:7.23.5" bin: parser: ./bin/babel-parser.js - checksum: 284c22ec1d939df66fb94929959d2160c30df1ba5778f212668dfb2f4aa8ac176f628c6073a2c9ea7ab2a1701d2ebdafb0dfb173dc737db9dc6708d5d2f49e0a + checksum: 828c250ace0c58f9dc311fd13ad3da34e86ed27a5c6b4183ce9d85be250e78eeb71a13f6d51a368c46f8cbe51106c726bfbb158bf46a89db3a168a0002d3050a languageName: node linkType: hard @@ -335,6 +374,15 @@ __metadata: languageName: node linkType: hard +"@babel/runtime@npm:^7.23.4": + version: 7.23.5 + resolution: "@babel/runtime@npm:7.23.5" + dependencies: + regenerator-runtime: "npm:^0.14.0" + checksum: 0f1669f639af30a0a2948ffcefa2c61935f337b0777bd94f8d7bc66bba8e7d4499e725caeb0449540d9c6d67399b733c4e719babb43ce9a0f33095aa01b42b37 + languageName: node + linkType: hard + "@babel/template@npm:^7.22.15": version: 7.22.15 resolution: "@babel/template@npm:7.22.15" @@ -364,21 +412,21 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/traverse@npm:7.23.3" +"@babel/traverse@npm:^7.23.5": + version: 7.23.5 + resolution: "@babel/traverse@npm:7.23.5" dependencies: - "@babel/code-frame": "npm:^7.22.13" - "@babel/generator": "npm:^7.23.3" + "@babel/code-frame": "npm:^7.23.5" + "@babel/generator": "npm:^7.23.5" "@babel/helper-environment-visitor": "npm:^7.22.20" "@babel/helper-function-name": "npm:^7.23.0" "@babel/helper-hoist-variables": "npm:^7.22.5" "@babel/helper-split-export-declaration": "npm:^7.22.6" - "@babel/parser": "npm:^7.23.3" - "@babel/types": "npm:^7.23.3" + "@babel/parser": "npm:^7.23.5" + "@babel/types": "npm:^7.23.5" debug: "npm:^4.1.0" globals: "npm:^11.1.0" - checksum: 522ef8eefe1ed31cd392129efb2f8794ca25bd54b1ad7c3bfa7f46d20c47ef0e392d5c1654ddee3454eed5e546d04c9bfa38b04b82e47144aa545f87ba55572d + checksum: 281cae2765caad88c7af6214eab3647db0e9cadc7ffcd3fd924f09fbb9bd09d97d6fb210794b7545c317ce417a30016636530043a455ba6922349e39c1ba622a languageName: node linkType: hard @@ -393,14 +441,14 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/types@npm:7.23.3" +"@babel/types@npm:^7.23.5": + version: 7.23.5 + resolution: "@babel/types@npm:7.23.5" dependencies: - "@babel/helper-string-parser": "npm:^7.22.5" + "@babel/helper-string-parser": "npm:^7.23.4" "@babel/helper-validator-identifier": "npm:^7.22.20" to-fast-properties: "npm:^2.0.0" - checksum: 05ec1527d0468aa6f3e30fa821625322794055fb572c131aaa8befdf24d174407e2e5954c2b0a292a5456962e23383e36cf9d7cbb01318146d6140ce2128d000 + checksum: a623a4e7f396f1903659099da25bfa059694a49f42820f6b5288347f1646f0b37fb7cc550ba45644e9067149368ef34ccb1bd4a4251ec59b83b3f7765088f363 languageName: node linkType: hard @@ -729,9 +777,9 @@ __metadata: languageName: node linkType: hard -"@eslint/eslintrc@npm:^2.1.3": - version: 2.1.3 - resolution: "@eslint/eslintrc@npm:2.1.3" +"@eslint/eslintrc@npm:^2.1.4": + version: 2.1.4 + resolution: "@eslint/eslintrc@npm:2.1.4" dependencies: ajv: "npm:^6.12.4" debug: "npm:^4.3.2" @@ -742,14 +790,14 @@ __metadata: js-yaml: "npm:^4.1.0" minimatch: "npm:^3.1.2" strip-json-comments: "npm:^3.1.1" - checksum: 77b70a89232fe702c2f765b5b92970f5e4224b55363b923238b996c66fcd991504f40d3663c0543ae17d6c5049ab9b07ab90b65d7601e6f25e8bcd4caf69ac75 + checksum: 7a3b14f4b40fc1a22624c3f84d9f467a3d9ea1ca6e9a372116cb92507e485260359465b58e25bcb6c9981b155416b98c9973ad9b796053fd7b3f776a6946bce8 languageName: node linkType: hard -"@eslint/js@npm:8.54.0": - version: 8.54.0 - resolution: "@eslint/js@npm:8.54.0" - checksum: 4d491ff234cd94b54499428cb3435623270ff8cc59950e13e6e1ac2fa350ec60502dac7bfd4f486523fee65ad7a358034570fe776b81b14dbfe5525d1e26e1d8 +"@eslint/js@npm:8.55.0": + version: 8.55.0 + resolution: "@eslint/js@npm:8.55.0" + checksum: 34b001a95b16501fd64f525b1de3ab0e4c252e5820b74069004934cb13977fc04ba4522a3e8f8074bd6af49da10d3444cd49fa711819f425ad73d6bf46eea82d languageName: node linkType: hard @@ -882,14 +930,14 @@ __metadata: languageName: node linkType: hard -"@mui/base@npm:5.0.0-beta.24": - version: 5.0.0-beta.24 - resolution: "@mui/base@npm:5.0.0-beta.24" +"@mui/base@npm:5.0.0-beta.25": + version: 5.0.0-beta.25 + resolution: "@mui/base@npm:5.0.0-beta.25" dependencies: - "@babel/runtime": "npm:^7.23.2" + "@babel/runtime": "npm:^7.23.4" "@floating-ui/react-dom": "npm:^2.0.4" - "@mui/types": "npm:^7.2.9" - "@mui/utils": "npm:^5.14.18" + "@mui/types": "npm:^7.2.10" + "@mui/utils": "npm:^5.14.19" "@popperjs/core": "npm:^2.11.8" clsx: "npm:^2.0.0" prop-types: "npm:^15.8.1" @@ -900,22 +948,22 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 65d8a428d7e863885d5d5d6513ffa64982ebd7bd3a809b3024f669b907796c94a5d19ebac42ef383277acaccf30af3158c91f65c69fb0e7b2ddab925fc3293dd + checksum: 93cecb438ec9d5bac2440a65c295fbd2cde6aa7f1264005b0c9ef76c1332b77111f7b688209364b97344642bee0e71f2bd3b3b14039921f68a8b7111d3a513e4 languageName: node linkType: hard -"@mui/core-downloads-tracker@npm:^5.14.18": - version: 5.14.18 - resolution: "@mui/core-downloads-tracker@npm:5.14.18" - checksum: 3d367797282e4b93eacee997667d62bc4eeac979e9664724e9db8d632278d8629f2a141894cf53d706f1d2a9f19965bffe2858aa2bc9833722e674cd560b896e +"@mui/core-downloads-tracker@npm:^5.14.19": + version: 5.14.19 + resolution: "@mui/core-downloads-tracker@npm:5.14.19" + checksum: e71c886f12bbd83791638545017c0b8439c3c6b51125979fea105f938f2f5b109629d4deddd38448c05b8be10b3249334324f1505c1306c52a2b8d315a1005c3 languageName: node linkType: hard -"@mui/icons-material@npm:^5.14.18": - version: 5.14.18 - resolution: "@mui/icons-material@npm:5.14.18" +"@mui/icons-material@npm:^5.14.19": + version: 5.14.19 + resolution: "@mui/icons-material@npm:5.14.19" dependencies: - "@babel/runtime": "npm:^7.23.2" + "@babel/runtime": "npm:^7.23.4" peerDependencies: "@mui/material": ^5.0.0 "@types/react": ^17.0.0 || ^18.0.0 @@ -923,21 +971,21 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 20da1445f033edf017d7d447c74fb27e90d4a9f3a631f617252a4806b69364792e01aa7010939c90e37d8ce7adf4218ec27066bd8ec0db40295f64365fd18a5e + checksum: 648a44af9a18a39062126d80268d0d4816d408d253d46f097cf8ad525e37dad8301a7727942f4908a15c432de361dabe29de0595f3771cf8acf7da311374441e languageName: node linkType: hard -"@mui/material@npm:^5.14.18": - version: 5.14.18 - resolution: "@mui/material@npm:5.14.18" +"@mui/material@npm:^5.14.19": + version: 5.14.19 + resolution: "@mui/material@npm:5.14.19" dependencies: - "@babel/runtime": "npm:^7.23.2" - "@mui/base": "npm:5.0.0-beta.24" - "@mui/core-downloads-tracker": "npm:^5.14.18" - "@mui/system": "npm:^5.14.18" - "@mui/types": "npm:^7.2.9" - "@mui/utils": "npm:^5.14.18" - "@types/react-transition-group": "npm:^4.4.8" + "@babel/runtime": "npm:^7.23.4" + "@mui/base": "npm:5.0.0-beta.25" + "@mui/core-downloads-tracker": "npm:^5.14.19" + "@mui/system": "npm:^5.14.19" + "@mui/types": "npm:^7.2.10" + "@mui/utils": "npm:^5.14.19" + "@types/react-transition-group": "npm:^4.4.9" clsx: "npm:^2.0.0" csstype: "npm:^3.1.2" prop-types: "npm:^15.8.1" @@ -956,16 +1004,16 @@ __metadata: optional: true "@types/react": optional: true - checksum: 50c5ddbd8e6e39aa4cf904ea7061a1c9d91d906baa7b7626f3db22338872972bac8d176002e613f79e9171969e898ca268c024a143bc120f05e750035b25a8cb + checksum: 9b89bf20e5086801d8737d906d4c84023e04883a67186c4f523748740a90bee495a8c93ba7bc1272fdc0f9ee9951e2ebff149ecd63697abfba06dbfe9787f5fa languageName: node linkType: hard -"@mui/private-theming@npm:^5.14.18": - version: 5.14.18 - resolution: "@mui/private-theming@npm:5.14.18" +"@mui/private-theming@npm:^5.14.19": + version: 5.14.19 + resolution: "@mui/private-theming@npm:5.14.19" dependencies: - "@babel/runtime": "npm:^7.23.2" - "@mui/utils": "npm:^5.14.18" + "@babel/runtime": "npm:^7.23.4" + "@mui/utils": "npm:^5.14.19" prop-types: "npm:^15.8.1" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 @@ -973,15 +1021,15 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: cb2ae253c7aba571ae838b5c886f74cde0e4b3df49ed1d776ee355e87fc28efe6a23367d713ac6979378049aa67d3bffb65cba421818a11b65d4518742a8711b + checksum: 248687351477c7794a002dd0c4ae68216b5794591407e0b4751eede8fe35db94c163642365578938dc66fbeb7a6c771c811ab2f7fa4b2bc60f663dc826084ca0 languageName: node linkType: hard -"@mui/styled-engine@npm:^5.14.18": - version: 5.14.18 - resolution: "@mui/styled-engine@npm:5.14.18" +"@mui/styled-engine@npm:^5.14.19": + version: 5.14.19 + resolution: "@mui/styled-engine@npm:5.14.19" dependencies: - "@babel/runtime": "npm:^7.23.2" + "@babel/runtime": "npm:^7.23.4" "@emotion/cache": "npm:^11.11.0" csstype: "npm:^3.1.2" prop-types: "npm:^15.8.1" @@ -994,19 +1042,19 @@ __metadata: optional: true "@emotion/styled": optional: true - checksum: 305128a623339cf0bb563cebb822363c19d9337221e7894c00130680e5b7a818c81a6df1d1f036a97641ce0f1bc336a0328ce3e2787d2dee1ff73bf0718aca63 + checksum: 210da24bcb47c8b911b0f4174ecd77ced2aa5eba442861b474fe575384d736edc9553b707be35a086ae514503c26dbfa5541a352db65fa7de970c6251365214b languageName: node linkType: hard -"@mui/system@npm:^5.14.18": - version: 5.14.18 - resolution: "@mui/system@npm:5.14.18" +"@mui/system@npm:^5.14.19": + version: 5.14.19 + resolution: "@mui/system@npm:5.14.19" dependencies: - "@babel/runtime": "npm:^7.23.2" - "@mui/private-theming": "npm:^5.14.18" - "@mui/styled-engine": "npm:^5.14.18" - "@mui/types": "npm:^7.2.9" - "@mui/utils": "npm:^5.14.18" + "@babel/runtime": "npm:^7.23.4" + "@mui/private-theming": "npm:^5.14.19" + "@mui/styled-engine": "npm:^5.14.19" + "@mui/types": "npm:^7.2.10" + "@mui/utils": "npm:^5.14.19" clsx: "npm:^2.0.0" csstype: "npm:^3.1.2" prop-types: "npm:^15.8.1" @@ -1022,28 +1070,28 @@ __metadata: optional: true "@types/react": optional: true - checksum: 4e9a47342fc928506272a2b68d9f2592bbbc5a9f88176ee03b6050066f18f7d2df11355796d7ee5ef556d12779fe9e4d20520d0a0f1e24e2696193e4c13ce580 + checksum: 68fddc614aae5dba86db134ae1b2ab7540d61e4008068ccd3c1cfa20d9f54508b9cf3ce68d2d1a4c7de237c9314206da291e987d323fa1425a12e5b36f2bc488 languageName: node linkType: hard -"@mui/types@npm:^7.2.9": - version: 7.2.9 - resolution: "@mui/types@npm:7.2.9" +"@mui/types@npm:^7.2.10": + version: 7.2.10 + resolution: "@mui/types@npm:7.2.10" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 peerDependenciesMeta: "@types/react": optional: true - checksum: f8a21c5a375373e03b9e7ef0c081fbcbfffb8e743955280d360ac37990448a587ac101b82e35539102ea46c994d23475c80be236b36deaabf38acc5e48c2bdef + checksum: 83067cd1da9c79f7ee82f171ba718435d8aa12c6e72c4d5d24bee9e310416ccb91cb86cb0502f463e683e9707d90befc5112509fe7af54cacd39f8556b150f9b languageName: node linkType: hard -"@mui/utils@npm:^5.14.18": - version: 5.14.18 - resolution: "@mui/utils@npm:5.14.18" +"@mui/utils@npm:^5.14.19": + version: 5.14.19 + resolution: "@mui/utils@npm:5.14.19" dependencies: - "@babel/runtime": "npm:^7.23.2" - "@types/prop-types": "npm:^15.7.10" + "@babel/runtime": "npm:^7.23.4" + "@types/prop-types": "npm:^15.7.11" prop-types: "npm:^15.8.1" react-is: "npm:^18.2.0" peerDependencies: @@ -1052,7 +1100,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: abc699aab138a5650f7ba5f4c87511802bc35b8307331a9024d2d1769520a63ccccf952097ab8943104d6304107836cba580a7acbcc0138c263f77f97b1b3dd0 + checksum: 1abbcfef21fc71805af1a4d653d9adeec252ebe4892715a0c6c49246c6cfa84f46c82e033679ab50eb2cf3ef391d9eb622c48aa78f152032aa99a996eac98806 languageName: node linkType: hard @@ -1187,10 +1235,10 @@ __metadata: languageName: node linkType: hard -"@remix-run/router@npm:1.13.0": - version: 1.13.0 - resolution: "@remix-run/router@npm:1.13.0" - checksum: bb173a012d2036c5ee69babfe30c73975b970c2e5a0edaba138c302ae80d255e238e462e77365ab4efe819b6397e1a7f3a416d6200d17f9655f0ca1c51c4f45e +"@remix-run/router@npm:1.13.1": + version: 1.13.1 + resolution: "@remix-run/router@npm:1.13.1" + checksum: bf1ff266744352e71fc414f983a9f7772c10ec55cf4b978d851026e6c12b39c0084f99e4e45de706b800a71889ef09f652b8e7c43e21800351cc14c5ada8c834 languageName: node linkType: hard @@ -1478,12 +1526,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^20.10.0": - version: 20.10.0 - resolution: "@types/node@npm:20.10.0" +"@types/node@npm:^20.10.2": + version: 20.10.2 + resolution: "@types/node@npm:20.10.2" dependencies: undici-types: "npm:~5.26.4" - checksum: c7d5ddbdbf3491e2363135c9611eb6bfae90eda2957279237fa232bcb29cd0df1cc3ee149d6de9915b754262a531ee2d57d33c9ecd58d763e8ad4856113822f3 + checksum: e88d0e92870ec4880642cc39250903a098443d791e864a08d08f4e7fdca0c4c9c0233a6fd98bec356f0ebabc6551152a4590d1c9c34b73a95c2b33935f59185f languageName: node linkType: hard @@ -1501,10 +1549,10 @@ __metadata: languageName: node linkType: hard -"@types/prop-types@npm:^15.7.10": - version: 15.7.10 - resolution: "@types/prop-types@npm:15.7.10" - checksum: 39ecc2d9e439ed16b32937a08d98b84ed4a70f53bcd52c8564c0cd7a36fe1004ca83a1fb94b13c1b7a5c048760f06445c3c6a91a6972c8eff652c0b50c9424b1 +"@types/prop-types@npm:^15.7.11": + version: 15.7.11 + resolution: "@types/prop-types@npm:15.7.11" + checksum: 7519ff11d06fbf6b275029fe03fff9ec377b4cb6e864cac34d87d7146c7f5a7560fd164bdc1d2dbe00b60c43713631251af1fd3d34d46c69cd354602bc0c7c54 languageName: node linkType: hard @@ -1538,12 +1586,12 @@ __metadata: languageName: node linkType: hard -"@types/react-transition-group@npm:^4.4.8": - version: 4.4.8 - resolution: "@types/react-transition-group@npm:4.4.8" +"@types/react-transition-group@npm:^4.4.9": + version: 4.4.9 + resolution: "@types/react-transition-group@npm:4.4.9" dependencies: "@types/react": "npm:*" - checksum: 9c756217329897bd1ea9072bc44e1aff27ee012fdc6a493edff0951a8b9e461a4415b91ee0c11ef64bd40fac9f91425e58e5222d95489319181f7e8646d50948 + checksum: 74ed0985380544bd1d63d8865a452a859ed7122b35dd2cf919fa7d1f31936345671995d36c89263456f27dbb5940eac8d4607be969e27187102eecff1cc64ba3 languageName: node linkType: hard @@ -1558,14 +1606,14 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:^18.2.39": - version: 18.2.39 - resolution: "@types/react@npm:18.2.39" +"@types/react@npm:^18.2.40": + version: 18.2.40 + resolution: "@types/react@npm:18.2.40" dependencies: "@types/prop-types": "npm:*" "@types/scheduler": "npm:*" csstype: "npm:^3.0.2" - checksum: 870f7774c676ae0f3ab6339a62b3315f5a296e89412358b15a5249a61e781a8807a2253ef7ad2ec98e7a5bea1e8c3ddd95b02226d6b8ac4a085da59b4a496564 + checksum: 323c319461482ad17b4813fec8641a4167361f42164757b64dbe27db379ae8fd98f3811a301f4abce0c17ce53a83c549db3ba3008e54d2a422a0656bddd72440 languageName: node linkType: hard @@ -1735,18 +1783,18 @@ __metadata: resolution: "EMS-ESP@workspace:." dependencies: "@alova/adapter-xhr": "npm:^1.0.1" - "@babel/core": "npm:^7.23.3" + "@babel/core": "npm:^7.23.5" "@emotion/react": "npm:^11.11.1" "@emotion/styled": "npm:^11.11.0" - "@mui/icons-material": "npm:^5.14.18" - "@mui/material": "npm:^5.14.18" + "@mui/icons-material": "npm:^5.14.19" + "@mui/material": "npm:^5.14.19" "@preact/compat": "npm:^17.1.2" "@preact/preset-vite": "npm:^2.7.0" "@table-library/react-table-library": "npm:4.1.7" "@types/imagemin": "npm:^8.0.5" "@types/lodash-es": "npm:^4.17.12" - "@types/node": "npm:^20.10.0" - "@types/react": "npm:^18.2.39" + "@types/node": "npm:^20.10.2" + "@types/react": "npm:^18.2.40" "@types/react-dom": "npm:^18.2.17" "@types/react-router-dom": "npm:^5.3.3" "@typescript-eslint/eslint-plugin": "npm:^6.13.1" @@ -1754,10 +1802,10 @@ __metadata: alova: "npm:^2.15.0" async-validator: "npm:^4.2.5" concurrently: "npm:^8.2.2" - eslint: "npm:^8.54.0" + eslint: "npm:^8.55.0" eslint-config-airbnb: "npm:^19.0.4" eslint-config-airbnb-typescript: "npm:^17.1.0" - eslint-config-prettier: "npm:^9.0.0" + eslint-config-prettier: "npm:^9.1.0" eslint-import-resolver-typescript: "npm:^3.6.1" eslint-plugin-autofix: "npm:^1.1.0" eslint-plugin-import: "npm:^2.29.0" @@ -1775,14 +1823,14 @@ __metadata: react-dom: "npm:latest" react-dropzone: "npm:^14.2.3" react-icons: "npm:^4.12.0" - react-router-dom: "npm:^6.20.0" + react-router-dom: "npm:^6.20.1" react-toastify: "npm:^9.1.3" rollup-plugin-visualizer: "npm:^5.9.3" sockette: "npm:^2.0.6" terser: "npm:^5.24.0" typesafe-i18n: "npm:^5.26.2" typescript: "npm:^5.3.2" - vite: "npm:^5.0.3" + vite: "npm:^5.0.4" vite-plugin-imagemin: "npm:^0.6.1" vite-tsconfig-paths: "npm:^4.2.1" languageName: unknown @@ -3644,14 +3692,14 @@ __metadata: languageName: node linkType: hard -"eslint-config-prettier@npm:^9.0.0": - version: 9.0.0 - resolution: "eslint-config-prettier@npm:9.0.0" +"eslint-config-prettier@npm:^9.1.0": + version: 9.1.0 + resolution: "eslint-config-prettier@npm:9.1.0" peerDependencies: eslint: ">=7.0.0" bin: eslint-config-prettier: bin/cli.js - checksum: 276b0b5b5b19066962a9ff3a16a553bdad28e1c0a2ea33a1d75d65c0428bb7b37f6e85ac111ebefcc9bdefb544385856dbe6eaeda5279c639e5549c113d27dda + checksum: 411e3b3b1c7aa04e3e0f20d561271b3b909014956c4dba51c878bf1a23dbb8c800a3be235c46c4732c70827276e540b6eed4636d9b09b444fd0a8e07f0fcd830 languageName: node linkType: hard @@ -3842,14 +3890,14 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^8.54.0": - version: 8.54.0 - resolution: "eslint@npm:8.54.0" +"eslint@npm:^8.55.0": + version: 8.55.0 + resolution: "eslint@npm:8.55.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.2.0" "@eslint-community/regexpp": "npm:^4.6.1" - "@eslint/eslintrc": "npm:^2.1.3" - "@eslint/js": "npm:8.54.0" + "@eslint/eslintrc": "npm:^2.1.4" + "@eslint/js": "npm:8.55.0" "@humanwhocodes/config-array": "npm:^0.11.13" "@humanwhocodes/module-importer": "npm:^1.0.1" "@nodelib/fs.walk": "npm:^1.2.8" @@ -3886,7 +3934,7 @@ __metadata: text-table: "npm:^0.2.0" bin: eslint: bin/eslint.js - checksum: 379827964fd7885a4d48611a5237cf5c534eff0ad3d0c1a1d6a14d52ac6758f4efdccd924c9bb3a9aa4dc80a3446d48dc49f61733cd5bd5f74419d0240970e7b + checksum: afd016cfbe9e9d667b3f98c14c681a7e518808f6c30856e56cbb02248900eac5bf6dc5e577a7eaec259539486db48ef7d16ef58fb14b1585ba7c84b35490c53c languageName: node linkType: hard @@ -7020,27 +7068,27 @@ __metadata: languageName: node linkType: hard -"react-router-dom@npm:^6.20.0": - version: 6.20.0 - resolution: "react-router-dom@npm:6.20.0" +"react-router-dom@npm:^6.20.1": + version: 6.20.1 + resolution: "react-router-dom@npm:6.20.1" dependencies: - "@remix-run/router": "npm:1.13.0" - react-router: "npm:6.20.0" + "@remix-run/router": "npm:1.13.1" + react-router: "npm:6.20.1" peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 4b6741c545cedf5a5c4f996deb953679dcc985425e0664e27b97fdb9ab1387cbe1a6a12bfc7f7c38ec40b15759b4bf6396930ec26540a4a81ae16d154fd35049 + checksum: 27efb05af0025bdcd7ecc85d2df2f53ca90bbf4db1dd4319002714b5be4e23c9434f95932d79f14a42d7c347ca882e9a0bba74a4d6331de8f7fb527c21f3f069 languageName: node linkType: hard -"react-router@npm:6.20.0": - version: 6.20.0 - resolution: "react-router@npm:6.20.0" +"react-router@npm:6.20.1": + version: 6.20.1 + resolution: "react-router@npm:6.20.1" dependencies: - "@remix-run/router": "npm:1.13.0" + "@remix-run/router": "npm:1.13.1" peerDependencies: react: ">=16.8" - checksum: 2cdac5ad8b7a7bc230173b26768bcf3f6a9abc0a19983fa7b76b9ffdbeb44bfbd88fcc2033e9062defafef144db207859eb3162a9c9742d70cfce4e7166ff1e5 + checksum: 96c25c8ca782dfa5b501540b9a491d8dca67c829a90fda237238a22881c695226fd5bbe14fcb2793bd5877aec2514d932c3293bf1f2463606fb3f2326628d766 languageName: node linkType: hard @@ -8566,9 +8614,9 @@ __metadata: languageName: node linkType: hard -"vite@npm:^5.0.3": - version: 5.0.3 - resolution: "vite@npm:5.0.3" +"vite@npm:^5.0.4": + version: 5.0.4 + resolution: "vite@npm:5.0.4" dependencies: esbuild: "npm:^0.19.3" fsevents: "npm:~2.3.3" @@ -8602,7 +8650,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 3f2cc01eaa632df89c1486dccdbea7df1e7b1d7e4f9270b987502096ac97038b0c7d5989ea04e7d095e3eaa5669e78e700470690b0f12076e2a58b97cda24351 + checksum: 3d1726e5ee09c99ca8f57ebb34428ceb23e51705cd9e39ee97cb123870caaff1e65fbeaed00658f8112dd6ac658e90cd020bd33c090ecd190fb962e43cc8d64c languageName: node linkType: hard diff --git a/src/version.h b/src/version.h index d1d7e9b7b..c145362b2 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.6.5-dev.1" +#define EMSESP_APP_VERSION "3.6.5-dev.2" From fd5f5d49b74a23db936a0fa77f4d519e27031ed3 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 3 Dec 2023 17:23:02 +0100 Subject: [PATCH 87/91] add back boil2hyst, fix #1477 --- src/devices/boiler.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index a0ec1bd2d..9fb3e51a8 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -230,6 +230,10 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const DeviceValueTAG::TAG_DEVICE_DATA, &boilHystOn_, DeviceValueType::INT, FL_(boilHystOn), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_hyst_on), -20, 0); register_device_value( DeviceValueTAG::TAG_DEVICE_DATA, &boilHystOff_, DeviceValueType::INT, FL_(boilHystOff), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_hyst_off), 0, 20); + register_device_value( + DeviceValueTAG::TAG_DEVICE_DATA, &boil2HystOn_, DeviceValueType::INT, FL_(boil2HystOn), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_hyst2_on), -20, 0); + register_device_value( + DeviceValueTAG::TAG_DEVICE_DATA, &boil2HystOff_, DeviceValueType::INT, FL_(boil2HystOff), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_hyst2_off), 0, 20); } register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &heatingActivated_, From 42ba93bdc137172eed43801221ad3ac088474a9c Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 3 Dec 2023 18:07:30 +0100 Subject: [PATCH 88/91] add checkbox for MQTT-TLS, fix #1474 --- interface/package.json | 2 +- .../src/framework/mqtt/MqttSettingsForm.tsx | 30 +++++++++++-------- interface/src/i18n/de/index.ts | 3 +- interface/src/i18n/en/index.ts | 3 +- interface/src/i18n/fr/index.ts | 3 +- interface/src/i18n/it/index.ts | 3 +- interface/src/i18n/nl/index.ts | 3 +- interface/src/i18n/no/index.ts | 3 +- interface/src/i18n/pl/index.ts | 3 +- interface/src/i18n/sv/index.ts | 3 +- interface/src/i18n/tr/index.ts | 3 +- interface/src/types/mqtt.ts | 1 + interface/yarn.lock | 10 +++---- lib/framework/MqttSettingsService.cpp | 20 +++++++------ lib/framework/MqttSettingsService.h | 1 + src/version.h | 2 +- 16 files changed, 55 insertions(+), 38 deletions(-) diff --git a/interface/package.json b/interface/package.json index 7469a2c6a..86137b132 100644 --- a/interface/package.json +++ b/interface/package.json @@ -30,7 +30,7 @@ "@types/imagemin": "^8.0.5", "@types/lodash-es": "^4.17.12", "@types/node": "^20.10.2", - "@types/react": "^18.2.40", + "@types/react": "^18.2.41", "@types/react-dom": "^18.2.17", "@types/react-router-dom": "^5.3.3", "alova": "^2.15.0", diff --git a/interface/src/framework/mqtt/MqttSettingsForm.tsx b/interface/src/framework/mqtt/MqttSettingsForm.tsx index 1647c3f9d..6b1d1323b 100644 --- a/interface/src/framework/mqtt/MqttSettingsForm.tsx +++ b/interface/src/framework/mqtt/MqttSettingsForm.tsx @@ -168,20 +168,24 @@ const MqttSettingsForm: FC = () => { 2
- {data.rootCA !== undefined && ( - - - - )} + {data.enableTLS !== undefined && ( + } + label={LL.ENABLE_TLS()} + /> + )} + {data.enableTLS === true && ( + + )} } diff --git a/interface/src/i18n/de/index.ts b/interface/src/i18n/de/index.ts index 09c8cc959..7574a09f7 100644 --- a/interface/src/i18n/de/index.ts +++ b/interface/src/i18n/de/index.ts @@ -323,7 +323,8 @@ const de: Translation = { WRITEABLE: 'Schreibbar', SHOWING: 'Anzeigen von', SEARCH: 'Suche', - CERT: 'TLS Zertifikat (Freilassen um TLS zu deaktivieren)', + CERT: 'TLS Zertifikat (Freilassen für unsichere Verbindung)', + ENABLE_TLS: 'Aktiviere TLS', ON: 'An', OFF: 'Aus', POLARITY: 'Polarität', diff --git a/interface/src/i18n/en/index.ts b/interface/src/i18n/en/index.ts index 76b2db4dc..23c933349 100644 --- a/interface/src/i18n/en/index.ts +++ b/interface/src/i18n/en/index.ts @@ -323,7 +323,8 @@ const en: Translation = { WRITEABLE: 'Writeable', SHOWING: 'Showing', SEARCH: 'Search', - CERT: 'TLS root certificate (leave blank to disable TLS)', + CERT: 'TLS root certificate (leave blank for insecure)', + ENABLE_TLS: 'Enable TLS', ON: 'On', OFF: 'Off', POLARITY: 'Polarity', diff --git a/interface/src/i18n/fr/index.ts b/interface/src/i18n/fr/index.ts index f556dc261..fd40d785a 100644 --- a/interface/src/i18n/fr/index.ts +++ b/interface/src/i18n/fr/index.ts @@ -323,7 +323,8 @@ const fr: Translation = { WRITEABLE: 'Writeable', // TODO translate SHOWING: 'Showing', // TODO translate SEARCH: 'Search', // TODO translate - CERT: 'TLS root certificate (leave blank to disable TLS)', // TODO translate + CERT: 'TLS root certificate (leave blank for insecure)', // TODO translate + ENABLE_TLS: 'Activer TLS', ON: 'On', // TODO translate OFF: 'Off', // TODO translate POLARITY: 'Polarity', // TODO translate diff --git a/interface/src/i18n/it/index.ts b/interface/src/i18n/it/index.ts index c303bcc00..779e3080b 100644 --- a/interface/src/i18n/it/index.ts +++ b/interface/src/i18n/it/index.ts @@ -325,7 +325,8 @@ const it: Translation = { WRITEABLE: 'Scrivibile', SHOWING: 'Visualizza', SEARCH: 'Ricerca', - CERT: 'TLS root certificate (leave blank to disable TLS)', // TODO translate + CERT: 'TLS root certificate (leave blank for insecure)', // TODO translate + ENABLE_TLS: 'Abilita TLS', ON: 'On', // TODO translate OFF: 'Off', // TODO translate POLARITY: 'Polarity', // TODO translate diff --git a/interface/src/i18n/nl/index.ts b/interface/src/i18n/nl/index.ts index b8c6eef7d..cbc8b0500 100644 --- a/interface/src/i18n/nl/index.ts +++ b/interface/src/i18n/nl/index.ts @@ -323,7 +323,8 @@ const nl: Translation = { WRITEABLE: 'Beschrijfbare', SHOWING: 'Tonen', SEARCH: 'Zoek', - CERT: 'TLS rootcertificaat (laat leeg om TLS uit te schakelen)', + CERT: 'TLS rootcertificaat (laat leeg om TLS-insecure)', // TODO translate + ENABLE_TLS: 'Activeer TLS', ON: 'On', // TODO translate OFF: 'Off', // TODO translate POLARITY: 'Polarity', // TODO translate diff --git a/interface/src/i18n/no/index.ts b/interface/src/i18n/no/index.ts index f660aa2d9..79a354c4a 100644 --- a/interface/src/i18n/no/index.ts +++ b/interface/src/i18n/no/index.ts @@ -323,7 +323,8 @@ const no: Translation = { WRITEABLE: 'Writeable', // TODO translate SHOWING: 'Showing', // TODO translate SEARCH: 'Search', // TODO translate - CERT: 'TLS root certificate (leave blank to disable TLS)', // TODO translate + CERT: 'TLS root certificate (leave blank for insecure)', // TODO translate + ENABLE_TLS: 'Aktiviser TLS', ON: 'On', // TODO translate OFF: 'Off', // TODO translate POLARITY: 'Polarity', // TODO translate diff --git a/interface/src/i18n/pl/index.ts b/interface/src/i18n/pl/index.ts index cf3600146..0cc5a5630 100644 --- a/interface/src/i18n/pl/index.ts +++ b/interface/src/i18n/pl/index.ts @@ -323,7 +323,8 @@ const pl: BaseTranslation = { WRITEABLE: 'zapisywalna', SHOWING: 'Wyświetlane', SEARCH: 'Szukaj', - CERT: 'Certyfikat główny TLS (pozostaw puste zby wyłączyć TLS)', + CERT: 'Certyfikat główny TLS (pozostaw puste zby wyłączyć TLS-insecure)', + ENABLE_TLS: 'Włącz wsparcie dla TLS', ON: 'włączony', OFF: 'wyłączony', POLARITY: 'Typ przekaźnika', diff --git a/interface/src/i18n/sv/index.ts b/interface/src/i18n/sv/index.ts index c1d2f0239..3dea8a225 100644 --- a/interface/src/i18n/sv/index.ts +++ b/interface/src/i18n/sv/index.ts @@ -323,7 +323,8 @@ const sv: Translation = { WRITEABLE: 'Writeable', // TODO translate SHOWING: 'Showing', // TODO translate SEARCH: 'Search', // TODO translate - CERT: 'TLS root certificate (leave blank to disable TLS)', // TODO translate + CERT: 'TLS root certificate (leave blank for insecure)', // TODO translate + ENABLE_TLS: 'Aktivera TLS', ON: 'On', // TODO translate OFF: 'Off', // TODO translate POLARITY: 'Polarity', // TODO translate diff --git a/interface/src/i18n/tr/index.ts b/interface/src/i18n/tr/index.ts index 682c4648b..a5d7e4505 100644 --- a/interface/src/i18n/tr/index.ts +++ b/interface/src/i18n/tr/index.ts @@ -323,7 +323,8 @@ const tr: Translation = { WRITEABLE: 'Writeable', // TODO translate SHOWING: 'Showing', // TODO translate SEARCH: 'Search', // TODO translate - CERT: 'TLS root certificate (leave blank to disable TLS)', // TODO translate + CERT: 'TLS root certificate (leave blank for insecure)', + ENABLE_TLS: 'TLS deveye al', ON: 'On', // TODO translate OFF: 'Off', // TODO translate POLARITY: 'Polarity', // TODO translate diff --git a/interface/src/types/mqtt.ts b/interface/src/types/mqtt.ts index df9261f4a..9b5db1458 100644 --- a/interface/src/types/mqtt.ts +++ b/interface/src/types/mqtt.ts @@ -25,6 +25,7 @@ export interface MqttSettings { port: number; base: string; rootCA?: string; + enableTLS?: boolean; username: string; password: string; client_id: string; diff --git a/interface/yarn.lock b/interface/yarn.lock index 259d4b6c7..634743ad4 100644 --- a/interface/yarn.lock +++ b/interface/yarn.lock @@ -1606,14 +1606,14 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:^18.2.40": - version: 18.2.40 - resolution: "@types/react@npm:18.2.40" +"@types/react@npm:^18.2.41": + version: 18.2.41 + resolution: "@types/react@npm:18.2.41" dependencies: "@types/prop-types": "npm:*" "@types/scheduler": "npm:*" csstype: "npm:^3.0.2" - checksum: 323c319461482ad17b4813fec8641a4167361f42164757b64dbe27db379ae8fd98f3811a301f4abce0c17ce53a83c549db3ba3008e54d2a422a0656bddd72440 + checksum: 31a498a56ad3e825ae13799355fe49042c0cdbbe6f40003f39b6b9cf847ba1669393c22ba60e97b1072cf1c002b15432082cdd17e47c948430bdc1f0864829b9 languageName: node linkType: hard @@ -1794,7 +1794,7 @@ __metadata: "@types/imagemin": "npm:^8.0.5" "@types/lodash-es": "npm:^4.17.12" "@types/node": "npm:^20.10.2" - "@types/react": "npm:^18.2.40" + "@types/react": "npm:^18.2.41" "@types/react-dom": "npm:^18.2.17" "@types/react-router-dom": "npm:^5.3.3" "@typescript-eslint/eslint-plugin": "npm:^6.13.1" diff --git a/lib/framework/MqttSettingsService.cpp b/lib/framework/MqttSettingsService.cpp index 8f96f2f15..c601950db 100644 --- a/lib/framework/MqttSettingsService.cpp +++ b/lib/framework/MqttSettingsService.cpp @@ -51,13 +51,13 @@ void MqttSettingsService::startClient() { static bool isSecure = false; if (_mqttClient != nullptr) { // do we need to change the client? - if ((isSecure && _state.rootCA.length() > 0) || (!isSecure && _state.rootCA.length() == 0)) { + if ((isSecure && _state.enableTLS) || (!isSecure && _state.enableTLS)) { return; } delete _mqttClient; } #if CONFIG_IDF_TARGET_ESP32S3 - if (_state.rootCA.length() > 0) { + if (_state.enableTLS) { isSecure = true; _mqttClient = static_cast(new espMqttClientSecure(espMqttClientTypes::UseInternalTask::NO)); if (_state.rootCA == "insecure") { @@ -100,7 +100,7 @@ const char * MqttSettingsService::getClientId() { void MqttSettingsService::setWill(const char * topic) { #if CONFIG_IDF_TARGET_ESP32S3 - if (_state.rootCA.length() > 0) { + if (_state.enableTLS) { static_cast(_mqttClient)->setWill(topic, 1, true, "offline"); return; } @@ -110,7 +110,7 @@ void MqttSettingsService::setWill(const char * topic) { void MqttSettingsService::onMessage(espMqttClientTypes::OnMessageCallback callback) { #if CONFIG_IDF_TARGET_ESP32S3 - if (_state.rootCA.length() > 0) { + if (_state.enableTLS) { static_cast(_mqttClient)->onMessage(callback); return; } @@ -181,7 +181,7 @@ bool MqttSettingsService::configureMqtt() { if (_state.enabled && emsesp::EMSESP::system_.network_connected() && !_state.host.isEmpty()) { _reconfigureMqtt = false; #if CONFIG_IDF_TARGET_ESP32S3 - if (_state.rootCA.length() > 0) { + if (_state.enableTLS) { // emsesp::EMSESP::logger().info("Start secure MQTT with rootCA"); static_cast(_mqttClient)->setServer(retainCstr(_state.host.c_str(), &_retainedHost), _state.port); if (_state.username.length() > 0) { @@ -217,7 +217,8 @@ bool MqttSettingsService::configureMqtt() { void MqttSettings::read(MqttSettings & settings, JsonObject & root) { #if CONFIG_IDF_TARGET_ESP32S3 - root["rootCA"] = settings.rootCA; + root["enableTLS"] = settings.enableTLS; + root["rootCA"] = settings.rootCA; #endif root["enabled"] = settings.enabled; root["host"] = settings.host; @@ -253,7 +254,8 @@ StateUpdateResult MqttSettings::update(JsonObject & root, MqttSettings & setting bool changed = false; #if CONFIG_IDF_TARGET_ESP32S3 - newSettings.rootCA = root["rootCA"] | ""; + newSettings.enableTLS = root["enableTLS"] | false; + newSettings.rootCA = root["rootCA"] | ""; #endif newSettings.enabled = root["enabled"] | FACTORY_MQTT_ENABLED; newSettings.host = root["host"] | FACTORY_MQTT_HOST; @@ -377,10 +379,10 @@ StateUpdateResult MqttSettings::update(JsonObject & root, MqttSettings & setting newSettings.rootCA.replace("-----BEGIN CERTIFICATE-----", ""); newSettings.rootCA.replace("-----END CERTIFICATE-----", ""); newSettings.rootCA.replace(" ", ""); - if (newSettings.rootCA.length() == 0 && newSettings.port > 8800) { + if (newSettings.rootCA.length() == 0 && newSettings.enableTLS) { newSettings.rootCA = "insecure"; } - if (newSettings.rootCA != settings.rootCA) { + if (newSettings.enableTLS != settings.enableTLS || newSettings.rootCA != settings.rootCA) { changed = true; } #endif diff --git a/lib/framework/MqttSettingsService.h b/lib/framework/MqttSettingsService.h index 90d1a53c7..84df758f5 100644 --- a/lib/framework/MqttSettingsService.h +++ b/lib/framework/MqttSettingsService.h @@ -64,6 +64,7 @@ class MqttSettings { String host; uint16_t port; String rootCA; + bool enableTLS; // username and password String username; diff --git a/src/version.h b/src/version.h index c145362b2..c5e1ec57c 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.6.5-dev.2" +#define EMSESP_APP_VERSION "3.6.5-dev.3" From 1845d5060afbec6d53638efa078dc831f47c0285 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 4 Dec 2023 17:11:40 +0100 Subject: [PATCH 89/91] add hpMaxPower --- src/devices/boiler.cpp | 11 +++++++++++ src/devices/boiler.h | 2 ++ src/locale_translations.h | 1 + 3 files changed, 14 insertions(+) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 94fc808df..e3bf7ea46 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -476,6 +476,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &nrgSuppCooling_, DeviceValueType::ULONG, FL_(nrgSuppCooling), DeviceValueUOM::KWH); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &nrgSuppPool_, DeviceValueType::ULONG, FL_(nrgSuppPool), DeviceValueUOM::KWH); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpPower_, DeviceValueType::UINT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(hpPower), DeviceValueUOM::KW); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpMaxPower_, DeviceValueType::UINT, FL_(hpMaxPower), DeviceValueUOM::PERCENT, MAKE_CF_CB(set_hpMaxPower)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpCompOn_, DeviceValueType::BOOL, FL_(hpCompOn), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpActivity_, DeviceValueType::ENUM, FL_(enum_hpactivity), FL_(hpActivity), DeviceValueUOM::NONE); // register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpHeatingOn_, DeviceValueType::BOOL, FL_(hpHeatingOn), DeviceValueUOM::NONE); @@ -1834,6 +1835,7 @@ void Boiler::process_HpSilentMode(std::shared_ptr telegram) { has_update(telegram, hpHystCool_, 35); // is / 5, maybe offset swapped with pool has_update(telegram, hpHystPool_, 33); // is / 5 has_update(telegram, hpCircPumpWw_, 46); + has_update(telegram, hpMaxPower_, 31); has_update(telegram, silentFrom_, 52); // in steps of 15 min has_update(telegram, silentTo_, 53); // in steps of 15 min } @@ -2899,6 +2901,15 @@ bool Boiler::set_hpPumpMode(const char * value, const int8_t id) { return false; } +bool Boiler::set_hpMaxPower(const char * value, const int8_t id) { + int v; + if (Helpers::value2number(value, v)) { + write_command(0x484, 31, v, 0x484); + return true; + } + return false; +} + bool Boiler::set_vp_cooling(const char * value, const int8_t id) { bool v; if (Helpers::value2bool(value, v)) { diff --git a/src/devices/boiler.h b/src/devices/boiler.h index af870c59b..7a76337f5 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -236,6 +236,7 @@ class Boiler : public EMSdevice { uint8_t maxHeatComp_; uint8_t maxHeatHeat_; uint8_t maxHeatDhw_; + uint8_t hpMaxPower_; uint8_t pvCooling_; uint8_t manDefrost_; @@ -434,6 +435,7 @@ class Boiler : public EMSdevice { bool set_pvCooling(const char * value, const int8_t id); bool set_hpCircPumpWw(const char * value, const int8_t id); bool set_hpPumpMode(const char * value, const int8_t id); + bool set_hpMaxPower(const char * value, const int8_t id); bool set_auxLimit(const char * value, const int8_t id); inline bool set_auxMaxLimit(const char * value, const int8_t id) { diff --git a/src/locale_translations.h b/src/locale_translations.h index 62d5cb055..8158da62b 100644 --- a/src/locale_translations.h +++ b/src/locale_translations.h @@ -389,6 +389,7 @@ MAKE_TRANSLATION(hpBrineOut, "hpbrineout", "brine out/condenser", "Sole aus/Kond MAKE_TRANSLATION(hpSwitchValve, "hpswitchvalve", "switch valve", "Schaltventil", "schakelklep", "Växelventil", "zawór przełączający", "skifteventil", "valve de commutation", "ısı pompası aktivitesi", "valvola commutazione pompa di calore") MAKE_TRANSLATION(hpActivity, "hpactivity", "compressor activity", "Kompressor-Betriebsmodus", "Compressoractiviteit", "Kompressoraktivitet", "pompa ciepła, aktywność sprężarki", "kompressoraktivitet", "", "hp ısı pompası", "attività compressore") +MAKE_TRANSLATION(hpMaxPower, "hpmaxpower", "compressor max power", "max. Kompressorleistung", "", "", "", "", "", "", "") // TODO translate MAKE_TRANSLATION(hpPower, "hppower", "compressor power output", "Kompressorleistung", "Compressorvermogen", "Kompressoreffekt", "moc wyjściowa sprężarki", "kompressoreffekt", "puissance de sortie compresseur", "ısı pompası güç çıkışı", "potenza uscita compressore") MAKE_TRANSLATION(hpTc0, "hptc0", "heat carrier return (TC0)", "Kältemittel Rücklauf (TC0)", "Koudemiddel retour (TC0)", "Värmebärare Retur (TC0)", "temperatura nośnika ciepła na powrocie (TC0)", "kjølemiddel retur (TC0)", "retour caloporteur (TC0)", "sıcak su dönüşü (TC0)", "ritorno del refrigerante (TC0)") MAKE_TRANSLATION(hpTc1, "hptc1", "heat carrier forward (TC1)", "Kältemittel Vorlauf (TC1)", "Koudemiddel aanvoer (TC1)", "Värmebärare Framledning (TC1)", "temperatura nośnika ciepła pierwotna (TC1)", "kjølemiddel tur (TC1)", "avance caloporteur (TC1)", "sıcak su çıkışı (TC1)", "flusso di refrigerante (TC1)") From 7b9a04ede175e17f37ec372a16f7b725b995e1a0 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 4 Dec 2023 17:17:23 +0100 Subject: [PATCH 90/91] add hpMaxPower fix #1475 --- src/devices/boiler.cpp | 11 +++++++++++ src/devices/boiler.h | 2 ++ src/locale_translations.h | 1 + 3 files changed, 14 insertions(+) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 9fb3e51a8..2aeacae10 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -470,6 +470,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &nrgSuppCooling_, DeviceValueType::ULONG, FL_(nrgSuppCooling), DeviceValueUOM::KWH); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &nrgSuppPool_, DeviceValueType::ULONG, FL_(nrgSuppPool), DeviceValueUOM::KWH); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpPower_, DeviceValueType::UINT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(hpPower), DeviceValueUOM::KW); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpMaxPower_, DeviceValueType::UINT, FL_(hpMaxPower), DeviceValueUOM::PERCENT, MAKE_CF_CB(set_hpMaxPower)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpCompOn_, DeviceValueType::BOOL, FL_(hpCompOn), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpActivity_, DeviceValueType::ENUM, FL_(enum_hpactivity), FL_(hpActivity), DeviceValueUOM::NONE); // register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpHeatingOn_, DeviceValueType::BOOL, FL_(hpHeatingOn), DeviceValueUOM::NONE); @@ -1822,6 +1823,7 @@ void Boiler::process_HpSilentMode(std::shared_ptr telegram) { has_update(telegram, hpHystCool_, 35); // is / 5, maybe offset swapped with pool has_update(telegram, hpHystPool_, 33); // is / 5 has_update(telegram, hpCircPumpWw_, 46); + has_update(telegram, hpMaxPower_, 31); has_update(telegram, silentFrom_, 52); // in steps of 15 min has_update(telegram, silentTo_, 53); // in steps of 15 min } @@ -2887,6 +2889,15 @@ bool Boiler::set_hpPumpMode(const char * value, const int8_t id) { return false; } +bool Boiler::set_hpMaxPower(const char * value, const int8_t id) { + int v; + if (Helpers::value2number(value, v)) { + write_command(0x484, 31, v, 0x484); + return true; + } + return false; +} + bool Boiler::set_vp_cooling(const char * value, const int8_t id) { bool v; if (Helpers::value2bool(value, v)) { diff --git a/src/devices/boiler.h b/src/devices/boiler.h index af870c59b..7a76337f5 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -236,6 +236,7 @@ class Boiler : public EMSdevice { uint8_t maxHeatComp_; uint8_t maxHeatHeat_; uint8_t maxHeatDhw_; + uint8_t hpMaxPower_; uint8_t pvCooling_; uint8_t manDefrost_; @@ -434,6 +435,7 @@ class Boiler : public EMSdevice { bool set_pvCooling(const char * value, const int8_t id); bool set_hpCircPumpWw(const char * value, const int8_t id); bool set_hpPumpMode(const char * value, const int8_t id); + bool set_hpMaxPower(const char * value, const int8_t id); bool set_auxLimit(const char * value, const int8_t id); inline bool set_auxMaxLimit(const char * value, const int8_t id) { diff --git a/src/locale_translations.h b/src/locale_translations.h index ba2a50fbd..f4e4f7b66 100644 --- a/src/locale_translations.h +++ b/src/locale_translations.h @@ -386,6 +386,7 @@ MAKE_TRANSLATION(hpBrineOut, "hpbrineout", "brine out/condenser", "Sole aus/Kond MAKE_TRANSLATION(hpSwitchValve, "hpswitchvalve", "switch valve", "Schaltventil", "schakelklep", "Växelventil", "zawór przełączający", "skifteventil", "valve de commutation", "ısı pompası aktivitesi", "valvola commutazione pompa di calore") MAKE_TRANSLATION(hpActivity, "hpactivity", "compressor activity", "Kompressor-Betriebsmodus", "Compressoractiviteit", "Kompressoraktivitet", "pompa ciepła, aktywność sprężarki", "kompressoraktivitet", "", "hp ısı pompası", "attività compressore") +MAKE_TRANSLATION(hpMaxPower, "hpmaxpower", "compressor max power", "max. Kompressorleistung", "", "", "", "", "", "", "") // TODO translate MAKE_TRANSLATION(hpPower, "hppower", "compressor power output", "Kompressorleistung", "Compressorvermogen", "Kompressoreffekt", "moc wyjściowa sprężarki", "kompressoreffekt", "puissance de sortie compresseur", "ısı pompası güç çıkışı", "potenza uscita compressore") MAKE_TRANSLATION(hpTc0, "hptc0", "heat carrier return (TC0)", "Kältemittel Rücklauf (TC0)", "Koudemiddel retour (TC0)", "Värmebärare Retur (TC0)", "temperatura nośnika ciepła na powrocie (TC0)", "kjølemiddel retur (TC0)", "retour caloporteur (TC0)", "sıcak su dönüşü (TC0)", "ritorno del refrigerante (TC0)") MAKE_TRANSLATION(hpTc1, "hptc1", "heat carrier forward (TC1)", "Kältemittel Vorlauf (TC1)", "Koudemiddel aanvoer (TC1)", "Värmebärare Framledning (TC1)", "temperatura nośnika ciepła pierwotna (TC1)", "kjølemiddel tur (TC1)", "avance caloporteur (TC1)", "sıcak su çıkışı (TC1)", "flusso di refrigerante (TC1)") From 10cabd032b1b918b019e37cac15b5375842d43ef Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 4 Dec 2023 17:27:07 +0100 Subject: [PATCH 91/91] update packages, formatting, changelog --- CHANGELOG_LATEST.md | 7 +++-- interface/package.json | 8 +++--- interface/yarn.lock | 60 +++++++++++++++++++++--------------------- src/devices/boiler.cpp | 25 +++++++++++++++--- 4 files changed, 60 insertions(+), 40 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index c3788cd5c..5d697efff 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -6,12 +6,15 @@ ## Added -- thermostat boost mode and boost time -- heatpump energy meters +- thermostat boost mode and boost time [#1446](https://github.com/emsesp/EMS-ESP32/issues/1446) +- heatpump energy meters [#1463](https://github.com/emsesp/EMS-ESP32/issues/1463) +- heatpump max power [#1475](https://github.com/emsesp/EMS-ESP32/issues/1475) +- checkbox for MQTT-TLS enable [#1474](https://github.com/emsesp/EMS-ESP32/issues/1474) ## Fixed - exhaust temperature for some boilers +- add back boil2hyst [#1477](https://github.com/emsesp/EMS-ESP32/issues/1477) ## Changed diff --git a/interface/package.json b/interface/package.json index 86137b132..f0ae88138 100644 --- a/interface/package.json +++ b/interface/package.json @@ -29,7 +29,7 @@ "@table-library/react-table-library": "4.1.7", "@types/imagemin": "^8.0.5", "@types/lodash-es": "^4.17.12", - "@types/node": "^20.10.2", + "@types/node": "^20.10.3", "@types/react": "^18.2.41", "@types/react-dom": "^18.2.17", "@types/react-router-dom": "^5.3.3", @@ -68,9 +68,9 @@ "eslint-plugin-react-hooks": "^4.6.0", "preact": "^10.19.2", "prettier": "^3.1.0", - "rollup-plugin-visualizer": "^5.9.3", - "terser": "^5.24.0", - "vite": "^5.0.4", + "rollup-plugin-visualizer": "^5.10.0", + "terser": "^5.25.0", + "vite": "^5.0.5", "vite-plugin-imagemin": "^0.6.1", "vite-tsconfig-paths": "^4.2.1" }, diff --git a/interface/yarn.lock b/interface/yarn.lock index 634743ad4..7f4d20e66 100644 --- a/interface/yarn.lock +++ b/interface/yarn.lock @@ -1526,12 +1526,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^20.10.2": - version: 20.10.2 - resolution: "@types/node@npm:20.10.2" +"@types/node@npm:^20.10.3": + version: 20.10.3 + resolution: "@types/node@npm:20.10.3" dependencies: undici-types: "npm:~5.26.4" - checksum: e88d0e92870ec4880642cc39250903a098443d791e864a08d08f4e7fdca0c4c9c0233a6fd98bec356f0ebabc6551152a4590d1c9c34b73a95c2b33935f59185f + checksum: 7cb506abb0d570bb5133bd06a47115109a813b507323c985c3b4aef2993eed79b6bb62b82194cb5c558b4d349de3d199ee2e8c693b913065a1cd7f526cc65a68 languageName: node linkType: hard @@ -1793,7 +1793,7 @@ __metadata: "@table-library/react-table-library": "npm:4.1.7" "@types/imagemin": "npm:^8.0.5" "@types/lodash-es": "npm:^4.17.12" - "@types/node": "npm:^20.10.2" + "@types/node": "npm:^20.10.3" "@types/react": "npm:^18.2.41" "@types/react-dom": "npm:^18.2.17" "@types/react-router-dom": "npm:^5.3.3" @@ -1825,12 +1825,12 @@ __metadata: react-icons: "npm:^4.12.0" react-router-dom: "npm:^6.20.1" react-toastify: "npm:^9.1.3" - rollup-plugin-visualizer: "npm:^5.9.3" + rollup-plugin-visualizer: "npm:^5.10.0" sockette: "npm:^2.0.6" - terser: "npm:^5.24.0" + terser: "npm:^5.25.0" typesafe-i18n: "npm:^5.26.2" typescript: "npm:^5.3.2" - vite: "npm:^5.0.4" + vite: "npm:^5.0.5" vite-plugin-imagemin: "npm:^0.6.1" vite-tsconfig-paths: "npm:^4.2.1" languageName: unknown @@ -6253,12 +6253,12 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.3.6": - version: 3.3.6 - resolution: "nanoid@npm:3.3.6" +"nanoid@npm:^3.3.7": + version: 3.3.7 + resolution: "nanoid@npm:3.3.7" bin: nanoid: bin/nanoid.cjs - checksum: 67235c39d1bc05851383dadde5cf77ae1c90c2a1d189e845c7f20f646f0488d875ad5f5226bbba072a88cebbb085a3f784a6673117daf785bdf614a852550362 + checksum: ac1eb60f615b272bccb0e2b9cd933720dad30bf9708424f691b8113826bb91aca7e9d14ef5d9415a6ba15c266b37817256f58d8ce980c82b0ba3185352565679 languageName: node linkType: hard @@ -6886,14 +6886,14 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.4.31": - version: 8.4.31 - resolution: "postcss@npm:8.4.31" +"postcss@npm:^8.4.32": + version: 8.4.32 + resolution: "postcss@npm:8.4.32" dependencies: - nanoid: "npm:^3.3.6" + nanoid: "npm:^3.3.7" picocolors: "npm:^1.0.0" source-map-js: "npm:^1.0.2" - checksum: 1a6653e72105907377f9d4f2cd341d8d90e3fde823a5ddea1e2237aaa56933ea07853f0f2758c28892a1d70c53bbaca200eb8b80f8ed55f13093003dbec5afa0 + checksum: 28084864122f29148e1f632261c408444f5ead0e0b9ea9bd9729d0468818ebe73fe5dc0075acd50c1365dbe639b46a79cba27d355ec857723a24bc9af0f18525 languageName: node linkType: hard @@ -7374,9 +7374,9 @@ __metadata: languageName: node linkType: hard -"rollup-plugin-visualizer@npm:^5.9.3": - version: 5.9.3 - resolution: "rollup-plugin-visualizer@npm:5.9.3" +"rollup-plugin-visualizer@npm:^5.10.0": + version: 5.10.0 + resolution: "rollup-plugin-visualizer@npm:5.10.0" dependencies: open: "npm:^8.4.0" picomatch: "npm:^2.3.1" @@ -7389,7 +7389,7 @@ __metadata: optional: true bin: rollup-plugin-visualizer: dist/bin/cli.js - checksum: 569acbdf9401fb5e23456d889b1094e95a003331c63428732f94418eda59850fd74994587353f58c833a535cc24cdef56c06872996f76f98802ff22939ebbf0d + checksum: aa4ef8d2aae064b50a50168094db1337762d91bd0cd06206cfbc96a97adca45b7036dc1871eab7e70878111eeedb8164fe267f5cc56cd9eb4225ed71c8966aa6 languageName: node linkType: hard @@ -8188,9 +8188,9 @@ __metadata: languageName: node linkType: hard -"terser@npm:^5.24.0": - version: 5.24.0 - resolution: "terser@npm:5.24.0" +"terser@npm:^5.25.0": + version: 5.25.0 + resolution: "terser@npm:5.25.0" dependencies: "@jridgewell/source-map": "npm:^0.3.3" acorn: "npm:^8.8.2" @@ -8198,7 +8198,7 @@ __metadata: source-map-support: "npm:~0.5.20" bin: terser: bin/terser - checksum: bd7ba6bfef58f8c179592894923c8c933d980e17287d3f2a9927550be853d1601beebb724cf015929599b32945641c44f9c3db8dd242c7933af3830bcb853510 + checksum: 820623b22b7f04e207ca08643d1ba15a0f9e3c1e67b1727d82fe6292f4393b6a1dd08f459c3463fd3eeefa2b9eb12322bdef2f11940c46e0763922624a9b4e0c languageName: node linkType: hard @@ -8614,13 +8614,13 @@ __metadata: languageName: node linkType: hard -"vite@npm:^5.0.4": - version: 5.0.4 - resolution: "vite@npm:5.0.4" +"vite@npm:^5.0.5": + version: 5.0.5 + resolution: "vite@npm:5.0.5" dependencies: esbuild: "npm:^0.19.3" fsevents: "npm:~2.3.3" - postcss: "npm:^8.4.31" + postcss: "npm:^8.4.32" rollup: "npm:^4.2.0" peerDependencies: "@types/node": ^18.0.0 || >=20.0.0 @@ -8650,7 +8650,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 3d1726e5ee09c99ca8f57ebb34428ceb23e51705cd9e39ee97cb123870caaff1e65fbeaed00658f8112dd6ac658e90cd020bd33c090ecd190fb962e43cc8d64c + checksum: f4cd6e6e38448bdb6dd4dc36c0b34a5c42944d88961b9df246e75a4c3237196b1c64b1afc563524405d1fe3f34e728b9dbfd8cbc5af4e0a03371033d8057fdfe languageName: node linkType: hard diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 2aeacae10..a0ac01871 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -232,8 +232,14 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const DeviceValueTAG::TAG_DEVICE_DATA, &boilHystOff_, DeviceValueType::INT, FL_(boilHystOff), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_hyst_off), 0, 20); register_device_value( DeviceValueTAG::TAG_DEVICE_DATA, &boil2HystOn_, DeviceValueType::INT, FL_(boil2HystOn), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_hyst2_on), -20, 0); - register_device_value( - DeviceValueTAG::TAG_DEVICE_DATA, &boil2HystOff_, DeviceValueType::INT, FL_(boil2HystOff), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_hyst2_off), 0, 20); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &boil2HystOff_, + DeviceValueType::INT, + FL_(boil2HystOff), + DeviceValueUOM::DEGREES_R, + MAKE_CF_CB(set_hyst2_off), + 0, + 20); } register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &heatingActivated_, @@ -470,7 +476,12 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &nrgSuppCooling_, DeviceValueType::ULONG, FL_(nrgSuppCooling), DeviceValueUOM::KWH); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &nrgSuppPool_, DeviceValueType::ULONG, FL_(nrgSuppPool), DeviceValueUOM::KWH); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpPower_, DeviceValueType::UINT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(hpPower), DeviceValueUOM::KW); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpMaxPower_, DeviceValueType::UINT, FL_(hpMaxPower), DeviceValueUOM::PERCENT, MAKE_CF_CB(set_hpMaxPower)); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &hpMaxPower_, + DeviceValueType::UINT, + FL_(hpMaxPower), + DeviceValueUOM::PERCENT, + MAKE_CF_CB(set_hpMaxPower)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpCompOn_, DeviceValueType::BOOL, FL_(hpCompOn), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpActivity_, DeviceValueType::ENUM, FL_(enum_hpactivity), FL_(hpActivity), DeviceValueUOM::NONE); // register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpHeatingOn_, DeviceValueType::BOOL, FL_(hpHeatingOn), DeviceValueUOM::NONE); @@ -731,7 +742,13 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const DeviceValueUOM::NONE, MAKE_CF_CB(set_elHeatStep3)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpEA0_, DeviceValueType::BOOL, FL_(hpEA0), DeviceValueUOM::NONE); - register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpPumpMode_, DeviceValueType::ENUM, FL_(enum_hpPumpMode), FL_(hpPumpMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_hpPumpMode)); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &hpPumpMode_, + DeviceValueType::ENUM, + FL_(enum_hpPumpMode), + FL_(hpPumpMode), + DeviceValueUOM::NONE, + MAKE_CF_CB(set_hpPumpMode)); // heatpump DHW settings register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &wwAlternatingOper_,