enhance the overpowering algo if current_power > max_power
This commit is contained in:
@@ -348,7 +348,7 @@ async def test_bug_407(
|
||||
await entity.async_set_preset_mode(PRESET_COMFORT)
|
||||
assert entity.hvac_mode is HVACMode.HEAT
|
||||
assert entity.preset_mode is PRESET_COMFORT
|
||||
assert entity.power_manager.overpowering_state is STATE_UNKNOWN
|
||||
assert entity.power_manager.overpowering_state is STATE_OFF
|
||||
assert entity.target_temperature == 18
|
||||
# waits that the heater starts
|
||||
await hass.async_block_till_done()
|
||||
|
||||
@@ -79,6 +79,8 @@ async def test_central_power_manager_init(
|
||||
"is_on": True,
|
||||
"current_temperature": 13,
|
||||
"target_temperature": 12,
|
||||
"saved_target_temp": 18,
|
||||
"is_overpowering_detected": False,
|
||||
},
|
||||
{
|
||||
"name": "vtherm2",
|
||||
@@ -86,6 +88,8 @@ async def test_central_power_manager_init(
|
||||
"is_on": True,
|
||||
"current_temperature": 18,
|
||||
"target_temperature": 12,
|
||||
"saved_target_temp": 18,
|
||||
"is_overpowering_detected": False,
|
||||
},
|
||||
{
|
||||
"name": "vtherm3",
|
||||
@@ -93,6 +97,8 @@ async def test_central_power_manager_init(
|
||||
"is_on": True,
|
||||
"current_temperature": 12,
|
||||
"target_temperature": 18,
|
||||
"saved_target_temp": 18,
|
||||
"is_overpowering_detected": False,
|
||||
},
|
||||
],
|
||||
["vtherm2", "vtherm1", "vtherm3"],
|
||||
@@ -106,6 +112,8 @@ async def test_central_power_manager_init(
|
||||
"is_on": True,
|
||||
"current_temperature": 13,
|
||||
"target_temperature": 12,
|
||||
"saved_target_temp": 18,
|
||||
"is_overpowering_detected": False,
|
||||
},
|
||||
{
|
||||
"name": "vtherm2",
|
||||
@@ -113,6 +121,8 @@ async def test_central_power_manager_init(
|
||||
"is_on": False,
|
||||
"current_temperature": 18,
|
||||
"target_temperature": 12,
|
||||
"saved_target_temp": 18,
|
||||
"is_overpowering_detected": False,
|
||||
},
|
||||
{
|
||||
"name": "vtherm3",
|
||||
@@ -120,6 +130,8 @@ async def test_central_power_manager_init(
|
||||
"is_on": True,
|
||||
"current_temperature": 12,
|
||||
"target_temperature": 18,
|
||||
"saved_target_temp": 18,
|
||||
"is_overpowering_detected": False,
|
||||
},
|
||||
],
|
||||
["vtherm3"],
|
||||
@@ -133,6 +145,8 @@ async def test_central_power_manager_init(
|
||||
"is_on": True,
|
||||
"current_temperature": 13,
|
||||
"target_temperature": 12,
|
||||
"saved_target_temp": 18,
|
||||
"is_overpowering_detected": False,
|
||||
},
|
||||
{
|
||||
"name": "vtherm2",
|
||||
@@ -140,6 +154,8 @@ async def test_central_power_manager_init(
|
||||
"is_on": True,
|
||||
"current_temperature": None,
|
||||
"target_temperature": 12,
|
||||
"saved_target_temp": 18,
|
||||
"is_overpowering_detected": False,
|
||||
},
|
||||
{
|
||||
"name": "vtherm3",
|
||||
@@ -147,6 +163,8 @@ async def test_central_power_manager_init(
|
||||
"is_on": True,
|
||||
"current_temperature": 12,
|
||||
"target_temperature": 18,
|
||||
"saved_target_temp": 18,
|
||||
"is_overpowering_detected": False,
|
||||
},
|
||||
],
|
||||
["vtherm1", "vtherm3", "vtherm2"],
|
||||
@@ -160,6 +178,8 @@ async def test_central_power_manager_init(
|
||||
"is_on": True,
|
||||
"current_temperature": 13,
|
||||
"target_temperature": 12,
|
||||
"saved_target_temp": 18,
|
||||
"is_overpowering_detected": False,
|
||||
},
|
||||
{
|
||||
"name": "vtherm2",
|
||||
@@ -167,6 +187,8 @@ async def test_central_power_manager_init(
|
||||
"is_on": True,
|
||||
"current_temperature": 18,
|
||||
"target_temperature": None,
|
||||
"saved_target_temp": 18,
|
||||
"is_overpowering_detected": False,
|
||||
},
|
||||
{
|
||||
"name": "vtherm3",
|
||||
@@ -174,10 +196,45 @@ async def test_central_power_manager_init(
|
||||
"is_on": True,
|
||||
"current_temperature": 12,
|
||||
"target_temperature": 18,
|
||||
"saved_target_temp": 18,
|
||||
"is_overpowering_detected": False,
|
||||
},
|
||||
],
|
||||
["vtherm1", "vtherm3", "vtherm2"],
|
||||
),
|
||||
# simple sort with overpowering detected
|
||||
(
|
||||
[
|
||||
{
|
||||
"name": "vtherm1",
|
||||
"is_configured": True,
|
||||
"is_on": True,
|
||||
"current_temperature": 13,
|
||||
# "target_temperature": 12,
|
||||
"saved_target_temp": 21,
|
||||
"is_overpowering_detected": True,
|
||||
},
|
||||
{
|
||||
"name": "vtherm2",
|
||||
"is_configured": True,
|
||||
"is_on": True,
|
||||
"current_temperature": 18,
|
||||
# "target_temperature": 12,
|
||||
"saved_target_temp": 17,
|
||||
"is_overpowering_detected": True,
|
||||
},
|
||||
{
|
||||
"name": "vtherm3",
|
||||
"is_configured": True,
|
||||
"is_on": True,
|
||||
"current_temperature": 12,
|
||||
# "target_temperature": 18,
|
||||
"saved_target_temp": 16,
|
||||
"is_overpowering_detected": True,
|
||||
},
|
||||
],
|
||||
["vtherm2", "vtherm3", "vtherm1"],
|
||||
),
|
||||
],
|
||||
)
|
||||
async def test_central_power_manageer_find_vtherms(
|
||||
@@ -194,7 +251,9 @@ async def test_central_power_manageer_find_vtherms(
|
||||
vtherm.is_on = vtherm_config.get("is_on")
|
||||
vtherm.current_temperature = vtherm_config.get("current_temperature")
|
||||
vtherm.target_temperature = vtherm_config.get("target_temperature")
|
||||
vtherm.saved_target_temp = vtherm_config.get("saved_target_temp")
|
||||
vtherm.power_manager.is_configured = vtherm_config.get("is_configured")
|
||||
vtherm.power_manager.is_overpowering_detected = vtherm_config.get("is_overpowering_detected")
|
||||
vtherms.append(vtherm)
|
||||
|
||||
with patch(
|
||||
@@ -359,6 +418,60 @@ async def test_central_power_manageer_find_vtherms(
|
||||
],
|
||||
{"vtherm1": False, "vtherm2": True, "vtherm3": True},
|
||||
),
|
||||
# Sheeding only current_power > max_power (need to gain 1000 )
|
||||
(
|
||||
2000,
|
||||
1000,
|
||||
[
|
||||
# should be overpowering
|
||||
{
|
||||
"name": "vtherm1",
|
||||
"device_power": 300,
|
||||
"is_device_active": True,
|
||||
"is_over_climate": False,
|
||||
"nb_underlying_entities": 1,
|
||||
"on_percent": 1,
|
||||
"is_overpowering_detected": False,
|
||||
},
|
||||
# should be overpowering but is already
|
||||
{
|
||||
"name": "vtherm2",
|
||||
"device_power": 600,
|
||||
"is_device_active": True,
|
||||
"is_over_climate": False,
|
||||
"nb_underlying_entities": 4,
|
||||
"on_percent": 0.1,
|
||||
"is_overpowering_detected": True,
|
||||
},
|
||||
# over_climate should be not overpowering (device not active)
|
||||
{
|
||||
"name": "vtherm3",
|
||||
"device_power": 690,
|
||||
"is_device_active": False,
|
||||
"is_over_climate": True,
|
||||
"is_overpowering_detected": False,
|
||||
},
|
||||
# over_climate should be overpowering (device active and not already overpowering)
|
||||
{
|
||||
"name": "vtherm4",
|
||||
"device_power": 690,
|
||||
"is_device_active": True,
|
||||
"is_over_climate": True,
|
||||
"is_overpowering_detected": False,
|
||||
},
|
||||
# should not overpower (keep as is)
|
||||
{
|
||||
"name": "vtherm5",
|
||||
"device_power": 800,
|
||||
"is_device_active": False,
|
||||
"is_over_climate": False,
|
||||
"nb_underlying_entities": 1,
|
||||
"on_percent": 1,
|
||||
"is_overpowering_detected": False,
|
||||
},
|
||||
],
|
||||
{"vtherm1": True, "vtherm4": True},
|
||||
),
|
||||
],
|
||||
)
|
||||
# @pytest.mark.skip
|
||||
|
||||
@@ -98,6 +98,8 @@ async def test_power_feature_manager(
|
||||
}
|
||||
)
|
||||
|
||||
power_manager.start_listening()
|
||||
|
||||
assert power_manager.is_configured is True
|
||||
assert power_manager.overpowering_state == STATE_UNKNOWN
|
||||
|
||||
@@ -197,6 +199,8 @@ async def test_power_feature_manager_set_overpowering(
|
||||
}
|
||||
)
|
||||
|
||||
power_manager.start_listening()
|
||||
|
||||
assert power_manager.is_configured is True
|
||||
assert power_manager.overpowering_state == STATE_UNKNOWN
|
||||
|
||||
|
||||
Reference in New Issue
Block a user