Логика включения-выключения контуров и котла. Конфиг контуров, гистерезис и прочее
This commit is contained in:
+32
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user