Como um Hub IoT do Azure interage com dispositivos Embedded / IoT?

13

Estou trabalhando na plataforma IoT do Azure e entendo como os dispositivos enviam dados para o hub IoT (se não estiver errado, é apenas uma chamada de serviço da Web ou algo semelhante a isso).

Mas eu me pergunto como o hub IoT envia dados / comando / entrada para os dispositivos, porque não estamos trabalhando no hub IoT para comunicação com dispositivos (não temos nenhum requisito para enviar dados aos dispositivos). O hub IoT pode interagir diretamente com os dispositivos? (Usando o ID exclusivo do dispositivo ou qualquer identidade exclusiva, como IP, endereço Mac, etc.).

Em algum lugar, li que os dispositivos continuam solicitando ao hub IoT se o hub IoT tiver alguma entrada para eles, e o hub IoT envia dados / comando / entrada aos dispositivos em resposta. Isso é verdade? Caso contrário, explique.

Shri
fonte

Respostas:

14

O modelo usado pelos dispositivos conectados ao Hub IoT é que eles nunca aceitarão conexões de entrada. Os dispositivos do Hub IoT nunca atuam como um 'servidor' e essa é uma parte crucial do modelo de segurança na IoT do Azure. O modelo definitivo é encapsulado na Comunicação assistida por serviços da Clemens Vasters .

Portanto, os dispositivos estão sempre 'pesquisando' um serviço externo para enviar dados ou receber comandos. As APIs fazem parecer que os dados estão sendo enviados para um dispositivo, mas é sempre o dispositivo que faz a conexão de saída.

O Hub IoT faz isso de duas maneiras:

  1. Enviando dados para o terminal do dispositivo /devices/{deviceId}/messages/devicebound. Este é um ponto de extremidade do sistema de mensagens AMQP, semelhante a uma fila ou assinatura de tópico. O dispositivo, ao ler comandos, precisa receber confirmação, se necessário, que faz parte do protocolo AMQP subjacente. Isso funciona da mesma forma com o MQTT e https é um fallback válido. A API envolve tudo isso para você. Existem conceitos adicionais, como 'métodos diretos', que são um wrapper de API em torno do mesmo protocolo de mensagens subjacente
  2. Usando o dispositivo duplo do lado do servidor, que é uma maneira de manter logicamente as propriedades sincronizadas entre o dispositivo e o servidor. Você define uma propriedade no dispositivo gêmeo e, quando o dispositivo sincroniza, essa propriedade será sincronizada com o dispositivo. Isso é menos baseado em mensagens e construído sobre o protocolo de gerenciamento de dispositivos LWM2M.

Muitas pesquisas, conexões, compartilhamento de conexões, recebimentos etc. devem ser atendidos como parte do protocolo AMQP (ou MQTT), que, por sua vez, é agrupado no SDK do Hub IoT. Portanto, o acima exposto é altamente simplificado, mas, para reiterar, o IoT Hub não pode e nunca tentará enviar dados para um endereço / porta IP no seu dispositivo.

Simon Munro
fonte
Obrigado @Simon, Agora estou claro sobre isso, dispositivos responsáveis ​​apenas por ligar para o hub IoT para enviar ou receber dados. Você mencionou "IoT do Azure" em sua resposta, então, só quero confirmar isso, seu aplicativo de resposta em todas as plataformas de IoT? ou apenas para a IoT do Azure.
Shri
@ShrikantBhusalwad A resposta não pode ser aplicada a todas as plataformas, porque muitas ainda não foram desenvolvidas. Este é um modelo comum , é bom para segurança, mas outros modelos podem ser justificados - particularmente em um novo ambiente.
Sean Houlihane
2
Não estou familiarizado com todas as plataformas, mas a maioria das plataformas em nuvem será semelhante. A AWS usa o MQTT, que é basicamente o mesmo. Como o @sean observa, ele não pode ser aplicado a todas as plataformas, mas poucas plataformas na nuvem incorporam práticas de segurança arriscadas com antecedência . Os métodos que usam modelos de dispositivo como servidor serão herdados ou terão muito mais rigor de segurança (à medida que os padrões de borda ou malha se desenvolvem). Azure IoT arquitetura suporta gateways de campo e em nuvem para contornar problemas com dispositivos baseados em edge legado ou
Simon Munro
Regras Azure Internet das coisas Hub MQTT são explicitados no docs.microsoft.com/en-us/azure/iot-hub/iot-hub-mqtt-support
Suporte Gambit