From: Cody Cutrer Date: Tue, 22 Oct 2024 04:15:39 +0000 (-0500) Subject: [mqtt.homeassistant] JSON Attributes can exist on Number (#17613) X-Git-Url: https://git.basschouten.com/?a=commitdiff_plain;h=2952d21e607a19903039557e206ce1b64b53c7ae;p=openhab-addons.git [mqtt.homeassistant] JSON Attributes can exist on Number (#17613) Signed-off-by: Cody Cutrer --- diff --git a/bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/component/Number.java b/bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/component/Number.java index 8de66574f3..b68af1b54d 100644 --- a/bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/component/Number.java +++ b/bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/component/Number.java @@ -17,8 +17,10 @@ import java.math.BigDecimal; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.openhab.binding.mqtt.generic.values.NumberValue; +import org.openhab.binding.mqtt.generic.values.TextValue; import org.openhab.binding.mqtt.homeassistant.internal.ComponentChannelType; import org.openhab.binding.mqtt.homeassistant.internal.config.dto.AbstractChannelConfiguration; +import org.openhab.core.thing.type.AutoUpdatePolicy; import org.openhab.core.types.util.UnitUtils; import com.google.gson.annotations.SerializedName; @@ -31,6 +33,7 @@ import com.google.gson.annotations.SerializedName; @NonNullByDefault public class Number extends AbstractComponent { public static final String NUMBER_CHANNEL_ID = "number"; // Randomly chosen channel "ID" + public static final String JSON_ATTRIBUTES_CHANNEL_ID = "json-attributes"; /** * Configuration class for MQTT component @@ -81,6 +84,14 @@ public class Number extends AbstractComponent { .commandTopic(channelConfiguration.commandTopic, channelConfiguration.isRetain(), channelConfiguration.getQos(), channelConfiguration.commandTemplate) .inferOptimistic(channelConfiguration.optimistic).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(); } }