コード例 #1
0
    def start(self):
        # method overrided
        resp, isOk = self.invokeWebService(self.homeWSUri)
        while (not isOk):
            self.logger.error(
                "Unable to find the home proxy. I will try again in a while..."
            )
            resp, isOk = self.invokeWebService(self.homeWSUri)
            time.sleep(10)  #sleep 10 seconds

        myhome = json.loads(resp)
        brokerUri = myhome["homeMessageBroker"]["address"]
        brokerPort = myhome["homeMessageBroker"]["port"]
        if (brokerUri != None and brokerUri != "") and (brokerPort != None
                                                        and brokerPort != ""):
            self.mqttc = MyMQTTClass(self.subscriberName, self.logger, self)
            self.mqttc.connect(brokerUri, brokerPort)
            for a, room in enumerate(myhome["rooms"]):
                for b, device in enumerate(room["devices"]):
                    for c, channel in enumerate(device['thingspeakChannels']):
                        topic = self.mekeTopic(device["deviceID"],
                                               channel['measureType'])
                        self.eventChannelMap[topic] = channel['feed']
                        event = self.mqttc.subscribeEvent(None, topic)
                        self.subscribedEventList += event

        else:
            self.logger.error("The message broker address is not valid")

        self.uploadThread = Thread(target=self.upload)
        self.uploadThread.start()
        self.loop()
コード例 #2
0
    def start(self):
        if ("--scan" in sys.argv):
            self.logger.info("Scanning...")
            while (True):
                try:
                    print sniff(prn=self.scan_arp_display,
                                filter="arp",
                                store=0,
                                count=0)
                except:
                    pass
                time.sleep(0.1)
        elif ("--help" in sys.argv):
            self.logger.info(man)
        elif (len(sys.argv) == 1):
            self.logger.info("%s started" % self.serviceName)
            self.retrieveHomeSettings()
            self.brokerUri = self.myhome["homeMessageBroker"]["address"]
            self.brokerPort = self.myhome["homeMessageBroker"]["port"]
            self.mqtt = MyMQTTClass(self.serviceName, self.logger, self)
            self.mqtt.connect(self.brokerUri, self.brokerPort)

            self.homeUpdateThread = Thread(target=self.homeUpdate)
            self.homeUpdateThread.start()
            while (self.isRunning):
                try:
                    print sniff(prn=self.arp_display,
                                filter="arp",
                                store=0,
                                count=0)
                except:
                    pass
                time.sleep(0.1)
        else:
            self.logger.error(argumentsError)
コード例 #3
0
class SwitchOffAllDevicesAgent(AbstractAgentClass):
	exposed = True

	def __init__(self, serviceName, logLevel):
		super(SwitchOffAllDevicesAgent, self).__init__(serviceName, logLevel)
		self.myhome = self.retriveHomeSettings()
		self.brokerUri = self.myhome["homeMessageBroker"]["address"]
		self.brokerPort = self.myhome["homeMessageBroker"]["port"]
		

	def getMountPoint(self):
		return '/rest/switchoffall'

	def start (self):
		self.mqtt = MyMQTTClass(self.serviceName, self.logger, self)
		self.mqtt.connect(self.brokerUri, self.brokerPort)

		self.logger.info("Started")



	def stop(self):
		if (hasattr (self, "mqtt")):
			try:
				self.mqtt.disconnect()
			except Exception, e:
				self.logger.error("Error on stop(): %s" % (e))

		self.logger.info("Ended")
		sys.exit(0)
コード例 #4
0
class AmazonDashSevice(AbstractServiceClass):
    def __init__(self, serviceName, logLevel, arguments):
        super(AmazonDashSevice, self).__init__(serviceName, logLevel)
        self.arguments = arguments
        self.checkSudoer()

    def checkSudoer(self):
        user = os.getenv("SUDO_USER")
        if user is None:
            self.logger.error("This program needs 'sudo' presmissions")
            self.stop()

    def start(self):
        if ("--scan" in sys.argv):
            self.logger.info("Scanning...")
            while (True):
                try:
                    print sniff(prn=self.scan_arp_display,
                                filter="arp",
                                store=0,
                                count=0)
                except:
                    pass
                time.sleep(0.1)
        elif ("--help" in sys.argv):
            self.logger.info(man)
        elif (len(sys.argv) == 1):
            self.logger.info("%s started" % self.serviceName)
            self.retrieveHomeSettings()
            self.brokerUri = self.myhome["homeMessageBroker"]["address"]
            self.brokerPort = self.myhome["homeMessageBroker"]["port"]
            self.mqtt = MyMQTTClass(self.serviceName, self.logger, self)
            self.mqtt.connect(self.brokerUri, self.brokerPort)

            self.homeUpdateThread = Thread(target=self.homeUpdate)
            self.homeUpdateThread.start()
            while (self.isRunning):
                try:
                    print sniff(prn=self.arp_display,
                                filter="arp",
                                store=0,
                                count=0)
                except:
                    pass
                time.sleep(0.1)
        else:
            self.logger.error(argumentsError)

    def stop(self):
        if (hasattr(self, "mqtt")):
            try:
                self.mqtt.disconnect()
            except Exception, e:
                self.logger.error("Error on stop(): %s" % (e))
        super(AmazonDashSevice, self).stop()
