From b1cee4165f7773d456e4019100d6488bda0c3823 Mon Sep 17 00:00:00 2001 From: Jacob Laursen Date: Sun, 2 Jan 2022 13:44:51 +0100 Subject: [PATCH] [hdpowerview] Refresh battery level when receiving refresh command (#11933) * Refresh battery level when receiving REFRESH command. Fixes #11932 Update README with shade refresh logic. Signed-off-by: Jacob Laursen Signed-off-by: Nick Waterton --- .../org.openhab.binding.hdpowerview/README.md | 11 +++++++++++ .../handler/HDPowerViewShadeHandler.java | 19 ++++++++++++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/bundles/org.openhab.binding.hdpowerview/README.md b/bundles/org.openhab.binding.hdpowerview/README.md index 023e621399116..180bbc6120a08 100644 --- a/bundles/org.openhab.binding.hdpowerview/README.md +++ b/bundles/org.openhab.binding.hdpowerview/README.md @@ -156,6 +156,17 @@ then end ``` +For single shades the refresh takes the item's channel into consideration: + +| Channel | Hard refresh kind | +|----------------|-------------------| +| position | Position | +| secondary | Position | +| vane | Position | +| lowBattery | Battery | +| batteryLevel | Battery | +| batteryVoltage | Battery | + ## Full Example ### `demo.things` File diff --git a/bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/handler/HDPowerViewShadeHandler.java b/bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/handler/HDPowerViewShadeHandler.java index 038b4f71a370a..e996b58ce33d5 100644 --- a/bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/handler/HDPowerViewShadeHandler.java +++ b/bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/handler/HDPowerViewShadeHandler.java @@ -104,12 +104,25 @@ public void initialize() { @Override public void handleCommand(ChannelUID channelUID, Command command) { - if (RefreshType.REFRESH.equals(command)) { - requestRefreshShadePosition(); + String channelId = channelUID.getId(); + + if (RefreshType.REFRESH == command) { + switch (channelId) { + case CHANNEL_SHADE_POSITION: + case CHANNEL_SHADE_SECONDARY_POSITION: + case CHANNEL_SHADE_VANE: + requestRefreshShadePosition(); + break; + case CHANNEL_SHADE_LOW_BATTERY: + case CHANNEL_SHADE_BATTERY_LEVEL: + case CHANNEL_SHADE_BATTERY_VOLTAGE: + requestRefreshShadeBatteryLevel(); + break; + } return; } - switch (channelUID.getId()) { + switch (channelId) { case CHANNEL_SHADE_POSITION: if (command instanceof PercentType) { moveShade(PRIMARY_ACTUATOR, ZERO_IS_CLOSED, ((PercentType) command).intValue());