From: M Valla <12682715+mvalla@users.noreply.github.com> Date: Mon, 18 Mar 2024 10:49:43 +0000 (+0100) Subject: [openwebnet] Thermo: Fixed handling of mode=AUTO for bus_thermo_zone (#16534) X-Git-Url: https://git.basschouten.com/?a=commitdiff_plain;h=26fd8c65288580d48179600c5ab40fa3693c2ad9;p=openhab-addons.git [openwebnet] Thermo: Fixed handling of mode=AUTO for bus_thermo_zone (#16534) * [openwebnet] improved Thermo mode/weekly/scenario channels descriptions * [openwebnet] Fixed handling of mode=AUTO for bus_thermo_zone Fixes #13754 --------- Signed-off-by: Massimo Valla --- diff --git a/bundles/org.openhab.binding.openwebnet/README.md b/bundles/org.openhab.binding.openwebnet/README.md index 84184b447d..e076f49e13 100644 --- a/bundles/org.openhab.binding.openwebnet/README.md +++ b/bundles/org.openhab.binding.openwebnet/README.md @@ -44,7 +44,7 @@ The following Things and OpenWebNet `WHOs` are supported: | Gateway Management | `13` | `bus_gateway` | Any IP gateway supporting OpenWebNet protocol should work | Successfully tested: F452, F453, F453AV,F454, F455, MyHOMEServer1, MyHOME_Screen10, MyHOME_Screen3,5, MH201, MH202, MH200N. Some connection stability issues/gateway resets reported with MH202  | | Lighting | `1` | `bus_on_off_switch`, `bus_dimmer` | BUS switches and dimmers | Successfully tested: F411/2, F411/4, F411U2, F422, F429. Some discovery issues reported with F429 (DALI Dimmers) | | Automation | `2` | `bus_automation` | BUS roller shutters, with position feedback and auto-calibration | Successfully tested: LN4672M2 | -| Temperature Control | `4` | `bus_thermo_zone`, `bus_thermo_sensor`, `bus_thermo_cu` | Thermo zones management and temperature sensors (probes) | Successfully tested: H/LN4691, HS4692, KG4691; thermo sensors: L/N/NT4577 + 3455; Central Units (4 or 99 zones) are not fully supported yet. See [Channels - Thermo](#configuring-thermo) for more details | +| Temperature Control | `4` | `bus_thermo_zone`, `bus_thermo_sensor`, `bus_thermo_cu` | Thermo zones management and temperature sensors (probes) | Successfully tested: H/LN4691, HS4692, KG4691; thermo sensors: L/N/NT4577 + 3455. Partially tested: Central Units 4-zones (models L/N/NT/HD/HC/HS4695) and 99-zones (model 3550). See [Channels - Thermo](#configuring-thermo) for more details | | Alarm | `5` | `bus_alarm_system`, `bus_alarm_zone` | BUS Alarm system and zones | Successfully tested: Burglar-alarm Unit 3486 | | Auxiliary (AUX) | `9` | `bus_aux` | AUX commands | Successfully tested: AUX configured for Burglar-alarm Unit 3486. **Only sending AUX commands is supported** | | Basic, CEN & CEN+ Scenarios | `0`, `15`, `25` | `bus_scenario_control`, `bus_cen_scenario_control`, `bus_cenplus_scenario_control` | Basic and CEN/CEN+ Scenarios events and virtual activation | Successfully tested: CEN/CEN+ scenario control: HC/HD/HS/L/N/NT4680 and basic scenario modules F420/IR3456 + L4680 (WHO=0) | @@ -159,11 +159,12 @@ Temperature sensors can be configured defining a `bus_thermo_sensor` Thing with - example sensor `5` of external zone `00` --> `where="500"` - example: slave sensor `3` of zone `2` --> `where="302"` -The (optional) Central Unit can be configured defining a `bus_themo_cu` Thing with the `where` configuration parameter (`OpenWebNet Address`) set to `where="#0"` for a 99-zone Central Unit or `where="#0#1"` for a 4-zone Central Unit configured as zone 1. +The (optional) Central Unit can be configured defining a `bus_themo_cu` Thing with the `where` configuration parameter (`OpenWebNet Address`) set to `where="#0"` for a 99-zone Central Unit (model 3550) or `where="#0#1"` for a 4-zone Central Unit (models L/N/NT/HD/HC/HS 4695) configured as zone 1. -##### Thermo Central Unit integration missing points +##### Thermo Central Unit integration known limitations - Read setPoint temperature and current mode +- Central Unit Programming and Customisations settings (T1/2/3 temperature levels, date & time, weekly/scenarios/holiday programming, etc.) - Holiday/Vacation activation command #### Configuring Alarm and Auxiliary (AUX) @@ -244,7 +245,7 @@ OPEN command to execute: *5*8#134## | `temperature` | `bus_thermo_zone`, `bus_thermo_sensor` | Number:Temperature | The zone currently sensed temperature | R | N | | `setpointTemperature` | `bus_thermo_zone`, `bus_thermo_cu` | Number:Temperature | The zone or Central Unit setpoint temperature | R/W | N | | `function` | `bus_thermo_zone`, `bus_thermo_cu` | String | The zone set thermo function (`COOLING`, `HEATING`, `GENERIC`) or the Central Unit thermo function (`COOLING`, `HEATING`) | R/W | N | -| `mode` | `bus_thermo_zone`, `bus_thermo_cu` | String | The zone set mode (`MANUAL`, `PROTECTION`, `OFF`) or the Central Unit set mode ( `MANUAL`, `PROTECTION`, `OFF`, `WEEKLY`, `SCENARIO`) | R/W | N | +| `mode` | `bus_thermo_zone`, `bus_thermo_cu` | String | The zone set mode (`AUTO`, `MANUAL`, `PROTECTION`, `OFF`) or the Central Unit set mode (`WEEKLY`, `SCENARIO`, `MANUAL`, `PROTECTION`, `OFF`) | R/W | N | | `speedFanCoil` | `bus_thermo_zone` | String | The zone fancoil speed: `AUTO`, `SPEED_1`, `SPEED_2`, `SPEED_3` | R/W | N | | `actuators` | `bus_thermo_zone` | String | The zone actuator(s) status: `OFF`, `ON`, `OPENED`, `CLOSED` , `STOP`, `OFF_FAN_COIL`, `ON_SPEED_1`, `ON_SPEED_2`, `ON_SPEED_3`, `OFF_SPEED_1`, `OFF_SPEED_2`, `OFF_SPEED_3` | R | Y | | `heatingValves` | `bus_thermo_zone` | String | The zone heating valve(s) status: `OFF`, `ON`, `OPENED`, `CLOSED` , `STOP`, `OFF_FAN_COIL`, `ON_SPEED_1`, `ON_SPEED_2`, `ON_SPEED_3`, `OFF_SPEED_1`, `OFF_SPEED_2`, `OFF_SPEED_3` | R | Y | @@ -252,8 +253,8 @@ OPEN command to execute: *5*8#134## | `localOffset` | `bus_thermo_zone` | String | The zone local offset status: `OFF`, `PROTECTION`, `MINUS_3`, `MINUS_2` , `MINUS_1`, `NORMAL`, `PLUS_1`, `PLUS_2`, `PLUS_3` | R | Y | | `remoteControl` | `bus_thermo_cu` | String | The Central Unit Remote Control status: `ENABLED`, `DISABLED` | R | Y | | `batteryStatus` | `bus_thermo_cu` | String | The Central Unit Battery status: `OK`, `KO` | R | Y | -| `weeklyProgram` | `bus_thermo_cu` | Number | The program number (`1`, `2`, `3`) when Central Unit mode is `WEEKLY` | R/W | N | -| `scenarioProgram` | `bus_thermo_cu` | Number | The program number (`1`, `2`, ... , `16`) when Central Unit mode is `SCENARIO` | R/W | N | +| `weeklyProgram` | `bus_thermo_cu` | Number | The weekly program number (`1`, `2`, `3`) when Central Unit mode is `WEEKLY` | R/W | N | +| `scenarioProgram` | `bus_thermo_cu` | Number | The scenario program number (`1`, `2`, ... , `16`) when Central Unit mode is `SCENARIO` | R/W | N | | `failureDiscovered` | `bus_thermo_cu` | Switch | Indicates if a Failure was discovered by the Central Unit: `ON`, `OFF` | R | Y | | `atLeastOneProbeOff` | `bus_thermo_cu` | Switch | Indicates if at least one probe is in OFF mode: `ON`, `OFF` | R | Y | | `atLeastOneProbeProtection` | `bus_thermo_cu` | Switch | Indicates if at least one probe is in PROTECTION mode: `ON`, `OFF` | R | Y | @@ -305,16 +306,16 @@ See [openwebnet.sitemap](#openwebnet-sitemap) & [openwebnet.rules](#openwebnet-r - `EXTENDED_PRESS` - sent after `START_EXTENDED_PRESS` if you keep the button pressed longer; will be sent again every 0,5sec as long as you hold pressed (good for rules involving dimming/volume) - `RELEASE_EXTENDED_PRESS` - sent once when you finally release the button after having it pressed longer than 0,5sec -#### `mode` for values WEEKLY and SCENARIO (thermo Central Unit) +#### Thermo Central Unit `mode`: `WEEKLY` and `SCENARIO` There are three WEEKLY and sixteen SCENARIO programs defined for the thermo Central Unit. -In order to activate one of them you have to use two different channels: +In order to activate one specific weekly or scenario program two different channels must be used: -- with `mode` you can set the mode (`WEEKLY` or `SCENARIO`) -- with `weeklyProgram` (if `WEEKLY` was set) or with `scenarioProgram` (if `SCENARIO` was set) you can set the program number +- with the `mode` channel it's possible to set the mode (`WEEKLY` or `SCENARIO`) +- with `weeklyProgram` (if `WEEKLY` was set) or `scenarioProgram` (if `SCENARIO` was set) channels you can set the specific weekly/scenario program number -Example: if you want to activate SCENARIO number 9 on the thermo Central Unit you have to set `mode` = `SCENARIO` and `scenarioProgram` = `9`. +Example: if you want to activate SCENARIO number 9 on the thermo Central Unit you have to set channel `mode` = `SCENARIO` and channel `scenarioProgram` = `9`. ## Full Example diff --git a/bundles/org.openhab.binding.openwebnet/src/main/java/org/openhab/binding/openwebnet/internal/handler/OpenWebNetThermoregulationHandler.java b/bundles/org.openhab.binding.openwebnet/src/main/java/org/openhab/binding/openwebnet/internal/handler/OpenWebNetThermoregulationHandler.java index 8f2e37c36e..c0e6002717 100644 --- a/bundles/org.openhab.binding.openwebnet/src/main/java/org/openhab/binding/openwebnet/internal/handler/OpenWebNetThermoregulationHandler.java +++ b/bundles/org.openhab.binding.openwebnet/src/main/java/org/openhab/binding/openwebnet/internal/handler/OpenWebNetThermoregulationHandler.java @@ -87,6 +87,8 @@ public class OpenWebNetThermoregulationHandler extends OpenWebNetThingHandler { private static final String CU_REMOTE_CONTROL_DISABLED = "DISABLED"; private static final String CU_BATTERY_OK = "OK"; private static final String CU_BATTERY_KO = "KO"; + private static final String MODE_WEEKLY = "WEEKLY"; + private static final String MODE_AUTO = "AUTO"; public OpenWebNetThermoregulationHandler(Thing thing) { super(thing); @@ -253,7 +255,7 @@ public class OpenWebNetThermoregulationHandler extends OpenWebNetThingHandler { if (isCentralUnit && WhatThermo.isComplex(command.toString())) { int programNumber = 0; - if ("WEEKLY".equalsIgnoreCase(command.toString())) { + if (MODE_WEEKLY.equalsIgnoreCase(command.toString())) { programNumber = currentWeeklyPrgNum; } else { programNumber = currentScenarioPrgNum; @@ -261,7 +263,11 @@ public class OpenWebNetThermoregulationHandler extends OpenWebNetThingHandler { newMode = Thermoregulation.OperationMode.valueOf(command.toString() + "_" + programNumber); currentMode = newMode; } else { - newMode = Thermoregulation.OperationMode.valueOf(command.toString()); + if (MODE_AUTO.equalsIgnoreCase(command.toString())) { + newMode = Thermoregulation.OperationMode.PROGRAM; + } else { + newMode = Thermoregulation.OperationMode.valueOf(command.toString()); + } } send(Thermoregulation.requestWriteMode(getWhere(w.value()), newMode, currentFunction, currentSetPointTemp)); @@ -418,7 +424,13 @@ public class OpenWebNetThermoregulationHandler extends OpenWebNetThingHandler { // must convert from OperationMode to Mode and set ProgramNumber when necessary if (operationMode != null) { - updateState(CHANNEL_MODE, new StringType(operationMode.mode())); + String newMode; + if (operationMode == Thermoregulation.OperationMode.PROGRAM) { // translate PROGRAM -> AUTO + newMode = MODE_AUTO; + } else { + newMode = operationMode.mode(); + } + updateState(CHANNEL_MODE, new StringType(newMode)); Integer programN = 0; try { @Nullable diff --git a/bundles/org.openhab.binding.openwebnet/src/main/resources/OH-INF/i18n/openwebnet.properties b/bundles/org.openhab.binding.openwebnet/src/main/resources/OH-INF/i18n/openwebnet.properties index c73164cc12..f1b8c18200 100644 --- a/bundles/org.openhab.binding.openwebnet/src/main/resources/OH-INF/i18n/openwebnet.properties +++ b/bundles/org.openhab.binding.openwebnet/src/main/resources/OH-INF/i18n/openwebnet.properties @@ -143,11 +143,11 @@ channel-type.openwebnet.alarmZoneState.description = Alarm zone is active (ON) o channel-type.openwebnet.armedState.label = Armed State channel-type.openwebnet.armedState.description = Alarm is armed (ON) or disarmed (OFF) (read only). channel-type.openwebnet.atLeastOneProbeManual.label = At least one probe in MANUAL -channel-type.openwebnet.atLeastOneProbeManual.description = At least one probe in MANUAL indicator in Central Unit (read only) +channel-type.openwebnet.atLeastOneProbeManual.description = At least one probe in MANUAL mode indicator from Central Unit (read only) channel-type.openwebnet.atLeastOneProbeOff.label = At least one probe OFF -channel-type.openwebnet.atLeastOneProbeOff.description = At least one probe OFF indicator in Central Unit (read only) +channel-type.openwebnet.atLeastOneProbeOff.description = At least one probe in OFF mode indicator from Central Unit (read only) channel-type.openwebnet.atLeastOneProbeProtection.label = At least one probe in PROTECTION -channel-type.openwebnet.atLeastOneProbeProtection.description = At least one probe in PROTECTION (Antifreeze / Heat Protection) indicator in Central Unit (read only) +channel-type.openwebnet.atLeastOneProbeProtection.description = At least one probe in PROTECTION mode (Antifreeze / Heat Protection) indicator from Central Unit (read only) channel-type.openwebnet.aux.label = Auxiliary channel-type.openwebnet.aux.description = Controls an Auxiliary command (read/write) channel-type.openwebnet.aux.state.option.OFF = Off @@ -200,8 +200,8 @@ channel-type.openwebnet.function.state.option.COOLING = Cooling channel-type.openwebnet.function.state.option.GENERIC = Generic channel-type.openwebnet.functionCentralUnit.label = Thermo Function channel-type.openwebnet.functionCentralUnit.description = Thermo function of the Central Unit (read only) -channel-type.openwebnet.functionCentralUnit.state.option.HEATING = Heating -channel-type.openwebnet.functionCentralUnit.state.option.COOLING = Cooling +channel-type.openwebnet.functionCentralUnit.state.option.HEATING = Winter +channel-type.openwebnet.functionCentralUnit.state.option.COOLING = Summer channel-type.openwebnet.heatingValves.label = Heating Valves channel-type.openwebnet.heatingValves.description = Heating Valves status (read only) channel-type.openwebnet.heatingValves.state.option.OFF = Off @@ -223,23 +223,23 @@ channel-type.openwebnet.localOffset.state.option.PROTECTION = Antifreeze / Heat channel-type.openwebnet.localOffset.state.option.PLUS_3 = +3 channel-type.openwebnet.localOffset.state.option.PLUS_2 = +2 channel-type.openwebnet.localOffset.state.option.PLUS_1 = +1 -channel-type.openwebnet.localOffset.state.option.NORMAL = 0 +channel-type.openwebnet.localOffset.state.option.NORMAL = No offset channel-type.openwebnet.localOffset.state.option.MINUS_1 = -1 channel-type.openwebnet.localOffset.state.option.MINUS_2 = -2 channel-type.openwebnet.localOffset.state.option.MINUS_3 = -3 channel-type.openwebnet.mode.label = Mode channel-type.openwebnet.mode.description = Set mode of the zone (read/write) +channel-type.openwebnet.mode.state.option.AUTO = Automatic channel-type.openwebnet.mode.state.option.MANUAL = Manual channel-type.openwebnet.mode.state.option.PROTECTION = Antifreeze / Heat Protection channel-type.openwebnet.mode.state.option.OFF = Off -channel-type.openwebnet.mode.state.option.AUTO = Automatic channel-type.openwebnet.modeCentralUnit.label = Central Unit Mode channel-type.openwebnet.modeCentralUnit.description = Set mode of the Central Unit (read/write) +channel-type.openwebnet.modeCentralUnit.state.option.WEEKLY = Weekly +channel-type.openwebnet.modeCentralUnit.state.option.SCENARIO = Scenarios channel-type.openwebnet.modeCentralUnit.state.option.MANUAL = Manual channel-type.openwebnet.modeCentralUnit.state.option.PROTECTION = Antifreeze / Heat Protection channel-type.openwebnet.modeCentralUnit.state.option.OFF = Off -channel-type.openwebnet.modeCentralUnit.state.option.WEEKLY = Weekly -channel-type.openwebnet.modeCentralUnit.state.option.SCENARIO = Scenario channel-type.openwebnet.power.label = Power channel-type.openwebnet.power.description = Current active power channel-type.openwebnet.remoteControl.label = Remote Control @@ -250,22 +250,22 @@ channel-type.openwebnet.scenarioEvent.label = Activated Scenario Event channel-type.openwebnet.scenarioEvent.description = Event corresponding to the number of Basic Scenario that has been activated (read only) channel-type.openwebnet.scenarioProgramCentralUnit.label = Scenario Program Number channel-type.openwebnet.scenarioProgramCentralUnit.description = Set scenario program number for the Central Unit, valid only with Central Unit mode = "SCENARIO" (read/write) -channel-type.openwebnet.scenarioProgramCentralUnit.state.option.1 = Program 1 -channel-type.openwebnet.scenarioProgramCentralUnit.state.option.2 = Program 2 -channel-type.openwebnet.scenarioProgramCentralUnit.state.option.3 = Program 3 -channel-type.openwebnet.scenarioProgramCentralUnit.state.option.4 = Program 4 -channel-type.openwebnet.scenarioProgramCentralUnit.state.option.5 = Program 5 -channel-type.openwebnet.scenarioProgramCentralUnit.state.option.6 = Program 6 -channel-type.openwebnet.scenarioProgramCentralUnit.state.option.7 = Program 7 -channel-type.openwebnet.scenarioProgramCentralUnit.state.option.8 = Program 8 -channel-type.openwebnet.scenarioProgramCentralUnit.state.option.9 = Program 9 -channel-type.openwebnet.scenarioProgramCentralUnit.state.option.10 = Program 10 -channel-type.openwebnet.scenarioProgramCentralUnit.state.option.11 = Program 11 -channel-type.openwebnet.scenarioProgramCentralUnit.state.option.12 = Program 12 -channel-type.openwebnet.scenarioProgramCentralUnit.state.option.13 = Program 13 -channel-type.openwebnet.scenarioProgramCentralUnit.state.option.14 = Program 14 -channel-type.openwebnet.scenarioProgramCentralUnit.state.option.15 = Program 15 -channel-type.openwebnet.scenarioProgramCentralUnit.state.option.16 = Program 16 +channel-type.openwebnet.scenarioProgramCentralUnit.state.option.1 = Scenario 1 +channel-type.openwebnet.scenarioProgramCentralUnit.state.option.2 = Scenario 2 +channel-type.openwebnet.scenarioProgramCentralUnit.state.option.3 = Scenario 3 +channel-type.openwebnet.scenarioProgramCentralUnit.state.option.4 = Scenario 4 +channel-type.openwebnet.scenarioProgramCentralUnit.state.option.5 = Scenario 5 +channel-type.openwebnet.scenarioProgramCentralUnit.state.option.6 = Scenario 6 +channel-type.openwebnet.scenarioProgramCentralUnit.state.option.7 = Scenario 7 +channel-type.openwebnet.scenarioProgramCentralUnit.state.option.8 = Scenario 8 +channel-type.openwebnet.scenarioProgramCentralUnit.state.option.9 = Scenario 9 +channel-type.openwebnet.scenarioProgramCentralUnit.state.option.10 = Scenario 10 +channel-type.openwebnet.scenarioProgramCentralUnit.state.option.11 = Scenario 11 +channel-type.openwebnet.scenarioProgramCentralUnit.state.option.12 = Scenario 12 +channel-type.openwebnet.scenarioProgramCentralUnit.state.option.13 = Scenario 13 +channel-type.openwebnet.scenarioProgramCentralUnit.state.option.14 = Scenario 14 +channel-type.openwebnet.scenarioProgramCentralUnit.state.option.15 = Scenario 15 +channel-type.openwebnet.scenarioProgramCentralUnit.state.option.16 = Scenario 16 channel-type.openwebnet.setpointTemperature.label = Setpoint Temperature channel-type.openwebnet.setpointTemperature.description = Setpoint temperature (read/write) channel-type.openwebnet.shutter.label = Roller Shutter @@ -283,9 +283,9 @@ channel-type.openwebnet.temperature.label = Temperature channel-type.openwebnet.temperature.description = Current temperature (read only) channel-type.openwebnet.weeklyProgramCentralUnit.label = Weekly Program Number channel-type.openwebnet.weeklyProgramCentralUnit.description = Set weekly program number for the Central Unit, valid only with Central Unit mode = "WEEKLY" (read/write) -channel-type.openwebnet.weeklyProgramCentralUnit.state.option.1 = Program 1 -channel-type.openwebnet.weeklyProgramCentralUnit.state.option.2 = Program 2 -channel-type.openwebnet.weeklyProgramCentralUnit.state.option.3 = Program 3 +channel-type.openwebnet.weeklyProgramCentralUnit.state.option.1 = Weekly Program 1 +channel-type.openwebnet.weeklyProgramCentralUnit.state.option.2 = Weekly Program 2 +channel-type.openwebnet.weeklyProgramCentralUnit.state.option.3 = Weekly Program 3 channel-type.openwebnet.zoneAlarm.label = Zone Alarm channel-type.openwebnet.zoneAlarm.description = Current alarm for the zone (read only). channel-type.openwebnet.zoneAlarm.state.option.INTRUSION = Intrusion diff --git a/bundles/org.openhab.binding.openwebnet/src/main/resources/OH-INF/thing/BusThermoCentralUnit.xml b/bundles/org.openhab.binding.openwebnet/src/main/resources/OH-INF/thing/BusThermoCentralUnit.xml index edcf2711d3..e7c0815348 100644 --- a/bundles/org.openhab.binding.openwebnet/src/main/resources/OH-INF/thing/BusThermoCentralUnit.xml +++ b/bundles/org.openhab.binding.openwebnet/src/main/resources/OH-INF/thing/BusThermoCentralUnit.xml @@ -31,7 +31,7 @@ BTicino/Legrand - BTicino Central Unit 3550 (99 zones) or BTI-L/NT/HC/4695 (4 zones) + BTicino Central Unit 3550 (99 zones) or L/N/NT/HD/HC/HS4695 (4 zones) 430 diff --git a/bundles/org.openhab.binding.openwebnet/src/main/resources/OH-INF/thing/channels.xml b/bundles/org.openhab.binding.openwebnet/src/main/resources/OH-INF/thing/channels.xml index 1d0fba1a1a..37732d63b5 100644 --- a/bundles/org.openhab.binding.openwebnet/src/main/resources/OH-INF/thing/channels.xml +++ b/bundles/org.openhab.binding.openwebnet/src/main/resources/OH-INF/thing/channels.xml @@ -95,8 +95,8 @@ Thermo function of the Central Unit (read only) - - + + @@ -119,10 +119,10 @@ Set mode of the zone (read/write) + - @@ -219,7 +219,7 @@ - + @@ -233,11 +233,11 @@ Set mode of the Central Unit (read/write) + + - - @@ -248,9 +248,9 @@ Set weekly program number for the Central Unit, valid only with Central Unit mode = "WEEKLY" (read/write) - - - + + + @@ -262,22 +262,22 @@ (read/write) - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -316,21 +316,22 @@ Switch - At least one probe OFF indicator in Central Unit (read only) + At least one probe in OFF mode indicator from Central Unit (read only) Switch - At least one probe in PROTECTION (Antifreeze / Heat Protection) indicator in Central Unit (read only) + At least one probe in PROTECTION mode (Antifreeze / Heat Protection) indicator from Central Unit (read + only) Switch - At least one probe in MANUAL indicator in Central Unit (read only) + At least one probe in MANUAL mode indicator from Central Unit (read only)