Use shared httpx client in enphase_envoy (#48709)

* Use shared httpx client in enphase_envoy

* test fix

* f

* bump version
This commit is contained in:
J. Nick Koston 2021-04-11 22:31:25 -10:00 committed by GitHub
parent a610076001
commit 73f227b651
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 19 additions and 9 deletions

View file

@ -13,6 +13,7 @@ from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_HOST, CONF_NAME, CONF_PASSWORD, CONF_USERNAME
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryNotReady
from homeassistant.helpers.httpx_client import get_async_client
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from .const import COORDINATOR, DOMAIN, NAME, PLATFORMS, SENSORS
@ -27,8 +28,12 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
config = entry.data
name = config[CONF_NAME]
envoy_reader = EnvoyReader(
config[CONF_HOST], config[CONF_USERNAME], config[CONF_PASSWORD]
config[CONF_HOST],
config[CONF_USERNAME],
config[CONF_PASSWORD],
async_client=get_async_client(hass),
)
try:
@ -36,7 +41,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
except httpx.HTTPStatusError as err:
_LOGGER.error("Authentication failure during setup: %s", err)
return
except (AttributeError, httpx.HTTPError) as err:
except (RuntimeError, httpx.HTTPError) as err:
raise ConfigEntryNotReady from err
async def async_update_data():
@ -63,7 +68,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
coordinator = DataUpdateCoordinator(
hass,
_LOGGER,
name="envoy {name}",
name=f"envoy {name}",
update_method=async_update_data,
update_interval=SCAN_INTERVAL,
)

View file

@ -18,6 +18,7 @@ from homeassistant.const import (
)
from homeassistant.core import HomeAssistant, callback
from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers.httpx_client import get_async_client
from .const import DOMAIN
@ -31,14 +32,18 @@ CONF_SERIAL = "serial"
async def validate_input(hass: HomeAssistant, data: dict[str, Any]) -> dict[str, Any]:
"""Validate the user input allows us to connect."""
envoy_reader = EnvoyReader(
data[CONF_HOST], data[CONF_USERNAME], data[CONF_PASSWORD], inverters=True
data[CONF_HOST],
data[CONF_USERNAME],
data[CONF_PASSWORD],
inverters=True,
async_client=get_async_client(hass),
)
try:
await envoy_reader.getData()
except httpx.HTTPStatusError as err:
raise InvalidAuth from err
except (AttributeError, httpx.HTTPError) as err:
except (RuntimeError, httpx.HTTPError) as err:
raise CannotConnect from err

View file

@ -3,11 +3,11 @@
"name": "Enphase Envoy",
"documentation": "https://www.home-assistant.io/integrations/enphase_envoy",
"requirements": [
"envoy_reader==0.18.3"
"envoy_reader==0.18.4"
],
"codeowners": [
"@gtdiehl"
],
"config_flow": true,
"zeroconf": [{ "type": "_enphase-envoy._tcp.local."}]
}
}

View file

@ -557,7 +557,7 @@ env_canada==0.2.5
# envirophat==0.0.6
# homeassistant.components.enphase_envoy
envoy_reader==0.18.3
envoy_reader==0.18.4
# homeassistant.components.season
ephem==3.7.7.0

View file

@ -303,7 +303,7 @@ emulated_roku==0.2.1
enocean==0.50
# homeassistant.components.enphase_envoy
envoy_reader==0.18.3
envoy_reader==0.18.4
# homeassistant.components.season
ephem==3.7.7.0