From 5459b5fdfe6ddae76ef1bf4f89a901e930d380d3 Mon Sep 17 00:00:00 2001 From: Yevhenii Vaskivskyi Date: Tue, 6 Sep 2022 17:34:11 +0200 Subject: [PATCH] Handle exception on projector being unavailable (#77802) --- homeassistant/components/epson/manifest.json | 2 +- homeassistant/components/epson/media_player.py | 14 +++++++++----- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/epson/manifest.json b/homeassistant/components/epson/manifest.json index 82b74486377..0ba8351fd15 100644 --- a/homeassistant/components/epson/manifest.json +++ b/homeassistant/components/epson/manifest.json @@ -3,7 +3,7 @@ "name": "Epson", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/epson", - "requirements": ["epson-projector==0.4.6"], + "requirements": ["epson-projector==0.5.0"], "codeowners": ["@pszafer"], "iot_class": "local_polling", "loggers": ["epson_projector"] diff --git a/homeassistant/components/epson/media_player.py b/homeassistant/components/epson/media_player.py index 57bb0165f6a..0e70984ac31 100644 --- a/homeassistant/components/epson/media_player.py +++ b/homeassistant/components/epson/media_player.py @@ -3,7 +3,7 @@ from __future__ import annotations import logging -from epson_projector import Projector +from epson_projector import Projector, ProjectorUnavailableError from epson_projector.const import ( BACK, BUSY, @@ -20,7 +20,6 @@ from epson_projector.const import ( POWER, SOURCE, SOURCE_LIST, - STATE_UNAVAILABLE as EPSON_STATE_UNAVAILABLE, TURN_OFF, TURN_ON, VOL_DOWN, @@ -123,11 +122,16 @@ class EpsonProjectorMediaPlayer(MediaPlayerEntity): async def async_update(self) -> None: """Update state of device.""" - power_state = await self._projector.get_power() - _LOGGER.debug("Projector status: %s", power_state) - if not power_state or power_state == EPSON_STATE_UNAVAILABLE: + try: + power_state = await self._projector.get_power() + except ProjectorUnavailableError as ex: + _LOGGER.debug("Projector is unavailable: %s", ex) self._attr_available = False return + if not power_state: + self._attr_available = False + return + _LOGGER.debug("Projector status: %s", power_state) self._attr_available = True if power_state == EPSON_CODES[POWER]: self._attr_state = STATE_ON diff --git a/requirements_all.txt b/requirements_all.txt index 7e85b21b3e0..379538ea883 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -630,7 +630,7 @@ envoy_reader==0.20.1 ephem==4.1.2 # homeassistant.components.epson -epson-projector==0.4.6 +epson-projector==0.5.0 # homeassistant.components.epsonworkforce epsonprinter==0.0.9 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 229beae8150..1b833e2d7b0 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -477,7 +477,7 @@ envoy_reader==0.20.1 ephem==4.1.2 # homeassistant.components.epson -epson-projector==0.4.6 +epson-projector==0.5.0 # homeassistant.components.faa_delays faadelays==0.0.7