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)
示例#2
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()
示例#3
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()
示例#4
0
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)
示例#5
0
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)