You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
1.9KB

  1. from modules.core.baseapi import Buzzer
  2. from modules.core.basetypes import Actor, KettleController, FermenterController
  3. from modules import cbpi
  4. from modules.core.proptypes import Property
  5. @cbpi.addon.actor.type("Dummy Actor")
  6. class Dummy(Actor):
  7. # Decorator to create a parameter based action
  8. @cbpi.addon.actor.action("Run until Temp reached", parameters={"t": Property.Text(label="Target Temp")})
  9. def check_sensor_value(self, t=1):
  10. def check(api, id, value):
  11. '''
  12. Background Prozess which checks the sensor value every second
  13. :param api:
  14. :param id:
  15. :param value:
  16. :return:
  17. '''
  18. while api.sensor.get_value(1) < value:
  19. api.sleep(1)
  20. api.actor.off(id)
  21. target_value = int(t)
  22. # Create notificaiton
  23. self.api.notify(headline="Waiting", message="Waiting for temp %s" % target_value)
  24. # Switch actor on
  25. self.api.actor.on(self.id, 100)
  26. # Start Background task
  27. self.api.start_background_task(check, self.api, id=self.id, value=target_value)
  28. def on(self, power=100):
  29. '''
  30. Code to switch on the actor
  31. :param power: int value between 0 - 100
  32. :return:
  33. '''
  34. print "ID %s ON" % self.id
  35. def off(self):
  36. print "ID %s OFF" % self.id
  37. @cbpi.addon.kettle.controller()
  38. class MyController(KettleController):
  39. def run(self):
  40. while self.is_running():
  41. print "HALLO"
  42. self.sleep(1)
  43. @cbpi.addon.fermenter.controller()
  44. class MyController2(FermenterController):
  45. def run(self):
  46. while self.is_running():
  47. print "HALLO"
  48. self.get_target_temp()
  49. self.sleep(1)
  50. @cbpi.addon.core.initializer(order=200)
  51. def init(cbpi):
  52. class MyBuzzer(Buzzer):
  53. def beep(self):
  54. print "BEEEEEP"
  55. pass
  56. cbpi.buzzer = MyBuzzer()