Files

42 lines
1.1 KiB
Python

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
target_value = None
def __init__(self, config, logger):
self.sensor_topic = config['sensor']
self.out_topic = config['control']
self.target_topic = config['target']
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, force = False):
if self.state == state_value:
return False
if (self.state is None) or (time.time() - self.state_change_time > self.CHANGE_FREQ) or force:
self.state = state_value
self.state_change_time = time.time()
self.logger.info("Contour " + self.sensor_topic + " changed state to " + str(self.state))
return True
return False
def update_target(self, target_value):
self.target_value = target_value