コード例 #5
0
	def start (self):
		self.copyDefaultFile()
		myhome = json.loads(self.getConfiguration())
		self.brokerUri = myhome["homeMessageBroker"]["address"]
		self.brokerPort = myhome["homeMessageBroker"]["port"]
		if (self.brokerUri is None and self.brokerUri == "") and (self.brokerPort is None and self.brokerPort == ""):
			self.brokerUri = DEFAULT_BROKER_URI
			self.brokerPort = DEFAULT_BROKER_PORT

		self.mqtt = MyMQTTClass(self.serviceName, self.logger, self)
		self.mqtt.connect(self.brokerUri, self.brokerPort)

		self.logger.info("Started")
コード例 #6
0
ファイル: AmazonDashSevice.py プロジェクト: eduman/smartHome2
class AmazonDashSevice(AbstractServiceClass):

	def __init__(self, serviceName, logLevel, arguments):
		super(AmazonDashSevice, self).__init__(serviceName, logLevel)
		self.arguments = arguments
		self.checkSudoer()

	def checkSudoer(self):
		user = os.getenv("SUDO_USER")
		if user is None:
			self.logger.error("This program needs 'sudo' presmissions")
			self.stop()		

	def start (self):
		if ("--scan" in sys.argv):
			self.logger.info("Scanning...")
			while (True):
				try:
					print sniff(prn=self.scan_arp_display, filter="arp", store=0, count=0)
				except:
					pass
				time.sleep(0.1)
		elif ("--help" in sys.argv):
			self.logger.info(man)
		elif (len(sys.argv) == 1):
			self.logger.info("%s started" % self.serviceName)
			self.retrieveHomeSettings()
			self.brokerUri = self.myhome["homeMessageBroker"]["address"]
			self.brokerPort = self.myhome["homeMessageBroker"]["port"]
			self.mqtt = MyMQTTClass(self.serviceName, self.logger, self)
			self.mqtt.connect(self.brokerUri, self.brokerPort)
			
			self.homeUpdateThread = Thread (target = self.homeUpdate)
			self.homeUpdateThread.start()
			while (self.isRunning):
				try:
					print sniff(prn=self.arp_display, filter="arp", store=0, count=0)
				except:
					pass
				time.sleep(0.1)
		else: 
			self.logger.error(argumentsError)


	def stop(self): 
		if (hasattr (self, "mqtt")):
			try:
				self.mqtt.disconnect()
			except Exception, e:
				self.logger.error("Error on stop(): %s" % (e))
		super(AmazonDashSevice, self).stop()
コード例 #7
0
	def start (self):
		# method overrided 
		resp, isOk = self.invokeWebService(self.homeWSUri)
		while (not isOk):
			self.logger.error ("Unable to find the home proxy. I will try again in a while...")
			resp, isOk = self.invokeWebService(self.homeWSUri)
			time.sleep(10) #sleep 10 seconds

		myhome = json.loads(resp)
		brokerUri = myhome["homeMessageBroker"]["address"]
		brokerPort = myhome["homeMessageBroker"]["port"]
		if (brokerUri != None and brokerUri != "") and (brokerPort != None and brokerPort != ""):
			self.mqttc = MyMQTTClass(self.subscriberName, self.logger, self)
			self.mqttc.connect(brokerUri,brokerPort)
			for a, room in enumerate(myhome["rooms"]):
				for b, device in enumerate(room["devices"]):
					for c, channel in enumerate(device['thingspeakChannels']):
						topic = self.mekeTopic(device["deviceID"], channel['measureType'])
						self.eventChannelMap[topic] = channel['feed']
						event = self.mqttc.subscribeEvent(None, topic)
						self.subscribedEventList +=  event

		else:
			self.logger.error ("The message broker address is not valid")
	

		self.uploadThread = Thread (target = self.upload)
		self.uploadThread.start()
		self.loop()
