Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:
IoT Edge 1.1
Importante
O IoT Edge 1.1 data de término do suporte foi 13 de dezembro de 2022. Confira o Ciclo de Vida do Produto da Microsoft para obter informações sobre o suporte deste produto, serviço, tecnologia ou API. Para obter mais informações sobre como atualizar para a versão mais recente do IoT Edge, consulte Update IoT Edge.
Neste artigo, usamos novamente a VM de desenvolvimento como um dispositivo simulado. No entanto, em vez de enviar dados diretamente para o Hub IoT, o dispositivo envia dados para o dispositivo IoT Edge configurado como um gateway transparente.
Monitoramos a operação do dispositivo IoT Edge enquanto o dispositivo simulado está enviando dados. Depois que o dispositivo terminar de ser executado, examinaremos os dados em nossa conta de armazenamento para validar tudo o que funcionou conforme o esperado.
Essa etapa normalmente é executada por um desenvolvedor de nuvem ou dispositivo.
Nesta seção do tutorial, você aprenderá a:
- Crie e execute um dispositivo downstream.
- Verifique se os dados gerados estão sendo armazenados no armazenamento de Blobs do Azure.
- Valide se o modelo de machine learning classificou os dados do dispositivo.
Pré-requisitos
Este artigo faz parte de uma série para um tutorial sobre como usar o Azure Machine Learning no IoT Edge. Cada artigo da série baseia-se no trabalho no artigo anterior. Se você chegou diretamente a este artigo, visite o primeiro artigo da série.
Revisar o arnês do dispositivo
Reutilize o projeto DeviceHarness para simular o dispositivo downstream. Conectar-se ao gateway transparente requer duas coisas adicionais:
- Registre o certificado para fazer com que o dispositivo IoT downstream confie na autoridade de certificação que está sendo usada pelo runtime do IoT Edge. Em nosso caso, o dispositivo downstream é a VM de desenvolvimento.
- Adicione o FQDN (nome de domínio totalmente qualificado) do gateway de extremidade à string de conexão do dispositivo.
Examine o código para ver como esses dois itens são implementados.
No computador de desenvolvimento, abra o Visual Studio Code.
Use Arquivo>Abrir Pasta... para abrir C:\source\IoTEdgeAndMlSample\DeviceHarness.
Examine o método InstallCertificate() em Program.cs.
Observe que, se o código encontrar o caminho do certificado, ele chamará o método CertificateManager.InstallCACert para instalar o certificado no computador.
Agora, examine o método GetIotHubDevice na classe TurbofanDevice.
Quando o usuário especifica o FQDN do gateway usando a opção "-g", esse valor é passado para esse método como a
gatewayFqdnvariável, que é acrescentada à cadeia de conexão do dispositivo.connectionString = $"{connectionString};GatewayHostName={gatewayFqdn.ToLower()}";
Compilar e executar o dispositivo de uso final
Com o projeto DeviceHarness ainda aberto no Visual Studio Code, crie o projeto. No menu Terminal, selecione Executar Tarefa de Build e selecione Build.
Localize o FQDN (nome de domínio totalmente qualificado) para o gateway de borda navegando até o dispositivo IoT Edge (VM linux) no portal do Azure e copiando o valor para o nome DNS na página de visão geral.
Inicie seu dispositivo IoT (VM linux) se ele ainda não estiver em execução.
Abra o terminal do Visual Studio Code. No menu Terminal , selecione Novo Terminal e execute o seguinte comando, substituindo
<edge_device_fqdn>pelo nome DNS copiado do dispositivo IoT Edge (VM linux):dotnet run -- --gateway-host-name "<edge_device_fqdn>" --certificate C:\edgecertificates\certs\azure-iot-test-only.root.ca.cert.pem --max-devices 1O aplicativo tenta instalar o certificado em seu computador de desenvolvimento. Quando isso acontecer, aceite o aviso de segurança.
Quando solicitado a fornecer a cadeia de conexão do Hub IoT, clique no ícone de reticências (...) no painel de dispositivos do Hub IoT do Azure e selecione Copiar Cadeia de Conexão do Hub IoT. Cole o valor no terminal.
Você verá uma saída como:
Found existing device: Client_001 Using device connection string: HostName=<your hub>.azure-devices.net;DeviceId=Client_001;SharedAccessKey=xxxxxxx; GatewayHostName=iotedge-xxxxxx.<region>.cloudapp.azure.com Device: 1 Message count: 50 Device: 1 Message count: 100 Device: 1 Message count: 150 Device: 1 Message count: 200 Device: 1 Message count: 250Observe a adição do "GatewayHostName" à cadeia de conexão do dispositivo, o que faz com que o dispositivo se comunique por meio do Hub IoT por meio do gateway transparente do IoT Edge.
Verificar saída
Saída do dispositivo IoT Edge
A saída do módulo avroFileWriter pode ser prontamente observada examinando o dispositivo IoT Edge.
Acesse via SSH sua máquina virtual do IoT Edge.
Procure arquivos gravados em disco.
find /data/avrofiles -type fA saída do comando será semelhante ao exemplo a seguir:
/data/avrofiles/2019/4/18/22/10.avroVocê pode ter mais de um único arquivo, dependendo do tempo da execução.
Preste atenção aos carimbos de data/hora. O módulo avroFileWriter carrega os arquivos na nuvem depois que a hora da última modificação é superior a 10 minutos no passado (consulte MODIFIED_FILE_TIMEOUT em uploader.py no módulo avroFileWriter).
Depois que os 10 minutos tiverem decorrido, o módulo deverá carregar os arquivos. Se o upload for bem-sucedido, ele excluirá os arquivos do disco.
Armazenamento do Azure
Podemos observar os resultados de nosso dispositivo a jusante enviando dados ao examinarmos as contas de armazenamento nas quais esperamos que os dados sejam roteados.
No computador de desenvolvimento, abra o Visual Studio Code.
No painel "AZURE STORAGE" na janela de exploração, navegue pela árvore de diretórios para encontrar sua conta de armazenamento.
Expanda o nó Contêineres de Blob.
No trabalho que fizemos na parte anterior do tutorial, esperamos que o contêiner ruldata contenha mensagens com RUL. Expanda o nó ruldata.
Você verá um ou mais arquivos de blob nomeados como:
<IoT Hub Name>/<partition>/<year>/<month>/<day>/<hour>/<minute>.Clique com o botão direito do mouse em um dos arquivos e escolha Baixar Blob para salvar o arquivo em seu computador de desenvolvimento.
Em seguida, expanda o nó uploadturbofanfiles. No artigo anterior, definimos esse local como o destino dos arquivos carregados pelo módulo avroFileWriter.
Clique com o botão direito do mouse nos arquivos e escolha Baixar Blob para salvá-lo no computador de desenvolvimento.
Ler o conteúdo do arquivo Avro
Incluímos um utilitário de linha de comando simples para ler um arquivo Avro e retornar uma cadeia de caracteres JSON das mensagens no arquivo. Nesta seção, vamos instalá-la e executá-la.
Abra um terminal no Visual Studio Code (terminal>Novo terminal).
Instalar hubavroreader:
pip install c:\source\IoTEdgeAndMlSample\HubAvroReaderUse o hubavroreader para ler o arquivo Avro que você baixou do ruldata.
hubavroreader <avro file with ath> | moreObserve que o corpo da mensagem está como esperávamos, contendo o ID do dispositivo e a previsão de RUL.
{ "Body": { "ConnectionDeviceId": "Client_001", "CorrelationId": "3d0bc256-b996-455c-8930-99d89d351987", "CycleTime": 1.0, "PredictedRul": 170.1723693909444 }, "EnqueuedTimeUtc": "<time>", "Properties": { "ConnectionDeviceId": "Client_001", "CorrelationId": "3d0bc256-b996-455c-8930-99d89d351987", "CreationTimeUtc": "01/01/0001 00:00:00", "EnqueuedTimeUtc": "01/01/0001 00:00:00" }, "SystemProperties": { "connectionAuthMethod": "{\"scope\":\"module\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}", "connectionDeviceGenerationId": "636857841798304970", "connectionDeviceId": "aaTurbofanEdgeDevice", "connectionModuleId": "turbofanRouter", "contentEncoding": "utf-8", "contentType": "application/json", "correlationId": "3d0bc256-b996-455c-8930-99d89d351987", "enqueuedTime": "<time>", "iotHubName": "mledgeiotwalkthroughhub" } }Execute o mesmo comando passando o arquivo Avro que você baixou de uploadturbofanfiles.
Conforme o esperado, essas mensagens contêm todos os dados do sensor e as configurações operacionais da mensagem original. Esses dados podem ser usados para melhorar o modelo de RUL em nosso dispositivo de edge.
{ "Body": { "CycleTime": 1.0, "OperationalSetting1": -0.0005000000237487257, "OperationalSetting2": 0.00039999998989515007, "OperationalSetting3": 100.0, "PredictedRul": 170.17236328125, "Sensor1": 518.6699829101562, "Sensor10": 1.2999999523162842, "Sensor11": 47.29999923706055, "Sensor12": 522.3099975585938, "Sensor13": 2388.010009765625, "Sensor14": 8145.31982421875, "Sensor15": 8.424599647521973, "Sensor16": 0.029999999329447746, "Sensor17": 391.0, "Sensor18": 2388.0, "Sensor19": 100.0, "Sensor2": 642.3599853515625, "Sensor20": 39.11000061035156, "Sensor21": 23.353700637817383, "Sensor3": 1583.22998046875, "Sensor4": 1396.8399658203125, "Sensor5": 14.619999885559082, "Sensor6": 21.610000610351562, "Sensor7": 553.969970703125, "Sensor8": 2387.9599609375, "Sensor9": 9062.169921875 }, "ConnectionDeviceId": "Client_001", "CorrelationId": "70df0c98-0958-4c8f-a422-77c2a599594f", "CreationTimeUtc": "0001-01-01T00:00:00+00:00", "EnqueuedTimeUtc": "<time>" }
Limpar os recursos
Se você planeja explorar os recursos usados por este tutorial de ponta a ponta, aguarde até que você termine de limpar os recursos que criou. Caso contrário, use as seguintes etapas para excluí-las:
Exclua os grupos de recursos criados para manter a VM de desenvolvimento, a VM do IoT Edge, o Hub IoT, a conta de armazenamento, o serviço de workspace de machine learning (e os recursos criados: registro de contêiner, Application Insights, cofre de chaves, conta de armazenamento).
Exclua o projeto de machine learning no Azure Notebooks.
Se você clonou o repositório localmente, feche as janelas do PowerShell ou do VS Code referentes ao repositório local e exclua o diretório do repositório.
Se você criou certificados localmente, exclua a pasta c:\edgeCertificates.
Próximas etapas
Neste artigo, usamos nossa VM de desenvolvimento para simular um dispositivo downstream enviando dados operacionais e sensor para nosso dispositivo IoT Edge. Validamos que os módulos no dispositivo rotearam, classificaram, persistiram e carregaram os dados examinando a operação em tempo real do dispositivo de edge e analisando os arquivos carregados na conta de armazenamento em nuvem.
Para continuar aprendendo sobre os recursos do IoT Edge, experimente este tutorial a seguir: