Compartilhar via


Como conectar dispositivos por meio de um gateway transparente do IoT Edge

Um dispositivo do IoT Edge pode operar como um gateway que fornece uma conexão entre outros dispositivos em uma rede e o aplicativo do IoT Central. Você usa um gateway quando o dispositivo não pode acessar diretamente o aplicativo do IoT Central.

O IoT Edge dá suporte aos padrões de gateway transparente e tradução. Este artigo resume como implementar o padrão de gateway transparente. Nesse padrão, o gateway passa mensagens do dispositivo downstream para o ponto de extremidade do Hub IoT em seu aplicativo do IoT Central. O gateway não manipula as mensagens à medida que elas passam. Em IoT Central, cada dispositivo downstream aparece como filho para o dispositivo de gateway:

Diagrama que mostra o IoT Edge como um gateway transparente.

Importante

Este artigo inclui etapas para conectar um dispositivo usando uma assinatura de acesso compartilhado, também chamada de autenticação de chave simétrica. Esse método de autenticação é conveniente para teste e avaliação, mas a autenticação em um dispositivo que usa certificados X.509 é uma abordagem mais segura. Para saber mais, consulte Melhores práticas de segurança> em Conexão de segurança.

Para simplificar, este artigo usa máquinas virtuais para hospedar o dispositivo downstream e o gateway. Em um cenário real, o dispositivo downstream e o gateway seriam executados em dispositivos físicos na sua rede local.

Este artigo mostra como implementar o cenário usando o runtime do IoT Edge 1.4.

Pré-requisitos

Para concluir as etapas deste artigo, você precisa de:

Para seguir as etapas neste artigo, baixe os seguintes arquivos no seu computador:

Importar o manifesto de implantação

Cada dispositivo IoT Edge precisa de um manifesto de implantação para configurar o runtime do IoT Edge. Para importar um manifesto de implantação para o gateway transparente do IoT Edge:

  1. Navegue até Manifestos do Edge.

  2. Selecione + Novo, insira um nome para o manifesto de implantação, como Gateway transparente, e carregue o arquivo EdgeTransparentGatewayManifest.json baixado anteriormente.

  3. Selecione Criar para salvar o manifesto de implantação em seu aplicativo.

Adicionar modelos de dispositivo

Os dispositivos downstream e o dispositivo de gateway podem usar modelos de dispositivo no IoT Central. O IoT Central permite modelar a relação entre os dispositivos downstream e o gateway para que você possa exibi-los e gerenciá-los depois que eles estiverem conectados. Um modelo de dispositivo não é necessário para anexar um dispositivo downstream a um gateway.

Para criar um modelo de dispositivo para um dispositivo downstream, crie um modelo de dispositivo padrão que modele os recursos do seu dispositivo. O exemplo mostrado neste artigo usa o modelo de dispositivo termostato que você baixou.

Para criar um modelo de dispositivo para um dispositivo downstream:

  1. Crie um modelo de dispositivo e escolha dispositivo IoT como o tipo de modelo.

  2. Na página Personalizar do assistente, insira um nome como Termostato para o modelo de dispositivo.

  3. Depois de criar o modelo de dispositivo, selecione Importar um modelo. Escolha um modelo como o arquivo thermostat-1.json que você baixou anteriormente.

  4. Para gerar algumas exibições padrão para o termostato, selecione exibições e, em seguida, escolha Gerar exibições padrão.

  5. Publicar o modelo de dispositivo.

Para criar um modelo de dispositivo para um dispositivo de gateway transparente do IoT Edge:

  1. Crie um modelo de dispositivo e escolha Azure IoT Edge como o tipo de modelo.

  2. Na página Personalizar do assistente, insira um nome como o Gateway do Edge para o modelo de dispositivo.

  3. Na página Personalizar do assistente, marque Este é um dispositivo de gateway.

  4. Na página Examinar, selecione Criar.

  5. Na página Criar um modelo, selecione Modelo personalizado.

  6. Adicione uma entrada em Relações para o modelo de dispositivo downstream.

A captura de tela a seguir mostra a página Relações para um dispositivo de gateway do IoT Edge com dispositivos downstream que usam o modelo de dispositivo Termostato:

Captura de tela mostrando a relação do modelo de dispositivo de gateway do IoT Edge com um modelo de dispositivo downstream de termostato.

A captura de tela anterior mostra um modelo de dispositivo do IoT Edge gateway sem módulos definidos. Um gateway transparente não requer nenhum módulo porque o runtime do IoT Edge encaminhar mensagens dos dispositivos downstream diretamente para o IoT Central. Se o próprio gateway precisar enviar telemetria, sincronizar propriedades ou manipular comandos, você poderá definir esses recursos no componente raiz ou em um módulo.

Adicione todas as propriedades de nuvem e exibições necessárias antes de publicar os modelos de dispositivo gateway e downstream.

Adicionar os dispositivos

Ao adicionar os dispositivos ao aplicativo do IoT Central, você pode definir a relação entre os dispositivos downstream e o gateway transparente.

Para adicionar os dispositivos:

  1. Navegue até a página de dispositivos no aplicativo do Azure IoT Central.

  2. Adicione uma instância do dispositivo de gateway transparente do IoT Edge. Ao adicionar o dispositivo, selecione o manifesto de implantação do Gateway transparente. Neste artigo, a ID do dispositivo de gateway é edgegateway.

  3. Adicione uma ou mais instâncias do dispositivo downstream. Neste artigo, os dispositivos downstream são termostatos com IDs thermostat1 e thermostat2.

  4. Na lista de dispositivos, selecione cada dispositivo downstream e selecione Anexar ao gateway.

A captura de tela a seguir mostra que você pode exibir a lista de dispositivos conectados a um gateway na página Dispositivos downstream:

Captura de tela que mostra a lista de dispositivos downstream conectados a um gateway transparente.

Em um gateway transparente, os dispositivos downstream se conectam ao próprio gateway, e não a um módulo personalizado hospedado pelo gateway.

Antes de implantar os dispositivos, você precisa de:

  • Escopo de ID do seu aplicativo do IoT Central.
  • Valores de ID do dispositivo para o gateway e os dispositivos downstream.
  • Valores de Chave primária para o gateway e os dispositivos downstream.

Para localizar esses valores, navegue até cada dispositivo na lista de dispositivos e selecione Conectar. Anote esses valores antes de continuar.

Dica

Você pode conectar os dispositivos e estabelecer relações sem primeiro criar modelos para os dispositivos. É possível anexar um dispositivo downstream não atribuído a um dispositivo de gateway não atribuído.

Implantar o gateway e os dispositivos

Para permitir que você experimente esse cenário, as etapas a seguir mostram como implantar o gateway e os dispositivos downstream em máquinas virtuais do Azure.

Dica

Para saber como implantar o runtime do IoT Edge em um dispositivo físico, consulte Criar um dispositivo IoT Edge na documentação do IoT Edge.

Para experimentar o cenário de gateway transparente, selecione o botão a seguir para implantar duas máquinas virtuais do Linux. Uma máquina virtual tem o runtime do IoT Edge 1.4 instalado e é o gateway transparente do IoT Edge. A outra máquina virtual é um dispositivo downstream em que você executa o código para enviar telemetria simulada do termostato:

Botão Implantar no Azure

Quando as duas máquinas virtuais forem implantadas e executadas, verifique se o dispositivo de gateway do IoT Edge está em execução na máquina virtual edgegateway:

  1. Acesse a página Dispositivos no aplicativo do IoT Central. Se o dispositivo de gateway do IoT Edge estiver conectado ao IoT Central, seu status será Provisionado.

  2. Abra o dispositivo de gateway do IoT Edge e verifique o status dos módulos na página Módulos. Se o tempo de execução do IoT Edge for iniciado com êxito, o status dos módulos $edgeAgent e $edgeHub será Executando:

    Captura de tela que mostra os módulos $edgeAgent e $edgeHub versão 1.4 em execução no gateway do IoT Edge.

    Dica

    Talvez seja necessário aguardar vários minutos enquanto a máquina virtual é iniciada e o dispositivo é provisionado no aplicativo do IoT Central.

