Entity Component to no longer generate automatic groups (#23789)

This commit is contained in:
Paulus Schoutsen 2020-01-07 17:30:53 +01:00 committed by GitHub
parent 13e6479b6e
commit 9aa02e35a7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
41 changed files with 149 additions and 377 deletions

View file

@ -19,7 +19,6 @@ from homeassistant.helpers.config_validation import make_entity_service_schema
from homeassistant.helpers.service import async_extract_entity_ids
from homeassistant.loader import async_get_integration, bind_hass
from homeassistant.setup import async_prepare_setup_platform
from homeassistant.util import slugify
from .entity_platform import EntityPlatform
@ -59,19 +58,15 @@ class EntityComponent:
- Process the configuration and set up a platform based component.
- Manage the platforms and their entities.
- Help extract the entities from a service call.
- Maintain a group that tracks all platform entities.
- Listen for discovery events for platforms related to the domain.
"""
def __init__(
self, logger, domain, hass, scan_interval=DEFAULT_SCAN_INTERVAL, group_name=None
):
def __init__(self, logger, domain, hass, scan_interval=DEFAULT_SCAN_INTERVAL):
"""Initialize an entity component."""
self.logger = logger
self.hass = hass
self.domain = domain
self.scan_interval = scan_interval
self.group_name = group_name
self.config = None
@ -237,35 +232,6 @@ class EntityComponent:
await self._platforms[key].async_setup(platform_config, discovery_info)
@callback
def _async_update_group(self) -> None:
"""Set up and/or update component group.
This method must be run in the event loop.
"""
if self.group_name is None:
return
ids = [
entity.entity_id
for entity in sorted(
self.entities, key=lambda entity: entity.name or entity.entity_id
)
]
self.hass.async_create_task(
self.hass.services.async_call(
"group",
"set",
dict(
object_id=slugify(self.group_name),
name=self.group_name,
visible=False,
entities=ids,
),
)
)
async def _async_reset(self) -> None:
"""Remove entities and reset the entity component to initial values.
@ -279,11 +245,6 @@ class EntityComponent:
self._platforms = {self.domain: self._platforms[self.domain]}
self.config = None
if self.group_name is not None:
await self.hass.services.async_call(
"group", "remove", dict(object_id=slugify(self.group_name))
)
async def async_remove_entity(self, entity_id: str) -> None:
"""Remove an entity managed by one of the platforms."""
for platform in self._platforms.values():
@ -329,5 +290,4 @@ class EntityComponent:
platform=platform,
scan_interval=scan_interval,
entity_namespace=entity_namespace,
async_entities_added_callback=self._async_update_group,
)