Skip adding WeMo device on failure (#91621)

* Skip adding WeMo device on failure

* Only create a single log entry for each failed device

* Fix typo s/serial_number/serialnumber/

* Discard failed devices on success
This commit is contained in:
Eric Severance 2023-04-22 14:10:08 -07:00 committed by GitHub
parent 66a25a9e72
commit 68ce59e9c1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 1 deletions

View file

@ -140,6 +140,7 @@ class WemoDispatcher:
"""Initialize the WemoDispatcher."""
self._config_entry = config_entry
self._added_serial_numbers: set[str] = set()
self._failed_serial_numbers: set[str] = set()
self._loaded_platforms: set[Platform] = set()
async def async_add_unique_device(
@ -149,7 +150,16 @@ class WemoDispatcher:
if wemo.serialnumber in self._added_serial_numbers:
return
coordinator = await async_register_device(hass, self._config_entry, wemo)
try:
coordinator = await async_register_device(hass, self._config_entry, wemo)
except pywemo.PyWeMoException as err:
if wemo.serialnumber not in self._failed_serial_numbers:
self._failed_serial_numbers.add(wemo.serialnumber)
_LOGGER.error(
"Unable to add WeMo %s %s: %s", repr(wemo), wemo.host, err
)
return
platforms = set(WEMO_MODEL_DISPATCH.get(wemo.model_name, [Platform.SWITCH]))
platforms.add(Platform.SENSOR)
for platform in platforms:
@ -178,6 +188,7 @@ class WemoDispatcher:
)
self._added_serial_numbers.add(wemo.serialnumber)
self._failed_serial_numbers.discard(wemo.serialnumber)
class WemoDiscovery: