Логика включения-выключения контуров и котла. Конфиг контуров, гистерезис и прочее

This commit is contained in:
ftc
2025-12-07 14:56:25 +03:00
parent b4e77a02d6
commit 4a84636d0e
4 changed files with 226 additions and 134 deletions
+32
View File
@@ -0,0 +1,32 @@
import time
class Contour:
EXPIRE_TIME = 120 # sensor value considered expired in 2 minutes
CHANGE_FREQ = 600 # change of state allowed after 10 minutes
current_value = None
value_time = 0
state = None
state_change_time = 0
def __init__(self, config, logger):
self.sensor_topic = config['sensor']
self.out_topic = config['control']
self.logger = logger
def update(self, value):
self.current_value = value
self.value_time = time.time()
def get_value(self):
if (time.time() - self.value_time <= self.EXPIRE_TIME):
return self.current_value
return None
def check_state(self, state_value):
if self.state == state_value:
return
if (self.state is None) or (time.time() - self.state_change_time > self.CHANGE_FREQ):
self.state = state_value
self.logger.info("Contour " + self.sensor_topic + " changed state to " + str(self.state))