]> git.basschouten.com Git - openhab-addons.git/commitdiff
[mqtt.homeassistant] JSON Attributes are supported by Scene (#17614)
authorCody Cutrer <cody@cutrer.us>
Tue, 22 Oct 2024 04:17:31 +0000 (23:17 -0500)
committerGitHub <noreply@github.com>
Tue, 22 Oct 2024 04:17:31 +0000 (06:17 +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/Scene.java

index 0ca4f1ab209c9d205b208b871bc863373ca9ab53..9936a5df746f20c8f1832a24ff3d136859431dc1 100644 (file)
@@ -29,6 +29,7 @@ import com.google.gson.annotations.SerializedName;
 @NonNullByDefault
 public class Scene extends AbstractComponent<Scene.ChannelConfiguration> {
     public static final String SCENE_CHANNEL_ID = "scene";
+    public static final String JSON_ATTRIBUTES_CHANNEL_ID = "json-attributes";
 
     /**
      * Configuration class for MQTT component
@@ -43,6 +44,11 @@ public class Scene extends AbstractComponent<Scene.ChannelConfiguration> {
 
         @SerializedName("payload_on")
         protected String payloadOn = "ON";
+
+        @SerializedName("json_attributes_topic")
+        protected @Nullable String jsonAttributesTopic;
+        @SerializedName("json_attributes_template")
+        protected @Nullable String jsonAttributesTemplate;
     }
 
     public Scene(ComponentFactory.ComponentConfiguration componentConfiguration, boolean newStyleChannels) {
@@ -55,6 +61,14 @@ public class Scene extends AbstractComponent<Scene.ChannelConfiguration> {
                 .commandTopic(channelConfiguration.commandTopic, channelConfiguration.isRetain(),
                         channelConfiguration.getQos())
                 .withAutoUpdatePolicy(AutoUpdatePolicy.VETO).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();
     }
 }