]> git.basschouten.com Git - openhab-addons.git/commitdiff
[mqtt.homeassistant] JSON Attributes can exist on Lock (#17612)
authorCody Cutrer <cody@cutrer.us>
Tue, 22 Oct 2024 04:14:02 +0000 (23:14 -0500)
committerGitHub <noreply@github.com>
Tue, 22 Oct 2024 04:14:02 +0000 (06:14 +0200)
Signed-off-by: Cody Cutrer <cody@cutrer.us>
bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/component/Lock.java

index bce7cef22889b565e14547c4eed66cc271e6859b..8a5da2fc9a847f33779d16865ec916ea719d2e83 100644 (file)
@@ -36,6 +36,7 @@ import com.google.gson.annotations.SerializedName;
 public class Lock extends AbstractComponent<Lock.ChannelConfiguration> {
     public static final String LOCK_CHANNEL_ID = "lock";
     public static final String STATE_CHANNEL_ID = "state";
+    public static final String JSON_ATTRIBUTES_CHANNEL_ID = "json-attributes";
 
     /**
      * Configuration class for MQTT component
@@ -67,6 +68,11 @@ public class Lock extends AbstractComponent<Lock.ChannelConfiguration> {
         protected String stateUnlocked = "UNLOCKED";
         @SerializedName("state_unlocking")
         protected String stateUnlocking = "UNLOCKING";
+
+        @SerializedName("json_attributes_template")
+        protected @Nullable String jsonAttributesTemplate;
+        @SerializedName("json_attributes_topic")
+        protected @Nullable String jsonAttributesTopic;
     }
 
     private boolean optimistic = false;
@@ -121,6 +127,14 @@ public class Lock extends AbstractComponent<Lock.ChannelConfiguration> {
                     }
                     return true;
                 }).build();
+
+        if (channelConfiguration.jsonAttributesTopic != null) {
+            buildChannel(JSON_ATTRIBUTES_CHANNEL_ID, ComponentChannelType.STRING, new TextValue(), "JSON Attributes",
+                    componentConfiguration.getUpdateListener())
+                    .stateTopic(channelConfiguration.jsonAttributesTopic, channelConfiguration.jsonAttributesTemplate)
+                    .withAutoUpdatePolicy(AutoUpdatePolicy.VETO).build();
+        }
+
         finalizeChannels();
     }