# -*- coding: utf-8 -*- class Base(object): __dirty = False @classmethod def init_global(cls): print "GLOBAL ACTOR INIT" def get_config_parameter(self, key, default_value): return self.api.get_config_parameter(key, default_value) def init(self): print "INIT BASE" def stop(self): print "STOP HARDWARE" def update(self, **kwds): pass def __init__(self, *args, **kwds): for a in kwds: super(Base, self).__setattr__(a, kwds.get(a)) self.api = kwds.get("api") self.id = kwds.get("id") self.value = None self.__dirty = False def __setattr__(self, name, value): if name != "_Base__dirty": self.__dirty = True super(Base, self).__setattr__(name, value) else: super(Base, self).__setattr__(name, value) class SensorBase(Base): last_value = 0 def init(self): print "INIT Base SENSOR" def stop(self): print "STOP SENSOR" def data_received(self, data): self.last_value = data self.api.receive_sensor_value(self.id, data) def get_unit(self): if self.get_config_parameter("unit", "C") == "C": return "°C" else: return "°F" def get_value(self): return {"value": self.last_value, "unit": self.get_unit()} class SensorActive(SensorBase): __running = False def is_running(self): return self.__running def init(self): self.__running = True print "INIT ACTIVE SENSOR" def stop(self): self.__running = False def execute(self): pass class SensorPassive(SensorBase): def init(self): print "INIT PASSIV SENSOR" pass def read(self): return 0 class ActorBase(Base): def state(self): return 1 def set_power(self, power): print "SET POWER TO %s" % power def on(self, power=0): print "ON" def off(self): print "OFF"