Guest User

Untitled

a guest
Jul 19th, 2018
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.84 KB | None | 0 0
  1. class SquelchAlgorithmClass:
  2.  
  3. # assuming one data point (a temperature) taken every minute during interval length
  4. def __init__(self, interval_len, threshold=29):
  5. self.data_points = []
  6. self.moving_average = 0
  7. self.interval_len = interval_len
  8. self.state = "OFF"
  9. self.threshold = threshold
  10. self.state_history = {} # dictionary, can also be used for finding running average of total time
  11. self.max_temp = 0
  12.  
  13. # Need more checks: if no AC, house could be above threshold temp
  14. def update_moving_average(self, new_temp):
  15. if new_temp > self.threshold and new_temp > 3 + self.moving_average: # if hot and large increase in temp
  16. self.state = 'ON'
  17. # self.state_history[timestamp] = 'ON'
  18. if new_temp > self.max_temp:
  19. self.max_temp = new_temp
  20. else:
  21. self.state = 'OFF'
  22. # self.state_history[timestamp] = 'OFF'
  23. if self.state == 'OFF': # Moving average only updates if the stove is off
  24. if len(self.data_points) == self.interval_len:
  25. self.moving_average = (self.moving_average * len(self.data_points) + new_temp - self.data_points[0]) / self.interval_len
  26. self.data_points.pop(0)
  27. else:
  28. self.moving_average = (self.moving_average * len(self.data_points) + new_temp) / len(self.data_points)
  29. self.data_points.append(new_temp)
  30. else:
  31. # determining if in simmer mode
  32.  
  33. # Returns the moving average.
  34. def moving_average(self):
  35. return self.moving_average
  36.  
  37. # Returns the moving average of how long the stove has been on
  38. def moving_average_time(self):
  39. # total_time = 0
  40. # num_times = 0
  41. # for key in self.state_history.keys():
  42. # if self.state_history[key] == 'ON':
  43. return
Add Comment
Please, Sign In to add comment