From 3d253fa52ad4a9a953984b6b3ca68a6e7ddcee31 Mon Sep 17 00:00:00 2001 From: Felipe Martins Diel <41558831+felipediel@users.noreply.github.com> Date: Sat, 23 May 2020 06:10:06 -0300 Subject: [PATCH] Handle StorageError in the Broadlink integration (#35986) --- homeassistant/components/broadlink/__init__.py | 7 ++++--- homeassistant/components/broadlink/remote.py | 6 ++++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/broadlink/__init__.py b/homeassistant/components/broadlink/__init__.py index a729ac0ff4a..d8b7f60b5b4 100644 --- a/homeassistant/components/broadlink/__init__.py +++ b/homeassistant/components/broadlink/__init__.py @@ -6,7 +6,7 @@ from datetime import timedelta import logging import re -from broadlink.exceptions import BroadlinkException, ReadError +from broadlink.exceptions import BroadlinkException, ReadError, StorageError import voluptuous as vol from homeassistant.const import CONF_HOST @@ -85,10 +85,11 @@ async def async_setup_service(hass, host, device): _LOGGER.info("Press the key you want Home Assistant to learn") start_time = utcnow() while (utcnow() - start_time) < timedelta(seconds=20): + await asyncio.sleep(1) try: packet = await device.async_request(device.api.check_data) - except ReadError: - await asyncio.sleep(1) + except (ReadError, StorageError): + continue except BroadlinkException as err_msg: _LOGGER.error("Failed to learn: %s", err_msg) return diff --git a/homeassistant/components/broadlink/remote.py b/homeassistant/components/broadlink/remote.py index b03bf7a4a04..03ecb9b7634 100644 --- a/homeassistant/components/broadlink/remote.py +++ b/homeassistant/components/broadlink/remote.py @@ -14,6 +14,7 @@ from broadlink.exceptions import ( BroadlinkException, DeviceOfflineError, ReadError, + StorageError, ) import voluptuous as vol @@ -321,10 +322,11 @@ class BroadlinkRemote(RemoteEntity): code = None start_time = utcnow() while (utcnow() - start_time) < timedelta(seconds=timeout): + await asyncio.sleep(1) try: code = await self.device.async_request(self.device.api.check_data) - except ReadError: - await asyncio.sleep(1) + except (ReadError, StorageError): + continue else: break