예제 #1
0
 def run(self):
     logger.info("starting executor ...")
     while True:
         message = Client.receive()
         logger.debug(message)
         response = self.get_command(message)
         Client.response(message,
                         response,
                         metadata=None,
                         timeout=10,
                         callback=None,
                         block=True)
예제 #2
0
def router():
    while True:
        task = Client.receive()
        try:
            for part in task.payload.get('protocol_parts'):
                if part.get('name') == 'data':
                    command = json.loads(part.get('value'))
                session = SessionManager.sessions.get(task.payload.get('device_url'))
                session.command_queue.put(command)
                Client.response(task, '200')
        except Exception as ex:
            Client.response(task, '500')
            logger.error("could not route command '{}' for '{}'".format(task.payload.get('protocol_parts'), task.payload.get('device_url')))
            logger.error(ex)
예제 #3
0
def router():
    while True:
        task = Client.receive()
        try:
            for part in task.payload.get('protocol_parts'):
                if part.get('name') == 'data':
                    command = part.get('value')
            http_resp = http.put(
                '{}/lights/id:{}/state'.format(
                    LIFX_CLOUD_URL, task.payload.get('device_url')
                ),
                command,
                headers={
                    'Authorization': 'Bearer {}'.format(LIFX_API_KEY),
                    'Content-Type': 'application/json'
                }
            )
            if http_resp.status not in (200, 207):
                logger.error("could not route message to LIFX API - '{}'".format(http_resp.status))
            response = str(http_resp.status)
        except Exception as ex:
            logger.error("error handling task - '{}'".format(ex))
            response = '500'
        Client.response(task, response)
                            'Dummy Device 4')
        Client.add(new_device)

    if 8 in tests:
        time.sleep(0.5)
        logger.info('------ push 5 events ------')
        for event in range(5):
            data = json.dumps({'str_field': 'dummy event', 'int_field': event})
            response = Client.event(id_4, 'dummy-event', data,
                                    'dummy metadata {}'.format(event))
            logger.info("event response '{}'".format(response.payload))

    if 9 in tests:
        time.sleep(0.5)
        logger.info('------ receive command and respond ------')
        msg_obj = Client.receive()
        device_id = msg_obj.payload.get('device_url')
        service = msg_obj.payload.get('service_url')
        command = msg_obj.payload.get('protocol_parts')
        logger.info("received command for device '{}' on service '{}':".format(
            device_id, service))
        logger.info(command)
        Client.response(msg_obj, '200', 'status')
        logger.info('sent response')

    if 10 in tests:
        time.sleep(0.5)
        logger.info('------ add existing device ------')
        new_device = Device(id_1, 'iot#1740e97f-1ae1-4547-a757-a62018083d3f',
                            'Dummy Device 1')
        Client.add(new_device)
예제 #5
0
 def run(self):
     while True:
         task = Client.receive()
         self.execute_task(task)