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 a jusante, como o Azure Sphere e o Hub IoT do Azure. Considere utilizar o Azure IoT Edge se o seu dispositivo do Azure Sphere produzir uma quantidade considerável de dados ou dados que requerem pós-processamento.

Este tópico documenta os passos para configurar um dispositivo do Azure IoT Edge com o Azure Sphere. O Azure Sphere suporta as versões 1.1 e 1.2 do Azure IoT Edge. As diferenças significativas são indicadas nas instruções. As principais diferenças são:

  • O nome do pacote mudou de iotedge para aziot-edge.
  • O ficheiro de configuração predefinido tem um novo nome e localização. No Azure IoT Edge 1.1, o ficheiro de configuração era /etc/iotedge/config.yaml. No Azure IoT Edge 1.2, o ficheiro de configuração é /etc/aziot/config.toml.
  • O Azure IoT Edge 1.2 requer um nome de domínio completamente qualificado (FQDN) acessível através de um servidor DNS na rede.

Depois de concluir as tarefas neste tópico, o dispositivo do Azure Sphere será configurado para enviar dados para um Hub IoT do Azure através de um dispositivo do Azure IoT Edge que funciona como um gateway transparente. Pode adicionar filtragem e processamento de dados adicionais com um módulo no dispositivo IoT Edge do Azure ao seguir o Guia do Módulo IoT Edge do Azure.

Antes de começar

Os passos neste tópico partem do princípio de que:

  • O dispositivo do Azure Sphere está ligado ao PC por USB.
  • Tem uma subscrição do Azure.
  • Criou uma instância Hub IoT do Azure e aprovisionou manualmente um dispositivo. Tenha em atenção que terá de utilizar o certificado de AC de catálogo para o Hub IoT posteriormente no procedimento (Passo 6).
  • Criou um grupo de recursos e todos os recursos relacionados com os serviços Hub IoT do Azure e IoT Edge têm de pertencer a este grupo de recursos.

Importante

Embora possa criar uma subscrição do Azure sem custos, o processo de inscrição requer que introduza um número de cartão de crédito. O Azure fornece vários níveis de serviço de subscrição. Por predefinição, o escalão Standard, que requer um custo de serviço mensal, é selecionado quando cria uma instância Hub IoT do Azure. Para evitar um custo mensal, selecione o escalão Gratuito. O escalão Gratuito inclui os serviços necessários para utilizar o seu dispositivo com uma instância Hub IoT do Azure, incluindo o Dispositivo Duplo. Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.

Descrição geral

Configurar um dispositivo do Azure IoT Edge e configurá-lo para funcionar com um dispositivo do Azure Sphere requer um processo de vários passos e deve planear cerca de 8 horas para trabalhar nos passos, especialmente se não estiver familiarizado com o Azure IoT Edge. Se esta for a primeira vez que trabalha com o Azure IoT Edge, siga as instruções de Início Rápido em cada secção para configurar um dispositivo IoT Edge que é executado numa máquina virtual do Linux.

Estes passos têm de ser concluídos apenas uma vez por catálogo do Azure Sphere e dispositivo de IoT Edge do Azure. No entanto, cada dispositivo do Azure Sphere tem de ser configurado manualmente no Hub IoT do Azure e o dispositivo IoT Edge do Azure tem de ser definido como o principal do dispositivo do Azure Sphere.

Os passos de configuração podem ser divididos em três agrupamentos lógicos:

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

    • Passo 1. Criar um dispositivo IoT Edge do Azure.
    • Passo 2. Configure o dispositivo de gateway de IoT Edge do Azure como um servidor.
    • Passo 3. Abra as portas do dispositivo de gateway do Azure IoT Edge para comunicação.
    • Passo 4. Atualize o nome do anfitrião 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

    • Passo 5. Defina o dispositivo IoT Edge do Azure como principal do dispositivo do Azure Sphere.
  • Estabelecer uma ligação fidedigna entre o dispositivo do Azure Sphere e o dispositivo IoT Edge

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

Passo 1. Criar um dispositivo IoT Edge do Azure

Tem de configurar um dispositivo do Azure IoT Edge e registá-lo com Hub IoT do Azure, caso ainda não o tenha feito.

Pode utilizar o Serviço Aprovisionamento de Dispositivos (DPS) para aprovisionar o dispositivo IoT Edge do Azure. No entanto, não pode utilizar o DPS para aprovisionar o dispositivo do Azure Sphere. O aprovisionamento automático de dispositivos a jusante do dispositivo IoT Edge do Azure com o Hub IoT do Azure DPS não é suportado.

Pode seguir os passos no Início Rápido do IoT Edge para configurar um dispositivo do Azure IoT Edge que é executado numa VM do Linux ou num dispositivo Windows e registá-lo com Hub IoT do Azure.

Utilize os passos no Início Rápido para:

  • Registe um dispositivo do Azure IoT Edge na sua instância do Hub IoT do Azure. Não crie um novo hub IoT neste passo, basta registar o dispositivo do Azure IoT Edge no hub IoT que já criou.
  • Instale e inicie o runtime do Azure IoT Edge no seu dispositivo do Azure IoT Edge.

Nota

No Início Rápido do IoT Edge, pare antes de implementar um módulo.

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

Siga as instruções para Configurar um dispositivo do Azure IoT Edge para funcionar como um gateway transparente (Azure IoT Edge 1.2) ou Azure IoT Edge 1.1, mas pare quando chegar à secção "Abrir portas no dispositivo de gateway". Embora estas instruções lhe digam para copiar os ficheiros de certificado para o seu dispositivo IoT Edge, não copie os ficheiros para a VM até ao Passo 8 deste procedimento.

Como parte dos passos que concluiu para configurar o gateway de dispositivo como um servidor, já terá:

  • Configurou os certificados de dispositivo IoT Edge do Azure.
  • Implementou o módulo Azure IoT Edge hub.
  • Encaminhamento configurado de mensagens através do IoT Edge do Azure.

