]> git.basschouten.com Git - openhab-addons.git/commitdiff
[deconz] Add support for lowbattery flag from state response (#12422)
authorJohannes Ott <mail@johannes-ott.net>
Sat, 5 Mar 2022 20:51:21 +0000 (21:51 +0100)
committerGitHub <noreply@github.com>
Sat, 5 Mar 2022 20:51:21 +0000 (21:51 +0100)
* Add support for lowbattery flag from state response

Signed-off-by: Johannes Ott <mail@johannes-ott.net>
bundles/org.openhab.binding.deconz/src/main/java/org/openhab/binding/deconz/internal/dto/SensorState.java
bundles/org.openhab.binding.deconz/src/main/java/org/openhab/binding/deconz/internal/handler/SensorBaseThingHandler.java

index cf6b78e367acb494415d83cfa7179ec97cce4bd6..f79b92fd4623dbcc0924982546859908f85c860a 100644 (file)
@@ -66,6 +66,11 @@ public class SensorState {
     public @Nullable Float power;
     /** Batttery sensors provide this value */
     public @Nullable Integer battery;
+    /**
+     * Some battery sensors (especially Tuya driven devices) provide this boolean
+     * instead of battery level
+     */
+    public @Nullable Boolean lowbattery;
     /** Consumption sensors provide this value in Watts/hour. */
     public @Nullable Float consumption;
     /** Power sensors provide this value in Volt. */
index 58765a0aa1bc06339fda9dfe18eaab73cb8a0739..3669f1ee3cb4e982005ccd9816f1a0558efc1b6f 100644 (file)
@@ -138,6 +138,10 @@ public abstract class SensorBaseThingHandler extends DeconzBaseThingHandler {
             createChannel(CHANNEL_BATTERY_LOW, ChannelKind.STATE);
         }
 
+        if (sensorState.lowbattery != null) {
+            createChannel(CHANNEL_BATTERY_LOW, ChannelKind.STATE);
+        }
+
         createTypeSpecificChannels(sensorConfig, sensorState);
 
         ignoreConfigurationUpdate = false;
@@ -210,6 +214,12 @@ public abstract class SensorBaseThingHandler extends DeconzBaseThingHandler {
                     updateState(channelUID, Util.convertTimestampToDateTime(lastUpdated));
                 }
                 break;
+            case CHANNEL_BATTERY_LOW:
+                Boolean lowBattery = newState.lowbattery;
+                if (lowBattery != null) {
+                    updateState(channelUID, OnOffType.from(lowBattery));
+                }
+                break;
             default:
                 // other cases covered by sub-class
         }