Ordenar eventos de ligação do dispositivo do Hub IoT com o Azure Cosmos DB

Azure Event Grid ajuda-o a criar aplicações baseadas em eventos e a integrar facilmente eventos IoT nas suas soluções empresariais. Este artigo explica-lhe uma configuração com o Cosmos DB, o Logic App, Hub IoT Eventos e um Raspberry Pi simulado para recolher e armazenar eventos de ligação e desconexão de um dispositivo.

A partir do momento em que o dispositivo é executado, é ativada uma ordem de operações:

  1. O dispositivo Pi, com a chave de dispositivo do hub IoT, é iniciado e, em seguida, parado

  2. Um evento Hub IoT captura a atividade do dispositivo e, em seguida, envia um pedido HTTP para a sua Aplicação Lógica

  3. A Aplicação Lógica processa o pedido HTTP com base numa condição que definiu

  4. A Aplicação Lógica regista eventos de ligação ou de desconexão num novo documento no Cosmos DB

    Captura de ecrã a mostrar a configuração que vamos criar para este artigo. Esta configuração mostra como todos os serviços e dispositivos estão ligados.

Pré-requisitos

  • Uma conta ativa do Azure Cosmos DB para NoSQL. Se ainda não criou uma, consulte Criar uma conta de base de dados para obter instruções.

  • Uma coleção na sua base de dados. Consulte Adicionar uma coleção para obter instruções. Quando criar a sua coleção, utilize /id para a chave de partição.

  • Uma subscrição do Azure. Se não tiver uma subscrição do Azure, crie uma gratuitamente antes de começar.

  • Um hub IoT na sua subscrição do Azure. Crie uma com a CLI ou a portal do Azure.

Criar uma aplicação lógica

Vamos criar uma aplicação lógica e adicionar um acionador do Event Grid que monitoriza o grupo de recursos da sua máquina virtual.

Criar um recurso de aplicação lógica

  1. No portal do Azure, selecione +Criar um recurso, selecione Integração e, em seguida, Aplicação Lógica.

    Captura de ecrã a mostrar como localizar e selecionar uma aplicação lógica no portal do Azure.

  2. Conclua o formulário para criar uma nova Aplicação Lógica que inclua:

    • A sua subscrição

    • O seu grupo de recursos (ou criar um novo)

    • Um nome da Aplicação Lógica exclusivo na sua subscrição

    • A região do hub IoT

    • Um Não para ativar a análise de registos

    • Um tipo de plano de Consumo

      Nota

      O tipo de plano Consumo é a opção que ativa o estruturador de aplicações lógicas na IU. Se escolher Standard (a predefinição), tem de criar um novo fluxo de trabalho para que o estruturador da aplicação Lógica fique disponível.

    Captura de ecrã a mostrar como criar uma aplicação lógica no portal do Azure.

  3. Selecione Rever + Criar para rever a configuração e, em seguida, selecione Criar para criar a aplicação lógica.

  4. Acabou de criar um recurso do Azure para a aplicação lógica. Depois de o Azure implementar a sua aplicação lógica, selecione Ir para recurso. O estruturador de aplicações lógicas mostra-lhe modelos para padrões comuns para que possa começar mais rapidamente.

  5. No estruturador da aplicação Lógica, desloque-se até ver a secção Modelos e, em seguida, selecione Aplicação Lógica em Branco para que possa criar a sua aplicação lógica do zero.

Selecionar um acionador

Um acionador é um evento específico que inicia a sua aplicação lógica. Neste tutorial, o acionador que desencadeia o fluxo de trabalho está a receber um pedido através de HTTP.

  1. Na barra de pesquisa de conectores e acionadores, escreva HTTP e prima Enter.

  2. Selecione o pedido Quando um pedido HTTP é recebido como acionador.

    Captura de ecrã a mostrar como localizar o acionador de pedido HTTP selecionado.

  3. Selecione Utilizar o payload de exemplo para gerar esquema.

    Captura de ecrã a mostrar como utilizar um payload de exemplo para gerar um esquema.

  4. Cole o seguinte código JSON de exemplo na caixa de texto e, em seguida, selecione Concluído.

    Este JSON só é utilizado como um modelo, pelo que os valores exatos não são importantes.

    [{
     "id": "fbfd8ee1-cf78-74c6-dbcf-e1c58638ccbd",
     "topic":
       "/SUBSCRIPTIONS/DEMO5CDD-8DAB-4CF4-9B2F-C22E8A755472/RESOURCEGROUPS/EGTESTRG/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/MYIOTHUB",
     "subject": "devices/Demo-Device-1",
     "eventType": "Microsoft.Devices.DeviceConnected",
     "eventTime": "2018-07-03T23:20:11.6921933+00:00",
     "data": {
       "deviceConnectionStateEventInfo": {
         "sequenceNumber":
           "000000000000000001D4132452F67CE200000002000000000000000000000001"
       },
       "hubName": "MYIOTHUB",
       "deviceId": "48e44e11-1437-4907-83b1-4a8d7e89859e",
       "moduleId": ""
     },
     "dataVersion": "1",
     "metadataVersion": "1"
    }]
    

    Captura de ecrã do payload JSON de exemplo colado na caixa de texto no Azure.