Além disso, como parte destes passos, terá criado estes certificados:

  • Certificado de AC de raiz: certs/azure-iot-test-only.root.ca.cert.pem
  • Certificado de AC do dispositivo e chave privada (utilizado para registar 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 (para ser copiado para um dispositivo IoT Edge e referenciado no respetivo ficheiro de configuração):
    • certs/iot-edge-device-ca-<cert-name>-full-chain.cert.pem
    • private/iot-edge-device-ca-<cert-name>.key.pem

Se estiver a seguir o Início Rápido, utilize as instruções do Linux para configurar os certificados de demonstração se o computador no qual está a gerar os certificados for um computador baseado em Linux. Utilize as instruções do Windows para gerar os certificados de demonstração se o computador no qual está a gerar os certificados for um computador baseado no Windows. Veja a secção para copiar certificados de raiz para uma VM do Linux ou para um computador Windows local.

O certificado da AC de raiz do Azure IoT Edge será modificado no Passo 7, mas precisará do certificado original no Passo 8. Guarde uma cópia do certificado original para que possa reutilizá-lo.

Nota

Ao atualizar a secção de certificados do ficheiro config.toml (Azure IoT Edge 1.2) ou config.yaml (Azure IoT Edge 1.1), certifique-se de que a certificates: linha no config.toml (Azure IoT Edge 1.2) ou config.yaml (Azure IoT Edge 1.1) não tem um espaço em branco anterior e que cada um dos certificados aninhados tem um avanço de dois espaços.

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

sudo iotedge list

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

Se estiver a utilizar certificados de teste, pare antes de gerar o certificado de dispositivo a jusante, conforme documentado em Criar certificados de dispositivo a jusante (Azure IoT Edge 1.2) ou Azure IoT Edge 1.1.

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

Os dispositivos de gateway têm de conseguir receber mensagens dos respetivos dispositivos a jusante. Para que um cenário de gateway funcione, pelo menos um dos protocolos suportados do hub IoT tem de estar aberto para o tráfego de entrada a partir de dispositivos a jusante.

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

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

Siga estes passos para abrir a porta 8883 numa VM do Windows depois de configurar um dispositivo Edge no Início Rápido:

  1. Se necessário, inicie sessão no seu portal do Azure com a sua conta do Azure.
  2. Navegue para a máquina virtual que criou na secção Passo 1: Criar um dispositivo IoT Edge do Azure.
  3. Na secção Definições à esquerda, selecione Rede e, em seguida, Adicionar regra de porta de entrada.
  4. No painel Adicionar regra de porta de entrada , em Intervalos de portas 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 definições como predefinição e, em seguida, selecione Adicionar.

Siga estes passos para abrir a porta 8883 numa VM do Linux depois de configurar um dispositivo IoT Edge do Azure no Início Rápido:

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

    sudo netstat -lptu

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

    sudo ufw allow 8883

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

Passo 4. Atualizar o nome do anfitrião do gateway

Este passo utiliza procedimentos diferentes consoante a versão do Azure IoT Edge está a utilizar: Azure IoT Edge 1.2 ou Azure IoT Edge 1.1.

Azure IoT Edge 1.2: Atualizar o nome do anfitrião do gateway em config.toml

O runtime do Azure IoT Edge suporta nomes de anfitrião com menos de 64 carateres. Normalmente, as máquinas físicas não têm nomes de anfitrião longos, mas se estiver a utilizar uma máquina virtual como o dispositivo IoT Edge do Azure, como o exemplo no Início Rápido, tem de configurar manualmente o nome do anfitrião.

Para resolver problemas com um nome de anfitrião inválido, veja resoluções de erros comuns.

Siga estes passos para configurar o nome de anfitrião do dispositivo IoT Edge do Azure depois de configurar a porta MQTT no Início Rápido:

  1. Localize o nome de domínio completamente qualificado (FQDN) para o gateway de IoT Edge ao navegar para o seu dispositivo IoT Edge (VM do Linux) no portal do Azure e ao copiar o valor do nome DNS a partir da página de descrição geral.

  2. Se necessário, inicie sessão no dispositivo Azure IoT Edge.

  3. Abra o ficheiro config.toml num editor de texto.

    /etc/aziot/config.toml

  4. Cole o FQDN na secção hostname de config.toml. Certifique-se de que o nome está em minúsculas.

    hostname: "<iotedge_machinename>.<mydomain>"
    

    Nota

    Por predefinição, com o Azure IoT Edge v1.2 e superior, o nome do anfitrião TEM de ser um nome FQDN (já não é permitido um endereço IP, como na v1.1); portanto, é obrigatório um servidor DNS com o registo A adequado na mesma rede.

  5. Reinicie o iotedge daemon.

    sudo systemctl restart iotedge

  6. Se vir erros (texto colorido com o prefixo "[ERROR]") no estado, examine os registos do daemon para obter informações detalhadas sobre o erro.

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

  7. Para evitar avisos, configure a configuração de DNS para módulos no dispositivo IoT Edge do Azure para incluir um ficheiro 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 anfitrião do gateway em config.yaml

O runtime do Azure IoT Edge suporta nomes de anfitrião com menos de 64 carateres. Normalmente, as máquinas físicas não têm nomes de anfitrião longos, mas se estiver a utilizar uma máquina virtual como o dispositivo IoT Edge do Azure, como o exemplo no Início Rápido, tem de configurar manualmente o nome do anfitrião.

Para resolver problemas com um nome de anfitrião inválido, veja resoluções de erros comuns.

Siga estes passos para configurar o nome de anfitrião do dispositivo IoT Edge do Azure depois de configurar a porta MQTT no Início Rápido:

  1. No portal do Azure, navegue para a máquina virtual. Copie o valor do nome DNS (FQDN do computador) na secção Descrição geral .

  2. Se necessário, inicie sessão no dispositivo Azure IoT Edge.

  3. Abra o ficheiro config.yaml num editor de texto.

    /etc/iotedge/config.yaml

  4. Cole o FQDN na secção hostname de config.yaml. Certifique-se de que o nome está em minúsculas.

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

    Nota

    Poderá ter de utilizar o nome da máquina virtual para o nome do anfitrião (o endereço IP ou o nome do anfitrião real) se uma resolução de DNS estiver na rede, uma vez que o Azure Sphere não suporta netbios.

  5. Reinicie o iotedge daemon.

    sudo systemctl restart iotedge

  6. Se vir erros (texto colorido com o prefixo "[ERROR]") no estado, examine os registos do daemon para obter informações detalhadas sobre o erro.

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

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

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

Passo 5. Definir o dispositivo IoT Edge do Azure como principal do dispositivo do Azure Sphere

Siga estes passos para definir o dispositivo IoT Edge do Azure como o principal do dispositivo do Azure Sphere:

  1. Navegue para o dispositivo do Azure Sphere que foi manualmente aprovisionado acima.
  2. Selecione ID do Dispositivo.
  3. Selecione o ícone de engrenagem em Sem dispositivo principal.
  4. Selecione o dispositivo IoT Edge do Azure que pretende definir como principal.
  5. Selecione OK e, em seguida, Guardar.

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

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

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

  1. Transfira o certificado de AC de catálogo, se ainda não o tiver feito. Nota: já deve ter concluído isto como parte da configuração da sua Hub IoT do Azure.

    • Na linha de comandos, inicie sessão com o início de sessão do Azure:

      az login
      
    • Transfira o certificado de AC para o catálogo do Azure Sphere. Este comando transfere o certificado para um ficheiro com o nome CAcertificate.cer no diretório de trabalho atual. Certifique-se de que transfere o ficheiro para um diretório no qual tem permissão de escrita ou que a operação de transferência falhará. O ficheiro de saída tem de 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 de catálogo para o formato PEM. As instruções de exemplo para converter o formato num computador Windows são as seguintes:

    • Localize o caminho do certificado no seu computador e faça duplo clique no certificado para o abrir.
    • Abra o separador Detalhes e selecione Copiar para Ficheiro.
    • No assistente Exportar Certificado , selecione Seguinte.
    • Selecione o formato X.509 (CER) codificado com Base-64 e, em seguida, selecione Seguinte.
    • Introduza o nome do ficheiro para o certificado a exportar e, em seguida, selecione Seguinte.
    • Selecione Concluir para concluir o assistente.
    • Mude o nome do ficheiro de certificado transferido para ter a extensão de ficheiro .pem.
  3. Acrescente o certificado de catálogo ao certificado de raiz IoT Edge do Azure. Lembre-se de que criou os certificados do Azure IoT Edge no Passo 2.

    • Se necessário, inicie sessão no dispositivo Azure IoT Edge.
    • Localize o caminho do certificado de AC de raiz do IoT Edge dispositivo e abra-o num editor de texto. Se seguiu o Início Rápido, em seguida, utilizou os scripts fornecidos no repositório git do Azure IoT Edge para criar certificados de demonstração, o certificado de AC de raiz é denominado azure-iot-test-only.root.ca.cert.pem.
    • Abra o certificado de AC do catálogo do Azure Sphere (no formato PEM) num editor de texto. Copie o conteúdo e cole-o no final do certificado de AC de raiz IoT Edge.
    • Guarde as alterações efetuadas ao certificado de AC de raiz do Azure IoT Edge e, em seguida, feche o ficheiro.
    • Reinicie o dispositivo IoT Edge do Azure. Para um dispositivo linux do Azure IoT Edge, execute: sudo systemctl restart iotedge.
    • Verifique se os módulos estão em execução no dispositivo do Azure IoT Edge. Para um dispositivo linux do Azure IoT Edge, execute: sudo iotedge list.

Passo 7. Indique o certificado de AC de raiz do dispositivo do Azure IoT Edge para o dispositivo do Azure Sphere

Para verificar os certificados de dispositivo do Azure IoT Edge, o dispositivo do Azure Sphere (o dispositivo a jusante) tem de ter a sua própria cópia do certificado de AC de raiz do dispositivo do Azure IoT Edge, que configurou no Passo 2.

Para obter mais informações, veja Ligar um dispositivo a jusante a um gateway de IoT Edge do Azure.

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

    • Lembre-se de que o certificado de raiz do dispositivo original do Azure IoT Edge é aquele que criou no Passo 2.
    • Se seguiu o Início Rápido e, em seguida, utilizou os scripts fornecidos no IoT Edge repositório git para criar certificados de demonstração, o certificado de AC de raiz é denominado azure-iot-test-only.root.ca.cert.pem.
  2. Copie o certificado de raiz do Azure IoT Edge para o dispositivo do Azure Sphere ao adicioná-lo ao pacote de aplicação.

Passo 8. Copiar o certificado de raiz IoT para um computador remoto

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

  • Pode instalar a ferramenta WinSCP para transferir os ficheiros. A ferramenta fornece uma GUI para que seja mais fácil de utilizar do que uma abordagem de linha de comandos.

  • Para utilizar a linha de comandos, utilize a ferramenta de linha de comandos SCP (Cópia Segura).

  • Para transferir um ficheiro de um computador Windows local para uma VM remota do Linux, execute o seguinte comando no 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 ficheiro de uma VM remota do Linux para um computador Windows local, execute o seguinte comando no 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\

Resolução de problemas

Se tiver problemas ao executar o Azure IoT Edge no seu ambiente, utilize estes artigos para resolução de problemas e diagnósticos:

Passos seguintes

  • Depois de concluir os passos neste tópico, pode executar o exemplo do Azure IoT, seguindo as instruções para ligar com o Azure IoT Edge.