From 0087c8c828e812781d4e0afce4cb7bedf5c64dd3 Mon Sep 17 00:00:00 2001 From: jlaur Date: Sat, 4 Sep 2021 15:49:33 +0200 Subject: [PATCH] [hdpowerview] Add new signal strength channel (#11198) * Add new signal strength channel. Fixes #11197 Signed-off-by: Jacob Laursen --- bundles/org.openhab.binding.hdpowerview/README.md | 1 + .../hdpowerview/internal/HDPowerViewBindingConstants.java | 3 ++- .../binding/hdpowerview/internal/api/responses/Shades.java | 1 + .../hdpowerview/internal/handler/HDPowerViewShadeHandler.java | 2 ++ .../src/main/resources/OH-INF/thing/thing-types.xml | 1 + .../org/openhab/binding/hdpowerview/HDPowerViewJUnitTests.java | 2 ++ 6 files changed, 9 insertions(+), 1 deletion(-) diff --git a/bundles/org.openhab.binding.hdpowerview/README.md b/bundles/org.openhab.binding.hdpowerview/README.md index 421f2cf8c..ab9fe8f76 100644 --- a/bundles/org.openhab.binding.hdpowerview/README.md +++ b/bundles/org.openhab.binding.hdpowerview/README.md @@ -80,6 +80,7 @@ All of these channels appear in the binding, but only those which have a physica | vane | Dimmer | The degree of opening of the slats or vanes. Setting this to a non-zero value will first move the shade `position` fully down, since the slats or vanes can only have a defined state if the shade is in its down position -- see [Interdependency between Channel positions](#Interdependency-between-Channel-positions). | | lowBattery | Switch | Indicates ON when the battery level of the shade is low, as determined by the hub's internal rules. | | batteryVoltage | Number:ElectricPotential | Battery voltage reported by the shade. | +| signalStrength | Number | Signal strength (0 for no or unknown signal, 1 for weak, 2 for average, 3 for good or 4 for excellent) | ### Roller Shutter Up/Down Position vs. Open/Close State diff --git a/bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/HDPowerViewBindingConstants.java b/bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/HDPowerViewBindingConstants.java index 8deafad6d..1b710cb27 100644 --- a/bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/HDPowerViewBindingConstants.java +++ b/bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/HDPowerViewBindingConstants.java @@ -38,10 +38,11 @@ public class HDPowerViewBindingConstants { // List of all Channel ids public static final String CHANNEL_SHADE_POSITION = "position"; + public static final String CHANNEL_SHADE_SECONDARY_POSITION = "secondary"; public static final String CHANNEL_SHADE_VANE = "vane"; public static final String CHANNEL_SHADE_LOW_BATTERY = "lowBattery"; public static final String CHANNEL_SHADE_BATTERY_VOLTAGE = "batteryVoltage"; - public static final String CHANNEL_SHADE_SECONDARY_POSITION = "secondary"; + public static final String CHANNEL_SHADE_SIGNAL_STRENGTH = "signalStrength"; public static final String CHANNELTYPE_SCENE_ACTIVATE = "scene-activate"; diff --git a/bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/api/responses/Shades.java b/bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/api/responses/Shades.java index 742b5f197..3a4a9eef7 100644 --- a/bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/api/responses/Shades.java +++ b/bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/api/responses/Shades.java @@ -50,6 +50,7 @@ public class Shades { public boolean batteryIsLow; public @Nullable ShadePosition positions; public @Nullable Boolean timedOut; + public int signalStrength; public String getName() { return new String(Base64.getDecoder().decode(name)); 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 2403e7612..960d182fd 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 @@ -30,6 +30,7 @@ import org.openhab.binding.hdpowerview.internal.api.ShadePosition; import org.openhab.binding.hdpowerview.internal.api.responses.Shade; import org.openhab.binding.hdpowerview.internal.api.responses.Shades.ShadeData; import org.openhab.binding.hdpowerview.internal.config.HDPowerViewShadeConfiguration; +import org.openhab.core.library.types.DecimalType; import org.openhab.core.library.types.OnOffType; import org.openhab.core.library.types.PercentType; import org.openhab.core.library.types.QuantityType; @@ -138,6 +139,7 @@ public class HDPowerViewShadeHandler extends AbstractHubbedThingHandler { updateBindingStates(shadeData.positions); updateState(CHANNEL_SHADE_LOW_BATTERY, shadeData.batteryStatus == 1 ? OnOffType.ON : OnOffType.OFF); updateState(CHANNEL_SHADE_BATTERY_VOLTAGE, new QuantityType<>(shadeData.batteryStrength / 10, Units.VOLT)); + updateState(CHANNEL_SHADE_SIGNAL_STRENGTH, new DecimalType(shadeData.signalStrength)); } else { updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR); } diff --git a/bundles/org.openhab.binding.hdpowerview/src/main/resources/OH-INF/thing/thing-types.xml b/bundles/org.openhab.binding.hdpowerview/src/main/resources/OH-INF/thing/thing-types.xml index 6ffde4ed8..19e8e9a8a 100644 --- a/bundles/org.openhab.binding.hdpowerview/src/main/resources/OH-INF/thing/thing-types.xml +++ b/bundles/org.openhab.binding.hdpowerview/src/main/resources/OH-INF/thing/thing-types.xml @@ -49,6 +49,7 @@ + diff --git a/bundles/org.openhab.binding.hdpowerview/src/test/java/org/openhab/binding/hdpowerview/HDPowerViewJUnitTests.java b/bundles/org.openhab.binding.hdpowerview/src/test/java/org/openhab/binding/hdpowerview/HDPowerViewJUnitTests.java index afa17d571..75a56d610 100644 --- a/bundles/org.openhab.binding.hdpowerview/src/test/java/org/openhab/binding/hdpowerview/HDPowerViewJUnitTests.java +++ b/bundles/org.openhab.binding.hdpowerview/src/test/java/org/openhab/binding/hdpowerview/HDPowerViewJUnitTests.java @@ -355,6 +355,8 @@ public class HDPowerViewJUnitTests { pos = shadePos.getState(PRIMARY_ACTUATOR, VANE_COORDS); assertEquals(UnDefType.class, pos.getClass()); + + assertEquals(4, shadeData.signalStrength); } catch (JsonParseException e) { fail(e.getMessage()); }