Additional MQTT light command templates (#63361)
Co-authored-by: jbouwh <jan@jbsoft.nl>
This commit is contained in:
parent
8741ff0684
commit
95de1dd446
3 changed files with 128 additions and 7 deletions
|
@ -68,6 +68,7 @@ from .schema import MQTT_LIGHT_SCHEMA_SCHEMA
|
|||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
CONF_BRIGHTNESS_COMMAND_TEMPLATE = "brightness_command_template"
|
||||
CONF_BRIGHTNESS_COMMAND_TOPIC = "brightness_command_topic"
|
||||
CONF_BRIGHTNESS_SCALE = "brightness_scale"
|
||||
CONF_BRIGHTNESS_STATE_TOPIC = "brightness_state_topic"
|
||||
|
@ -78,6 +79,7 @@ CONF_COLOR_TEMP_COMMAND_TEMPLATE = "color_temp_command_template"
|
|||
CONF_COLOR_TEMP_COMMAND_TOPIC = "color_temp_command_topic"
|
||||
CONF_COLOR_TEMP_STATE_TOPIC = "color_temp_state_topic"
|
||||
CONF_COLOR_TEMP_VALUE_TEMPLATE = "color_temp_value_template"
|
||||
CONF_EFFECT_COMMAND_TEMPLATE = "effect_command_template"
|
||||
CONF_EFFECT_COMMAND_TOPIC = "effect_command_topic"
|
||||
CONF_EFFECT_LIST = "effect_list"
|
||||
CONF_EFFECT_STATE_TOPIC = "effect_state_topic"
|
||||
|
@ -141,7 +143,9 @@ DEFAULT_ON_COMMAND_TYPE = "last"
|
|||
VALUES_ON_COMMAND_TYPE = ["first", "last", "brightness"]
|
||||
|
||||
COMMAND_TEMPLATE_KEYS = [
|
||||
CONF_BRIGHTNESS_COMMAND_TEMPLATE,
|
||||
CONF_COLOR_TEMP_COMMAND_TEMPLATE,
|
||||
CONF_EFFECT_COMMAND_TEMPLATE,
|
||||
CONF_RGB_COMMAND_TEMPLATE,
|
||||
CONF_RGBW_COMMAND_TEMPLATE,
|
||||
CONF_RGBWW_COMMAND_TEMPLATE,
|
||||
|
@ -163,6 +167,7 @@ VALUE_TEMPLATE_KEYS = [
|
|||
_PLATFORM_SCHEMA_BASE = (
|
||||
mqtt.MQTT_RW_PLATFORM_SCHEMA.extend(
|
||||
{
|
||||
vol.Optional(CONF_BRIGHTNESS_COMMAND_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_BRIGHTNESS_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(
|
||||
CONF_BRIGHTNESS_SCALE, default=DEFAULT_BRIGHTNESS_SCALE
|
||||
|
@ -175,6 +180,7 @@ _PLATFORM_SCHEMA_BASE = (
|
|||
vol.Optional(CONF_COLOR_TEMP_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(CONF_COLOR_TEMP_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_COLOR_TEMP_VALUE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_EFFECT_COMMAND_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_EFFECT_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(CONF_EFFECT_LIST): vol.All(cv.ensure_list, [cv.string]),
|
||||
vol.Optional(CONF_EFFECT_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
|
@ -970,6 +976,8 @@ class MqttLight(MqttEntity, LightEntity, RestoreEntity):
|
|||
)
|
||||
# Make sure the brightness is not rounded down to 0
|
||||
device_brightness = max(device_brightness, 1)
|
||||
if tpl := self._command_templates[CONF_BRIGHTNESS_COMMAND_TEMPLATE]:
|
||||
device_brightness = tpl(variables={"value": device_brightness})
|
||||
await publish(CONF_BRIGHTNESS_COMMAND_TOPIC, device_brightness)
|
||||
should_update |= set_optimistic(ATTR_BRIGHTNESS, kwargs[ATTR_BRIGHTNESS])
|
||||
elif (
|
||||
|
@ -1038,8 +1046,10 @@ class MqttLight(MqttEntity, LightEntity, RestoreEntity):
|
|||
if ATTR_EFFECT in kwargs and self._topic[CONF_EFFECT_COMMAND_TOPIC] is not None:
|
||||
effect = kwargs[ATTR_EFFECT]
|
||||
if effect in self._config.get(CONF_EFFECT_LIST):
|
||||
if tpl := self._command_templates[CONF_EFFECT_COMMAND_TEMPLATE]:
|
||||
effect = tpl(variables={"value": effect})
|
||||
await publish(CONF_EFFECT_COMMAND_TOPIC, effect)
|
||||
should_update |= set_optimistic(ATTR_EFFECT, effect)
|
||||
should_update |= set_optimistic(ATTR_EFFECT, kwargs[ATTR_EFFECT])
|
||||
|
||||
if ATTR_WHITE in kwargs and self._topic[CONF_WHITE_COMMAND_TOPIC] is not None:
|
||||
percent_white = float(kwargs[ATTR_WHITE]) / 255
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue