예제 #1
0
파일: gateway.py 프로젝트: bergzand/pyaiot
 def open(self):
     """Discover nodes on each opened connection."""
     self.set_nodelay(True)
     logger.debug("New node websocket opened")
     self.application.nodes.update(
         {self: {
             'uid': str(uuid.uuid4()),
             'data': {
                 'protocol': PROTOCOL
             }
         }})
     node_uid = self.application.nodes[self]['uid']
     self.application.send_to_broker(Message.new_node(node_uid))
     yield self.write_message(Message.discover_node())
     self.application.send_to_broker(
         Message.update_node(node_uid, 'protocol', PROTOCOL))
예제 #2
0
def main(args):
    """Main function."""
    try:
        ws = websocket.create_connection("ws://{}:{}/node".format(
            args.host, args.port))
    except ConnectionRefusedError:
        print("Cannot connect to ws://{}:{}".format(args.host, args.port))
        return

    init_node(ws)
    while True:
        try:
            msg = ws.recv()
        except:
            print("Connection closed")
            break
        else:
            print(msg)
            if msg == Message.discover_node():
                init_node(ws)
            else:
                msg = json.loads(msg)
                if msg['payload'] == '1':
                    ws.send(
                        json.dumps({
                            'type': 'update',
                            'data': {
                                'led': '1'
                            }
                        }))
                else:
                    ws.send(
                        json.dumps({
                            'type': 'update',
                            'data': {
                                'led': '0'
                            }
                        }))
예제 #3
0
 async def discover_node(self, node):
     for ws, uid in self.node_mapping.items():
         if node.uid == uid:
             await ws.write_message(Message.discover_node())
             break
예제 #4
0
def test_discover_node():
    serialized = Message.discover_node()

    assert serialized == Message.serialize({'request': 'discover'})