[mqtt.homeassistant] JSON Attributes can exist on Lock (#17612)

Signed-off-by: Cody Cutrer <cody@cutrer.us>
Signed-off-by: Ciprian Pascu <contact@ciprianpascu.ro>
This commit is contained in:
Cody Cutrer 2024-10-21 23:14:02 -05:00 committed by Ciprian Pascu
parent a146c81406
commit 926fff034c

View File

@ -36,6 +36,7 @@ import com.google.gson.annotations.SerializedName;
public class Lock extends AbstractComponent<Lock.ChannelConfiguration> {
public static final String LOCK_CHANNEL_ID = "lock";
public static final String STATE_CHANNEL_ID = "state";
public static final String JSON_ATTRIBUTES_CHANNEL_ID = "json-attributes";
/**
* Configuration class for MQTT component
@ -67,6 +68,11 @@ public class Lock extends AbstractComponent<Lock.ChannelConfiguration> {
protected String stateUnlocked = "UNLOCKED";
@SerializedName("state_unlocking")
protected String stateUnlocking = "UNLOCKING";
@SerializedName("json_attributes_template")
protected @Nullable String jsonAttributesTemplate;
@SerializedName("json_attributes_topic")
protected @Nullable String jsonAttributesTopic;
}
private boolean optimistic = false;
@ -121,6 +127,14 @@ public class Lock extends AbstractComponent<Lock.ChannelConfiguration> {
}
return true;
}).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();
}