DeaD_EyE

hysterese.py

Apr 9th, 2017
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.88 KB | None | 0 0
  1. #Ich benötige nun ein Programm das mir wenn am Panel 60-70 Grad sind eine Pumpe (Relais Karte) abschaltet bis die Temperatur auf 45 gefallen ist am (Vorlauf Panel)
  2.  
  3. #Und wenn mehr wie 50 grad i. Puffer dann soll das Aquarium beheizt werden wenn mehr wie 50 im Puffer und mehr wie 60 Grad am Panel dann soll wenn das Aquarium unser 30 Grad fällt das direkt vom Panel beheizt werden.
  4.  
  5. # https://de.wikipedia.org/wiki/Hysterese
  6.  
  7. class Hysterese:
  8.  
  9.     def __init__(self, get_temp, low=45, high=70):
  10.         self.get_temp = get_temp
  11.         self.low = low
  12.         self.high = high
  13.         self.state = False
  14.  
  15.     def __call__(self):
  16.         temp = self.get_temp()
  17.         if self.state and temp >= self.high:
  18.             self.state = False
  19.         elif not self.state and temp <= self.low:
  20.             self.state = True
  21.         return self.state, temp
  22.  
  23. def temperatur_generator():
  24.     while True:
  25.         for t in [40, 45, 50, 60, 70, 80, 70, 60, 50, 45, 35, 90]:
  26.             yield t
  27.  
  28.  
  29. def test():
  30.     t_gen = temperatur_generator()
  31.     h = Hysterese(lambda: next(t_gen), low=45, high=70)
  32.     # h = Hysterese(get_temp_function, low=45, high=70)
  33.     for i in range(20):
  34.         state, temp = h()
  35.         print('Temp: {}\tState: {}'.format(temp, state))
  36.  
  37.  
  38. if __name__ == '__main__':
  39.     test()
  40.  
  41.  
  42. #Temp: 40       State: True
  43. #Temp: 45       State: True
  44. #Temp: 50       State: True
  45. #Temp: 60       State: True
  46. #Temp: 70       State: False
  47. #Temp: 80       State: False
  48. #Temp: 70       State: False
  49. #Temp: 60       State: False
  50. #Temp: 50       State: False
  51. #Temp: 45       State: True
  52. #Temp: 35       State: True
  53. #Temp: 90       State: False
  54. #Temp: 40       State: True
  55. #Temp: 45       State: True
  56. #Temp: 50       State: True
  57. #Temp: 60       State: True
  58. #Temp: 70       State: False
  59. #Temp: 80       State: False
  60. #Temp: 70       State: False
  61. #Temp: 60       State: False
Add Comment
Please, Sign In to add comment