From 47d1920f8a04c8e9b8ccc0d69d6238df82968317 Mon Sep 17 00:00:00 2001 From: Aidan Timson Date: Fri, 14 Aug 2020 13:06:31 +0100 Subject: [PATCH] Fix OVO Energy Sensors (#38849) --- .../components/ovo_energy/__init__.py | 9 +++++- homeassistant/components/ovo_energy/sensor.py | 32 +++++++++++++------ 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/ovo_energy/__init__.py b/homeassistant/components/ovo_energy/__init__.py index 3aff51fa044..e98e81ba1c2 100644 --- a/homeassistant/components/ovo_energy/__init__.py +++ b/homeassistant/components/ovo_energy/__init__.py @@ -40,7 +40,14 @@ async def async_setup_entry(hass: HomeAssistantType, entry: ConfigEntry) -> bool """Fetch data from OVO Energy.""" now = datetime.utcnow() async with async_timeout.timeout(10): - return await client.get_daily_usage(now.strftime("%Y-%m")) + try: + await client.authenticate( + entry.data[CONF_USERNAME], entry.data[CONF_PASSWORD] + ) + return await client.get_daily_usage(now.strftime("%Y-%m")) + except aiohttp.ClientError as exception: + _LOGGER.warning(exception) + return None coordinator = DataUpdateCoordinator( hass, diff --git a/homeassistant/components/ovo_energy/sensor.py b/homeassistant/components/ovo_energy/sensor.py index 4b9e2e70806..a0781836d6c 100644 --- a/homeassistant/components/ovo_energy/sensor.py +++ b/homeassistant/components/ovo_energy/sensor.py @@ -29,15 +29,29 @@ async def async_setup_entry( entities = [] - if coordinator.data.electricity: - currency = coordinator.data.electricity[ - len(coordinator.data.electricity) - 1 - ].cost.currency_unit - entities.append(OVOEnergyLastElectricityReading(coordinator, client)) - entities.append(OVOEnergyLastElectricityCost(coordinator, client, currency)) - if coordinator.data.gas: - entities.append(OVOEnergyLastGasReading(coordinator, client)) - entities.append(OVOEnergyLastGasCost(coordinator, client, currency)) + if coordinator.data: + if coordinator.data.electricity: + entities.append(OVOEnergyLastElectricityReading(coordinator, client)) + entities.append( + OVOEnergyLastElectricityCost( + coordinator, + client, + coordinator.data.electricity[ + len(coordinator.data.electricity) - 1 + ].cost.currency_unit, + ) + ) + if coordinator.data.gas: + entities.append(OVOEnergyLastGasReading(coordinator, client)) + entities.append( + OVOEnergyLastGasCost( + coordinator, + client, + coordinator.data.gas[ + len(coordinator.data.gas) - 1 + ].cost.currency_unit, + ) + ) async_add_entities( entities, True,