コード例 #8
0
ファイル: AmazonDashSevice.py プロジェクト: eduman/smartHome2
	def start (self):
		if ("--scan" in sys.argv):
			self.logger.info("Scanning...")
			while (True):
				try:
					print sniff(prn=self.scan_arp_display, filter="arp", store=0, count=0)
				except:
					pass
				time.sleep(0.1)
		elif ("--help" in sys.argv):
			self.logger.info(man)
		elif (len(sys.argv) == 1):
			self.logger.info("%s started" % self.serviceName)
			self.retrieveHomeSettings()
			self.brokerUri = self.myhome["homeMessageBroker"]["address"]
			self.brokerPort = self.myhome["homeMessageBroker"]["port"]
			self.mqtt = MyMQTTClass(self.serviceName, self.logger, self)
			self.mqtt.connect(self.brokerUri, self.brokerPort)
			
			self.homeUpdateThread = Thread (target = self.homeUpdate)
			self.homeUpdateThread.start()
			while (self.isRunning):
				try:
					print sniff(prn=self.arp_display, filter="arp", store=0, count=0)
				except:
					pass
				time.sleep(0.1)
		else: 
			self.logger.error(argumentsError)
コード例 #9
0
ファイル: RaspberryAgent.py プロジェクト: eduman/smartHome2
    def start(self):
        self.mqtt = MyMQTTClass(self.serviceName, self.logger, self)
        self.mqtt.connect(self.brokerUri, self.brokerPort)

        if self.isPirInstalled:
            gpio.setmode(gpio.BOARD)
            gpio.setup(self.pirPin, gpio.IN)
            gpio.add_event_detect(self.pirPin,
                                  gpio.BOTH,
                                  callback=self.pirCallback,
                                  bouncetime=200)

        if self.isDHTInstalled:
            self.dhtThread = Thread(target=self.loop)
            self.dhtThread.start()

        self.logger.info("Started")
コード例 #10
0
class HomeAgent(AbstractAgentClass):
	exposed = True

	def __init__(self, serviceName, logLevel):
		super(HomeAgent, self).__init__(serviceName, logLevel)

	def getMountPoint(self):
		return '/rest/home'

	def start (self):
		self.copyDefaultFile()
		myhome = json.loads(self.getConfiguration())
		self.brokerUri = myhome["homeMessageBroker"]["address"]
		self.brokerPort = myhome["homeMessageBroker"]["port"]
		if (self.brokerUri is None and self.brokerUri == "") and (self.brokerPort is None and self.brokerPort == ""):
			self.brokerUri = DEFAULT_BROKER_URI
			self.brokerPort = DEFAULT_BROKER_PORT

		self.mqtt = MyMQTTClass(self.serviceName, self.logger, self)
		self.mqtt.connect(self.brokerUri, self.brokerPort)

		self.logger.info("Started")

	def stop(self):
		self.logger.info("Ended")
		sys.exit(0)

	def copyDefaultFile(self):
		newtFile = os.path.join(os.getcwd(), "../conf")
		if not os.path.exists(newtFile):
			try:
				os.makedirs(newtFile)
			except Exception, e:
				self.logger.error("unable to make \"conf\" directory: %s" % (e))

		
		newtFile =  os.path.join(newtFile, "home_structure.json")
		if not os.path.isfile(newtFile):
			try:
				defaultFile = os.path.join(os.getcwd(), "home/home_structure.json")
				shutil.copy2(defaultFile, newtFile)
			except Exception, e:
				self.logger.error("error in copying the defalut \"home_structure.json\" file: %s" % (e))
コード例 #11
0
ファイル: RaspberryAgent.py プロジェクト: eduman/smartHome2
	def start (self):
		self.mqtt = MyMQTTClass(self.serviceName, self.logger, self)
		self.mqtt.connect(self.brokerUri, self.brokerPort)

		if self.isPirInstalled:
			gpio.setmode(gpio.BOARD)
			gpio.setup(self.pirPin, gpio.IN)
			gpio.add_event_detect(self.pirPin, gpio.BOTH, callback=self.pirCallback, bouncetime=200)



		if self.isDHTInstalled:
			self.dhtThread = Thread (target = self.loop)
			self.dhtThread.start()

		self.logger.info("Started")
