diff --git a/homeassistant/components/netatmo/data_handler.py b/homeassistant/components/netatmo/data_handler.py index 1c092c40930..e93e602d6a7 100644 --- a/homeassistant/components/netatmo/data_handler.py +++ b/homeassistant/components/netatmo/data_handler.py @@ -158,7 +158,13 @@ class NetatmoDataHandler: ): """Register data class.""" if data_class_entry in self.data_classes: - self.data_classes[data_class_entry]["subscriptions"].append(update_callback) + if ( + update_callback + not in self.data_classes[data_class_entry]["subscriptions"] + ): + self.data_classes[data_class_entry]["subscriptions"].append( + update_callback + ) return self.data_classes[data_class_entry] = { diff --git a/homeassistant/components/netatmo/sensor.py b/homeassistant/components/netatmo/sensor.py index eeaab52a21a..ed75ddf2f7f 100644 --- a/homeassistant/components/netatmo/sensor.py +++ b/homeassistant/components/netatmo/sensor.py @@ -130,7 +130,7 @@ PUBLIC = "public" async def async_setup_entry(hass, entry, async_add_entities): """Set up the Netatmo weather and homecoach platform.""" data_handler = hass.data[DOMAIN][entry.entry_id][DATA_HANDLER] - platform_not_ready = False + platform_not_ready = True async def find_entities(data_class_name): """Find all entities.""" @@ -183,8 +183,8 @@ async def async_setup_entry(hass, entry, async_add_entities): await data_handler.register_data_class(data_class_name, data_class_name, None) data_class = data_handler.data.get(data_class_name) - if not data_class or not data_class.raw_data: - platform_not_ready = True + if not (data_class and data_class.raw_data): + platform_not_ready = False async_add_entities(await find_entities(data_class_name), True) @@ -226,6 +226,12 @@ async def async_setup_entry(hass, entry, async_add_entities): lat_sw=area.lat_sw, lon_sw=area.lon_sw, ) + data_class = data_handler.data.get(signal_name) + + if not (data_class and data_class.raw_data): + nonlocal platform_not_ready + platform_not_ready = False + for sensor_type in SUPPORTED_PUBLIC_SENSOR_TYPES: new_entities.append( NetatmoPublicSensor(data_handler, area, sensor_type)