Fix utility meter restore state (#66490)
* Address #63874
* avoid setting _last_period to None
* name is always set in discovery
* ValueError never happens only DecimalException
* async_tariff_change tracks state change - state machine will not pass a None
* test we only reset one utility_meter
* test corrupted restored state
* pretty sure _current_tariff doesn't change from init until here
* missing assert
* Revert "async_tariff_change tracks state change - state machine will not pass a None"
This reverts commit 24fc04a964
.
* address review comment
* always a Decimal
This commit is contained in:
parent
4dbd9b21b7
commit
b211a1faa7
4 changed files with 27 additions and 16 deletions
|
@ -62,7 +62,12 @@ async def test_services(hass):
|
|||
"source": "sensor.energy",
|
||||
"cycle": "hourly",
|
||||
"tariffs": ["peak", "offpeak"],
|
||||
}
|
||||
},
|
||||
"energy_bill2": {
|
||||
"source": "sensor.energy",
|
||||
"cycle": "hourly",
|
||||
"tariffs": ["peak", "offpeak"],
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -153,6 +158,10 @@ async def test_services(hass):
|
|||
state = hass.states.get("sensor.energy_bill_offpeak")
|
||||
assert state.state == "0"
|
||||
|
||||
# meanwhile energy_bill2_peak accumulated all kWh
|
||||
state = hass.states.get("sensor.energy_bill2_peak")
|
||||
assert state.state == "4"
|
||||
|
||||
|
||||
async def test_cron(hass, legacy_patchable_time):
|
||||
"""Test cron pattern and offset fails."""
|
||||
|
|
|
@ -304,6 +304,10 @@ async def test_restore_state(hass):
|
|||
ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR,
|
||||
},
|
||||
),
|
||||
State(
|
||||
"sensor.energy_bill_midpeak",
|
||||
"error",
|
||||
),
|
||||
State(
|
||||
"sensor.energy_bill_offpeak",
|
||||
"6",
|
||||
|
@ -326,6 +330,9 @@ async def test_restore_state(hass):
|
|||
assert state.attributes.get("last_reset") == last_reset
|
||||
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == ENERGY_KILO_WATT_HOUR
|
||||
|
||||
state = hass.states.get("sensor.energy_bill_midpeak")
|
||||
assert state.state == STATE_UNKNOWN
|
||||
|
||||
state = hass.states.get("sensor.energy_bill_offpeak")
|
||||
assert state.state == "6"
|
||||
assert state.attributes.get("status") == COLLECTING
|
||||
|
@ -530,7 +537,7 @@ async def _test_self_reset(hass, config, start_time, expect_reset=True):
|
|||
assert state.attributes.get("last_reset") == now.isoformat()
|
||||
assert state.state == "3"
|
||||
else:
|
||||
assert state.attributes.get("last_period") == 0
|
||||
assert state.attributes.get("last_period") == "0"
|
||||
assert state.state == "5"
|
||||
start_time_str = dt_util.parse_datetime(start_time).isoformat()
|
||||
assert state.attributes.get("last_reset") == start_time_str
|
||||
|
@ -559,7 +566,7 @@ async def _test_self_reset(hass, config, start_time, expect_reset=True):
|
|||
assert state.attributes.get("last_period") == "2"
|
||||
assert state.state == "7"
|
||||
else:
|
||||
assert state.attributes.get("last_period") == 0
|
||||
assert state.attributes.get("last_period") == "0"
|
||||
assert state.state == "9"
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue