]> git.basschouten.com Git - openhab-addons.git/commitdiff
[openwebnet] added channel "function" for Central Unit (#12483)
authorConte Andrea <andrea@conte.com>
Wed, 16 Mar 2022 18:10:46 +0000 (19:10 +0100)
committerGitHub <noreply@github.com>
Wed, 16 Mar 2022 18:10:46 +0000 (19:10 +0100)
* added channel "function" for Central Unit

Signed-off-by: Conte Andrea <andrea@conte.com>
bundles/org.openhab.binding.openwebnet/README.md
bundles/org.openhab.binding.openwebnet/src/main/java/org/openhab/binding/openwebnet/internal/handler/OpenWebNetThermoregulationHandler.java
bundles/org.openhab.binding.openwebnet/src/main/resources/OH-INF/thing/BusThermoCentralUnit.xml
bundles/org.openhab.binding.openwebnet/src/main/resources/OH-INF/thing/channels.xml

index 8bf44fa5ae4fcd14f23ebce8e12fb90e2dc4bba9..0124e26b0efc12b9833c3a1b5d81a1b21505e9e9 100644 (file)
@@ -176,8 +176,8 @@ The (optional) Central Unit can be configured defining a `bus_themo_cu` Thing.
 | Channel Type ID (channel ID) | Applies to Thing Type IDs              | Item Type          | Description                                                                                                                                                                             | Read/Write | Advanced |
 | ---------------------------- | -------------------------------------- | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------: | :------: |
 | `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`                      | String             | The zone set thermo function: `COOLING`, `HEATING` or `GENERIC` (heating + cooling)                                                                                                     | R/W        | 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        |
 | `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        |
index 340f6a342be44b7a3b8c04ed60313d003b410938..f9af4e14a39868eac9035fd954159f02be722665 100644 (file)
@@ -280,9 +280,9 @@ public class OpenWebNetThermoregulationHandler extends OpenWebNetThingHandler {
         super.handleMessage(msg);
 
         if (isCentralUnit) {
-            if (msg.isCommand()) {
-                updateModeAndFunction((Thermoregulation) msg);
-            }
+            // there isn't a message used for setting OK for battery status so let's assume
+            // it's OK and then change to KO if according message is received
+            updateCUBatteryStatus(CU_BATTERY_OK);
 
             if (msg.getWhat() == Thermoregulation.WhatThermo.REMOTE_CONTROL_DISABLED) {
                 updateCURemoteControlStatus(CU_REMOTE_CONTROL_DISABLED);
@@ -290,8 +290,21 @@ public class OpenWebNetThermoregulationHandler extends OpenWebNetThingHandler {
                 updateCURemoteControlStatus(CU_REMOTE_CONTROL_ENABLED);
             } else if (msg.getWhat() == Thermoregulation.WhatThermo.BATTERY_KO) {
                 updateCUBatteryStatus(CU_BATTERY_KO);
+            } // must intercept all possibile WHATs (will be implemented soon)
+            else if (msg.getWhat() == Thermoregulation.WhatThermo.AT_LEAST_ONE_PROBE_OFF) {
+                logger.debug("handleMessage() Ignoring unsupported WHAT {}. Frame={}", msg.getWhat(), msg);
+            } else if (msg.getWhat() == Thermoregulation.WhatThermo.AT_LEAST_ONE_PROBE_ANTIFREEZE) {
+                logger.debug("handleMessage() Ignoring unsupported WHAT {}. Frame={}", msg.getWhat(), msg);
+            } else if (msg.getWhat() == Thermoregulation.WhatThermo.AT_LEAST_ONE_PROBE_MANUAL) {
+                logger.debug("handleMessage() Ignoring unsupported WHAT {}. Frame={}", msg.getWhat(), msg);
+            } else if (msg.getWhat() == Thermoregulation.WhatThermo.FAILURE_DISCOVERED) {
+                logger.debug("handleMessage() Ignoring unsupported WHAT {}. Frame={}", msg.getWhat(), msg);
+            } else if (msg.getWhat() == Thermoregulation.WhatThermo.RELEASE_SENSOR_LOCAL_ADJUST) {
+                logger.debug("handleMessage() Ignoring unsupported WHAT {}. Frame={}", msg.getWhat(), msg);
+            } else {
+                // check and eventually parse mode and function
+                updateModeAndFunction((Thermoregulation) msg);
             }
-
             return;
         }
 
@@ -439,9 +452,6 @@ public class OpenWebNetThermoregulationHandler extends OpenWebNetThingHandler {
             // TODO: 4 zone central -> zone #0 CAN be also a zone with its temp.. with 99-zones central no!
             // let's assume it's a 99 zone
             try {
-                // there isn't a message used for setting OK for battery status so let's assume
-                // it's OK and then change to KO if according message is received
-                updateCUBatteryStatus(CU_BATTERY_OK);
                 send(Thermoregulation.requestStatus("#0"));
             } catch (OWNException e) {
                 logger.warn("refreshDevice() central unit returned OWNException {}", e.getMessage());
index 8f77cedf3dda9225206c7bab018b6eb8f3a091fd..e893e628470f7d1b33a2b8719aba683508d42d4d 100644 (file)
@@ -17,6 +17,7 @@
                        <!-- read only -->
                        <channel id="remoteControl" typeId="remoteControl"/>
                        <channel id="batteryStatus" typeId="batteryStatus"/>
+                       <channel id="function" typeId="functionCentralUnit"/>
                        <!-- read/write -->
                        <channel id="setpointTemperature" typeId="setpointTemperature"/>
                        <channel id="mode" typeId="modeCentralUnit"/>
index a2b4c2343e2b96cb72b8e11f555a93be18e05bc1..fafa4086ed2b162ee24d75e32d4d532438045831 100644 (file)
                </state>
        </channel-type>
 
+       <channel-type id="functionCentralUnit">
+               <item-type>String</item-type>
+               <label>Thermo Function</label>
+               <description>Thermo function of the Central Unit</description>
+               <state readOnly="true">
+                       <options>
+                               <option value="HEATING">Heating</option>
+                               <option value="COOLING">Cooling</option>
+                       </options>
+               </state>
+       </channel-type>
+
        <channel-type id="setpointTemperature">
                <item-type>Number:Temperature</item-type>
                <label>Setpoint Temperature</label>