O que é um "Agente incorporado" em referência a um dispositivo Edge IoT de baixa potência?

14

Pergunta: Qual é o design subjacente por trás de um "Agente Incorporado" em relação aos dispositivos de borda de Internet das Coisas (IoT) de baixa potência?

Alguns dos fornecedores de serviços em nuvem da IoT continuam se referindo à instalação de um agente incorporado nos dispositivos de borda baseados em sensores. Parece ser um software proprietário que os fornecedores instalam em cada dispositivo conectado à nuvem. Abaixo estão duas imagens de pilhas de software com referências ao Agent . Uma parte da pilha de software reside no microcontrolador.

Agente IOT - 1

Agente IOT

Também aqui está uma explicação muito ampla do blog Thingworx

Um agente é um programa incorporado que é executado em um dispositivo IoT ou próximo a ele e relata o status de algum ativo ou ambiente. Sempre há algum agente presente em um aplicativo de IoT. Normalmente, o agente lê o status dos sensores ou conectividade local a um ativo, aplica algumas regras ou lógica sobre a frequência com que o remetente deve agregar as informações e, em seguida, envia as informações por uma rede de comunicações de longo curso para o servidor. Esse processo também pode operar em sentido inverso.

Suponho que esse agente consista em informações de conectividade, como endereço IP, nome do servidor, informações do tipo SSID para ajudar na conectividade. Esses agentes incorporados têm outras funcionalidades além de fornecer conectividade?

Referências:

Mahendra Gunawardena
fonte
Por favor, você poderia dar a referência da arquitetura IoT (segunda foto)? Obrigado
BiG_TooTh

Respostas:

13

De um modo geral, um agente é um software 'bidirecional'; isto é, lê parâmetros do dispositivo e comunica o mesmo à nuvem ou mesmo a um gateway. Na maioria das vezes, um OEM controlará as bibliotecas para o desenvolvimento do software para controlar os parâmetros do dispositivo. Visto que o OEM pode escolher qualquer um dos protocolos de comunicação populares (MQTT, HTTP etc.) para publicar os valores lidos. Normalmente, a integração desses dois é o espaço em que um integrador de sistemas entra.

Por exemplo, um agente pode estar em execução na área de trabalho do Windows para ler as rpm do ventilador a cada 5 segundos. Esse valor é então comunicado a uma plataforma em nuvem através de um protocolo acordado.

Código de exemplo de MQTT (Python) Opas web site :

mqttc.connect("iot.eclipse.org")
mqttc.loop_start()

while True:
    temperature = sensor.blocking_read()
    mqttc.publish("paho/temperature", temperature)

O snippet acima é basicamente um agente, porque há a parte 'from device' na forma da função sensor.blocking_read()e a parte 'to cloud' na forma de a mqttc.publish().

Os agentes avançados terão mecanismos para lidar com o armazenamento offline, o suporte TLS para comunicação com a nuvem, responderão a todas as atualizações da nuvem (incluindo reinicializações, se necessário) normalmente, etc. E, no caso específico desta pergunta, o agente lidará com restrições de energia também. Por exemplo, responda a gatilhos no nível do dispositivo, como suspensão, ativação etc.

cogito ergo sum
fonte
Essa é uma definição interessante de bidirecional. Eu não chamaria um sensor bidirecional se ele apenas lê e relata. Eu diria que precisa receber pelo menos um tipo de mensagem para ser bidirecional. Ler a velocidade do ventilador é sua justificativa intrínseca ao ser, não uma comunicação.
Helmar
Não entendo seu uso de "bidirecional" aqui. Um agente é um software no dispositivo que opera em nome do servidor (neste contexto). Ele não se comunica necessariamente com o servidor (embora esse seja um caso de uso muito comum). Por exemplo, poderia estar lá apenas para definir parâmetros de configuração ou para baixar atualizações.
Gilles 'SO- stop be evil' em