mirror of
https://github.com/home-assistant/core.git
synced 2025-07-13 16:27:08 +00:00
Add bimonthly period feature for utility_meter component (#39931)
This commit is contained in:
parent
56ba4907e1
commit
c8d5500441
@ -5,10 +5,11 @@ HOURLY = "hourly"
|
||||
DAILY = "daily"
|
||||
WEEKLY = "weekly"
|
||||
MONTHLY = "monthly"
|
||||
BIMONTHLY = "bimonthly"
|
||||
QUARTERLY = "quarterly"
|
||||
YEARLY = "yearly"
|
||||
|
||||
METER_TYPES = [HOURLY, DAILY, WEEKLY, MONTHLY, QUARTERLY, YEARLY]
|
||||
METER_TYPES = [HOURLY, DAILY, WEEKLY, MONTHLY, BIMONTHLY, QUARTERLY, YEARLY]
|
||||
|
||||
DATA_UTILITY = "utility_meter_data"
|
||||
|
||||
|
@ -24,6 +24,7 @@ import homeassistant.util.dt as dt_util
|
||||
|
||||
from .const import (
|
||||
ATTR_VALUE,
|
||||
BIMONTHLY,
|
||||
CONF_METER,
|
||||
CONF_METER_NET_CONSUMPTION,
|
||||
CONF_METER_OFFSET,
|
||||
@ -204,6 +205,12 @@ class UtilityMeterSensor(RestoreEntity):
|
||||
and now != date(now.year, now.month, 1) + self._period_offset
|
||||
):
|
||||
return
|
||||
if (
|
||||
self._period == BIMONTHLY
|
||||
and now
|
||||
!= date(now.year, (((now.month - 1) // 2) * 2 + 1), 1) + self._period_offset
|
||||
):
|
||||
return
|
||||
if (
|
||||
self._period == QUARTERLY
|
||||
and now
|
||||
@ -241,7 +248,7 @@ class UtilityMeterSensor(RestoreEntity):
|
||||
minute=self._period_offset.seconds // 60,
|
||||
second=self._period_offset.seconds % 60,
|
||||
)
|
||||
elif self._period in [DAILY, WEEKLY, MONTHLY, QUARTERLY, YEARLY]:
|
||||
elif self._period in [DAILY, WEEKLY, MONTHLY, BIMONTHLY, QUARTERLY, YEARLY]:
|
||||
async_track_time_change(
|
||||
self.hass,
|
||||
self._async_reset_meter,
|
||||
|
@ -288,6 +288,23 @@ async def test_self_reset_monthly(hass, legacy_patchable_time):
|
||||
)
|
||||
|
||||
|
||||
async def test_self_reset_bimonthly(hass, legacy_patchable_time):
|
||||
"""Test bimonthly reset of meter occurs on even months."""
|
||||
await _test_self_reset(
|
||||
hass, gen_config("bimonthly"), "2017-12-31T23:59:00.000000+00:00"
|
||||
)
|
||||
|
||||
|
||||
async def test_self_no_reset_bimonthly(hass, legacy_patchable_time):
|
||||
"""Test bimonthly reset of meter does not occur on odd months."""
|
||||
await _test_self_reset(
|
||||
hass,
|
||||
gen_config("bimonthly"),
|
||||
"2018-01-01T23:59:00.000000+00:00",
|
||||
expect_reset=False,
|
||||
)
|
||||
|
||||
|
||||
async def test_self_reset_quarterly(hass, legacy_patchable_time):
|
||||
"""Test quarterly reset of meter."""
|
||||
await _test_self_reset(
|
||||
|
Loading…
x
Reference in New Issue
Block a user