25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

154 satır
3.9KB

  1. from modules import cbpi
  2. class ActorController(object):
  3. @cbpi.try_catch(None)
  4. def actor_on(self, power=100, id=None):
  5. if id is None:
  6. id = self.heater
  7. self.api.switch_actor_on(int(id), power=power)
  8. @cbpi.try_catch(None)
  9. def actor_off(self, id=None):
  10. if id is None:
  11. id = self.heater
  12. self.api.switch_actor_off(int(id))
  13. @cbpi.try_catch(None)
  14. def actor_power(self, power, id=None):
  15. if id is None:
  16. id = self.heater
  17. self.api.actor_power(int(id), power)
  18. class SensorController(object):
  19. @cbpi.try_catch(None)
  20. def get_sensor_value(self, id=None):
  21. if id is None:
  22. id = self.sensor
  23. return cbpi.get_sensor_value(id)
  24. class ControllerBase(object):
  25. __dirty = False
  26. __running = False
  27. @staticmethod
  28. def init_global():
  29. print "GLOBAL CONTROLLER INIT"
  30. def notify(self, headline, message, type="success", timeout=5000):
  31. self.api.notify(headline, message, type, timeout)
  32. def is_running(self):
  33. return self.__running
  34. def init(self):
  35. self.__running = True
  36. def sleep(self, seconds):
  37. self.api.socketio.sleep(seconds)
  38. def stop(self):
  39. self.__running = False
  40. def __init__(self, *args, **kwds):
  41. for a in kwds:
  42. super(ControllerBase, self).__setattr__(a, kwds.get(a))
  43. self.api = kwds.get("api")
  44. self.heater = kwds.get("heater")
  45. self.sensor = kwds.get("sensor")
  46. def run(self):
  47. pass
  48. class KettleController(ControllerBase, ActorController, SensorController):
  49. def __init__(self, *args, **kwds):
  50. ControllerBase.__init__(self, *args, **kwds)
  51. self.kettle_id = kwds.get("kettle_id")
  52. @cbpi.try_catch(None)
  53. def heater_on(self, power=100):
  54. k = self.api.cache.get("kettle").get(self.kettle_id)
  55. if k.heater is not None:
  56. self.actor_on(power, int(k.heater))
  57. @cbpi.try_catch(None)
  58. def heater_off(self):
  59. k = self.api.cache.get("kettle").get(self.kettle_id)
  60. if k.heater is not None:
  61. self.actor_off(int(k.heater))
  62. @cbpi.try_catch(None)
  63. def get_temp(self, id=None):
  64. if id is None:
  65. id = self.kettle_id
  66. return self.get_sensor_value(int(self.api.cache.get("kettle").get(id).sensor))
  67. @cbpi.try_catch(None)
  68. def get_target_temp(self, id=None):
  69. if id is None:
  70. id = self.kettle_id
  71. return self.api.cache.get("kettle").get(id).target_temp
  72. class FermenterController(ControllerBase, ActorController, SensorController):
  73. def __init__(self, *args, **kwds):
  74. ControllerBase.__init__(self, *args, **kwds)
  75. self.fermenter_id = kwds.get("fermenter_id")
  76. self.cooler = kwds.get("cooler")
  77. @cbpi.try_catch(None)
  78. def get_target_temp(self, id=None):
  79. if id is None:
  80. id = self.fermenter_id
  81. return self.api.cache.get("fermenter").get(id).target_temp
  82. @cbpi.try_catch(None)
  83. def heater_on(self, power=100):
  84. f = self.api.cache.get("fermenter").get(self.fermenter_id)
  85. if f.heater is not None:
  86. self.actor_on(int(f.heater))
  87. @cbpi.try_catch(None)
  88. def heater_off(self):
  89. f = self.api.cache.get("fermenter").get(self.fermenter_id)
  90. if f.heater is not None:
  91. self.actor_off(int(f.heater))
  92. @cbpi.try_catch(None)
  93. def cooler_on(self, power=100):
  94. f = self.api.cache.get("fermenter").get(self.fermenter_id)
  95. if f.cooler is not None:
  96. self.actor_on(power, int(f.cooler))
  97. @cbpi.try_catch(None)
  98. def cooler_off(self):
  99. f = self.api.cache.get("fermenter").get(self.fermenter_id)
  100. if f.cooler is not None:
  101. self.actor_off(int(f.cooler))
  102. @cbpi.try_catch(None)
  103. def get_temp(self, id=None):
  104. if id is None:
  105. id = self.fermenter_id
  106. return self.get_sensor_value(int(self.api.cache.get("fermenter").get(id).sensor))