Exemple #1
0
def enviar_comando(function_name, *args, **kwargs):
    """Envia un comando remoto al servidor del plc"""
    stream = broker.pubsub()
    stream.subscribe('command-returns')

    command = RemoteCommand(function_name, *args, **kwargs)
    receptor = broker.publish('commands', command.serialize())

    if receptor:
        for message in stream.listen():
            if message['type'] == 'message':
                data = json.loads(message['data'])
                print data
                if data['id'] == command.id:
                    return data['success']

    return False
Exemple #2
0
def enviar_comando(function_name, *args, **kwargs):
    """Envia un comando remoto al servidor del plc"""
    stream = broker.pubsub()
    stream.subscribe('command-returns')

    command = RemoteCommand(function_name, *args, **kwargs)
    receptor = broker.publish('commands', command.serialize())

    if receptor:
        for message in stream.listen():
            if message['type'] == 'message':
                data = json.loads(message['data'])
                print data
                if data['id'] == command.id:
                    return data['success']

    return False
Exemple #3
0
    def run(self):
        #TODO implementar logging
        pubsub = broker.pubsub()
        pubsub.subscribe('commands')
        for message in pubsub.listen():
            if message['type'] == 'message':
                logging.info("Se recibió el mensaje de ejecución remota %s", message['data'])
                command = RemoteCommand()
                command.unserialize(message['data'])
                try:
                    success = command.execute(plc)
                except:
                    success = False
                    logging.error("No se pudo ejecutar la orden: '%s'", command.function_name)

                response = {'id':command.id, 'success': success}
                time.sleep(0.6)
                broker.publish('command-returns', json.dumps(response))
                logging.info("enviada respuesta a comando: '%'", response)
Exemple #4
0
    def run(self):
        #TODO implementar logging
        pubsub = broker.pubsub()
        pubsub.subscribe('commands')
        for message in pubsub.listen():
            if message['type'] == 'message':
                logging.info("Se recibió el mensaje de ejecución remota %s",
                             message['data'])
                command = RemoteCommand()
                command.unserialize(message['data'])
                try:
                    success = command.execute(plc)
                except:
                    success = False
                    logging.error("No se pudo ejecutar la orden: '%s'",
                                  command.function_name)

                response = {'id': command.id, 'success': success}
                time.sleep(0.6)
                broker.publish('command-returns', json.dumps(response))
                logging.info("enviada respuesta a comando: '%'", response)