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

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