コード例 #12
0
class ThingspeakSubscriber (AbstractSubscriber):
	def __init__ (self):
		super(ThingspeakSubscriber, self).__init__(subscriberName, "", logLevel)
		self.msgQueue = []
		self.__lock = threading.Lock()
		self.eventChannelMap = {}
		self.timer = 15 # sleep due to thingspeak limitations


	def mekeTopic(self, device, measureType):
		return EventTopics.getSensorMeasurementEvent() + "/" + str(device) + "/" + str(measureType).lower()

	def start (self):
		# method overrided 
		resp, isOk = self.invokeWebService(self.homeWSUri)
		while (not isOk):
			self.logger.error ("Unable to find the home proxy. I will try again in a while...")
			resp, isOk = self.invokeWebService(self.homeWSUri)
			time.sleep(10) #sleep 10 seconds

		myhome = json.loads(resp)
		brokerUri = myhome["homeMessageBroker"]["address"]
		brokerPort = myhome["homeMessageBroker"]["port"]
		if (brokerUri != None and brokerUri != "") and (brokerPort != None and brokerPort != ""):
			self.mqttc = MyMQTTClass(self.subscriberName, self.logger, self)
			self.mqttc.connect(brokerUri,brokerPort)
			for a, room in enumerate(myhome["rooms"]):
				for b, device in enumerate(room["devices"]):
					for c, channel in enumerate(device['thingspeakChannels']):
						topic = self.mekeTopic(device["deviceID"], channel['measureType'])
						self.eventChannelMap[topic] = channel['feed']
						event = self.mqttc.subscribeEvent(None, topic)
						self.subscribedEventList +=  event

		else:
			self.logger.error ("The message broker address is not valid")
	

		self.uploadThread = Thread (target = self.upload)
		self.uploadThread.start()
		self.loop()

	def stop (self):
		if (hasattr(self, "uploadThread")):
			if self.uploadThread.isAlive():
				try:
					self.uploadThread._Thread__stop()
				except:
					self.logger.error(str(self.uploadThread.getName()) + ' (upload value thread) could not terminated')

		super(ThingspeakSubscriber, self).stop()


	def upload(self):
		while (True):
			try:
				if (len(self.msgQueue) > 0):
					resp, isOk = self.invokeWebService(self.msgQueue[0])
					if isOk and resp is not "0":						
						self.__lock.acquire()
						deleted = self.msgQueue[0]
						del self.msgQueue[0]
						self.__lock.release()
						time.sleep(self.timer) # sleep due to thingspeak limitations
					else:
						self.logger.error ("Unable to upload new value: %s" % (resp))
				time.sleep(1)		
			except Exception, e:
				self.logger.error("Error on ThingspeakSubscriber.upload() %s: " % e)
コード例 #13
0
class ThingspeakSubscriber(AbstractSubscriber):
    def __init__(self):
        super(ThingspeakSubscriber, self).__init__(subscriberName, "",
                                                   logLevel)
        self.msgQueue = []
        self.__lock = threading.Lock()
        self.eventChannelMap = {}
        self.timer = 15  # sleep due to thingspeak limitations

    def mekeTopic(self, device, measureType):
        return EventTopics.getSensorMeasurementEvent() + "/" + str(
            device) + "/" + str(measureType).lower()

    def start(self):
        # method overrided
        resp, isOk = self.invokeWebService(self.homeWSUri)
        while (not isOk):
            self.logger.error(
                "Unable to find the home proxy. I will try again in a while..."
            )
            resp, isOk = self.invokeWebService(self.homeWSUri)
            time.sleep(10)  #sleep 10 seconds

        myhome = json.loads(resp)
        brokerUri = myhome["homeMessageBroker"]["address"]
        brokerPort = myhome["homeMessageBroker"]["port"]
        if (brokerUri != None and brokerUri != "") and (brokerPort != None
                                                        and brokerPort != ""):
            self.mqttc = MyMQTTClass(self.subscriberName, self.logger, self)
            self.mqttc.connect(brokerUri, brokerPort)
            for a, room in enumerate(myhome["rooms"]):
                for b, device in enumerate(room["devices"]):
                    for c, channel in enumerate(device['thingspeakChannels']):
                        topic = self.mekeTopic(device["deviceID"],
                                               channel['measureType'])
                        self.eventChannelMap[topic] = channel['feed']
                        event = self.mqttc.subscribeEvent(None, topic)
                        self.subscribedEventList += event

        else:
            self.logger.error("The message broker address is not valid")

        self.uploadThread = Thread(target=self.upload)
        self.uploadThread.start()
        self.loop()

    def stop(self):
        if (hasattr(self, "uploadThread")):
            if self.uploadThread.isAlive():
                try:
                    self.uploadThread._Thread__stop()
                except:
                    self.logger.error(
                        str(self.uploadThread.getName()) +
                        ' (upload value thread) could not terminated')

        super(ThingspeakSubscriber, self).stop()

    def upload(self):
        while (True):
            try:
                if (len(self.msgQueue) > 0):
                    resp, isOk = self.invokeWebService(self.msgQueue[0])
                    if isOk and resp is not "0":
                        self.__lock.acquire()
                        deleted = self.msgQueue[0]
                        del self.msgQueue[0]
                        self.__lock.release()
                        time.sleep(
                            self.timer)  # sleep due to thingspeak limitations
                    else:
                        self.logger.error("Unable to upload new value: %s" %
                                          (resp))
                time.sleep(1)
            except Exception, e:
                self.logger.error(
                    "Error on ThingspeakSubscriber.upload() %s: " % e)
