[mqtt.homeassistant] support availability_templates (#13397)

Signed-off-by: Cody Cutrer <cody@cutrer.us>
This commit is contained in:
Cody Cutrer
2022-09-19 15:00:01 -06:00
committed by GitHub
parent b6ddb6bb0a
commit 8656ba501a
7 changed files with 61 additions and 9 deletions

View File

@@ -48,6 +48,8 @@ import org.openhab.core.thing.type.ChannelGroupTypeUID;
*/
@NonNullByDefault
public abstract class AbstractComponent<C extends AbstractChannelConfiguration> {
private static final String JINJA_PREFIX = "JINJA:";
// Component location fields
private final ComponentConfiguration componentConfiguration;
protected final ChannelGroupTypeUID channelGroupTypeUID;
@@ -88,9 +90,13 @@ public abstract class AbstractComponent<C extends AbstractChannelConfiguration>
String availabilityTopic = this.channelConfiguration.getAvailabilityTopic();
if (availabilityTopic != null) {
String availabilityTemplate = this.channelConfiguration.getAvailabilityTemplate();
if (availabilityTemplate != null) {
availabilityTemplate = JINJA_PREFIX + availabilityTemplate;
}
componentConfiguration.getTracker().addAvailabilityTopic(availabilityTopic,
this.channelConfiguration.getPayloadAvailable(),
this.channelConfiguration.getPayloadNotAvailable());
this.channelConfiguration.getPayloadAvailable(), this.channelConfiguration.getPayloadNotAvailable(),
availabilityTemplate, componentConfiguration.getTransformationServiceProvider());
}
}

View File

@@ -52,6 +52,8 @@ public abstract class AbstractChannelConfiguration {
protected String payloadAvailable = "online";
@SerializedName("payload_not_available")
protected String payloadNotAvailable = "offline";
@SerializedName("availability_template")
protected @Nullable String availabilityTemplate;
/**
* A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with
@@ -161,6 +163,11 @@ public abstract class AbstractChannelConfiguration {
return payloadNotAvailable;
}
@Nullable
public String getAvailabilityTemplate() {
return availabilityTemplate;
}
@Nullable
public Device getDevice() {
return device;

View File

@@ -12,6 +12,8 @@
*/
package org.openhab.binding.mqtt.homeassistant.internal.config.dto;
import org.eclipse.jdt.annotation.Nullable;
import com.google.gson.annotations.SerializedName;
/**
@@ -25,6 +27,8 @@ public class Availability {
protected String payloadAvailable = "online";
@SerializedName("payload_not_available")
protected String payloadNotAvailable = "offline";
@SerializedName("value_template")
protected @Nullable String valueTemplate;
protected String topic;
public String getPayloadAvailable() {
@@ -38,4 +42,8 @@ public class Availability {
public String getTopic() {
return topic;
}
public @Nullable String getValueTemplate() {
return valueTemplate;
}
}