Configurar o Azure IoT Edge para o Azure Sphere

O Azure IoT Edge fornece uma camada de filtragem e processamento de dados entre um dispositivo downstream, como o Azure Sphere e Hub IoT do Azure. Considere usar o Azure IoT Edge se o dispositivo do Azure Sphere produzir uma quantidade considerável de dados ou dados que exigem pós-processamento.

Este tópico documenta as etapas para configurar um dispositivo IoT Edge do Azure com o Azure Sphere. O Azure Sphere dá suporte às versões 1.1 e 1.2 do Azure IoT Edge; diferenças significativas são observadas nas instruções. As diferenças main são:

  • O nome do pacote foi alterado de iotedge para aziot-edge.
  • O arquivo de configuração padrão tem um novo nome e local. No Azure IoT Edge 1.1, o arquivo de configuração era /etc/iotedge/config.yaml. No Azure IoT Edge 1.2, o arquivo de configuração é /etc/aziot/config.toml.
  • O Azure IoT Edge 1.2 requer um FQDN (nome de domínio totalmente qualificado) acessível por meio de um servidor DNS na rede.

Depois de concluir as tarefas neste tópico, seu dispositivo do Azure Sphere será configurado para enviar dados a um Hub IoT do Azure por meio de um dispositivo IoT Edge do Azure que atua como um gateway transparente. Você pode adicionar filtragem e processamento de dados adicionais com um módulo no dispositivo IoT Edge do Azure seguindo o guia do Módulo IoT Edge do Azure.

Antes de começar

As etapas neste tópico pressupõem que:

  • Seu dispositivo do Azure Sphere está conectado ao computador por USB.
  • Você tem uma assinatura do Azure.
  • Você criou uma instância Hub IoT do Azure e provisionou manualmente um dispositivo. Observe que você precisará usar o certificado de AC do catálogo para o Hub IoT posteriormente no procedimento (Etapa 6).
  • Você criou um grupo de recursos e todos os recursos relacionados aos serviços de Hub IoT do Azure e IoT Edge devem pertencer a esse grupo de recursos.

Importante

Embora você possa criar uma assinatura do Azure sem custo, o processo de inscrição exige que você insira um número de cartão de crédito. O Azure fornece vários níveis de serviço de assinatura. Por padrão, a camada Standard, que requer uma taxa de serviço mensal, é selecionada quando você cria uma instância Hub IoT do Azure. Para evitar uma cobrança mensal, selecione a camada Gratuita. A camada Gratuita inclui os serviços necessários para usar seu dispositivo com uma instância Hub IoT do Azure, incluindo o Dispositivo Gêmeo. Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.

Visão geral

Configurar um dispositivo IoT Edge do Azure e configurá-lo para trabalhar com um dispositivo do Azure Sphere requer um processo de várias etapas e você deve planejar cerca de 8 horas para executar as etapas, especialmente se você não estiver familiarizado com o Azure IoT Edge. Se essa for a primeira vez que você trabalha com o Azure IoT Edge, siga as instruções de início rápido em cada seção para configurar e configurar um dispositivo IoT Edge que é executado em uma máquina virtual Linux.

Essas etapas devem ser concluídas apenas uma vez pelo catálogo do Azure Sphere e pelo dispositivo IoT Edge do Azure; no entanto, cada dispositivo do Azure Sphere deve ser configurado manualmente no Hub IoT do Azure e o dispositivo IoT Edge do Azure deve ser definido como o pai do dispositivo do Azure Sphere.

As etapas de configuração podem ser divididas em três agrupamentos lógicos:

  • Criar e configurar o dispositivo IoT Edge como um gateway transparente

    • Etapa 1. Crie um dispositivo IoT Edge do Azure.
    • Etapa 2. Configure o dispositivo de gateway IoT Edge do Azure como um servidor.
    • Etapa 3. Abra as portas do dispositivo de gateway do Azure IoT Edge para comunicação.
    • Etapa 4. Atualize o nome do host do gateway em config.toml (Azure IoT Edge versão 1.2) ou config.yaml (Azure IoT Edge versão 1.1).
  • Configurar o dispositivo do Azure Sphere no Hub IoT do Azure

    • Etapa 5. Defina o dispositivo IoT Edge do Azure como pai do dispositivo do Azure Sphere.
  • Estabelecer uma conexão confiável entre o dispositivo do Azure Sphere e o dispositivo IoT Edge

    • Etapa 6. Forneça o certificado de CA do catálogo do dispositivo do Azure Sphere para o dispositivo IoT Edge do Azure.
    • Etapa 7. Forneça o certificado de AC raiz do dispositivo IoT Edge do Azure para o dispositivo do Azure Sphere.

Etapa 1. Criar um dispositivo IoT Edge do Azure

Você deve configurar um dispositivo IoT Edge do Azure e registrá-lo com Hub IoT do Azure, se ainda não tiver feito isso.

Você pode usar o DPS (Serviço de Provisionamento de Dispositivos) para provisionar o dispositivo IoT Edge do Azure. No entanto, você não pode usar o DPS para provisionar o dispositivo do Azure Sphere. Não há suporte para o provisionamento automático de dispositivos downstream do dispositivo IoT Edge do Azure com o DPS Hub IoT do Azure.

Você pode seguir as etapas no início rápido IoT Edge para configurar um dispositivo IoT Edge do Azure que é executado em uma VM linux ou dispositivo Windows e registrá-lo com Hub IoT do Azure.

Use as etapas no Início Rápido para:

  • Registre um dispositivo IoT Edge do Azure em sua instância de Hub IoT do Azure. Não crie um novo hub IoT nesta etapa, basta registrar seu dispositivo IoT Edge do Azure no hub IoT que você já criou.
  • Instale e inicie o runtime IoT Edge do Azure em seu dispositivo IoT Edge do Azure.

Nota

No início rápido IoT Edge, pare antes de implantar um módulo.

Etapa 2. Configurar o dispositivo de gateway IoT Edge como um servidor

Siga as instruções para configurar um dispositivo do Azure IoT Edge para atuar como um gateway transparente (Azure IoT Edge 1.2) ou Azure IoT Edge 1.1, mas pare quando chegar à seção "Abrir portas no dispositivo de gateway". Embora essas instruções lhe digam para copiar os arquivos de certificado para seu dispositivo IoT Edge, não copie os arquivos para sua VM até a etapa 8 deste procedimento.

Como parte das etapas que você concluiu para configurar o gateway de dispositivo como um servidor, você já terá:

  • Configurou os certificados de dispositivo do Azure IoT Edge.
  • Implantou o módulo do hub IoT Edge do Azure.
  • Roteamento configurado de mensagens por meio do IoT Edge do Azure.

Também como parte dessas etapas, você terá criado esses certificados:

  • Certificado de AC raiz: certs/azure-iot-test-only.root.ca.cert.pem
  • Certificado de AC do dispositivo e chave privada (usado para registrar o dispositivo IoT Edge no Hub IoT):
    • certs/iot-edge-device-identity-<cert-name>-full-chain.cert.pem
    • private/iot-edge-device-identity-<cert-name>.key.pem
  • IoT Edge certificado de AC e chave privada (a ser copiada para um dispositivo IoT Edge e referenciada em seu arquivo de configuração):
    • certs/iot-edge-device-ca-<cert-name>-full-chain.cert.pem
    • private/iot-edge-device-ca-<cert-name>.key.pem

Se você estiver seguindo o Início Rápido, use as instruções do Linux para configurar os certificados de demonstração se o computador no qual você está gerando os certificados for um computador baseado em Linux. Use as instruções do Windows para gerar os certificados de demonstração se o computador no qual você está gerando os certificados for um computador baseado em Windows. Consulte a seção para copiar certificados raiz em uma VM do Linux ou em um computador Windows local.

O certificado de AC raiz do Azure IoT Edge será modificado na Etapa 7, mas você precisará do certificado original na Etapa 8. Mantenha uma cópia do certificado original para que você possa reutilizá-lo.

Nota

Ao atualizar a seção certificados do arquivo config.toml (Azure IoT Edge 1.2) ou config.yaml (arquivo Azure IoT Edge 1.1), Verifique se a certificates: linha no config.toml (Azure IoT Edge 1.2) ou config.yaml (Azure IoT Edge 1.1) não tem nenhum whitespace anterior e que cada um dos certificados aninhados é recuado por dois espaços.

