From d53a4feeb328d4fa132765584f9c460def85b593 Mon Sep 17 00:00:00 2001 From: Tom Brien Date: Wed, 6 Dec 2023 09:25:28 +0000 Subject: [PATCH 1/3] Add PlatformNotReady --- custom_components/grocy/__init__.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/custom_components/grocy/__init__.py b/custom_components/grocy/__init__.py index 014eb48..10f6be9 100644 --- a/custom_components/grocy/__init__.py +++ b/custom_components/grocy/__init__.py @@ -11,6 +11,7 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant +from homeassistant.exceptions import PlatformNotReady from .const import ( ATTR_BATTERIES, @@ -40,11 +41,13 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry): """Set up this integration using UI.""" _LOGGER.info(STARTUP_MESSAGE) - - coordinator: GrocyDataUpdateCoordinator = GrocyDataUpdateCoordinator(hass) - coordinator.available_entities = await _async_get_available_entities( - coordinator.grocy_data - ) + try: + coordinator: GrocyDataUpdateCoordinator = GrocyDataUpdateCoordinator(hass) + coordinator.available_entities = await _async_get_available_entities( + coordinator.grocy_data + ) + except ConnectionError as ex: + raise PlatformNotReady(f"Connection error while connecting to {device.ipaddr}: {ex}") from ex await coordinator.async_config_entry_first_refresh() hass.data.setdefault(DOMAIN, {}) hass.data[DOMAIN] = coordinator From 7e81c5e0dd7334a39029ebad2a208cac1417adcb Mon Sep 17 00:00:00 2001 From: Tom Brien Date: Wed, 6 Dec 2023 11:52:13 +0000 Subject: [PATCH 2/3] Raise ConfigEntryNotReady instead --- custom_components/grocy/__init__.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/custom_components/grocy/__init__.py b/custom_components/grocy/__init__.py index 10f6be9..523f9ba 100644 --- a/custom_components/grocy/__init__.py +++ b/custom_components/grocy/__init__.py @@ -9,9 +9,11 @@ import logging from typing import List +from requests.exceptions import JSONDecodeError + from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant -from homeassistant.exceptions import PlatformNotReady +from homeassistant.exceptions import ConfigEntryNotReady from .const import ( ATTR_BATTERIES, @@ -47,7 +49,13 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry): coordinator.grocy_data ) except ConnectionError as ex: - raise PlatformNotReady(f"Connection error while connecting to {device.ipaddr}: {ex}") from ex + raise ConfigEntryNotReady( + f"Connection error while connecting to Grocy: {ex}" + ) from ex + except JSONDecodeError as ex: + raise ConfigEntryNotReady( + f"Invalid response from Grocy, is Add-on running?: {ex}" + ) from ex await coordinator.async_config_entry_first_refresh() hass.data.setdefault(DOMAIN, {}) hass.data[DOMAIN] = coordinator From 3e6df76338d37afe2a82b6ef828f1f2a706eadd7 Mon Sep 17 00:00:00 2001 From: Tom Brien Date: Wed, 6 Dec 2023 11:54:03 +0000 Subject: [PATCH 3/3] Linting --- custom_components/grocy/__init__.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/custom_components/grocy/__init__.py b/custom_components/grocy/__init__.py index 523f9ba..5470851 100644 --- a/custom_components/grocy/__init__.py +++ b/custom_components/grocy/__init__.py @@ -9,11 +9,10 @@ import logging from typing import List -from requests.exceptions import JSONDecodeError - from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.exceptions import ConfigEntryNotReady +from requests.exceptions import JSONDecodeError from .const import ( ATTR_BATTERIES,