From: Andrew Fiddian-Green Date: Mon, 21 Oct 2024 21:55:50 +0000 (+0100) Subject: [tado] Add channel for remaining time of open window override (#17576) X-Git-Url: https://git.basschouten.com/?a=commitdiff_plain;h=87023bdfef5fce93e8374dc811d175b3d5c91230;p=openhab-addons.git [tado] Add channel for remaining time of open window override (#17576) * [tado] Add open window override remaining time channel Signed-off-by: AndrewFG --- diff --git a/bundles/org.openhab.binding.tado/README.md b/bundles/org.openhab.binding.tado/README.md index 568180c241..90973abe84 100644 --- a/bundles/org.openhab.binding.tado/README.md +++ b/bundles/org.openhab.binding.tado/README.md @@ -79,7 +79,8 @@ Name | Type | Description | Read/Write | Zone type `verticalSwing`2) | String | Vertical swing state, one of 3) `OFF`, `ON`, `UP`, `MID_UP`, `MID`, `MID_DOWN`, `DOWN`, `AUTO` | RW | `AC` `horizontalSwing`2) | String | Horizontal swing state, one of 3) `OFF`, `ON`, `LEFT`, `MID_LEFT`, `MID`, `MID_RIGHT`, `RIGHT`, `AUTO` | RW | `AC` `batteryLowAlarm` | Switch | A control device in the Zone has a low battery | R | Any Zone -`openWindowDetected` | Switch | An open window has been detected in the Zone | R | Any Zone +`openWindowDetected` | Switch | An open window has been detected in the Zone | R | `HEATING`, `AC` +`openWindowRemainingTime` | Number:Time | The remaining Open Window heating/cooling Override time in the Zone | R | `HEATING`, `AC` `light` | Switch | State (`ON`, `OFF`) of the control panel light | RW | `AC` You will see some of the above mentioned Channels only if your tado° device supports the respective function. diff --git a/bundles/org.openhab.binding.tado/src/main/java/org/openhab/binding/tado/internal/TadoBindingConstants.java b/bundles/org.openhab.binding.tado/src/main/java/org/openhab/binding/tado/internal/TadoBindingConstants.java index b92792b95b..eb7101128b 100644 --- a/bundles/org.openhab.binding.tado/src/main/java/org/openhab/binding/tado/internal/TadoBindingConstants.java +++ b/bundles/org.openhab.binding.tado/src/main/java/org/openhab/binding/tado/internal/TadoBindingConstants.java @@ -130,6 +130,8 @@ public class TadoBindingConstants { public static final String CHANNEL_ZONE_BATTERY_LOW_ALARM = "batteryLowAlarm"; // open window detected channel public static final String CHANNEL_ZONE_OPEN_WINDOW_DETECTED = "openWindowDetected"; + // open window heating/cooling override remaining time channel + public static final String CHANNEL_ZONE_OPEN_WINDOW_REMAINING_TIME = "openWindowRemainingTime"; public static final String CHANNEL_MOBILE_DEVICE_AT_HOME = "atHome"; diff --git a/bundles/org.openhab.binding.tado/src/main/java/org/openhab/binding/tado/internal/adapter/TadoZoneStateAdapter.java b/bundles/org.openhab.binding.tado/src/main/java/org/openhab/binding/tado/internal/adapter/TadoZoneStateAdapter.java index fcc4d030d5..b70d229ff6 100644 --- a/bundles/org.openhab.binding.tado/src/main/java/org/openhab/binding/tado/internal/adapter/TadoZoneStateAdapter.java +++ b/bundles/org.openhab.binding.tado/src/main/java/org/openhab/binding/tado/internal/adapter/TadoZoneStateAdapter.java @@ -31,6 +31,7 @@ import org.openhab.binding.tado.swagger.codegen.api.model.CoolingZoneSetting; import org.openhab.binding.tado.swagger.codegen.api.model.GenericZoneSetting; import org.openhab.binding.tado.swagger.codegen.api.model.HeatingZoneSetting; import org.openhab.binding.tado.swagger.codegen.api.model.HotWaterZoneSetting; +import org.openhab.binding.tado.swagger.codegen.api.model.OpenWindow; import org.openhab.binding.tado.swagger.codegen.api.model.Overlay; import org.openhab.binding.tado.swagger.codegen.api.model.OverlayTerminationConditionType; import org.openhab.binding.tado.swagger.codegen.api.model.PercentageDataPoint; @@ -262,6 +263,18 @@ public class TadoZoneStateAdapter { return OnOffType.OFF; } + public State getOpenWindowRemainingTime() { + int seconds = 0; + OpenWindow openWindow = zoneState.getOpenWindow(); + if (openWindow != null) { + Integer remainingSeconds = openWindow.getRemainingTimeInSeconds(); + if (remainingSeconds != 0) { + seconds = remainingSeconds.intValue(); + } + } + return new QuantityType<>(seconds, Units.SECOND); + } + public State getLight() { if (zoneState.getSetting().getType() == TadoSystemType.AIR_CONDITIONING) { Power result = ((CoolingZoneSetting) zoneState.getSetting()).getLight(); diff --git a/bundles/org.openhab.binding.tado/src/main/java/org/openhab/binding/tado/internal/handler/TadoZoneHandler.java b/bundles/org.openhab.binding.tado/src/main/java/org/openhab/binding/tado/internal/handler/TadoZoneHandler.java index 37078ed17a..082b635d7f 100644 --- a/bundles/org.openhab.binding.tado/src/main/java/org/openhab/binding/tado/internal/handler/TadoZoneHandler.java +++ b/bundles/org.openhab.binding.tado/src/main/java/org/openhab/binding/tado/internal/handler/TadoZoneHandler.java @@ -350,6 +350,9 @@ public class TadoZoneHandler extends BaseHomeThingHandler { updateState(TadoBindingConstants.CHANNEL_ZONE_OPEN_WINDOW_DETECTED, state.getOpenWindowDetected()); + updateState(TadoBindingConstants.CHANNEL_ZONE_OPEN_WINDOW_REMAINING_TIME, + state.getOpenWindowRemainingTime()); + updateDynamicStateDescriptions(zoneState); onSuccessfulOperation(); @@ -514,6 +517,8 @@ public class TadoZoneHandler extends BaseHomeThingHandler { capabilitiesSupport.batteryLowAlarm()); removeListProcessChannel(removeList, TadoBindingConstants.CHANNEL_ZONE_OPEN_WINDOW_DETECTED, capabilitiesSupport.openWindow()); + removeListProcessChannel(removeList, TadoBindingConstants.CHANNEL_ZONE_OPEN_WINDOW_REMAINING_TIME, + capabilitiesSupport.openWindow()); removeListProcessChannel(removeList, TadoBindingConstants.CHANNEL_ZONE_LIGHT, capabilitiesSupport.light()); removeListProcessChannel(removeList, TadoBindingConstants.CHANNEL_ZONE_HORIZONTAL_SWING, capabilitiesSupport.horizontalSwing()); diff --git a/bundles/org.openhab.binding.tado/src/main/resources/OH-INF/i18n/tado.properties b/bundles/org.openhab.binding.tado/src/main/resources/OH-INF/i18n/tado.properties index b9d79d3bb0..defbd588d3 100644 --- a/bundles/org.openhab.binding.tado/src/main/resources/OH-INF/i18n/tado.properties +++ b/bundles/org.openhab.binding.tado/src/main/resources/OH-INF/i18n/tado.properties @@ -84,6 +84,8 @@ channel-type.tado.light.label = Light channel-type.tado.light.description = State of control panel light (only if supported by AC) channel-type.tado.openWindowDetected.label = Open Window Detected channel-type.tado.openWindowDetected.description = Indicates if an open window has been detected +channel-type.tado.openWindowRemainingTime.label = Override Remaining Time +channel-type.tado.openWindowRemainingTime.description = The remaining Open Window heating/cooling Override time in the Zone channel-type.tado.operationMode.label = Zone Operation Mode channel-type.tado.operationMode.description = Active operation mode (schedule, manual, timer or until next change) channel-type.tado.operationMode.state.option.SCHEDULE = Schedule diff --git a/bundles/org.openhab.binding.tado/src/main/resources/OH-INF/thing/thing-types.xml b/bundles/org.openhab.binding.tado/src/main/resources/OH-INF/thing/thing-types.xml index 66ef588974..a6b383a813 100644 --- a/bundles/org.openhab.binding.tado/src/main/resources/OH-INF/thing/thing-types.xml +++ b/bundles/org.openhab.binding.tado/src/main/resources/OH-INF/thing/thing-types.xml @@ -55,6 +55,7 @@ + ON if one or more devices in the zone have a low battery @@ -63,7 +64,7 @@ tado° - 1 + 2 id @@ -307,4 +308,12 @@ + + Number:Time + + The remaining Open Window heating/cooling Override time in the Zone + Window + + + diff --git a/bundles/org.openhab.binding.tado/src/main/resources/OH-INF/update/instructions.xml b/bundles/org.openhab.binding.tado/src/main/resources/OH-INF/update/instructions.xml index 4cbe82b0cc..f5a0c373f0 100644 --- a/bundles/org.openhab.binding.tado/src/main/resources/OH-INF/update/instructions.xml +++ b/bundles/org.openhab.binding.tado/src/main/resources/OH-INF/update/instructions.xml @@ -14,6 +14,13 @@ Current humidity in % + + + + tado:openWindowRemainingTime + + +