Depois de atualizar o arquivo, verifique se o módulo edgehub está em execução no dispositivo IoT Edge do Azure:

sudo iotedge list

Para obter mais informações, consulte Como um dispositivo IoT Edge pode ser usado como um gateway (Azure IoT Edge 1.2) ou Azure IoT Edge 1.1.

Se você estiver usando certificados de teste, pare antes de gerar o certificado de dispositivo downstream, conforme documentado em Criar certificados de dispositivo downstream (Azure IoT Edge 1.2) ou Azure IoT Edge 1.1.

Etapa 3. Abrir portas de dispositivo de gateway do Azure IoT Edge para comunicação

Os dispositivos de gateway devem ser capazes de receber mensagens de seus dispositivos downstream. Para que um cenário de gateway funcione, pelo menos um dos protocolos com suporte do hub IoT deve estar aberto para tráfego de entrada de dispositivos downstream.

O Azure Sphere usa o protocolo MQTT. Este protocolo usa a porta 8883.

Para obter mais informações, consulte Abrir portas no dispositivo de gateway (Azure IoT Edge 1.2) ou no Azure IoT Edge 1.1.

Siga estas etapas para abrir a porta 8883 em uma VM do Windows depois de configurar um dispositivo Edge no Início Rápido:

  1. Se necessário, faça logon em sua portal do Azure usando sua conta do Azure.
  2. Navegue até a máquina virtual que você criou na seção Etapa 1: Criar um dispositivo IoT Edge do Azure.
  3. Na seção Configurações à esquerda, selecione Rede e , em seguida, Adicionar regra de porta de entrada.
  4. Na folha Adicionar regra de porta de entrada , em Intervalos de porta de destino, altere o valor para 8883.
  5. Em Protocolo, selecione TCP.
  6. Em Nome, altere o valor para MQTT.
  7. Deixe todas as outras configurações como padrão e selecione Adicionar.

Siga estas etapas para abrir a porta 8883 em uma VM do Linux depois de configurar um dispositivo IoT Edge do Azure no Início Rápido:

  1. Execute o seguinte comando para marcar se a porta do MQTT está aberta:

    sudo netstat -lptu

  2. Se necessário, use o seguinte comando para abrir a porta:

    sudo ufw allow 8883

Isso definirá uma regra de segurança de entrada para permitir a comunicação do protocolo MQTT para o Gateway IoT Edge do Azure.

Etapa 4. Atualizar o nome do host do gateway

Essa etapa usa procedimentos diferentes dependendo da versão do Azure IoT Edge você estiver usando: Azure IoT Edge 1.2 ou Azure IoT Edge 1.1.

Azure IoT Edge 1.2: atualizar o nome do host do gateway em config.toml

O runtime do Azure IoT Edge dá suporte a nomes de host com menos de 64 caracteres. As máquinas físicas geralmente não têm nomes de host longos, mas se você estiver usando uma máquina virtual como o dispositivo IoT Edge do Azure, como o exemplo no Início Rápido, você deve configurar manualmente o nome do host.

Para solucionar problemas de um nome de host inválido, consulte resoluções de erro comuns.

Siga estas etapas para configurar o nome do host do dispositivo do Azure IoT Edge depois de configurar a porta MQTT no Início Rápido:

  1. Localize o FQDN (nome de domínio totalmente qualificado) para seu gateway de IoT Edge navegando até a VM do Linux (dispositivo IoT Edge) no Portal do Azure e copiando o valor para o nome DNS na página de visão geral.

  2. Se necessário, faça logon no dispositivo IoT Edge do Azure.

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

    /etc/aziot/config.toml

  4. Cole o FQDN na seção nome do host de config.toml. Verifique se o nome é todo minúscula.

    hostname: "<iotedge_machinename>.<mydomain>"
    

    Nota

    Por design com o Azure IoT Edge v1.2 e superior, o nome do host DEVE ser um nome FQDN (um endereço IP não é mais permitido, como em v1.1); portanto, um servidor DNS com o registro A apropriado na mesma rede é obrigatório.

  5. Reinicie o iotedge daemon.

    sudo systemctl restart iotedge

  6. Se você vir erros (texto colorido prefixado com "[ERROR]") no status, examine os logs de daemon para obter informações detalhadas de erro.

    sudo journalctl -u iotedge --no-pager --no-full

  7. Para evitar avisos, configure a configuração DNS para módulos no dispositivo IoT Edge do Azure para incluir um arquivo de configuração em /etc/docker/daemon.json, por exemplo:

    {
         "dns": ["<IP address of your DNS server>"]
    }
    

