Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class SquelchAlgorithmClass:
- # assuming one data point (a temperature) taken every minute during interval length
- def __init__(self, interval_len, threshold=29):
- self.data_points = []
- self.moving_average = 0
- self.interval_len = interval_len
- self.state = "OFF"
- self.threshold = threshold
- self.state_history = {} # dictionary, can also be used for finding running average of total time
- self.max_temp = 0
- # Need more checks: if no AC, house could be above threshold temp
- def update_moving_average(self, new_temp):
- if new_temp > self.threshold and new_temp > 3 + self.moving_average: # if hot and large increase in temp
- self.state = 'ON'
- # self.state_history[timestamp] = 'ON'
- if new_temp > self.max_temp:
- self.max_temp = new_temp
- else:
- self.state = 'OFF'
- # self.state_history[timestamp] = 'OFF'
- if self.state == 'OFF': # Moving average only updates if the stove is off
- if len(self.data_points) == self.interval_len:
- self.moving_average = (self.moving_average * len(self.data_points) + new_temp - self.data_points[0]) / self.interval_len
- self.data_points.pop(0)
- else:
- self.moving_average = (self.moving_average * len(self.data_points) + new_temp) / len(self.data_points)
- self.data_points.append(new_temp)
- else:
- # determining if in simmer mode
- # Returns the moving average.
- def moving_average(self):
- return self.moving_average
- # Returns the moving average of how long the stove has been on
- def moving_average_time(self):
- # total_time = 0
- # num_times = 0
- # for key in self.state_history.keys():
- # if self.state_history[key] == 'ON':
- return
Add Comment
Please, Sign In to add comment