コード例 #1
0
    def handler(self):
        while 1:
            defer = tasks.get()
            logging.debug('handler: getting defer from task queue')

            if defer.message.command == "discovery":
                logging.debug('handler: processing discovery request')
                nodes = pyzwave.discover()
                gateway_id = nodes[0]
                total_nodes = nodes[1]
                # remaining are the discovered nodes
                discovered_nodes = nodes[2:]
                try:
                    discovered_nodes.remove(gateway_id)
                except ValueError:
                    pass # sometimes gateway_id is not in the list
                defer.callback(discovered_nodes)
            elif defer.message.command == "routing":
                logging.debug('handler: processing routing request')
                routing = {}
                nodes = pyzwave.discover()
                gateway_id = nodes[0]
                nodes = nodes[2:]
                try:
                    nodes.remove(gateway_id)
                except ValueError:
                    pass # sometimes gateway_id is not in the list
                for node in nodes:
                    routing[node] = pyzwave.routing(node)
                    try:
                        routing[node].remove(gateway_id)
                    except ValueError:
                        pass
                defer.callback(routing)
            else:
                logging.debug('handler: processing send request')
                retries = 1
                destination = defer.message.destination
                command = defer.message.command
                payload = defer.message.payload

                while retries > 0:
                    try:
                        logging.debug("handler: sending message from defer")
                        pyzwave.send(destination, [0x88, command] + payload)

                        if len(defer.allowed_replies) > 0:
                            BrokerAgent.init().append(defer)

                        break
                    except Exception as e:
                        log = "==IOError== retries remaining: " + str(retries)
                        logging.exception(log)
                    retries -= 1

                if retries == 0 or len(defer.allowed_replies) == 0:
                    logging.error("handler: returns immediately to handle failues, or defer has no expected replies")
                    defer.callback(None)

            gevent.sleep(0)
コード例 #2
0
    def _discover(self):
        ret = []

        if not self.stop():
            logger.error("cannot discover without STOP mode")
            return ret

        with self._global_lock:
            nodes = pyzwave.discover()
            zwave_controller = nodes[0]
            total_nodes = nodes[1]
            # remaining are the discovered nodes
            ret = nodes[2:]
            logger.debug("zwave_controller: %s, total_nodes: %s, ret: %s" %
                         (str(zwave_controller), str(total_nodes), str(ret)))
            try:
                ret.remove(zwave_controller)
            except ValueError:
                pass  # sometimes zwave_controller is not in the list
        return ret
コード例 #3
0
ファイル: transport.py プロジェクト: HuangZhenQiu/NanoKong
 def discovery(self):
     nodes = pyzwave.discover()
     gateway_id = nodes[0]
     total_nodes = nodes[1]
      # remaining are the discovered nodes
     return nodes[2:]
コード例 #4
0
    def handler(self):
        while 1:
            defer = tasks.get()
            print 'handler: getting defer from task queue'

            if defer.message.command == "discovery":
                print 'handler: processing discovery request'
                nodes = pyzwave.discover()
                gateway_id = nodes[0]
                total_nodes = nodes[1]
                # remaining are the discovered nodes
                discovered_nodes = nodes[2:]
                try:
                    discovered_nodes.remove(gateway_id)
                except ValueError:
                    pass # sometimes gateway_id is not in the list
                defer.callback(discovered_nodes)
            elif defer.message.command == "routing":
                print 'handler: processing routing request'
                routing = {}
                nodes = pyzwave.discover()
                gateway_id = nodes[0]
                nodes = nodes[2:]
                try:
                    nodes.remove(gateway_id)
                except ValueError:
                    pass # sometimes gateway_id is not in the list
                for node in nodes:
                    routing[node] = pyzwave.routing(node)
                    try:
                        routing[node].remove(gateway_id)
                    except ValueError:
                        pass
                defer.callback(routing)
            else:
                print 'handler: processing send request'
                retries = 1
                destination = defer.message.destination
                command = defer.message.command
                payload = defer.message.payload

                # prevent pyzwave send got preempted and defer is not in queue
                if len(defer.allowed_replies) > 0:
                    print "handler: appending defer", defer, "to queue"
                    getAgent().append(defer)

                while retries > 0:
                    try:
                        print "handler: sending message from defer"
                        pyzwave.send(destination, [0x88, command] + payload)

                        break
                    except Exception as e:
                        log = "==IOError== retries remaining: " + str(retries)
                        print log
                    retries -= 1

                if retries == 0 or len(defer.allowed_replies) == 0:
                    print "handler: returns immediately to handle failues, or defer has no expected replies"
                    defer.callback(None)

            gevent.sleep(0)
コード例 #5
0
    def handler(self):
        while 1:
            defer = tasks.get()
            #print 'handler: getting defer from task queue'

            if defer.message.command == "discovery":
                #print 'handler: processing discovery request'
                nodes = pyzwave.discover()
                gateway_id = nodes[0]
                total_nodes = nodes[1]
                # remaining are the discovered nodes
                discovered_nodes = nodes[2:]
                try:
                    discovered_nodes.remove(gateway_id)
                except ValueError:
                    pass  # sometimes gateway_id is not in the list
                defer.callback(discovered_nodes)
            elif defer.message.command == "routing":
                #print 'handler: processing routing request'
                routing = {}
                nodes = pyzwave.discover()
                gateway_id = nodes[0]
                nodes = nodes[2:]
                try:
                    nodes.remove(gateway_id)
                except ValueError:
                    pass  # sometimes gateway_id is not in the list
                for node in nodes:
                    routing[node] = pyzwave.routing(node)
                    try:
                        routing[node].remove(gateway_id)
                    except ValueError:
                        pass
                defer.callback(routing)
            elif defer.message.command == "device_type":
                #print 'handler: processing routing request'
                device_type = pyzwave.getDeviceType(defer.message.destination)
                defer.callback(device_type)
            else:
                #print 'handler: processing send request'
                retries = 1
                destination = defer.message.destination
                command = defer.message.command
                payload = defer.message.payload

                # prevent pyzwave send got preempted and defer is not in queue
                if len(defer.allowed_replies) > 0:
                    print "[transport] handler: appending defer", defer, "to queue"
                    getAgent().append(defer)

                while retries > 0:
                    try:
                        #print "handler: sending message from defer"
                        pyzwave.send(destination, [0x88, command] + payload)

                        break
                    except Exception as e:
                        log = "==IOError== retries remaining: " + str(retries)
                        print '[transport] ' + log
                    retries -= 1

                if retries == 0 or len(defer.allowed_replies) == 0:
                    print "[transport] handler: returns immediately to handle failues, or defer has no expected replies"
                    defer.callback(None)

            gevent.sleep(0)
コード例 #6
0
gevent.sleep(1)

# print "sending packet"
# while True:
# 	pyzwave.send(5, [0x88]+[0, 19, 5, 2, 32, 2, 1, 0x1e])
# 	gevent.sleep(3)
# for i in [1,2,3,4,5]:
# 	print "got device type %s from device radio address %X" % (str(pyzwave.getDeviceType(i)), i)

if sys.argv[2] == "reset":
    print "-" * 10 + "pyzwave.hardReset"
    print str(pyzwave.hardReset())

elif sys.argv[2] == "discover":
    print "-" * 10 + "pyzwave.discover"
    print str(pyzwave.discover())

elif sys.argv[2] == "getaddr":
    print "-" * 10 + "pyzwave.getAddr"
    print str(pyzwave.getAddr())

elif sys.argv[2] == "basicset":
    print "-" * 10 + "pyzwave.basicSet"
    i = int(sys.argv[3])
    v = int(sys.argv[4])
    print str(pyzwave.basicSet(i, v))

elif sys.argv[2] == "isnodefail":
    print "-" * 10 + "pyzwave.isNodeFail"
    i = int(sys.argv[3])
    print str(pyzwave.isNodeFail(i))