Prepare entity component for config entries (#13730)
* Prepare entity component for config entries * Return in time
This commit is contained in:
parent
81b1d08d35
commit
40d7857f3b
3 changed files with 49 additions and 40 deletions
|
@ -40,16 +40,7 @@ class EntityComponent(object):
|
|||
self.config = None
|
||||
|
||||
self._platforms = {
|
||||
domain: EntityPlatform(
|
||||
hass=hass,
|
||||
logger=logger,
|
||||
domain=domain,
|
||||
platform_name=domain,
|
||||
scan_interval=self.scan_interval,
|
||||
parallel_updates=0,
|
||||
entity_namespace=None,
|
||||
async_entities_added_callback=self._async_update_group,
|
||||
)
|
||||
domain: self._async_init_entity_platform(domain, None)
|
||||
}
|
||||
self.async_add_entities = self._platforms[domain].async_add_entities
|
||||
self.add_entities = self._platforms[domain].add_entities
|
||||
|
@ -127,34 +118,19 @@ class EntityComponent(object):
|
|||
if platform is None:
|
||||
return
|
||||
|
||||
# Config > Platform > Component
|
||||
scan_interval = (
|
||||
platform_config.get(CONF_SCAN_INTERVAL) or
|
||||
getattr(platform, 'SCAN_INTERVAL', None) or self.scan_interval)
|
||||
parallel_updates = getattr(
|
||||
platform, 'PARALLEL_UPDATES',
|
||||
int(not hasattr(platform, 'async_setup_platform')))
|
||||
|
||||
# Use config scan interval, fallback to platform if none set
|
||||
scan_interval = platform_config.get(
|
||||
CONF_SCAN_INTERVAL, getattr(platform, 'SCAN_INTERVAL', None))
|
||||
entity_namespace = platform_config.get(CONF_ENTITY_NAMESPACE)
|
||||
|
||||
key = (platform_type, scan_interval, entity_namespace)
|
||||
|
||||
if key not in self._platforms:
|
||||
entity_platform = self._platforms[key] = EntityPlatform(
|
||||
hass=self.hass,
|
||||
logger=self.logger,
|
||||
domain=self.domain,
|
||||
platform_name=platform_type,
|
||||
scan_interval=scan_interval,
|
||||
parallel_updates=parallel_updates,
|
||||
entity_namespace=entity_namespace,
|
||||
async_entities_added_callback=self._async_update_group,
|
||||
self._platforms[key] = self._async_init_entity_platform(
|
||||
platform_type, platform, scan_interval, entity_namespace
|
||||
)
|
||||
else:
|
||||
entity_platform = self._platforms[key]
|
||||
|
||||
await entity_platform.async_setup(
|
||||
platform, platform_config, discovery_info)
|
||||
await self._platforms[key].async_setup(platform_config, discovery_info)
|
||||
|
||||
@callback
|
||||
def _async_update_group(self):
|
||||
|
@ -219,3 +195,20 @@ class EntityComponent(object):
|
|||
|
||||
await self._async_reset()
|
||||
return conf
|
||||
|
||||
def _async_init_entity_platform(self, platform_type, platform,
|
||||
scan_interval=None, entity_namespace=None):
|
||||
"""Helper to initialize an entity platform."""
|
||||
if scan_interval is None:
|
||||
scan_interval = self.scan_interval
|
||||
|
||||
return EntityPlatform(
|
||||
hass=self.hass,
|
||||
logger=self.logger,
|
||||
domain=self.domain,
|
||||
platform_name=platform_type,
|
||||
platform=platform,
|
||||
scan_interval=scan_interval,
|
||||
entity_namespace=entity_namespace,
|
||||
async_entities_added_callback=self._async_update_group,
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue