40 lines
1017 B
Python
40 lines
1017 B
Python
from .config import TemperatureConfig
|
|
|
|
|
|
class TemperaturePolicy:
|
|
|
|
def __init__(
|
|
self,
|
|
config: TemperatureConfig,
|
|
):
|
|
self._config = config
|
|
|
|
def heater_required(
|
|
self,
|
|
temperature: float,
|
|
target_temp: float,
|
|
heater_on: bool,
|
|
) -> bool:
|
|
|
|
# Нагреватель уже включён.
|
|
#
|
|
# Продолжаем греть, пока температура
|
|
# не достигла целевой.
|
|
if heater_on:
|
|
return (
|
|
temperature
|
|
< target_temp
|
|
)
|
|
|
|
# Нагреватель выключен.
|
|
#
|
|
# Повторно включаем его только после
|
|
# падения температуры ниже нижней
|
|
# границы гистерезиса.
|
|
return (
|
|
temperature
|
|
< (
|
|
target_temp
|
|
- self._config.hysteresis
|
|
)
|
|
) |