From e326dd2847a18913ec10050e5a0ac01dbd4209fc Mon Sep 17 00:00:00 2001 From: Erik Montnemery <erik@montnemery.com> Date: Thu, 1 Sep 2022 20:03:37 +0200 Subject: [PATCH] Fix demo external energy statistics (#77665) --- homeassistant/components/demo/__init__.py | 27 ++++++++++++++--------- tests/components/demo/test_init.py | 6 ++++- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/homeassistant/components/demo/__init__.py b/homeassistant/components/demo/__init__.py index cc80edbd484..45ce061fb1d 100644 --- a/homeassistant/components/demo/__init__.py +++ b/homeassistant/components/demo/__init__.py @@ -16,8 +16,13 @@ from homeassistant.components.recorder.statistics import ( from homeassistant.config_entries import ConfigEntry from homeassistant.const import ( ATTR_ENTITY_ID, + ENERGY_KILO_WATT_HOUR, + ENERGY_MEGA_WATT_HOUR, EVENT_HOMEASSISTANT_START, SOUND_PRESSURE_DB, + TEMP_CELSIUS, + VOLUME_CUBIC_FEET, + VOLUME_CUBIC_METERS, Platform, ) import homeassistant.core as ha @@ -262,7 +267,7 @@ async def _insert_sum_statistics( statistic_id = metadata["statistic_id"] last_stats = await get_instance(hass).async_add_executor_job( - get_last_statistics, hass, 1, statistic_id, True + get_last_statistics, hass, 1, statistic_id, False ) if statistic_id in last_stats: sum_ = last_stats[statistic_id][0]["sum"] or 0 @@ -291,7 +296,7 @@ async def _insert_statistics(hass: HomeAssistant) -> None: "source": DOMAIN, "name": "Outdoor temperature", "statistic_id": f"{DOMAIN}:temperature_outdoor", - "unit_of_measurement": "°C", + "unit_of_measurement": TEMP_CELSIUS, "has_mean": True, "has_sum": False, } @@ -304,11 +309,11 @@ async def _insert_statistics(hass: HomeAssistant) -> None: "source": DOMAIN, "name": "Energy consumption 1", "statistic_id": f"{DOMAIN}:energy_consumption_kwh", - "unit_of_measurement": "kWh", + "unit_of_measurement": ENERGY_KILO_WATT_HOUR, "has_mean": False, "has_sum": True, } - await _insert_sum_statistics(hass, metadata, yesterday_midnight, today_midnight, 2) + await _insert_sum_statistics(hass, metadata, yesterday_midnight, today_midnight, 1) # Add external energy consumption in MWh, ~ 12 kWh / day # This should not be possible to pick for the energy dashboard @@ -316,12 +321,12 @@ async def _insert_statistics(hass: HomeAssistant) -> None: "source": DOMAIN, "name": "Energy consumption 2", "statistic_id": f"{DOMAIN}:energy_consumption_mwh", - "unit_of_measurement": "MWh", + "unit_of_measurement": ENERGY_MEGA_WATT_HOUR, "has_mean": False, "has_sum": True, } await _insert_sum_statistics( - hass, metadata, yesterday_midnight, today_midnight, 0.002 + hass, metadata, yesterday_midnight, today_midnight, 0.001 ) # Add external gas consumption in m³, ~6 m3/day @@ -330,11 +335,13 @@ async def _insert_statistics(hass: HomeAssistant) -> None: "source": DOMAIN, "name": "Gas consumption 1", "statistic_id": f"{DOMAIN}:gas_consumption_m3", - "unit_of_measurement": "m³", + "unit_of_measurement": VOLUME_CUBIC_METERS, "has_mean": False, "has_sum": True, } - await _insert_sum_statistics(hass, metadata, yesterday_midnight, today_midnight, 1) + await _insert_sum_statistics( + hass, metadata, yesterday_midnight, today_midnight, 0.5 + ) # Add external gas consumption in ft³, ~180 ft3/day # This should not be possible to pick for the energy dashboard @@ -342,11 +349,11 @@ async def _insert_statistics(hass: HomeAssistant) -> None: "source": DOMAIN, "name": "Gas consumption 2", "statistic_id": f"{DOMAIN}:gas_consumption_ft3", - "unit_of_measurement": "ft³", + "unit_of_measurement": VOLUME_CUBIC_FEET, "has_mean": False, "has_sum": True, } - await _insert_sum_statistics(hass, metadata, yesterday_midnight, today_midnight, 30) + await _insert_sum_statistics(hass, metadata, yesterday_midnight, today_midnight, 15) async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool: diff --git a/tests/components/demo/test_init.py b/tests/components/demo/test_init.py index 1577b411c23..f7fec9629ac 100644 --- a/tests/components/demo/test_init.py +++ b/tests/components/demo/test_init.py @@ -17,6 +17,7 @@ from homeassistant.components.repairs import DOMAIN as REPAIRS_DOMAIN from homeassistant.helpers.json import JSONEncoder from homeassistant.setup import async_setup_component import homeassistant.util.dt as dt_util +from homeassistant.util.unit_system import IMPERIAL_SYSTEM from tests.components.recorder.common import async_wait_recording_done @@ -83,6 +84,8 @@ async def test_demo_statistics(hass, recorder_mock): async def test_demo_statistics_growth(hass, recorder_mock): """Test that the demo sum statistics adds to the previous state.""" + hass.config.units = IMPERIAL_SYSTEM + now = dt_util.now() last_week = now - datetime.timedelta(days=7) last_week_midnight = last_week.replace(hour=0, minute=0, second=0, microsecond=0) @@ -92,7 +95,7 @@ async def test_demo_statistics_growth(hass, recorder_mock): "source": DOMAIN, "name": "Energy consumption 1", "statistic_id": statistic_id, - "unit_of_measurement": "kWh", + "unit_of_measurement": "m³", "has_mean": False, "has_sum": True, } @@ -114,6 +117,7 @@ async def test_demo_statistics_growth(hass, recorder_mock): get_last_statistics, hass, 1, statistic_id, False ) assert statistics[statistic_id][0]["sum"] > 2**20 + assert statistics[statistic_id][0]["sum"] <= (2**20 + 24) async def test_issues_created(hass, hass_client, hass_ws_client): -- GitLab