From 78498a9aecbd66d3f8461b0f9930e55e6e3bf98e Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Sat, 15 Nov 2025 13:08:15 +0100 Subject: [PATCH] Fix AttributeError when homes lack active subscriptions (#28) * Initial plan * Fix AttributeError for homes without active subscription Co-authored-by: jpawlowski <75446+jpawlowski@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jpawlowski <75446+jpawlowski@users.noreply.github.com> --- custom_components/tibber_prices/api.py | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/custom_components/tibber_prices/api.py b/custom_components/tibber_prices/api.py index ba1f774..1a7b27d 100644 --- a/custom_components/tibber_prices/api.py +++ b/custom_components/tibber_prices/api.py @@ -435,7 +435,7 @@ class TibberPricesApiClient: for home in homes: home_id = home.get("id") if home_id: - if "currentSubscription" in home: + if "currentSubscription" in home and home["currentSubscription"] is not None: # Extract currency from consumption data if available currency = None if home.get("consumption"): @@ -448,6 +448,10 @@ class TibberPricesApiClient: currency, ) else: + _LOGGER.debug( + "Home %s has no active subscription - price data will be unavailable", + home_id, + ) homes_data[home_id] = {} data["homes"] = homes_data @@ -473,9 +477,13 @@ class TibberPricesApiClient: for home in homes: home_id = home.get("id") if home_id: - if "currentSubscription" in home: + if "currentSubscription" in home and home["currentSubscription"] is not None: homes_data[home_id] = _flatten_price_rating(home["currentSubscription"]) else: + _LOGGER.debug( + "Home %s has no active subscription - daily rating data will be unavailable", + home_id, + ) homes_data[home_id] = {} data["homes"] = homes_data @@ -501,9 +509,13 @@ class TibberPricesApiClient: for home in homes: home_id = home.get("id") if home_id: - if "currentSubscription" in home: + if "currentSubscription" in home and home["currentSubscription"] is not None: homes_data[home_id] = _flatten_price_rating(home["currentSubscription"]) else: + _LOGGER.debug( + "Home %s has no active subscription - hourly rating data will be unavailable", + home_id, + ) homes_data[home_id] = {} data["homes"] = homes_data @@ -529,9 +541,13 @@ class TibberPricesApiClient: for home in homes: home_id = home.get("id") if home_id: - if "currentSubscription" in home: + if "currentSubscription" in home and home["currentSubscription"] is not None: homes_data[home_id] = _flatten_price_rating(home["currentSubscription"]) else: + _LOGGER.debug( + "Home %s has no active subscription - monthly rating data will be unavailable", + home_id, + ) homes_data[home_id] = {} data["homes"] = homes_data