From a27134228cd0a931b625d15cc33447766818c386 Mon Sep 17 00:00:00 2001 From: Nikolay Kasyanov Date: Wed, 19 Sep 2018 21:00:28 +0200 Subject: [PATCH] Add unique_id to mqtt_json light Applies changes from #16303 to mqtt_json component. Fixes #16600. --- homeassistant/components/light/mqtt_json.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/light/mqtt_json.py b/homeassistant/components/light/mqtt_json.py index 239c924ed2b6a..ed4d350d96dbd 100644 --- a/homeassistant/components/light/mqtt_json.py +++ b/homeassistant/components/light/mqtt_json.py @@ -53,6 +53,7 @@ CONF_FLASH_TIME_LONG = 'flash_time_long' CONF_FLASH_TIME_SHORT = 'flash_time_short' CONF_HS = 'hs' +CONF_UNIQUE_ID = 'unique_id' # Stealing some of these from the base MQTT configs. PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @@ -67,6 +68,7 @@ vol.Optional(CONF_FLASH_TIME_LONG, default=DEFAULT_FLASH_TIME_LONG): cv.positive_int, vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, + vol.Optional(CONF_UNIQUE_ID): cv.string, vol.Optional(CONF_OPTIMISTIC, default=DEFAULT_OPTIMISTIC): cv.boolean, vol.Optional(CONF_QOS, default=mqtt.DEFAULT_QOS): vol.All(vol.Coerce(int), vol.In([0, 1, 2])), @@ -87,6 +89,7 @@ async def async_setup_platform(hass: HomeAssistantType, config: ConfigType, config = PLATFORM_SCHEMA(discovery_info) async_add_entities([MqttJson( config.get(CONF_NAME), + config.get(CONF_UNIQUE_ID), config.get(CONF_EFFECT_LIST), { key: config.get(key) for key in ( @@ -120,14 +123,15 @@ async def async_setup_platform(hass: HomeAssistantType, config: ConfigType, class MqttJson(MqttAvailability, Light): """Representation of a MQTT JSON light.""" - def __init__(self, name, effect_list, topic, qos, retain, optimistic, - brightness, color_temp, effect, rgb, white_value, xy, hs, - flash_times, availability_topic, payload_available, + def __init__(self, name, unique_id, effect_list, topic, qos, retain, + optimistic, brightness, color_temp, effect, rgb, white_value, + xy, hs, flash_times, availability_topic, payload_available, payload_not_available, brightness_scale): """Initialize MQTT JSON light.""" super().__init__(availability_topic, qos, payload_available, payload_not_available) self._name = name + self._unique_id = unique_id self._effect_list = effect_list self._topic = topic self._qos = qos @@ -316,6 +320,11 @@ def name(self): """Return the name of the device if any.""" return self._name + @property + def unique_id(self): + """Return a unique ID.""" + return self._unique_id + @property def is_on(self): """Return true if device is on."""