[hdpowerview] Add new battery level channel (#11206)

* Introduce new batteryLevel channel.

Fixes #11205

Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
This commit is contained in:
jlaur
2021-09-08 20:36:59 +02:00
committed by GitHub
parent 8f836a08ea
commit 56a0449ce1
6 changed files with 29 additions and 4 deletions

View File

@@ -41,6 +41,7 @@ public class HDPowerViewBindingConstants {
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_LEVEL = "batteryLevel";
public static final String CHANNEL_SHADE_BATTERY_VOLTAGE = "batteryVoltage";
public static final String CHANNEL_SHADE_SIGNAL_STRENGTH = "signalStrength";

View File

@@ -137,7 +137,7 @@ public class HDPowerViewShadeHandler extends AbstractHubbedThingHandler {
if (shadeData != null) {
updateStatus(ThingStatus.ONLINE);
updateBindingStates(shadeData.positions);
updateState(CHANNEL_SHADE_LOW_BATTERY, shadeData.batteryStatus == 1 ? OnOffType.ON : OnOffType.OFF);
updateBatteryLevel(shadeData.batteryStatus);
updateState(CHANNEL_SHADE_BATTERY_VOLTAGE, new QuantityType<>(shadeData.batteryStrength / 10, Units.VOLT));
updateState(CHANNEL_SHADE_SIGNAL_STRENGTH, new DecimalType(shadeData.signalStrength));
} else {
@@ -157,6 +157,26 @@ public class HDPowerViewShadeHandler extends AbstractHubbedThingHandler {
}
}
private void updateBatteryLevel(int batteryStatus) {
int mappedValue;
switch (batteryStatus) {
case 1: // Low
mappedValue = 10;
break;
case 2: // Medium
mappedValue = 50;
break;
case 3: // High
case 4: // Plugged in
mappedValue = 100;
break;
default: // No status available (0) or invalid
return;
}
updateState(CHANNEL_SHADE_LOW_BATTERY, batteryStatus == 1 ? OnOffType.ON : OnOffType.OFF);
updateState(CHANNEL_SHADE_BATTERY_LEVEL, new DecimalType(mappedValue));
}
private void moveShade(ActuatorClass actuatorClass, CoordinateSystem coordSys, int newPercent) {
try {
HDPowerViewHubHandler bridge;

View File

@@ -48,6 +48,7 @@
</channel>
<channel id="vane" typeId="shade-vane"/>
<channel id="lowBattery" typeId="system.low-battery"/>
<channel id="batteryLevel" typeId="system.battery-level"/>
<channel id="batteryVoltage" typeId="battery-voltage"/>
<channel id="signalStrength" typeId="system.signal-strength"/>
</channels>

View File

@@ -356,6 +356,8 @@ public class HDPowerViewJUnitTests {
pos = shadePos.getState(PRIMARY_ACTUATOR, VANE_COORDS);
assertEquals(UnDefType.class, pos.getClass());
assertEquals(3, shadeData.batteryStatus);
assertEquals(4, shadeData.signalStrength);
} catch (JsonParseException e) {
fail(e.getMessage());

View File

@@ -6,8 +6,8 @@
{
"id": 63778,
"type": 8,
"batteryStatus": 0,
"batteryStrength": 0,
"batteryStatus": 3,
"batteryStrength": 168,
"roomId": 891,
"firmware": {
"revision": 1,