From d97d212cd1edc910c9bb75bc9acd4eed391d642e Mon Sep 17 00:00:00 2001 From: Cody Cutrer Date: Fri, 27 Jan 2023 16:37:15 -0700 Subject: [PATCH] [mqtt.homeassistant] Mark disabled by default components as advanced channels (#14240) openHAB doesn't have the concept of "enabled by default", since _everything_ is technically "disabled" until you link it to an item. It seems devices use disabled by default on less common entities, such as zigbee2mqtt marking a binary_sensor as a "backup" method to an update entity for when an update is available, or a sensor as a "backup" method to a select entity. So in that case, just hiding these channels unless the user clicks "Show Advanced" seems to map best. Signed-off-by: Cody Cutrer --- .../mqtt/homeassistant/internal/ComponentChannel.java | 5 +++++ .../internal/component/AbstractComponent.java | 4 ++++ .../mqtt/homeassistant/internal/component/Vacuum.java | 3 --- .../internal/config/dto/AbstractChannelConfiguration.java | 7 +++++++ 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/ComponentChannel.java b/bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/ComponentChannel.java index f0481c1128..b016a6960e 100644 --- a/bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/ComponentChannel.java +++ b/bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/ComponentChannel.java @@ -232,6 +232,11 @@ public class ComponentChannel { .withCommandTopic(commandTopic).makeTrigger(trigger).withFormatter(format).build(), channelUID, valueState, channelStateUpdateListener, commandFilter); + // disabled by default components should always show up as advanced + if (!component.isEnabledByDefault()) { + isAdvanced = true; + } + if (this.trigger) { type = ChannelTypeBuilder.trigger(channelTypeUID, label) .withConfigDescriptionURI(URI.create(MqttBindingConstants.CONFIG_HA_CHANNEL)) diff --git a/bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/component/AbstractComponent.java b/bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/component/AbstractComponent.java index 5f9caea2a1..d4ab2251cb 100644 --- a/bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/component/AbstractComponent.java +++ b/bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/component/AbstractComponent.java @@ -239,4 +239,8 @@ public abstract class AbstractComponent public TransformationServiceProvider getTransformationServiceProvider() { return componentConfiguration.getTransformationServiceProvider(); } + + public boolean isEnabledByDefault() { + return channelConfiguration.isEnabledByDefault(); + } } diff --git a/bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/component/Vacuum.java b/bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/component/Vacuum.java index e599b9fa31..7fd9d6b901 100644 --- a/bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/component/Vacuum.java +++ b/bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/component/Vacuum.java @@ -127,9 +127,6 @@ public class Vacuum extends AbstractComponent { @SerializedName("docked_topic") protected @Nullable String dockedTopic; - @SerializedName("enabled_by_default") - protected @Nullable Boolean enabledByDefault = true; - @SerializedName("error_template") protected @Nullable String errorTemplate; @SerializedName("error_topic") diff --git a/bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/config/dto/AbstractChannelConfiguration.java b/bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/config/dto/AbstractChannelConfiguration.java index dda84ada74..ae64e5d244 100644 --- a/bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/config/dto/AbstractChannelConfiguration.java +++ b/bundles/org.openhab.binding.mqtt.homeassistant/src/main/java/org/openhab/binding/mqtt/homeassistant/internal/config/dto/AbstractChannelConfiguration.java @@ -55,6 +55,9 @@ public abstract class AbstractChannelConfiguration { @SerializedName("availability_template") protected @Nullable String availabilityTemplate; + @SerializedName("enabled_by_default") + protected boolean enabledByDefault = true; + /** * A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with * availability_topic @@ -168,6 +171,10 @@ public abstract class AbstractChannelConfiguration { return availabilityTemplate; } + public boolean isEnabledByDefault() { + return enabledByDefault; + } + @Nullable public Device getDevice() { return device; -- 2.47.3