Criar uma condição

As condições ajudam a executar ações específicas após a passagem dessa condição específica. Para este artigo, a condição consiste em verificar se eventType está ligado ao dispositivo ou se o dispositivo está desligado. A ação executada quando esse eventType é verdadeiro é a criação de um documento no Azure Cosmos DB. Esta condição é criada no estruturador de aplicações lógicas.

  1. Selecione + Novo passo e, em seguida, o separador Incorporado e, em seguida, localize e selecione o controlo denominado Condição.

  2. Na sua condição, altere E para Ou, uma vez que queremos capturar eventos de ligação ou eventos de desconexão numa única análise.

  3. Selecione dentro da caixa Escolher um valor e é apresentado um pop-up, que mostra o Conteúdo dinâmico , os campos que podem ser selecionados.

    • Selecione eventType. O pop-up é fechado e verá Corpo colocado em Selecionar uma saída dos passos anteriores, automaticamente. Selecione Condição para reabrir a instrução condicional.

    • Manter o é igual ao valor.

    • Escreva Microsoft.Devices.DeviceConnected como o último valor dessa linha.

    • Selecione + Adicionar para adicionar outra linha.

    • Esta segunda linha é semelhante à primeira linha, exceto que procuramos eventos de desconexão.

      Utilize eventType, é igual a e Microsoft.Devices.DeviceDisconnected para os valores de linha.

      Captura de ecrã a mostrar a condição completa Para Cada.

  4. Na caixa de diálogo se verdadeiro , clique em Adicionar uma ação.

    Captura de ecrã a mostrar a caixa

  5. Procure Cosmos DB e selecione Azure Cosmos DB — Criar ou atualizar documento (V3)

    Captura de ecrã a mostrar a pesquisa do Azure Cosmos DB.

  6. Verá o painel Criar ou atualizar documento (V3 ). Introduza estes valores para os campos:

    Nome da conta do Azure Cosmos DB: {Adicionar o nome da conta}

    ID da Base de Dados: ToDoList

    ID da Coleção: Itens

    Documento: escolher Current item a partir da lista de parâmetros de conteúdo dinâmico

    Captura de ecrã a mostrar um item Executar procedimento armazenado (V3) com

  7. Guarde a sua aplicação lógica.

Copiar o URL de HTTP

Antes de sair do Designer do Logic Apps, copie o URL que a sua aplicação lógica está a escutar para um acionador. Este URL é utilizado para configurar o Event Grid.

  1. Expanda a caixa De configuração do acionador Quando um pedido HTTP é recebido ao selecioná-lo.

  2. Copie o valor de URL do HTTP POST ao selecionar o botão para copiar junto do mesmo.

    Captura de ecrã a mostrar onde encontrar o URL HTTP a copiar.

  3. Guarde este URL para que possa utilizá-lo na secção seguinte.

Configurar a subscrição de eventos do Hub IoT

Nesta secção, vai configurar o Hub IoT para publicar eventos à medida que estes ocorrem.

  1. No portal do Azure, navegue para o seu hub IoT.

  2. Selecione Eventos.

    Captura de ecrã a mostrar onde o botão Eventos está localizado no menu Hub IoT.

  3. Selecione + Subscrição de eventos.

    Criar nova subscrição de evento

  4. Preencha os Detalhes da Subscrição de Eventos: forneça um Nome Descritivo e selecione Esquema do Event Grid como o Esquema de Eventos.

  5. Crie um Nome do Tópico do Sistema para o recurso do hub IoT.

  6. Preencha os campos Tipos de Eventos . Na lista pendente, selecione Apenas Dispositivo Ligado e Dispositivo Desligado no menu. Clique em qualquer outro local no ecrã para fechar a lista e guardar as suas seleções.

    Definir tipos de eventos a procurar

  7. Para Detalhes do Ponto Final, selecione Tipo de Ponto Final como Web Hook e clique em selecionar ponto final, cole o URL que copiou da sua aplicação lógica e confirme a seleção.

    Selecione o URL do ponto final

  8. O formulário deverá agora ter um aspeto semelhante ao seguinte exemplo:

    Captura de ecrã do formulário para criar uma subscrição de evento.

    Selecione Criar para guardar a subscrição de eventos.

    Importante

    Aguarde alguns minutos para que o seu evento seja processado antes de executar o dispositivo. Sempre que os serviços do Azure forem criados ou alterados, iniciar o próximo passo no pipeline demasiado cedo poderá resultar em erros desnecessários. Por exemplo, se o hub IoT não estiver num estado ativo, não estará pronto para receber eventos. Verifique a página Descrição Geral do hub IoT para ver se o hub IoT está ou não num estado ativo. Se não estiver, verá um aviso na parte superior da página.

    Captura de ecrã a mostrar um erro de Hub IoT que diz que não está num estado ativo.

