From 68550fba4346d62e38de3fb173b334e02f16a839 Mon Sep 17 00:00:00 2001 From: BottlecapDave <me@davidskendall.co.uk> Date: Sat, 18 Jan 2025 08:46:32 +0000 Subject: [PATCH] fix: Added more guards against invalid data when retrieving previous consumption data (15 minutes dev time) --- .../coordinators/previous_consumption_and_rates.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/custom_components/octopus_energy/coordinators/previous_consumption_and_rates.py b/custom_components/octopus_energy/coordinators/previous_consumption_and_rates.py index 7396fb4e..ae299c39 100644 --- a/custom_components/octopus_energy/coordinators/previous_consumption_and_rates.py +++ b/custom_components/octopus_energy/coordinators/previous_consumption_and_rates.py @@ -274,7 +274,10 @@ async def async_fetch_consumption_and_rates( _LOGGER.debug("Dispatches not available for intelligent tariff. Using existing rate information") return previous_data - if previous_data is not None and previous_data.rates[0]["start"] == period_from and previous_data.rates[-1]["end"] == period_to: + if (previous_data is not None and + previous_data.rates is not None and + len(previous_data.rates) > 0 and + previous_data.rates[0]["start"] == period_from and previous_data.rates[-1]["end"] == period_to): _LOGGER.info('Previous rates are for our target consumption, so using previously retrieved rates and standing charges') rate_data = previous_data.rates standing_charge = { "value_inc_vat": previous_data.standing_charge } @@ -302,7 +305,10 @@ async def async_fetch_consumption_and_rates( _LOGGER.error(f"Could not determine tariff code for previous consumption for gas {identifier}/{serial_number}") return previous_data - if previous_data is not None and previous_data.rates[0]["start"] == period_from and previous_data.rates[-1]["end"] == period_to: + if (previous_data is not None and + previous_data.rates is not None and + len(previous_data.rates) > 0 and + previous_data.rates[0]["start"] == period_from and previous_data.rates[-1]["end"] == period_to): _LOGGER.info('Previous rates are for our target consumption, so using previously retrieved rates and standing charges') rate_data = previous_data.rates standing_charge = { "value_inc_vat": previous_data.standing_charge }