mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
Add quarter-hour period feature for utility_meter component (#41999)
* add support for quarter-hourly intervals to utility meter (15 minutes) * add tests * add test for every quarter * Update homeassistant/components/utility_meter/sensor.py Co-authored-by: springstan <46536646+springstan@users.noreply.github.com> Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
This commit is contained in:
parent
bf955f3eb8
commit
293f8eaaf3
@ -1,6 +1,7 @@
|
|||||||
"""Constants for the utility meter component."""
|
"""Constants for the utility meter component."""
|
||||||
DOMAIN = "utility_meter"
|
DOMAIN = "utility_meter"
|
||||||
|
|
||||||
|
QUARTER_HOURLY = "quarter-hourly"
|
||||||
HOURLY = "hourly"
|
HOURLY = "hourly"
|
||||||
DAILY = "daily"
|
DAILY = "daily"
|
||||||
WEEKLY = "weekly"
|
WEEKLY = "weekly"
|
||||||
@ -9,7 +10,16 @@ BIMONTHLY = "bimonthly"
|
|||||||
QUARTERLY = "quarterly"
|
QUARTERLY = "quarterly"
|
||||||
YEARLY = "yearly"
|
YEARLY = "yearly"
|
||||||
|
|
||||||
METER_TYPES = [HOURLY, DAILY, WEEKLY, MONTHLY, BIMONTHLY, QUARTERLY, YEARLY]
|
METER_TYPES = [
|
||||||
|
QUARTER_HOURLY,
|
||||||
|
HOURLY,
|
||||||
|
DAILY,
|
||||||
|
WEEKLY,
|
||||||
|
MONTHLY,
|
||||||
|
BIMONTHLY,
|
||||||
|
QUARTERLY,
|
||||||
|
YEARLY,
|
||||||
|
]
|
||||||
|
|
||||||
DATA_UTILITY = "utility_meter_data"
|
DATA_UTILITY = "utility_meter_data"
|
||||||
|
|
||||||
|
@ -36,6 +36,7 @@ from .const import (
|
|||||||
DATA_UTILITY,
|
DATA_UTILITY,
|
||||||
HOURLY,
|
HOURLY,
|
||||||
MONTHLY,
|
MONTHLY,
|
||||||
|
QUARTER_HOURLY,
|
||||||
QUARTERLY,
|
QUARTERLY,
|
||||||
SERVICE_CALIBRATE_METER,
|
SERVICE_CALIBRATE_METER,
|
||||||
SIGNAL_RESET_METER,
|
SIGNAL_RESET_METER,
|
||||||
@ -241,7 +242,16 @@ class UtilityMeterSensor(RestoreEntity):
|
|||||||
"""Handle entity which will be added."""
|
"""Handle entity which will be added."""
|
||||||
await super().async_added_to_hass()
|
await super().async_added_to_hass()
|
||||||
|
|
||||||
if self._period == HOURLY:
|
if self._period == QUARTER_HOURLY:
|
||||||
|
for quarter in range(4):
|
||||||
|
async_track_time_change(
|
||||||
|
self.hass,
|
||||||
|
self._async_reset_meter,
|
||||||
|
minute=(quarter * 15)
|
||||||
|
+ self._period_offset.seconds % (15 * 60) // 60,
|
||||||
|
second=self._period_offset.seconds % 60,
|
||||||
|
)
|
||||||
|
elif self._period == HOURLY:
|
||||||
async_track_time_change(
|
async_track_time_change(
|
||||||
self.hass,
|
self.hass,
|
||||||
self._async_reset_meter,
|
self._async_reset_meter,
|
||||||
|
@ -264,6 +264,34 @@ async def _test_self_reset(hass, config, start_time, expect_reset=True):
|
|||||||
assert state.state == "5"
|
assert state.state == "5"
|
||||||
|
|
||||||
|
|
||||||
|
async def test_self_reset_quarter_hourly(hass, legacy_patchable_time):
|
||||||
|
"""Test quarter-hourly reset of meter."""
|
||||||
|
await _test_self_reset(
|
||||||
|
hass, gen_config("quarter-hourly"), "2017-12-31T23:59:00.000000+00:00"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def test_self_reset_quarter_hourly_first_quarter(hass, legacy_patchable_time):
|
||||||
|
"""Test quarter-hourly reset of meter."""
|
||||||
|
await _test_self_reset(
|
||||||
|
hass, gen_config("quarter-hourly"), "2017-12-31T23:14:00.000000+00:00"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def test_self_reset_quarter_hourly_second_quarter(hass, legacy_patchable_time):
|
||||||
|
"""Test quarter-hourly reset of meter."""
|
||||||
|
await _test_self_reset(
|
||||||
|
hass, gen_config("quarter-hourly"), "2017-12-31T23:29:00.000000+00:00"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def test_self_reset_quarter_hourly_third_quarter(hass, legacy_patchable_time):
|
||||||
|
"""Test quarter-hourly reset of meter."""
|
||||||
|
await _test_self_reset(
|
||||||
|
hass, gen_config("quarter-hourly"), "2017-12-31T23:44:00.000000+00:00"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
async def test_self_reset_hourly(hass, legacy_patchable_time):
|
async def test_self_reset_hourly(hass, legacy_patchable_time):
|
||||||
"""Test hourly reset of meter."""
|
"""Test hourly reset of meter."""
|
||||||
await _test_self_reset(
|
await _test_self_reset(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user