]> git.basschouten.com Git - openhab-addons.git/commitdiff
[mqtt.homeassistant] JSON Attributes can exist on Cover (#17611)
authorCody Cutrer <cody@cutrer.us>
Tue, 22 Oct 2024 04:20:11 +0000 (23:20 -0500)
committerGitHub <noreply@github.com>
Tue, 22 Oct 2024 04:20:11 +0000 (06:20 +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/Cover.java

index cc40947d383339adfe1340056fb9348410aed371..69ba7a8b88e046980f0c87eefa197e8973c0fd16 100644 (file)
@@ -40,6 +40,7 @@ import com.google.gson.annotations.SerializedName;
 public class Cover extends AbstractComponent<Cover.ChannelConfiguration> {
     public static final String COVER_CHANNEL_ID = "cover";
     public static final String STATE_CHANNEL_ID = "state";
+    public static final String JSON_ATTRIBUTES_CHANNEL_ID = "json-attributes";
 
     /**
      * Configuration class for MQTT component
@@ -83,6 +84,11 @@ public class Cover extends AbstractComponent<Cover.ChannelConfiguration> {
         protected String stateOpening = "opening";
         @SerializedName("state_stopped")
         protected String stateStopped = "stopped";
+
+        @SerializedName("json_attributes_template")
+        protected @Nullable String jsonAttributesTemplate;
+        @SerializedName("json_attributes_topic")
+        protected @Nullable String jsonAttributesTopic;
     }
 
     @Nullable
@@ -159,6 +165,13 @@ public class Cover extends AbstractComponent<Cover.ChannelConfiguration> {
                     }
                     return true;
                 }).withAutoUpdatePolicy(optimistic ? AutoUpdatePolicy.RECOMMEND : null).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();
     }
 }