diff --git a/homeassistant/components/airgradient/config_flow.py b/homeassistant/components/airgradient/config_flow.py index 6fc12cf7397..93cd0be61c4 100644 --- a/homeassistant/components/airgradient/config_flow.py +++ b/homeassistant/components/airgradient/config_flow.py @@ -2,9 +2,13 @@ from typing import Any -from airgradient import AirGradientClient, AirGradientError, ConfigurationControl +from airgradient import ( + AirGradientClient, + AirGradientError, + AirGradientParseError, + ConfigurationControl, +) from awesomeversion import AwesomeVersion -from mashumaro import MissingField import voluptuous as vol from homeassistant.components import zeroconf @@ -83,10 +87,10 @@ class AirGradientConfigFlow(ConfigFlow, domain=DOMAIN): self.client = AirGradientClient(user_input[CONF_HOST], session=session) try: current_measures = await self.client.get_current_measures() + except AirGradientParseError: + return self.async_abort(reason="invalid_version") except AirGradientError: errors["base"] = "cannot_connect" - except MissingField: - return self.async_abort(reason="invalid_version") else: await self.async_set_unique_id(current_measures.serial_number) self._abort_if_unique_id_configured() diff --git a/homeassistant/components/airgradient/manifest.json b/homeassistant/components/airgradient/manifest.json index af345bc25ed..efb18ae5752 100644 --- a/homeassistant/components/airgradient/manifest.json +++ b/homeassistant/components/airgradient/manifest.json @@ -6,6 +6,6 @@ "documentation": "https://www.home-assistant.io/integrations/airgradient", "integration_type": "device", "iot_class": "local_polling", - "requirements": ["airgradient==0.7.0"], + "requirements": ["airgradient==0.7.1"], "zeroconf": ["_airgradient._tcp.local."] } diff --git a/requirements_all.txt b/requirements_all.txt index 4d48afe2f2e..ac2db12aae5 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -410,7 +410,7 @@ aiowithings==3.0.2 aioymaps==1.2.4 # homeassistant.components.airgradient -airgradient==0.7.0 +airgradient==0.7.1 # homeassistant.components.airly airly==1.1.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 2663194667f..c2bcb11fa83 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -389,7 +389,7 @@ aiowithings==3.0.2 aioymaps==1.2.4 # homeassistant.components.airgradient -airgradient==0.7.0 +airgradient==0.7.1 # homeassistant.components.airly airly==1.1.0 diff --git a/tests/components/airgradient/test_config_flow.py b/tests/components/airgradient/test_config_flow.py index 217d2ac0e8c..222ac5d04af 100644 --- a/tests/components/airgradient/test_config_flow.py +++ b/tests/components/airgradient/test_config_flow.py @@ -3,8 +3,11 @@ from ipaddress import ip_address from unittest.mock import AsyncMock -from airgradient import AirGradientConnectionError, ConfigurationControl -from mashumaro import MissingField +from airgradient import ( + AirGradientConnectionError, + AirGradientParseError, + ConfigurationControl, +) from homeassistant.components.airgradient import DOMAIN from homeassistant.components.zeroconf import ZeroconfServiceInfo @@ -141,9 +144,7 @@ async def test_flow_old_firmware_version( mock_setup_entry: AsyncMock, ) -> None: """Test flow with old firmware version.""" - mock_airgradient_client.get_current_measures.side_effect = MissingField( - "", object, object - ) + mock_airgradient_client.get_current_measures.side_effect = AirGradientParseError result = await hass.config_entries.flow.async_init( DOMAIN,