Azure IoT Edge 1.1: atualizar o nome do host do gateway em config.yaml

O runtime do Azure IoT Edge dá suporte a nomes de host com menos de 64 caracteres. As máquinas físicas geralmente não têm nomes de host longos, mas se você estiver usando uma máquina virtual como o dispositivo IoT Edge do Azure, como o exemplo no Início Rápido, você deve configurar manualmente o nome do host.

Para solucionar problemas de um nome de host inválido, consulte resoluções de erro comuns.

Siga estas etapas para configurar o nome do host do dispositivo do Azure IoT Edge depois de configurar a porta MQTT no Início Rápido:

  1. No portal do Azure, navegue até sua máquina virtual. Copie o valor do nome DNS (FQDN do computador) na seção Visão geral .

  2. Se necessário, faça logon no dispositivo IoT Edge do Azure.

  3. Abra o arquivo config.yaml em um editor de texto.

    /etc/iotedge/config.yaml

  4. Cole o FQDN na seção nome do host de config.yaml. Verifique se o nome é todo minúscula.

    `hostname: "<machinename>.<region>.cloudapp.azure.com"`
    

    Nota

    Talvez seja necessário usar o nome do computador nu para o nome do host (o endereço IP ou o nome do host real) se um resolvedor DNS estiver na rede, já que o Azure Sphere não dá suporte a netbios.

  5. Reinicie o iotedge daemon.

    sudo systemctl restart iotedge

  6. Se você vir erros (texto colorido prefixado com "[ERROR]") no status, examine os logs de daemon para obter informações detalhadas de erro.

    sudo journalctl -u iotedge --no-pager --no-full

  7. Para evitar avisos, configure a configuração DNS para módulos no dispositivo IoT Edge do Azure para incluir um arquivo de configuração em /etc/docker/daemon.json, por exemplo:

    {
        "dns": ["<IP address of your DNS server>"]
    }
    

Etapa 5. Defina o dispositivo IoT Edge do Azure como pai do dispositivo do Azure Sphere

Siga estas etapas para definir o dispositivo IoT Edge do Azure como o pai do dispositivo do Azure Sphere:

  1. Navegue até o dispositivo do Azure Sphere que foi provisionado manualmente acima.
  2. Selecione ID do dispositivo.
  3. Selecione o ícone de engrenagem em Nenhum dispositivo pai.
  4. Selecione o dispositivo IoT Edge do Azure que você deseja definir como o pai.
  5. Selecione OK e , em seguida, Salvar.

O dispositivo IoT Edge do Azure agora se torna o pai do dispositivo do Azure Sphere.

Etapa 6. Fornecer o certificado de AC do catálogo do dispositivo do Azure Sphere para o dispositivo IoT Edge

