From 220d2559604953e8cfbcfdeb55973f3a7ca4e58e Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Thu, 3 Sep 2026 22:25:29 +0200 Subject: [PATCH] Fix EnergyZero market price regression (#181230) --- .../components/energyzero/coordinator.py | 4 ++ .../snapshots/test_diagnostics.ambr | 24 +++++----- .../energyzero/snapshots/test_sensor.ambr | 18 ++++---- tests/components/energyzero/test_init.py | 46 ++++++++++++++++++- tests/components/energyzero/test_sensor.py | 9 ++++ 5 files changed, 78 insertions(+), 23 deletions(-) diff --git a/homeassistant/components/energyzero/coordinator.py b/homeassistant/components/energyzero/coordinator.py index 700df0f6c3aa..783469c293fd 100644 --- a/homeassistant/components/energyzero/coordinator.py +++ b/homeassistant/components/energyzero/coordinator.py @@ -10,6 +10,7 @@ from energyzero import ( EnergyZeroConnectionError, EnergyZeroNoDataError, Interval, + PriceType, ) from homeassistant.config_entries import ConfigEntry @@ -61,12 +62,14 @@ class EnergyZeroDataUpdateCoordinator(DataUpdateCoordinator[EnergyZeroData]): start_date=today, end_date=today, interval=Interval.HOUR, + price_type=PriceType.MARKET_WITH_VAT, local_tz=local_tz, ) try: gas_today = await self.energyzero.get_gas_prices( start_date=today, end_date=today, + price_type=PriceType.MARKET_WITH_VAT, local_tz=local_tz, ) except EnergyZeroNoDataError: @@ -79,6 +82,7 @@ class EnergyZeroDataUpdateCoordinator(DataUpdateCoordinator[EnergyZeroData]): start_date=tomorrow, end_date=tomorrow, interval=Interval.HOUR, + price_type=PriceType.MARKET_WITH_VAT, local_tz=local_tz, ) except EnergyZeroNoDataError: diff --git a/tests/components/energyzero/snapshots/test_diagnostics.ambr b/tests/components/energyzero/snapshots/test_diagnostics.ambr index da9d3b586e1b..26d3533d84ca 100644 --- a/tests/components/energyzero/snapshots/test_diagnostics.ambr +++ b/tests/components/energyzero/snapshots/test_diagnostics.ambr @@ -2,15 +2,15 @@ # name: test_diagnostics_no_gas_today dict({ 'energy': dict({ - 'average_price': 0.25694034895833334, - 'current_hour_price': 0.28275885, + 'average_price': 0.14609224895833334, + 'current_hour_price': 0.17191075, 'highest_price_time': '2026-04-10T18:00:00+00:00', 'hours_priced_equal_or_lower': 20, 'lowest_price_time': '2026-04-11T06:00:00+00:00', - 'max_price': 0.399000525, - 'min_price': 0.188351625, - 'next_hour_price': 0.2629693, - 'percentage_of_max': 70.87, + 'max_price': 0.288152425, + 'min_price': 0.077503525, + 'next_hour_price': 0.1521212, + 'percentage_of_max': 59.66, }), 'entry': dict({ 'title': 'energy', @@ -24,15 +24,15 @@ # name: test_entry_diagnostics dict({ 'energy': dict({ - 'average_price': 0.25694034895833334, - 'current_hour_price': 0.28275885, + 'average_price': 0.14609224895833334, + 'current_hour_price': 0.17191075, 'highest_price_time': '2026-04-10T18:00:00+00:00', 'hours_priced_equal_or_lower': 20, 'lowest_price_time': '2026-04-11T06:00:00+00:00', - 'max_price': 0.399000525, - 'min_price': 0.188351625, - 'next_hour_price': 0.2629693, - 'percentage_of_max': 70.87, + 'max_price': 0.288152425, + 'min_price': 0.077503525, + 'next_hour_price': 0.1521212, + 'percentage_of_max': 59.66, }), 'entry': dict({ 'title': 'energy', diff --git a/tests/components/energyzero/snapshots/test_sensor.ambr b/tests/components/energyzero/snapshots/test_sensor.ambr index 31f823bc90f6..cf33cc9dac12 100644 --- a/tests/components/energyzero/snapshots/test_sensor.ambr +++ b/tests/components/energyzero/snapshots/test_sensor.ambr @@ -51,7 +51,7 @@ 'last_changed': , 'last_reported': , 'last_updated': , - 'state': '0.256940348958333', + 'state': '0.141981021875', }) # --- # name: test_sensor[sensor.energyzero_today_energy_current_hour_price-entry] @@ -109,7 +109,7 @@ 'last_changed': , 'last_reported': , 'last_updated': , - 'state': '0.28275885', + 'state': '0.17191075', }) # --- # name: test_sensor[sensor.energyzero_today_energy_highest_price_time-entry] @@ -265,7 +265,7 @@ 'last_changed': , 'last_reported': , 'last_updated': , - 'state': '2026-04-11T06:00:00+00:00', + 'state': '2026-04-10T01:00:00+00:00', }) # --- # name: test_sensor[sensor.energyzero_today_energy_max_price-entry] @@ -320,7 +320,7 @@ 'last_changed': , 'last_reported': , 'last_updated': , - 'state': '0.399000525', + 'state': '0.288152425', }) # --- # name: test_sensor[sensor.energyzero_today_energy_min_price-entry] @@ -375,7 +375,7 @@ 'last_changed': , 'last_reported': , 'last_updated': , - 'state': '0.188351625', + 'state': '0.08713815', }) # --- # name: test_sensor[sensor.energyzero_today_energy_next_hour_price-entry] @@ -430,7 +430,7 @@ 'last_changed': , 'last_reported': , 'last_updated': , - 'state': '0.2629693', + 'state': '0.1521212', }) # --- # name: test_sensor[sensor.energyzero_today_energy_percentage_of_max-entry] @@ -482,7 +482,7 @@ 'last_changed': , 'last_reported': , 'last_updated': , - 'state': '70.87', + 'state': '59.66', }) # --- # name: test_sensor[sensor.energyzero_today_gas_current_hour_price-entry] @@ -540,7 +540,7 @@ 'last_changed': , 'last_reported': , 'last_updated': , - 'state': 'unknown', + 'state': '0.5468407201224', }) # --- # name: test_sensor[sensor.energyzero_today_gas_next_hour_price-entry] @@ -595,6 +595,6 @@ 'last_changed': , 'last_reported': , 'last_updated': , - 'state': 'unknown', + 'state': '0.5468407201224', }) # --- diff --git a/tests/components/energyzero/test_init.py b/tests/components/energyzero/test_init.py index c14d440f62e9..03b23c634701 100644 --- a/tests/components/energyzero/test_init.py +++ b/tests/components/energyzero/test_init.py @@ -1,8 +1,10 @@ """Tests for the EnergyZero integration.""" -from unittest.mock import MagicMock, patch +from datetime import date +from unittest.mock import MagicMock, call, patch +from zoneinfo import ZoneInfo -from energyzero import EnergyZeroConnectionError +from energyzero import EnergyZeroConnectionError, Interval, PriceType import pytest from homeassistant.config_entries import ConfigEntryState @@ -11,6 +13,46 @@ from homeassistant.core import HomeAssistant from tests.common import MockConfigEntry +@pytest.mark.freeze_time("2026-04-10 20:32:59") +async def test_coordinator_requests_market_prices_with_vat( + hass: HomeAssistant, + mock_config_entry: MockConfigEntry, + mock_energyzero: MagicMock, +) -> None: + """Test the coordinator requests the backwards-compatible price stream.""" + mock_config_entry.add_to_hass(hass) + await hass.config_entries.async_setup(mock_config_entry.entry_id) + await hass.async_block_till_done() + + local_tz = ZoneInfo(hass.config.time_zone) + today = date(2026, 4, 10) + tomorrow = date(2026, 4, 11) + mock_energyzero.get_electricity_prices.assert_has_awaits( + [ + call( + start_date=today, + end_date=today, + interval=Interval.HOUR, + price_type=PriceType.MARKET_WITH_VAT, + local_tz=local_tz, + ), + call( + start_date=tomorrow, + end_date=tomorrow, + interval=Interval.HOUR, + price_type=PriceType.MARKET_WITH_VAT, + local_tz=local_tz, + ), + ] + ) + mock_energyzero.get_gas_prices.assert_awaited_once_with( + start_date=today, + end_date=today, + price_type=PriceType.MARKET_WITH_VAT, + local_tz=local_tz, + ) + + @pytest.mark.usefixtures("mock_energyzero") async def test_load_unload_config_entry( hass: HomeAssistant, mock_config_entry: MockConfigEntry diff --git a/tests/components/energyzero/test_sensor.py b/tests/components/energyzero/test_sensor.py index 876edecc626a..7222870aa06c 100644 --- a/tests/components/energyzero/test_sensor.py +++ b/tests/components/energyzero/test_sensor.py @@ -29,9 +29,18 @@ async def test_sensor( snapshot: SnapshotAssertion, ) -> None: """Test the EnergyZero - Energy sensors.""" + await hass.config.async_set_time_zone("Europe/Amsterdam") with patch("homeassistant.components.energyzero.PLATFORMS", ["sensor"]): await setup_integration(hass, mock_config_entry) + gas_state = hass.states.get("sensor.energyzero_today_gas_current_hour_price") + assert gas_state + assert gas_state.state == "0.5468407201224" + + energy_state = hass.states.get("sensor.energyzero_today_energy_current_hour_price") + assert energy_state + assert energy_state.state == "0.17191075" + await snapshot_platform(hass, entity_registry, snapshot, mock_config_entry.entry_id)