Executar dispositivos e observar eventos

Agora que a sua subscrição de eventos está configurada, vamos testar ao ligar um dispositivo.

Registar um dispositivo no Hub IoT

  1. No hub IoT, selecione Dispositivos.

  2. Selecione + Adicionar Dispositivo na parte superior do painel.

  3. Em ID do Dispositivo, introduza Demo-Device-1.

  4. Selecione Guardar.

    Captura de ecrã a mostrar a localização do botão Adicionar Dispositivo.

  5. Clique novamente no dispositivo; agora, as cadeias de ligação e as chaves serão preenchidas. Copie e guarde a Cadeia de Ligação Primária para utilização posterior.

    Captura de ecrã a mostrar a localização da Cadeia de Ligação Primária do seu dispositivo.

Iniciar simulador Raspberry Pi

Vamos utilizar o simulador Web Raspberry Pi para simular a ligação do dispositivo.

Iniciar simulador Raspberry Pi

Executar uma aplicação de exemplo no simulador Web Raspberry Pi

Esta aplicação de exemplo irá acionar um evento ligado ao dispositivo.

  1. Na área de codificação, substitua o marcador de posição na Linha 15 pela cadeia de ligação do dispositivo Hub IoT do Azure que guardou no final da secção anterior.

    Captura de ecrã a mostrar onde adicionar a cadeia de ligação primária no script Raspberry Pi.

  2. Execute a aplicação ao selecionar Executar.

    Verá algo semelhante ao seguinte resultado que mostra os dados do sensor e as mensagens que são enviadas para o seu hub IoT.

    Captura de ecrã do que esperar na consola de saída quando executa o Raspberry Pi.

  3. Pode verificar a página Descrição Geral da Aplicação Lógica para verificar se a lógica está a ser acionada. Irá dizer Com Êxito ou Com Falha. A verificação aqui permite-lhe saber o estado da aplicação lógica se a resolução de problemas for necessária. Espere um atraso de 15 a 30 segundos a partir do momento em que o acionador é executado. Se precisar de resolver problemas da aplicação lógica, veja este artigo Resolver erros .

    Captura de ecrã a mostrar as atualizações de estado na página Descrição geral da aplicação lógica.

  4. Selecione Parar para parar o simulador, que aciona um evento Dispositivo Desligado . Este evento irá iniciar sessão na página Descrição Geral da Aplicação Lógica, tal como o evento de ligação aí registado.

Já executou uma aplicação de exemplo para recolher eventos de ligação e desconexão do seu dispositivo, que vão para o hub IoT.

Observar eventos no Azure Cosmos DB

Pode ver os resultados da aplicação lógica executada no seu documento do Cosmos DB. O documento é apresentado na coleção Itens quando atualiza a página. Cada evento de estado de ligação gera um novo documento ao qual é atribuído um exclusivo id. A imagem seguinte mostra o documento criado quando o dispositivo foi iniciado (ligado). O tipo de evento ligado está listado na saída JSON.

Captura de ecrã do evento de estado de ligação recentemente gerado numa coleção do Cosmos DB.

Utilizar a CLI do Azure

Em vez de utilizar o portal do Azure, pode realizar os passos Hub IoT com a CLI do Azure. Para obter detalhes, veja as páginas da CLI do Azure para criar uma subscrição de evento e criar um dispositivo IoT.

Limpar os recursos

Este tutorial utilizou recursos que incorrem em custos na sua subscrição do Azure. Quando terminar de experimentar o tutorial e testar os resultados, desative ou elimine os recursos que não pretende manter.

Aplicação lógica

Se não quiser perder o trabalho realizado na sua aplicação lógica, desative-a em vez de a eliminar.

  1. Navegue até à sua aplicação lógica.

  2. No painel Descrição geral , selecione Eliminar ou Desativar.

    Cada subscrição pode ter um hub IoT gratuito. Se tiver criado um hub gratuito para este tutorial, não precisa de o eliminar para evitar custos.

Hub IoT ou Event Grid

  1. Navegue até ao seu hub IoT.

  2. No painel Descrição geral , selecione Eliminar.

  3. Mesmo que decida manter o hub IoT, poderá ser conveniente eliminar a subscrição de evento que criou. No hub IoT, selecione Event Grid.

  4. Selecione a subscrição de eventos que pretende remover e, em seguida, selecione Eliminar.

Cosmos DB

Para remover uma conta do Azure Cosmos DB do portal do Azure, aceda ao recurso e selecione Eliminar conta na barra de menus superior. Veja instruções detalhadas para eliminar uma conta do Azure Cosmos DB.

Passos seguintes