Para verificar os certificados de dispositivo do Azure Sphere, o dispositivo IoT Edge do Azure deve ter sua própria cópia da CA do catálogo.

  1. Baixe o certificado de AC do catálogo, se você ainda não tiver feito isso. Observação: você já deveria ter concluído isso como parte da configuração do Hub IoT do Azure.

    • No prompt de comando, entre com o logon do Azure:

      az login
      
    • Baixe o certificado de AC para o catálogo do Azure Sphere. Esse comando baixa o certificado para um arquivo chamado CAcertificate.cer no diretório de trabalho atual. Verifique se você baixa o arquivo para um diretório no qual você tem permissão de gravação ou a operação de download falhará. O arquivo de saída deve ter uma extensão .cer.

      az sphere ca-certificate download --resource-group MyResourceGroup --catalog MyCatalog --output-file CACertificate.cer
      
  2. Converta o certificado de AC do catálogo em formato PEM. As instruções de exemplo para converter o formato em um computador Windows são as seguintes:

    • Localize o caminho do certificado em seu computador e clique duas vezes no certificado para abri-lo.
    • Abra a guia Detalhes e selecione Copiar para Arquivo.
    • No assistente Exportação de Certificados , selecione Avançar.
    • Selecione o formato CER (X.509 codificado em Base-64) e selecione Avançar.
    • Insira o nome do arquivo do certificado a ser exportado e selecione Avançar.
    • Selecione Concluir para concluir o assistente.
    • Renomeie o arquivo de certificado baixado para ter a extensão de arquivo .pem.
  3. Anexe o certificado de catálogo ao certificado raiz do Azure IoT Edge. Lembre-se de que você criou os certificados de IoT Edge do Azure na Etapa 2.

    • Se necessário, faça logon no dispositivo IoT Edge do Azure.
    • Localize o caminho do certificado de AC raiz de IoT Edge dispositivo e abra-o em um editor de texto. Se você seguiu o Início Rápido, então usou os scripts fornecidos no repositório git do Azure IoT Edge para criar certificados de demonstração, o certificado de AC raiz será chamado de azure-iot-test-only.root.ca.cert.pem.
    • Abra o certificado de CA do catálogo do Azure Sphere (em formato PEM) em um editor de texto. Copie o conteúdo e cole-o no final do certificado de AC raiz IoT Edge.
    • Salve as alterações feitas no certificado de AC raiz do Azure IoT Edge e feche o arquivo.
    • Reinicie o dispositivo IoT Edge do Azure. Para um dispositivo do Linux Azure IoT Edge, execute: sudo systemctl restart iotedge.
    • Verifique se os módulos estão em execução no dispositivo IoT Edge do Azure. Para um dispositivo do Linux Azure IoT Edge, execute: sudo iotedge list.

Etapa 7. Fornecer o certificado de AC raiz do dispositivo IoT Edge do Azure para o dispositivo do Azure Sphere

Para verificar os certificados de dispositivo do Azure IoT Edge, o dispositivo Azure Sphere (o dispositivo downstream) deve ter sua própria cópia do certificado de AC raiz do dispositivo do Azure IoT Edge, que você configurou na Etapa 2.

Para obter mais informações, confira Conectar um dispositivo downstream a um gateway de IoT Edge do Azure.

  1. Localize o certificado raiz de dispositivo do Azure IoT Edge original.

    • Lembre-se de que o certificado raiz original do Azure IoT Edge dispositivo é aquele que você criou na Etapa 2.
    • Se você seguiu o Início Rápido e usou os scripts fornecidos no repositório git IoT Edge para criar certificados de demonstração, o certificado de AC raiz será chamado de azure-iot-test-only.root.ca.cert.pem.
  2. Copie o certificado raiz do Azure IoT Edge para o dispositivo do Azure Sphere adicionando-o ao pacote de aplicativos.

Etapa 8. Copiar o certificado raiz IoT para um computador remoto

Siga estas etapas para copiar o certificado raiz do Azure IoT Edge para uma VM remota do Linux ou para um computador Windows local:

  • Você pode instalar a ferramenta WinSCP para transferir os arquivos. A ferramenta fornece uma GUI para que seja mais fácil de usar do que uma abordagem de linha de comando.

  • Para usar a linha de comando, use a ferramenta de linha de comando SCP (Cópia Segura).

  • Para transferir um arquivo de um computador Windows local para uma VM remota do Linux, execute o seguinte comando em Windows PowerShell:

    powershell -Command scp -r <path-to-file-name> <userName@remote-ip>:<path-to-destination-directory>
    

    Sintaxe de exemplo:

    scp C:\Documents\cert.pem AzureUser@edgevmname-west.westus22.cloudapp.azure.com:/home/azureUser/test/

  • Para transferir um arquivo de uma VM remota do Linux para um computador Windows local, execute o seguinte comando em Windows PowerShell:

    powershell -Command scp -r <userName@remote-ip>:<path-to-file-name> <path-to-destination-dir>
    

    Sintaxe de exemplo:

    scp azureUser@edgevmname-west.westus22.cloudapp.azure.com:/home/azureUser/test/cert.pem C:\Documents\

Solucionando problemas

Se você tiver problemas ao executar IoT Edge do Azure em seu ambiente, use estes artigos para solução de problemas e diagnóstico:

Próximas etapas

  • Depois de concluir as etapas neste tópico, você pode executar o exemplo de IoT do Azure, seguindo as instruções para se conectar usando o Azure IoT Edge.