]> git.basschouten.com Git - openhab-addons.git/commitdiff
[hdpowerview] Add new signal strength channel (#11198)
authorjlaur <jacob-github@vindvejr.dk>
Sat, 4 Sep 2021 13:49:33 +0000 (15:49 +0200)
committerGitHub <noreply@github.com>
Sat, 4 Sep 2021 13:49:33 +0000 (15:49 +0200)
* Add new signal strength channel.

Fixes #11197

Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
bundles/org.openhab.binding.hdpowerview/README.md
bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/HDPowerViewBindingConstants.java
bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/api/responses/Shades.java
bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/handler/HDPowerViewShadeHandler.java
bundles/org.openhab.binding.hdpowerview/src/main/resources/OH-INF/thing/thing-types.xml
bundles/org.openhab.binding.hdpowerview/src/test/java/org/openhab/binding/hdpowerview/HDPowerViewJUnitTests.java

index 421f2cf8cd1c257708fb2b792aa197f953443b75..ab9fe8f76f07e6be5c30b499a40e4ef6b6a632f6 100644 (file)
@@ -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
 
index 8deafad6d17388757b5edc5827cc046a52a59082..1b710cb277a716aeee83690b46aa1e960b160e24 100644 (file)
@@ -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";
 
index 742b5f197153a7b2577f5c251af70c6f67c19144..3a4a9eef77763e1c5e27c1444d8eea1e0e2e4f22 100644 (file)
@@ -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));
index 2403e7612271618f27f98782b86cf4115d3e04da..960d182fddd7e165d54600235e971fdd1c52ad82 100644 (file)
@@ -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);
         }
index 6ffde4ed88382e342a39f01069b37e6da90fba5e..19e8e9a8a18f7d46eef0eac51160b2beb68eff8a 100644 (file)
@@ -49,6 +49,7 @@
                        <channel id="vane" typeId="shade-vane"/>
                        <channel id="lowBattery" typeId="system.low-battery"/>
                        <channel id="batteryVoltage" typeId="battery-voltage"/>
+                       <channel id="signalStrength" typeId="system.signal-strength"/>
                </channels>
 
                <properties>
index afa17d571470a0c604555061df8e203a0ce1707b..75a56d6102958b49df8ee10a3ea99b90f26baced 100644 (file)
@@ -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());
         }