コード例 #14
0
ファイル: RaspberryAgent.py プロジェクト: eduman/smartHome2
class RaspberryAgent(AbstractAgentClass):
    exposed = True

    def __init__(self, serviceName, logLevel):
        super(RaspberryAgent, self).__init__(serviceName, logLevel)

        #About DHT sensor
        self.dhtPin = 18
        self.isDHTInstalled = False
        self.dhtType = Adafruit_DHT.DHT22

        #About PIR sensor
        self.isPirInstalled = False
        self.pirPin = 7

        self.WSUri = (
            "http://%s:%s%s" %
            (self.getIpAddress(), str(httpPort), self.getMountPoint()))
        self.myhome = self.retriveHomeSettings()
        self.brokerUri = self.myhome["homeMessageBroker"]["address"]
        self.brokerPort = self.myhome["homeMessageBroker"]["port"]

    def getMountPoint(self):
        return '/rest/raspberry'

    def setDHTPin(self, dhtPin):
        self.dhtPin = dhtPin

    def setDHTType(self, dhtType):
        if (dhtType == 11):
            self.dhtType = Adafruit_DHT.DHT11
        elif (dhtType == 22):
            self.dhtType = Adafruit_DHT.DHT22
        elif (dhtType == 2302):
            self.dhtType = Adafruit_DHT.Adafruit_DHT.AM2302

    def setDHTInstalled(self, isDHTInstalled):
        self.isDHTInstalled = isDHTInstalled

    def setPirPin(self, pirPin):
        self.pirPin = pirPin

    def setPirInstalled(self, isPirInstalled):
        self.isPirInstalled = isPirInstalled

    def start(self):
        self.mqtt = MyMQTTClass(self.serviceName, self.logger, self)
        self.mqtt.connect(self.brokerUri, self.brokerPort)

        if self.isPirInstalled:
            gpio.setmode(gpio.BOARD)
            gpio.setup(self.pirPin, gpio.IN)
            gpio.add_event_detect(self.pirPin,
                                  gpio.BOTH,
                                  callback=self.pirCallback,
                                  bouncetime=200)

        if self.isDHTInstalled:
            self.dhtThread = Thread(target=self.loop)
            self.dhtThread.start()

        self.logger.info("Started")

    def loop(self):
        while (True):
            humVal, tempVal = self.getDHTValues()
            if humVal is not "0.0":
                topic, payload = self.makeEvent("humidity", humVal)
                self.mqtt.syncPublish(topic, payload, 2)
            if tempVal is not "0.0":
                topic, payload = self.makeEvent("temperature", tempVal)
                self.mqtt.syncPublish(topic, payload, 2)
            time.sleep(timer)

    def getDHTValues(self):
        humidity = None
        temperature = None

        if self.isDHTInstalled:
            humidity, temperature = Adafruit_DHT.read_retry(
                self.dhtType, self.dhtPin)

        if humidity is None:
            humidity = 0.0

        if temperature is None:
            temperature = 0.0

        return str(round(humidity, 2)), str(round(temperature, 2))

    def pirCallback(self, pin):
        if gpio.input(self.pirPin):
            topic, payload = self.makeEvent("motion", "True")
            self.mqtt.syncPublish(topic, payload, 2)
            time.sleep(30)
        else:
            topic, payload = self.makeEvent("motion", "False")
            self.mqtt.syncPublish(topic, payload, 2)

    def stop(self):
        if (hasattr(self, "dhtThread")):
            if self.dhtThread.isAlive():
                try:
                    self.dhtThread._Thread__stop()
                except:
                    self.logger.error(
                        str(self.dhtThread.getName()) +
                        ' (dht send event thread) could not terminated')

        if (hasattr(self, "mqtt")):
            try:
                self.mqtt.disconnect()
            except Exception, e:
                self.logger.error("Error on stop(): %s" % (e))

        self.logger.info("Ended")
        sys.exit(0)
