From a330eba61cde64b157603ea4176ffc162f17a2c2 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 5 May 2020 15:07:54 -0700 Subject: [PATCH] Guard bad entity ID in entity registry (#35271) --- homeassistant/helpers/entity_registry.py | 6 ++++++ tests/helpers/test_entity_registry.py | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/homeassistant/helpers/entity_registry.py b/homeassistant/helpers/entity_registry.py index 0146852b93e..de4f5eeb297 100644 --- a/homeassistant/helpers/entity_registry.py +++ b/homeassistant/helpers/entity_registry.py @@ -428,6 +428,12 @@ class EntityRegistry: if data is not None: for entity in data["entities"]: + # Some old installations can have some bad entities. + # Filter them out as they cause errors down the line. + # Can be removed in Jan 2021 + if not valid_entity_id(entity["entity_id"]): + continue + entities[entity["entity_id"]] = RegistryEntry( entity_id=entity["entity_id"], config_entry_id=entity.get("config_entry_id"), diff --git a/tests/helpers/test_entity_registry.py b/tests/helpers/test_entity_registry.py index 9afb8623f18..285f43b6d4d 100644 --- a/tests/helpers/test_entity_registry.py +++ b/tests/helpers/test_entity_registry.py @@ -241,12 +241,20 @@ async def test_loading_extra_values(hass, hass_storage): "unique_id": "disabled-hass", "disabled_by": "hass", }, + { + "entity_id": "test.invalid__entity", + "platform": "super_platform", + "unique_id": "invalid-hass", + "disabled_by": "hass", + }, ] }, } registry = await entity_registry.async_get_registry(hass) + assert len(registry.entities) == 4 + entry_with_name = registry.async_get_or_create( "test", "super_platform", "with-name" )