From 2fbc7f73cf815f469fb89c13300f332be80b8d72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hjelseth=20H=C3=B8yer?= Date: Mon, 4 Nov 2024 19:15:32 +0100 Subject: [PATCH 1/4] Tibber, fix bug in fetching prices MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Daniel Hjelseth Høyer --- homeassistant/components/tibber/services.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/tibber/services.py b/homeassistant/components/tibber/services.py index 35facbcd54595a..d970696562ea89 100644 --- a/homeassistant/components/tibber/services.py +++ b/homeassistant/components/tibber/services.py @@ -47,17 +47,13 @@ async def __get_prices(call: ServiceCall, *, hass: HomeAssistant) -> ServiceResp for tibber_home in tibber_connection.get_homes(only_active=True): home_nickname = tibber_home.name - price_info = tibber_home.info["viewer"]["home"]["currentSubscription"][ - "priceInfo" - ] price_data = [ { - "start_time": dt.datetime.fromisoformat(price["startsAt"]), - "price": price["total"], - "level": price["level"], + "start_time": dt.datetime.fromisoformat(starts_at), + "price": price, + "level": tibber_home.price_level.get(starts_at), } - for key in ("today", "tomorrow") - for price in price_info[key] + for starts_at, price in tibber_home.price_total.items() ] selected_data = [ From 192f99f3b9c07d2d0b37c9f6bc4a20d2b17e55ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hjelseth=20H=C3=B8yer?= Date: Mon, 4 Nov 2024 20:53:44 +0100 Subject: [PATCH 2/4] bump tibber MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Daniel Hjelseth Høyer --- homeassistant/components/tibber/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/tibber/manifest.json b/homeassistant/components/tibber/manifest.json index ac46141d974a81..205bc1352ebda2 100644 --- a/homeassistant/components/tibber/manifest.json +++ b/homeassistant/components/tibber/manifest.json @@ -8,5 +8,5 @@ "iot_class": "cloud_polling", "loggers": ["tibber"], "quality_scale": "silver", - "requirements": ["pyTibber==0.30.3"] + "requirements": ["pyTibber==0.30.4"] } diff --git a/requirements_all.txt b/requirements_all.txt index b6e0fe72351f78..39d80d166974ac 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1728,7 +1728,7 @@ pyRFXtrx==0.31.1 pySDCP==1 # homeassistant.components.tibber -pyTibber==0.30.3 +pyTibber==0.30.4 # homeassistant.components.dlink pyW215==0.7.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 9d3092b06cfc38..351a2724f97b4a 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1405,7 +1405,7 @@ pyElectra==1.2.4 pyRFXtrx==0.31.1 # homeassistant.components.tibber -pyTibber==0.30.3 +pyTibber==0.30.4 # homeassistant.components.dlink pyW215==0.7.0 From fa209e2c098f98e313f8a1294b24d12a2fca7bc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hjelseth=20H=C3=B8yer?= Date: Tue, 5 Nov 2024 20:49:54 +0100 Subject: [PATCH 3/4] Update test data --- tests/components/tibber/test_services.py | 96 ++++++------------------ 1 file changed, 22 insertions(+), 74 deletions(-) diff --git a/tests/components/tibber/test_services.py b/tests/components/tibber/test_services.py index 49f9e5e451b78f..d602dbf47f6273 100644 --- a/tests/components/tibber/test_services.py +++ b/tests/components/tibber/test_services.py @@ -20,84 +20,32 @@ def generate_mock_home_data(): mock_homes = [ MagicMock( name="first_home", - info={ - "viewer": { - "home": { - "currentSubscription": { - "priceInfo": { - "today": [ - { - "startsAt": START_TIME.isoformat(), - "total": 0.36914, - "level": "VERY_EXPENSIVE", - }, - { - "startsAt": ( - START_TIME + dt.timedelta(hours=1) - ).isoformat(), - "total": 0.36914, - "level": "VERY_EXPENSIVE", - }, - ], - "tomorrow": [ - { - "startsAt": tomorrow.isoformat(), - "total": 0.46914, - "level": "VERY_EXPENSIVE", - }, - { - "startsAt": ( - tomorrow + dt.timedelta(hours=1) - ).isoformat(), - "total": 0.46914, - "level": "VERY_EXPENSIVE", - }, - ], - } - } - } - } + price_total={ + STARTTIME.isoformat(): 0.46914, + (STARTTIME + dt.timedelta(hours=1)).isoformat(): 0.46914, + tomorrow.isoformat(): 0.46914, + (tomorrow + dt.timedelta(hours=1)).isoformat(): 0.46914, + }, + price_level={ + STARTTIME.isoformat(): "VERY_EXPENSIVE", + (STARTTIME + dt.timedelta(hours=1)).isoformat(): "VERY_EXPENSIVE", + tomorrow.isoformat(): "VERY_EXPENSIVE", + (tomorrow + dt.timedelta(hours=1)).isoformat(): "VERY_EXPENSIVE", }, ), MagicMock( name="second_home", - info={ - "viewer": { - "home": { - "currentSubscription": { - "priceInfo": { - "today": [ - { - "startsAt": START_TIME.isoformat(), - "total": 0.36914, - "level": "VERY_EXPENSIVE", - }, - { - "startsAt": ( - START_TIME + dt.timedelta(hours=1) - ).isoformat(), - "total": 0.36914, - "level": "VERY_EXPENSIVE", - }, - ], - "tomorrow": [ - { - "startsAt": tomorrow.isoformat(), - "total": 0.46914, - "level": "VERY_EXPENSIVE", - }, - { - "startsAt": ( - tomorrow + dt.timedelta(hours=1) - ).isoformat(), - "total": 0.46914, - "level": "VERY_EXPENSIVE", - }, - ], - } - } - } - } + price_total={ + STARTTIME.isoformat(): 0.46914, + (STARTTIME + dt.timedelta(hours=1)).isoformat(): 0.46914, + tomorrow.isoformat(): 0.46914, + (tomorrow + dt.timedelta(hours=1)).isoformat(): 0.46914, + }, + price_level={ + STARTTIME.isoformat(): "VERY_EXPENSIVE", + (STARTTIME + dt.timedelta(hours=1)).isoformat(): "VERY_EXPENSIVE", + tomorrow.isoformat(): "VERY_EXPENSIVE", + (tomorrow + dt.timedelta(hours=1)).isoformat(): "VERY_EXPENSIVE", }, ), ] From 5c6d543cf9cd7a1f6b4edcf9659acca9f7e3207d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hjelseth=20H=C3=B8yer?= Date: Tue, 5 Nov 2024 21:07:01 +0100 Subject: [PATCH 4/4] update test data MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Daniel Hjelseth Høyer --- tests/components/tibber/test_services.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/components/tibber/test_services.py b/tests/components/tibber/test_services.py index d602dbf47f6273..dc6f5d2789df2c 100644 --- a/tests/components/tibber/test_services.py +++ b/tests/components/tibber/test_services.py @@ -21,14 +21,14 @@ def generate_mock_home_data(): MagicMock( name="first_home", price_total={ - STARTTIME.isoformat(): 0.46914, - (STARTTIME + dt.timedelta(hours=1)).isoformat(): 0.46914, + START_TIME.isoformat(): 0.36914, + (START_TIME + dt.timedelta(hours=1)).isoformat(): 0.36914, tomorrow.isoformat(): 0.46914, (tomorrow + dt.timedelta(hours=1)).isoformat(): 0.46914, }, price_level={ - STARTTIME.isoformat(): "VERY_EXPENSIVE", - (STARTTIME + dt.timedelta(hours=1)).isoformat(): "VERY_EXPENSIVE", + START_TIME.isoformat(): "VERY_EXPENSIVE", + (START_TIME + dt.timedelta(hours=1)).isoformat(): "VERY_EXPENSIVE", tomorrow.isoformat(): "VERY_EXPENSIVE", (tomorrow + dt.timedelta(hours=1)).isoformat(): "VERY_EXPENSIVE", }, @@ -36,14 +36,14 @@ def generate_mock_home_data(): MagicMock( name="second_home", price_total={ - STARTTIME.isoformat(): 0.46914, - (STARTTIME + dt.timedelta(hours=1)).isoformat(): 0.46914, + START_TIME.isoformat(): 0.36914, + (START_TIME + dt.timedelta(hours=1)).isoformat(): 0.36914, tomorrow.isoformat(): 0.46914, (tomorrow + dt.timedelta(hours=1)).isoformat(): 0.46914, }, price_level={ - STARTTIME.isoformat(): "VERY_EXPENSIVE", - (STARTTIME + dt.timedelta(hours=1)).isoformat(): "VERY_EXPENSIVE", + START_TIME.isoformat(): "VERY_EXPENSIVE", + (START_TIME + dt.timedelta(hours=1)).isoformat(): "VERY_EXPENSIVE", tomorrow.isoformat(): "VERY_EXPENSIVE", (tomorrow + dt.timedelta(hours=1)).isoformat(): "VERY_EXPENSIVE", },