39 lines
1011 B
Python
39 lines
1011 B
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):
|
|
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))
|
|
|
|
def update_target(self, target_value):
|
|
self.target_value = target_value
|
|
|
|
|