[mqtt.homeassistant] support availability_templates (#13397)
Signed-off-by: Cody Cutrer <cody@cutrer.us>
This commit is contained in:
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user