Fix unnecessary API calls in Netatmo (#51260)

This commit is contained in:
Tobias Sauerwein 2021-05-31 05:55:45 +02:00 committed by GitHub
parent 1a5d35d7bf
commit 9bd74961f0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 4 deletions

View file

@ -158,7 +158,13 @@ class NetatmoDataHandler:
): ):
"""Register data class.""" """Register data class."""
if data_class_entry in self.data_classes: 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 return
self.data_classes[data_class_entry] = { self.data_classes[data_class_entry] = {

View file

@ -130,7 +130,7 @@ PUBLIC = "public"
async def async_setup_entry(hass, entry, async_add_entities): async def async_setup_entry(hass, entry, async_add_entities):
"""Set up the Netatmo weather and homecoach platform.""" """Set up the Netatmo weather and homecoach platform."""
data_handler = hass.data[DOMAIN][entry.entry_id][DATA_HANDLER] 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): async def find_entities(data_class_name):
"""Find all entities.""" """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) await data_handler.register_data_class(data_class_name, data_class_name, None)
data_class = data_handler.data.get(data_class_name) data_class = data_handler.data.get(data_class_name)
if not data_class or not data_class.raw_data: if not (data_class and data_class.raw_data):
platform_not_ready = True platform_not_ready = False
async_add_entities(await find_entities(data_class_name), True) 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, lat_sw=area.lat_sw,
lon_sw=area.lon_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: for sensor_type in SUPPORTED_PUBLIC_SENSOR_TYPES:
new_entities.append( new_entities.append(
NetatmoPublicSensor(data_handler, area, sensor_type) NetatmoPublicSensor(data_handler, area, sensor_type)