Issue #169 - Adds support for Versatile Thermostat UI Card Co-authored-by: Jean-Marc Collin <jean-marc.collin-extern@renault.com>
This commit is contained in:
@@ -110,7 +110,7 @@ async def test_over_climate_regulation(hass: HomeAssistant, skip_hass_states_is_
|
||||
with patch(
|
||||
"custom_components.versatile_thermostat.commons.NowClass.get_now", return_value=event_timestamp
|
||||
):
|
||||
await send_temperature_change_event(entity, 22, event_timestamp)
|
||||
await send_temperature_change_event(entity, 23, event_timestamp)
|
||||
await send_ext_temperature_change_event(entity, 19, event_timestamp)
|
||||
|
||||
# the regulated temperature should be under
|
||||
@@ -212,14 +212,14 @@ async def test_over_climate_regulation_ac_mode(hass: HomeAssistant, skip_hass_st
|
||||
|
||||
# the regulated temperature should be under
|
||||
assert entity.regulated_target_temp < entity.target_temperature
|
||||
assert entity.regulated_target_temp == 25-2.5 # +2.3 without round_to_nearest
|
||||
assert entity.regulated_target_temp == 25-2 # +2.3 without round_to_nearest
|
||||
|
||||
# change temperature so that the regulated temperature should slow down
|
||||
event_timestamp = now - timedelta(minutes=3)
|
||||
with patch(
|
||||
"custom_components.versatile_thermostat.commons.NowClass.get_now", return_value=event_timestamp
|
||||
):
|
||||
await send_temperature_change_event(entity, 20, event_timestamp)
|
||||
await send_temperature_change_event(entity, 18, event_timestamp)
|
||||
await send_ext_temperature_change_event(entity, 25, event_timestamp)
|
||||
|
||||
# the regulated temperature should be greater
|
||||
@@ -331,4 +331,4 @@ async def test_over_climate_regulation_limitations(hass: HomeAssistant, skip_has
|
||||
# the regulated should have been done
|
||||
assert entity.regulated_target_temp != old_regulated_temp
|
||||
assert entity.regulated_target_temp > entity.target_temperature
|
||||
assert entity.regulated_target_temp == 17 + 1 # 0.7 without round_to_nearest
|
||||
assert entity.regulated_target_temp == 17 + 1.5 # 0.7 without round_to_nearest
|
||||
@@ -241,7 +241,7 @@ async def test_window_binary_sensors(
|
||||
await entity.async_set_preset_mode(PRESET_COMFORT)
|
||||
await entity.async_set_hvac_mode(HVACMode.HEAT)
|
||||
await send_temperature_change_event(entity, 15, now)
|
||||
assert entity.window_state is None
|
||||
assert entity.window_state is STATE_OFF
|
||||
|
||||
await window_binary_sensor.async_my_climate_changed()
|
||||
assert window_binary_sensor.state is STATE_OFF
|
||||
|
||||
@@ -243,7 +243,7 @@ async def test_bug_66(
|
||||
assert entity.hvac_mode is HVACMode.HEAT
|
||||
assert entity.preset_mode is PRESET_BOOST
|
||||
assert entity.target_temperature == 19
|
||||
assert entity.window_state is None
|
||||
assert entity.window_state is STATE_OFF
|
||||
|
||||
# Open the window and let the thermostat shut down
|
||||
with patch(
|
||||
|
||||
@@ -69,7 +69,7 @@ async def test_one_switch_cycle(
|
||||
assert entity.hvac_mode is HVACMode.HEAT
|
||||
assert entity.preset_mode is PRESET_BOOST
|
||||
assert entity.target_temperature == 19
|
||||
assert entity.window_state is None
|
||||
assert entity.window_state is STATE_OFF
|
||||
|
||||
event_timestamp = now - timedelta(minutes=4)
|
||||
await send_temperature_change_event(entity, 15, event_timestamp)
|
||||
@@ -282,7 +282,7 @@ async def test_multiple_switchs(
|
||||
assert entity.hvac_mode is HVACMode.HEAT
|
||||
assert entity.preset_mode is PRESET_BOOST
|
||||
assert entity.target_temperature == 19
|
||||
assert entity.window_state is None
|
||||
assert entity.window_state is STATE_OFF
|
||||
|
||||
event_timestamp = now - timedelta(minutes=4)
|
||||
await send_temperature_change_event(entity, 15, event_timestamp)
|
||||
@@ -418,7 +418,7 @@ async def test_multiple_climates(
|
||||
assert entity.hvac_mode is HVACMode.HEAT
|
||||
assert entity.preset_mode is PRESET_BOOST
|
||||
assert entity.target_temperature == 19
|
||||
assert entity.window_state is None
|
||||
assert entity.window_state is STATE_OFF
|
||||
|
||||
event_timestamp = now - timedelta(minutes=4)
|
||||
await send_temperature_change_event(entity, 15, event_timestamp)
|
||||
@@ -443,7 +443,7 @@ async def test_multiple_climates(
|
||||
assert entity.hvac_mode is HVACMode.OFF
|
||||
assert entity.preset_mode is PRESET_BOOST
|
||||
assert entity.target_temperature == 19
|
||||
assert entity.window_state is None
|
||||
assert entity.window_state is STATE_OFF
|
||||
|
||||
event_timestamp = now - timedelta(minutes=4)
|
||||
await send_temperature_change_event(entity, 15, event_timestamp)
|
||||
@@ -518,7 +518,7 @@ async def test_multiple_climates_underlying_changes(
|
||||
assert entity.hvac_mode is HVACMode.HEAT
|
||||
assert entity.preset_mode is PRESET_BOOST
|
||||
assert entity.target_temperature == 19
|
||||
assert entity.window_state is None
|
||||
assert entity.window_state is STATE_OFF
|
||||
|
||||
event_timestamp = now - timedelta(minutes=4)
|
||||
await send_temperature_change_event(entity, 15, event_timestamp)
|
||||
|
||||
@@ -26,15 +26,15 @@ def test_pi_algorithm_basics():
|
||||
|
||||
# to reset the accumulated error
|
||||
the_algo.reset_accumulated_error()
|
||||
assert the_algo.calculate_regulated_temperature(18, 10) == 21.5 # +1.5
|
||||
assert the_algo.calculate_regulated_temperature(18.1, 10) == 21.6 # +1.6
|
||||
assert the_algo.calculate_regulated_temperature(18.3, 10) == 21.6 # +1.6
|
||||
assert the_algo.calculate_regulated_temperature(18.5, 10) == 21.7 # +1.7
|
||||
assert the_algo.calculate_regulated_temperature(18.7, 10) == 21.7 # +1.7
|
||||
assert the_algo.calculate_regulated_temperature(19, 10) == 21.7 # +1.7
|
||||
assert the_algo.calculate_regulated_temperature(18, 10) == 21.3 # +1.5
|
||||
assert the_algo.calculate_regulated_temperature(18.1, 10) == 21.4 # +1.6
|
||||
assert the_algo.calculate_regulated_temperature(18.3, 10) == 21.4 # +1.6
|
||||
assert the_algo.calculate_regulated_temperature(18.5, 10) == 21.5 # +1.7
|
||||
assert the_algo.calculate_regulated_temperature(18.7, 10) == 21.6 # +1.7
|
||||
assert the_algo.calculate_regulated_temperature(19, 10) == 21.6 # +1.7
|
||||
assert the_algo.calculate_regulated_temperature(20, 10) == 21.5 # +1.5
|
||||
assert the_algo.calculate_regulated_temperature(21, 10) == 20.8 # +0.8
|
||||
assert the_algo.calculate_regulated_temperature(21, 10) == 20.7 # +0.7
|
||||
assert the_algo.calculate_regulated_temperature(21, 10) == 20.9 # +0.8
|
||||
assert the_algo.calculate_regulated_temperature(21, 10) == 20.8 # +0.7
|
||||
assert the_algo.calculate_regulated_temperature(20, 10) == 20.9 # +0.7
|
||||
|
||||
# Test temperature external
|
||||
@@ -54,15 +54,15 @@ def test_pi_algorithm_light():
|
||||
# to reset the accumulated erro
|
||||
the_algo.set_target_temp(20)
|
||||
|
||||
assert the_algo.calculate_regulated_temperature(18, 10) == 21.5 # +1.5
|
||||
assert the_algo.calculate_regulated_temperature(18.1, 10) == 21.6 # +1.6
|
||||
assert the_algo.calculate_regulated_temperature(18.3, 10) == 21.6 # +1.6
|
||||
assert the_algo.calculate_regulated_temperature(18.5, 10) == 21.7 # +1.7
|
||||
assert the_algo.calculate_regulated_temperature(18.7, 10) == 21.7 # +1.7
|
||||
assert the_algo.calculate_regulated_temperature(19, 10) == 21.7 # +1.7
|
||||
assert the_algo.calculate_regulated_temperature(18, 10) == 21.3 # +1.5
|
||||
assert the_algo.calculate_regulated_temperature(18.1, 10) == 21.4 # +1.6
|
||||
assert the_algo.calculate_regulated_temperature(18.3, 10) == 21.4 # +1.6
|
||||
assert the_algo.calculate_regulated_temperature(18.5, 10) == 21.5 # +1.7
|
||||
assert the_algo.calculate_regulated_temperature(18.7, 10) == 21.6 # +1.7
|
||||
assert the_algo.calculate_regulated_temperature(19, 10) == 21.6 # +1.7
|
||||
assert the_algo.calculate_regulated_temperature(20, 10) == 21.5 # +1.5
|
||||
assert the_algo.calculate_regulated_temperature(21, 10) == 20.8 # +0.8
|
||||
assert the_algo.calculate_regulated_temperature(21, 10) == 20.7 # +0.7
|
||||
assert the_algo.calculate_regulated_temperature(21, 10) == 20.9 # +0.8
|
||||
assert the_algo.calculate_regulated_temperature(21, 10) == 20.8 # +0.7
|
||||
assert the_algo.calculate_regulated_temperature(20, 10) == 20.9 # +0.7
|
||||
|
||||
# Test temperature external
|
||||
@@ -81,15 +81,15 @@ def test_pi_algorithm_medium():
|
||||
# to reset the accumulated erro
|
||||
the_algo.set_target_temp(20)
|
||||
|
||||
assert the_algo.calculate_regulated_temperature(18, 10) == 22.2
|
||||
assert the_algo.calculate_regulated_temperature(18.1, 10) == 22.3
|
||||
assert the_algo.calculate_regulated_temperature(18.3, 10) == 22.4
|
||||
assert the_algo.calculate_regulated_temperature(18.5, 10) == 22.5
|
||||
assert the_algo.calculate_regulated_temperature(18.7, 10) == 22.5
|
||||
assert the_algo.calculate_regulated_temperature(19, 10) == 22.4
|
||||
assert the_algo.calculate_regulated_temperature(18, 10) == 22.0
|
||||
assert the_algo.calculate_regulated_temperature(18.1, 10) == 22.1
|
||||
assert the_algo.calculate_regulated_temperature(18.3, 10) == 22.2
|
||||
assert the_algo.calculate_regulated_temperature(18.5, 10) == 22.3
|
||||
assert the_algo.calculate_regulated_temperature(18.7, 10) == 22.4
|
||||
assert the_algo.calculate_regulated_temperature(19, 10) == 22.3
|
||||
assert the_algo.calculate_regulated_temperature(20, 10) == 21.9
|
||||
assert the_algo.calculate_regulated_temperature(21, 10) == 20.5
|
||||
assert the_algo.calculate_regulated_temperature(21, 10) == 20.4
|
||||
assert the_algo.calculate_regulated_temperature(21, 10) == 20.3
|
||||
assert the_algo.calculate_regulated_temperature(20, 10) == 20.8
|
||||
|
||||
# Test temperature external
|
||||
@@ -107,6 +107,7 @@ def test_pi_algorithm_medium():
|
||||
the_algo.set_target_temp(20)
|
||||
the_algo.reset_accumulated_error()
|
||||
# Test the error acculation effect
|
||||
assert the_algo.calculate_regulated_temperature(19, 5) == 22.0
|
||||
assert the_algo.calculate_regulated_temperature(19, 5) == 22.1
|
||||
assert the_algo.calculate_regulated_temperature(19, 5) == 22.2
|
||||
assert the_algo.calculate_regulated_temperature(19, 5) == 22.3
|
||||
@@ -119,7 +120,6 @@ def test_pi_algorithm_medium():
|
||||
assert the_algo.calculate_regulated_temperature(19, 5) == 23
|
||||
assert the_algo.calculate_regulated_temperature(19, 5) == 23
|
||||
assert the_algo.calculate_regulated_temperature(19, 5) == 23
|
||||
assert the_algo.calculate_regulated_temperature(19, 5) == 23
|
||||
|
||||
def test_pi_algorithm_strong():
|
||||
""" Test the PI algorithm """
|
||||
@@ -131,20 +131,20 @@ def test_pi_algorithm_strong():
|
||||
# to reset the accumulated erro
|
||||
the_algo.set_target_temp(20)
|
||||
|
||||
assert the_algo.calculate_regulated_temperature(18, 10) == 23.6
|
||||
assert the_algo.calculate_regulated_temperature(18.1, 10) == 23.9
|
||||
assert the_algo.calculate_regulated_temperature(18.3, 10) == 24.0
|
||||
assert the_algo.calculate_regulated_temperature(18, 10) == 23.2
|
||||
assert the_algo.calculate_regulated_temperature(18.1, 10) == 23.5
|
||||
assert the_algo.calculate_regulated_temperature(18.3, 10) == 23.8
|
||||
assert the_algo.calculate_regulated_temperature(18.5, 10) == 24
|
||||
assert the_algo.calculate_regulated_temperature(18.7, 10) == 24
|
||||
assert the_algo.calculate_regulated_temperature(19, 10) == 24
|
||||
assert the_algo.calculate_regulated_temperature(20, 10) == 23.9
|
||||
assert the_algo.calculate_regulated_temperature(21, 10) == 21.4
|
||||
assert the_algo.calculate_regulated_temperature(21, 10) == 21.2
|
||||
assert the_algo.calculate_regulated_temperature(21, 10) == 21
|
||||
assert the_algo.calculate_regulated_temperature(21, 10) == 20.8
|
||||
assert the_algo.calculate_regulated_temperature(21, 10) == 20.6
|
||||
assert the_algo.calculate_regulated_temperature(21, 10) == 20.4
|
||||
assert the_algo.calculate_regulated_temperature(21, 10) == 20.2
|
||||
assert the_algo.calculate_regulated_temperature(21, 10) == 20
|
||||
|
||||
# Test temperature external
|
||||
assert the_algo.calculate_regulated_temperature(20, 8) == 21.0
|
||||
@@ -161,14 +161,14 @@ def test_pi_algorithm_strong():
|
||||
the_algo.set_target_temp(20)
|
||||
the_algo.reset_accumulated_error()
|
||||
# Test the error acculation effect
|
||||
assert the_algo.calculate_regulated_temperature(19, 10) == 22.6
|
||||
assert the_algo.calculate_regulated_temperature(19, 10) == 22.8
|
||||
assert the_algo.calculate_regulated_temperature(19, 10) == 23
|
||||
assert the_algo.calculate_regulated_temperature(19, 10) == 23.0
|
||||
assert the_algo.calculate_regulated_temperature(19, 10) == 23.2
|
||||
assert the_algo.calculate_regulated_temperature(19, 10) == 23.4
|
||||
assert the_algo.calculate_regulated_temperature(19, 10) == 23.6
|
||||
assert the_algo.calculate_regulated_temperature(19, 10) == 23.8
|
||||
assert the_algo.calculate_regulated_temperature(19, 10) == 24
|
||||
assert the_algo.calculate_regulated_temperature(19, 10) == 24
|
||||
assert the_algo.calculate_regulated_temperature(19, 10) == 24
|
||||
assert the_algo.calculate_regulated_temperature(19, 10) == 24
|
||||
assert the_algo.calculate_regulated_temperature(19, 10) == 24
|
||||
assert the_algo.calculate_regulated_temperature(19, 10) == 24.0
|
||||
assert the_algo.calculate_regulated_temperature(19, 10) == 24.0
|
||||
assert the_algo.calculate_regulated_temperature(19, 10) == 24.0
|
||||
assert the_algo.calculate_regulated_temperature(19, 10) == 24.0
|
||||
|
||||
@@ -64,7 +64,7 @@ async def test_window_management_time_not_enough(
|
||||
assert entity.overpowering_state is None
|
||||
assert entity.target_temperature == 19
|
||||
|
||||
assert entity.window_state is None
|
||||
assert entity.window_state is STATE_OFF
|
||||
|
||||
# Open the window, but condition of time is not satisfied and check the thermostat don't turns off
|
||||
with patch(
|
||||
@@ -152,7 +152,7 @@ async def test_window_management_time_enough(
|
||||
assert entity.overpowering_state is None
|
||||
assert entity.target_temperature == 19
|
||||
|
||||
assert entity.window_state is None
|
||||
assert entity.window_state is STATE_OFF
|
||||
|
||||
# change temperature to force turning on the heater
|
||||
with patch(
|
||||
@@ -294,7 +294,7 @@ async def test_window_auto_fast(hass: HomeAssistant, skip_hass_states_is_state):
|
||||
assert entity.overpowering_state is None
|
||||
assert entity.target_temperature == 21
|
||||
|
||||
assert entity.window_state is None
|
||||
assert entity.window_state is STATE_OFF
|
||||
|
||||
# Make the temperature down
|
||||
with patch(
|
||||
@@ -478,7 +478,7 @@ async def test_window_auto_auto_stop(hass: HomeAssistant, skip_hass_states_is_st
|
||||
assert entity.overpowering_state is None
|
||||
assert entity.target_temperature == 21
|
||||
|
||||
assert entity.window_state is None
|
||||
assert entity.window_state is STATE_OFF
|
||||
|
||||
# Make the temperature down
|
||||
with patch(
|
||||
@@ -623,7 +623,7 @@ async def test_window_auto_no_on_percent(
|
||||
assert entity.overpowering_state is None
|
||||
assert entity.target_temperature == 21
|
||||
|
||||
assert entity.window_state is None
|
||||
assert entity.window_state is STATE_OFF
|
||||
|
||||
# Make the temperature down
|
||||
with patch(
|
||||
@@ -728,7 +728,7 @@ async def test_window_bypass(
|
||||
assert entity.overpowering_state is None
|
||||
assert entity.target_temperature == 19
|
||||
|
||||
assert entity.window_state is None
|
||||
assert entity.window_state is STATE_OFF
|
||||
|
||||
# change temperature to force turning on the heater
|
||||
with patch(
|
||||
@@ -866,7 +866,7 @@ async def test_window_auto_bypass(hass: HomeAssistant, skip_hass_states_is_state
|
||||
assert entity.overpowering_state is None
|
||||
assert entity.target_temperature == 21
|
||||
|
||||
assert entity.window_state is None
|
||||
assert entity.window_state is STATE_OFF
|
||||
|
||||
# Make the temperature down
|
||||
with patch(
|
||||
@@ -973,7 +973,7 @@ async def test_window_bypass_reactivate(hass: HomeAssistant, skip_hass_states_is
|
||||
assert entity.overpowering_state is None
|
||||
assert entity.target_temperature == 19
|
||||
|
||||
assert entity.window_state is None
|
||||
assert entity.window_state is STATE_OFF
|
||||
|
||||
# change temperature to force turning on the heater
|
||||
with patch(
|
||||
|
||||
Reference in New Issue
Block a user