class SensorReader(object): ''' classdocs ''' __metaclass__ = abc.ABCMeta def __init__(self, sensor=None, delay=5, sensor_id=None): ''' Constructor ''' self.threadSensor = Thread(target=self.measure, args=()) self.sensor = sensor self.delay = delay self.sensor_id = sensor_id @staticmethod def createReader(readerType, sensorType, delay): if (readerType == 'Temperature'): return TemperatureReader(sensorType, delay) elif (readerType == 'Humidity'): return HumidityReader(sensorType, delay) elif (readerType == 'Luminosity'): return LightReader(sensorType, delay) else: assert 0, "Bad sensor creation: " + sensorType @abc.abstractmethod def createSensor(sensorType): """Retrieve data from the input source and return a Sensor object. @param sensorType: The kind of sensor to be created @type sensorType: String """ pass @abc.abstractmethod def measure(self): pass def startThread(self): print "inside startThread" self.threadSensor.start() def pauseThread(self): print "inside pauseThread" #self.threadSensor. def releaseThread(self): print "inside releaseThread" self.threadSensor.release() def saveData(self, valuereaded=None): sm = SensorMesurement(sensor_id=self.sensor_id, value=valuereaded) sm.save()
class HumidityReader(object): ''' classdocs ''' __metaclass__ = abc.ABCMeta def __init__(self, sensorName="DHT11Humididty"): ''' Constructor ''' #dht11 = HumididtySensorFactory.createSensor(sensorName) self.sensor = Sensor() self.threadSensor = Thread(target = self.measureHumidity, args=(self.sensor,5)) self.threadSensor.daemon = True def startThread(self): print "inside startThread" self.threadSensor.start() def pauseThread(self): print "inside pauseThread" #self.threadSensor. def releaseThread(self): print "inside releaseThread" self.threadSensor.release() def measureHumidity(self,sensor, delay): try: while (True) : self.sensor.getHumidity() #salvar aqui no banco a leitura time.sleep(delay) except (KeyboardInterrupt, SystemExit): raise except: print "saindo da thread"