25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

109 lines
2.0KB

  1. # -*- coding: utf-8 -*-
  2. class Base(object):
  3. __dirty = False
  4. @classmethod
  5. def init_global(cls):
  6. print "GLOBAL ACTOR INIT"
  7. def get_config_parameter(self, key, default_value):
  8. return self.api.get_config_parameter(key, default_value)
  9. def sleep(self, seconds):
  10. self.api.socketio.sleep(seconds)
  11. def init(self):
  12. print "INIT BASE"
  13. def stop(self):
  14. print "STOP HARDWARE"
  15. def update(self, **kwds):
  16. pass
  17. def __init__(self, *args, **kwds):
  18. for a in kwds:
  19. super(Base, self).__setattr__(a, kwds.get(a))
  20. self.api = kwds.get("api")
  21. self.id = kwds.get("id")
  22. self.value = None
  23. self.__dirty = False
  24. def __setattr__(self, name, value):
  25. if name != "_Base__dirty":
  26. self.__dirty = True
  27. super(Base, self).__setattr__(name, value)
  28. else:
  29. super(Base, self).__setattr__(name, value)
  30. class SensorBase(Base):
  31. last_value = 0
  32. def init(self):
  33. print "INIT Base SENSOR"
  34. def stop(self):
  35. print "STOP SENSOR"
  36. def data_received(self, data):
  37. self.last_value = data
  38. self.api.receive_sensor_value(self.id, data)
  39. def get_unit(self):
  40. if self.get_config_parameter("unit", "C") == "C":
  41. return "°C"
  42. else:
  43. return "°F"
  44. def get_value(self):
  45. return {"value": self.last_value, "unit": self.get_unit()}
  46. class SensorActive(SensorBase):
  47. __running = False
  48. def is_running(self):
  49. return self.__running
  50. def init(self):
  51. self.__running = True
  52. def stop(self):
  53. self.__running = False
  54. def execute(self):
  55. pass
  56. class SensorPassive(SensorBase):
  57. def init(self):
  58. print "INIT PASSIV SENSOR"
  59. pass
  60. def read(self):
  61. return 0
  62. class ActorBase(Base):
  63. def state(self):
  64. return 1
  65. def set_power(self, power):
  66. print "SET POWER TO %s" % power
  67. def on(self, power=0):
  68. print "ON"
  69. def off(self):
  70. print "OFF"