Configurar o gateway

Para que o dispositivo do IoT Edge funcione como um gateway transparente, ele precisará de alguns certificados para provar sua identidade para todos os dispositivos downstream. Este artigo usa certificados de demonstração. Em um ambiente de produção, use certificados da sua autoridade de certificação.

Para gerar os certificados de demonstração e instalá-los em seu dispositivo de gateway:

  1. Use o SSH para se conectar e entrar na máquina virtual do dispositivo de gateway.

  2. Execute os seguintes comandos para clonar o repositório do IoT Edge e gerar os certificados de demonstração:

    # Clone the repo
    cd ~
    git clone https://github.com/Azure/iotedge.git
    
    # Generate the demo certificates
    mkdir certs
    cd certs
    cp ~/iotedge/tools/CACertificates/*.cnf .
    cp ~/iotedge/tools/CACertificates/certGen.sh .
    ./certGen.sh create_root_and_intermediate
    ./certGen.sh create_edge_device_ca_certificate "mycacert"
    

    Depois que você executar os comandos anteriores, os seguintes arquivos estarão prontos para uso nas próximas etapas:

    • ~/certs/certs/azure-iot-test-only.root.ca.cert.pem: o Certificado de Autoridade de Certificação raiz usado para criar todos os outros certificados de demonstração para testar um cenário do IoT Edge.
    • ~/certs/certs/iot-edge-device-mycacert-full-chain.cert.pem - Um certificado CA do dispositivo referenciado no arquivo de configuração do IoT Edge. Em um cenário de gateway, esse Certificado de Autoridade de Certificação é como o dispositivo do IoT Edge confirma a identidade para dispositivos downstream.
    • ~/certs/private/iot-edge-device-mycacert.key.pem: a chave privada associada ao Certificado de Autoridade de Certificação do dispositivo.

    Para saber mais sobre esses certificados de demonstração, confira Criar certificados de demonstração para testar recursos do dispositivo do IoT Edge.

  3. Abra o arquivo config.toml em um editor de texto. Por exemplo:

    sudo nano /etc/aziot/config.toml
    
  4. Localize as configurações a seguir no arquivo de configuração. Adicione as configurações do certificado da seguinte maneira:

    trust_bundle_cert = "file:///home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem"
    
    [edge_ca]
    cert = "file:///home/AzureUser/certs/certs/iot-edge-device-ca-mycacert-full-chain.cert.pem"
    pk = "file:///home/AzureUser/certs/private/iot-edge-device-ca-mycacert.key.pem"
    

    O exemplo anterior pressupõe que você esteja conectado como AzureUser e criou um certificado CA de dispositivo chamado "mycacert".

  5. Salve as alterações e reinicie o runtime do IoT Edge:

    sudo iotedge config apply
    

Se o runtime do IoT Edge for iniciado com êxito após as alterações, o status dos módulos $edgeAgent e $edgeHub será alterado para Execução na página Módulos do dispositivo de gateway no IoT Central.

Se o runtime não for iniciado, verifique as alterações feitas no arquivo de configuração do IoT Edge e confira Solucionar problemas do dispositivo do IoT Edge.

Seu gateway transparente agora está configurado e pronto para começar a encaminhar telemetria de dispositivos downstream.

Provisionar um dispositivo downstream

O IoT Central se baseia no DPS (serviço de provisionamento de dispositivos) para provisionar dispositivos no IoT Central. Atualmente, o IoT Edge não pode usar o DPS para provisionar um dispositivo downstream para o aplicativo do IoT Central. As etapas a seguir mostram como configurar o dispositivo thermostat1 manualmente. Para concluir essas etapas, você precisa de um ambiente com Python instalado e conectividade com a Internet. Verifique o SDK do Python da Internet das Coisas do Azure para os requisitos atuais da versão do Python. O Azure Cloud Shell possui Python pré-instalado:

  1. Execute o seguinte comando para instalar o módulo azure.iot.device:

    pip install azure.iot.device
    
  2. Execute o seguinte comando para baixar o script do Python que faz o provisionamento do dispositivo:

    wget https://raw.githubusercontent.com/Azure-Samples/iot-central-docs-samples/main/transparent-gateway-1-4/provision_device.py
    
  3. Para provisionar o dispositivo downstream thermostat1 em seu aplicativo do IoT Central, execute os seguintes comandos, substituindo {your application id scope} e {your device primary key}. Você fez uma observação desses valores quando adicionou os dispositivos ao seu aplicativo IoT Central:

    export IOTHUB_DEVICE_DPS_DEVICE_ID=thermostat1
    export IOTHUB_DEVICE_DPS_ID_SCOPE={your application id scope}
    export IOTHUB_DEVICE_DPS_DEVICE_KEY={your device primary key}
    python provision_device.py
    

No aplicativo do IoT Central, verifique se o Status do dispositivo para o dispositivo thermostat1 agora está como Provisionado.

Configurar um dispositivo downstream

Na seção anterior, você configurou a máquina virtual edgegateway com os certificados de demonstração para habilitá-lo para ser executado como gateway. A máquina virtual leafdevice está pronta para que você instale um simulador de termostato que usa o gateway para se conectar ao IoT Central.

A máquina virtual leafdevice precisa de uma cópia do Certificado de Autoridade de Certificação raiz que você criou na máquina virtual edgegateway. Copie o arquivo /home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem da máquina virtual edgegateway para o diretório base na máquina virtual leafdevice. Você pode usar o comando scp para copiar arquivos entre máquinas virtuais do Linux. Por exemplo, do computador leafdevice:

scp AzureUser@edgegateway:/home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem .

Para saber como verificar a conexão do dispositivo downstream para o gateway, consulte Testar a conexão de gateway.

Para executar o simulador do termostato na máquina virtual leafdevice:

  1. Use o SSH para se conectar e entrar na máquina virtual leafdevice.

  2. Baixe a amostra do Python no diretório base:

    cd ~
    wget https://raw.githubusercontent.com/Azure-Samples/iot-central-docs-samples/main/transparent-gateway-1-4/simple_thermostat.py
    
  3. Instale o módulo do Python do dispositivo da Internet das Coisas do Azure:

    sudo apt update
    sudo apt install python3-pip
    pip3 install azure.iot.device
    
  4. Defina as variáveis de ambiente para configurar o exemplo. Substitua {your device shared key} pela chave primária thermostat1 que você anotou anteriormente. Essas variáveis pressupõem que o nome da máquina virtual do gateway é edgegateway e a ID do dispositivo termostato é thermostat1:

    export IOTHUB_DEVICE_SECURITY_TYPE=connectionString
    export IOTHUB_DEVICE_CONNECTION_STRING="HostName=edgegateway;DeviceId=thermostat1;SharedAccessKey={your device shared key}"
    export IOTEDGE_ROOT_CA_CERT_PATH=~/azure-iot-test-only.root.ca.cert.pem
    

    Observe como a cadeia de conexão usa o nome do dispositivo de gateway e não o nome de um hub IoT.

  5. Para executar o código, use o comando a seguir:

    python3 simple_thermostat.py
    

    A saída do comando é semelhante a:

    Connecting using Connection String HostName=edgegateway;DeviceId=thermostat1;SharedAccessKey={your device shared key}
    Listening for command requests and property updates
    Press Q to quit
    Sending telemetry for temperature
    Sent message
    Sent message
    Sent message
    ...
    

    Dica

    Se você vir um erro quando o dispositivo downstream tentar se conectar, Tente executar novamente as etapas de provisionamento do dispositivo.

  6. Para ver a telemetria no IoT Central, navegue até a página Visão geral do dispositivo thermostat1:

    Captura de tela mostrando a telemetria do dispositivo downstream.

    Na página Sobre, você pode exibir valores de propriedade enviados do dispositivo downstream e, na página Comando, você pode chamar comandos no dispositivo downstream.