コード例 #15
0
ファイル: RaspberryAgent.py プロジェクト: eduman/smartHome2
class RaspberryAgent(AbstractAgentClass):
	exposed = True
	
	def __init__(self, serviceName, logLevel):
		super(RaspberryAgent, self).__init__(serviceName, logLevel)

		#About DHT sensor
		self.dhtPin = 18
		self.isDHTInstalled = False
		self.dhtType = Adafruit_DHT.DHT22


		#About PIR sensor
		self.isPirInstalled = False
		self.pirPin = 7			

		self.WSUri = ("http://%s:%s%s" % (self.getIpAddress(), str(httpPort), self.getMountPoint()))
		self.myhome = self.retriveHomeSettings()
		self.brokerUri = self.myhome["homeMessageBroker"]["address"]
		self.brokerPort = self.myhome["homeMessageBroker"]["port"]

		
	def getMountPoint(self):
		return '/rest/raspberry'


	def setDHTPin(self, dhtPin):
		self.dhtPin = dhtPin

	def setDHTType (self, dhtType):
		if (dhtType == 11):
			self.dhtType = Adafruit_DHT.DHT11
		elif (dhtType == 22):
			self.dhtType = Adafruit_DHT.DHT22
		elif (dhtType == 2302):
			self.dhtType = Adafruit_DHT.Adafruit_DHT.AM2302

	def setDHTInstalled (self, isDHTInstalled):
		self.isDHTInstalled = isDHTInstalled

	def setPirPin (self, pirPin):
		self.pirPin = pirPin

	def setPirInstalled (self, isPirInstalled):
		self.isPirInstalled = isPirInstalled

	def start (self):
		self.mqtt = MyMQTTClass(self.serviceName, self.logger, self)
		self.mqtt.connect(self.brokerUri, self.brokerPort)

		if self.isPirInstalled:
			gpio.setmode(gpio.BOARD)
			gpio.setup(self.pirPin, gpio.IN)
			gpio.add_event_detect(self.pirPin, gpio.BOTH, callback=self.pirCallback, bouncetime=200)



		if self.isDHTInstalled:
			self.dhtThread = Thread (target = self.loop)
			self.dhtThread.start()

		self.logger.info("Started")

	def loop (self):		
		while (True):
			humVal, tempVal = self.getDHTValues()	
			if humVal is not "0.0":				
				topic, payload =  self.makeEvent("humidity", humVal)
				self.mqtt.syncPublish(topic, payload, 2)
			if tempVal is not "0.0":
				topic, payload =  self.makeEvent("temperature", tempVal)
				self.mqtt.syncPublish(topic, payload, 2)
			time.sleep(timer)

	def getDHTValues (self):
		humidity = None
		temperature = None
		
		if self.isDHTInstalled:
			humidity, temperature = Adafruit_DHT.read_retry(self.dhtType, self.dhtPin)
			
		if humidity is None:
			humidity = 0.0

		if temperature is None:
			temperature = 0.0

		return str(round(humidity, 2)), str(round(temperature, 2))


	def pirCallback (self, pin):
		if gpio.input(self.pirPin):
			topic, payload = self.makeEvent("motion", "True")
			self.mqtt.syncPublish(topic, payload, 2)
			time.sleep(30)
		else:
			topic, payload = self.makeEvent("motion", "False")
			self.mqtt.syncPublish(topic, payload, 2)


	def stop(self):
		if (hasattr(self, "dhtThread")):
			if self.dhtThread.isAlive():
				try:
					self.dhtThread._Thread__stop()
				except:
					self.logger.error(str(self.dhtThread.getName()) + ' (dht send event thread) could not terminated')


		if (hasattr (self, "mqtt")):
			try:
				self.mqtt.disconnect()
			except Exception, e:
				self.logger.error("Error on stop(): %s" % (e))

		self.logger.info("Ended")
		sys.exit(0)
コード例 #16
0
	def start (self):
		self.mqtt = MyMQTTClass(self.serviceName, self.logger, self)
		self.mqtt.connect(self.brokerUri, self.brokerPort)

		self.logger.info("Started")