Compare commits
1 Commits
3.8.0.beta
...
3.8.0.beta
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
663a13809c |
@@ -227,13 +227,23 @@ class RegulationParamLight:
|
|||||||
""" Light parameters for regulation"""
|
""" Light parameters for regulation"""
|
||||||
kp:float = 0.2
|
kp:float = 0.2
|
||||||
ki:float = 0.05
|
ki:float = 0.05
|
||||||
|
k_ext:float = 0.05
|
||||||
|
offset_max:float = 1.5
|
||||||
|
stabilization_threshold:float = 0.1
|
||||||
|
accumulated_error_threshold:float = 10
|
||||||
|
|
||||||
|
|
||||||
|
class RegulationParamMedium:
|
||||||
|
""" Light parameters for regulation"""
|
||||||
|
kp:float = 0.3
|
||||||
|
ki:float = 0.05
|
||||||
k_ext:float = 0.1
|
k_ext:float = 0.1
|
||||||
offset_max:float = 2
|
offset_max:float = 2
|
||||||
stabilization_threshold:float = 0.1
|
stabilization_threshold:float = 0.1
|
||||||
accumulated_error_threshold:float = 20
|
accumulated_error_threshold:float = 20
|
||||||
|
|
||||||
|
|
||||||
class RegulationParamMedium:
|
class RegulationParamStrong:
|
||||||
""" Medium parameters for regulation"""
|
""" Medium parameters for regulation"""
|
||||||
kp:float = 0.4
|
kp:float = 0.4
|
||||||
ki:float = 0.08
|
ki:float = 0.08
|
||||||
@@ -242,7 +252,8 @@ class RegulationParamMedium:
|
|||||||
stabilization_threshold:float = 0.1
|
stabilization_threshold:float = 0.1
|
||||||
accumulated_error_threshold:float = 25
|
accumulated_error_threshold:float = 25
|
||||||
|
|
||||||
class RegulationParamStrong:
|
# Not used now
|
||||||
|
class RegulationParamVeryStrong:
|
||||||
""" Strong parameters for regulation"""
|
""" Strong parameters for regulation"""
|
||||||
kp:float = 0.6
|
kp:float = 0.6
|
||||||
ki:float = 0.1
|
ki:float = 0.1
|
||||||
|
|||||||
@@ -29,7 +29,8 @@ class PITemperatureRegulator:
|
|||||||
def set_target_temp(self, target_temp):
|
def set_target_temp(self, target_temp):
|
||||||
""" Set the new target_temp"""
|
""" Set the new target_temp"""
|
||||||
self.target_temp = target_temp
|
self.target_temp = target_temp
|
||||||
self.accumulated_error = 0
|
# Do not reset the accumulated error
|
||||||
|
# self.accumulated_error = 0
|
||||||
|
|
||||||
def calculate_regulated_temperature(self, internal_temp: float, external_temp:float): # pylint: disable=unused-argument
|
def calculate_regulated_temperature(self, internal_temp: float, external_temp:float): # pylint: disable=unused-argument
|
||||||
""" Calculate a new target_temp given some temperature"""
|
""" Calculate a new target_temp given some temperature"""
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ from custom_components.versatile_thermostat.const import (
|
|||||||
PRESET_AWAY_SUFFIX,
|
PRESET_AWAY_SUFFIX,
|
||||||
CONF_CLIMATE,
|
CONF_CLIMATE,
|
||||||
CONF_AUTO_REGULATION_MODE,
|
CONF_AUTO_REGULATION_MODE,
|
||||||
CONF_AUTO_REGULATION_MEDIUM,
|
CONF_AUTO_REGULATION_STRONG,
|
||||||
CONF_AUTO_REGULATION_NONE,
|
CONF_AUTO_REGULATION_NONE,
|
||||||
CONF_AUTO_REGULATION_DTEMP,
|
CONF_AUTO_REGULATION_DTEMP,
|
||||||
CONF_AUTO_REGULATION_PERIOD_MIN
|
CONF_AUTO_REGULATION_PERIOD_MIN
|
||||||
@@ -127,7 +127,7 @@ MOCK_TH_OVER_SWITCH_TPI_CONFIG = {
|
|||||||
MOCK_TH_OVER_CLIMATE_TYPE_CONFIG = {
|
MOCK_TH_OVER_CLIMATE_TYPE_CONFIG = {
|
||||||
CONF_CLIMATE: "climate.mock_climate",
|
CONF_CLIMATE: "climate.mock_climate",
|
||||||
CONF_AC_MODE: False,
|
CONF_AC_MODE: False,
|
||||||
CONF_AUTO_REGULATION_MODE: CONF_AUTO_REGULATION_MEDIUM,
|
CONF_AUTO_REGULATION_MODE: CONF_AUTO_REGULATION_STRONG,
|
||||||
CONF_AUTO_REGULATION_DTEMP: 0.5,
|
CONF_AUTO_REGULATION_DTEMP: 0.5,
|
||||||
CONF_AUTO_REGULATION_PERIOD_MIN: 2
|
CONF_AUTO_REGULATION_PERIOD_MIN: 2
|
||||||
}
|
}
|
||||||
@@ -141,7 +141,7 @@ MOCK_TH_OVER_CLIMATE_TYPE_NOT_REGULATED_CONFIG = {
|
|||||||
MOCK_TH_OVER_CLIMATE_TYPE_AC_CONFIG = {
|
MOCK_TH_OVER_CLIMATE_TYPE_AC_CONFIG = {
|
||||||
CONF_CLIMATE: "climate.mock_climate",
|
CONF_CLIMATE: "climate.mock_climate",
|
||||||
CONF_AC_MODE: True,
|
CONF_AC_MODE: True,
|
||||||
CONF_AUTO_REGULATION_MODE: CONF_AUTO_REGULATION_MEDIUM,
|
CONF_AUTO_REGULATION_MODE: CONF_AUTO_REGULATION_STRONG,
|
||||||
CONF_AUTO_REGULATION_DTEMP: 0.5,
|
CONF_AUTO_REGULATION_DTEMP: 0.5,
|
||||||
CONF_AUTO_REGULATION_PERIOD_MIN: 1
|
CONF_AUTO_REGULATION_PERIOD_MIN: 1
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -306,7 +306,7 @@ async def test_over_climate_regulation_limitations(hass: HomeAssistant, skip_has
|
|||||||
):
|
):
|
||||||
await entity.async_set_temperature(temperature=17)
|
await entity.async_set_temperature(temperature=17)
|
||||||
assert entity.regulated_target_temp > entity.target_temperature
|
assert entity.regulated_target_temp > entity.target_temperature
|
||||||
assert entity.regulated_target_temp == 18+0.5 # In medium we could go up to +3 degre. 0.7 without round_to_nearest
|
assert entity.regulated_target_temp == 18+1 # In strong we could go up to +3 degre. 0.7 without round_to_nearest
|
||||||
old_regulated_temp = entity.regulated_target_temp
|
old_regulated_temp = entity.regulated_target_temp
|
||||||
|
|
||||||
# change temperature so that dtemp < 0.5 and time is > period_min (+ 3min)
|
# change temperature so that dtemp < 0.5 and time is > period_min (+ 3min)
|
||||||
@@ -331,4 +331,4 @@ async def test_over_climate_regulation_limitations(hass: HomeAssistant, skip_has
|
|||||||
# the regulated should have been done
|
# the regulated should have been done
|
||||||
assert entity.regulated_target_temp != old_regulated_temp
|
assert entity.regulated_target_temp != old_regulated_temp
|
||||||
assert entity.regulated_target_temp > entity.target_temperature
|
assert entity.regulated_target_temp > entity.target_temperature
|
||||||
assert entity.regulated_target_temp == 17 + 0.5 # 0.7 without round_to_nearest
|
assert entity.regulated_target_temp == 17 + 1 # 0.7 without round_to_nearest
|
||||||
Reference in New Issue
Block a user