From 94b6ab286248d5e1903101ae777f84e65eb22fca Mon Sep 17 00:00:00 2001 From: Eugenio Panadero Date: Fri, 13 Mar 2020 02:31:39 +0100 Subject: [PATCH] Use platform tag to register components on hue SensorManager (#32732) * Use platform tag to register components on hue SensorManager instead of a boolean flag to decide between sensor and binary sensor, so it could be used externally (or to get ready for inclusion of other comps) * Make new item discovery platform agnostic for SensorManager --- homeassistant/components/hue/binary_sensor.py | 4 ++-- homeassistant/components/hue/sensor.py | 6 +++--- homeassistant/components/hue/sensor_base.py | 21 ++++++++----------- 3 files changed, 14 insertions(+), 17 deletions(-) diff --git a/homeassistant/components/hue/binary_sensor.py b/homeassistant/components/hue/binary_sensor.py index 319f8f5fa19..8a6b5d203a8 100644 --- a/homeassistant/components/hue/binary_sensor.py +++ b/homeassistant/components/hue/binary_sensor.py @@ -17,7 +17,7 @@ async def async_setup_entry(hass, config_entry, async_add_entities): """Defer binary sensor setup to the shared sensor module.""" await hass.data[HUE_DOMAIN][ config_entry.entry_id - ].sensor_manager.async_register_component(True, async_add_entities) + ].sensor_manager.async_register_component("binary_sensor", async_add_entities) class HuePresence(GenericZLLSensor, BinarySensorDevice): @@ -44,7 +44,7 @@ class HuePresence(GenericZLLSensor, BinarySensorDevice): SENSOR_CONFIG_MAP.update( { TYPE_ZLL_PRESENCE: { - "binary": True, + "platform": "binary_sensor", "name_format": PRESENCE_NAME_FORMAT, "class": HuePresence, } diff --git a/homeassistant/components/hue/sensor.py b/homeassistant/components/hue/sensor.py index 5fa2ed68389..61acd097b01 100644 --- a/homeassistant/components/hue/sensor.py +++ b/homeassistant/components/hue/sensor.py @@ -19,7 +19,7 @@ async def async_setup_entry(hass, config_entry, async_add_entities): """Defer sensor setup to the shared sensor module.""" await hass.data[HUE_DOMAIN][ config_entry.entry_id - ].sensor_manager.async_register_component(False, async_add_entities) + ].sensor_manager.async_register_component("sensor", async_add_entities) class GenericHueGaugeSensorEntity(GenericZLLSensor, Entity): @@ -82,12 +82,12 @@ class HueTemperature(GenericHueGaugeSensorEntity): SENSOR_CONFIG_MAP.update( { TYPE_ZLL_LIGHTLEVEL: { - "binary": False, + "platform": "sensor", "name_format": LIGHT_LEVEL_NAME_FORMAT, "class": HueLightLevel, }, TYPE_ZLL_TEMPERATURE: { - "binary": False, + "platform": "sensor", "name_format": TEMPERATURE_NAME_FORMAT, "class": HueTemperature, }, diff --git a/homeassistant/components/hue/sensor_base.py b/homeassistant/components/hue/sensor_base.py index 507415963a5..9596d7457aa 100644 --- a/homeassistant/components/hue/sensor_base.py +++ b/homeassistant/components/hue/sensor_base.py @@ -62,9 +62,9 @@ class SensorManager: except AiohueException as err: raise UpdateFailed(f"Hue error: {err}") - async def async_register_component(self, binary, async_add_entities): + async def async_register_component(self, platform, async_add_entities): """Register async_add_entities methods for components.""" - self._component_add_entities[binary] = async_add_entities + self._component_add_entities[platform] = async_add_entities if len(self._component_add_entities) < 2: return @@ -84,8 +84,7 @@ class SensorManager: if len(self._component_add_entities) < 2: return - new_sensors = [] - new_binary_sensors = [] + to_add = {} primary_sensor_devices = {} current = self.current @@ -129,10 +128,10 @@ class SensorManager: current[api[item_id].uniqueid] = sensor_config["class"]( api[item_id], name, self.bridge, primary_sensor=primary_sensor ) - if sensor_config["binary"]: - new_binary_sensors.append(current[api[item_id].uniqueid]) - else: - new_sensors.append(current[api[item_id].uniqueid]) + + to_add.setdefault(sensor_config["platform"], []).append( + current[api[item_id].uniqueid] + ) self.bridge.hass.async_create_task( remove_devices( @@ -140,10 +139,8 @@ class SensorManager: ) ) - if new_sensors: - self._component_add_entities[False](new_sensors) - if new_binary_sensors: - self._component_add_entities[True](new_binary_sensors) + for platform in to_add: + self._component_add_entities[platform](to_add[platform]) class GenericHueSensor(entity.Entity):