Compartilhar via


Ordenar eventos de conexão de dispositivo do Hub IoT usando o Azure Cosmos DB

A Grade de Eventos do Azure ajuda a criar aplicativos baseados em eventos e a integrar eventos de IoT facilmente nas suas soluções empresariais. Este artigo orienta você por uma configuração usando o Cosmos DB, o Aplicativo Lógico, os Eventos do Hub IoT e um Raspberry Pi simulado para coletar e armazenar eventos de conexão e desconexão de um dispositivo.

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

  1. O dispositivo Pi, usando a chave de dispositivo do Hub IoT, é iniciado e parado

  2. Um evento do Hub IoT captura a atividade do dispositivo e envia uma solicitação HTTP para seu Aplicativo Lógico

  3. O Aplicativo Lógico processa a solicitação HTTP com base em uma condição definida

  4. O Aplicativo Lógico registra eventos de conexão ou desconexão em um novo documento no Cosmos DB

    Captura de tela da configuração que criaremos para este artigo. Essa configuração mostra como todos os serviços e dispositivos estão conectados.

Pré-requisitos

  • Uma conta ativa do Azure Cosmos DB for NoSQL. Se você ainda não criou uma, consulte Criar uma conta de banco de dados para obter um passo a passo.

  • Uma coleção no seu banco de dados. Consulte Adicionar uma coleção para obter um passo a passo. Ao criar sua coleção, use /id para a chave de partição.

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

  • Um Hub IoT na assinatura do Azure. Caso você ainda não tenha um hub, poderá seguir as etapas em Criar um hub IoT.

Criar um aplicativo lógico

Vamos criar um aplicativo lógico e adicione um gatilho de Grade de Eventos que monitora o grupo de recursos de sua máquina virtual.

Criar um recurso de aplicativo lógico

  1. No portal do Azure, selecione +Criar um recurso, em seguida, Integração e depois Aplicativo lógico.

    Captura de tela de como localizar e selecionar um aplicativo lógico no portal do Azure.

  2. Conclua o formulário para criar um novo Aplicativo Lógico que inclua:

    • Sua assinatura

    • Seu grupo de recursos (ou crie um novo)

    • Um nome do Aplicativo Lógico exclusivo em sua assinatura

    • A região do Hub IoT

    • Um Não para habilitar a análise de logs

    • Um tipo de plano de Consumo

      Observação

      O tipo de plano de Consumo é a opção que habilita o Designer de aplicativos lógicos na interface do usuário. Se você escolher Standard (o padrão), crie um novo fluxo de trabalho para que o Designer de aplicativos lógicos fique disponível.

    Captura de tela de como criar um aplicativo lógico no portal do Azure.

  3. Selecione Revisar + Criar para revisar sua configuração e, em seguida, selecione Criar para criar o aplicativo lógico.

  4. Agora você criou um recurso do Azure para o seu aplicativo lógico. Após o Azure implantar o aplicativo, selecione Ir para o recurso. O Designer de aplicativos lógicos mostra modelos para padrões comuns para que você possa começar o quanto antes.

  5. No Designer de aplicativos lógicos, role até ver a seção Modelos e escolha Aplicativo Lógico em Branco para que você possa criar seu aplicativo lógico do zero.

Selecionar um gatilho

Um gatilho é um evento específico que inicia o aplicativo lógico. Para este tutorial, o gatilho que desencadeia o fluxo de trabalho está recebendo uma solicitação através HTTP.

  1. Na barra de pesquisa de conectores e gatilhos, digite HTTP e tecle Enter.

  2. Selecione Quando uma solicitação HTTP é recebida como o gatilho.

    Captura de tela de como localizar o gatilho de solicitação HTTP selecionado.

  3. Selecione Use o conteúdo de amostra para gerar o esquema.

    Captura de tela de como usar uma carga de exemplo para gerar um esquema.

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

    Esse JSON é usado apenas como um modelo, portanto, 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 tela da carga JSON de exemplo colada na caixa de texto no Azure.

Criar uma condição

As condições ajudam a executar ações específicas depois de passar uma condição específica. Para este artigo, a condição é verificar se o eventType é dispositivo conectado ou dispositivo desconectado. A ação executada quando esse eventType é verdadeiro é a criação de um documento no Azure Cosmos DB. Essa condição é criada no Designer de aplicativos lógicos.

  1. Selecione + Nova etapa, a guia Interno e, em seguida, localize e selecione o controle denominado Condição.

  2. Em sua condição, altere E para Ou, pois queremos capturar eventos de conexão ou eventos de desconexão em uma única análise.

  3. Selecione dentro da caixa Escolha um valor e uma caixa será exibida mostrando o Conteúdo dinâmico: os campos que podem ser selecionados.

    • Escolha eventType. O pop-up fecha e você vê que o Corpo é colocado em Selecionar uma saída das etapas anteriores automaticamente. Selecione Condição para reabrir sua instrução condicional.

    • Mantenha o valor é igual a.

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

    • Selecione + Adicionar para adicionar outra linha.

    • Esta segunda linha é semelhante à primeira linha, exceto pelo fato de procurarmos eventos de desconexão.

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

      Captura de tela da condição Full For Each.

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

    Captura de tela da caixa “Se verdadeiro” no Azure.

  5. Pesquisar o Cosmos DB e selecionar Azure Cosmos DB – Criar ou atualizar documento (V3)

    Captura de tela da pesquisa do Azure Cosmos DB.

  6. Você verá o painel Criar ou atualizar documento (V3). Insira estes valores dos campos:

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

    ID do banco de dados: ToDoList

    Id da coleção: Itens

    Documento: Escolher Current item na lista de parâmetros de conteúdo dinâmico

    A captura de tela mostra um item Executar procedimento armazenado (V3) com “Adicionar novo parâmetro” selecionado.

  7. Salve seu aplicativo lógico.

Copiar a URL HTTP

Antes de sair do Designer de Aplicativos Lógicos, copie a URL que o aplicativo lógico está ouvindo para um gatilho. Você usa essa URL para configurar a Grade de Eventos.

  1. Expanda a caixa de configuração do gatilho Quando uma solicitação HTTP for recebida selecionando-a.

  2. Copie o valor de URL DE HTTP POST, selecionando o botão de cópia ao lado dele.

    Captura de tela de onde encontrar a URL HTTP a ser copiada.

  3. Salve essa URL para que você possa usá-la na próxima seção.

Configurar a assinatura de eventos do Hub IoT

Nesta seção, você configura o Hub IoT para publicar eventos à medida que ocorrem.

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

  2. Selecione Eventos.

    Captura de tela de onde o botão Eventos está localizado no menu Hub IoT.

  3. Selecione + Assinatura do evento.

    Criar nova assinatura de evento

  4. Preencha os Detalhes da Assinatura do Evento: forneça um Nome descritivo e selecione Esquema da Grade de Eventos como o Esquema de Eventos.

  5. Crie um Nome de tópico do sistema para o recurso do hub IoT.

  6. Preencha os campos Tipos de evento. Na lista suspensa, selecione somente Dispositivo conectado e Dispositivo desconectado no menu. Clique em qualquer outro lugar na tela para fechar a lista e salvar suas seleções.

    Definir tipos de eventos a serem procurados

  7. Em Detalhes do ponto de extremidade, selecione o tipo de ponto de extremidade como Web hook, clique no ponto de extremidade selecionado, cole a URL copiada do aplicativo lógico e confirme a seleção.

    Selecionar a url do ponto de extremidade

  8. O formulário agora deve se parecer com o exemplo a seguir:

    Captura de tela do formulário para criar uma assinatura de evento.

    Selecione Criar para salvar a assinatura de evento.

    Importante

    Aguarde alguns minutos para que o evento seja processado antes de executar seu dispositivo. Sempre que os serviços do Azure são criados ou alterados, iniciar a próxima etapa em seu pipeline muito cedo poderá resultar em erros desnecessários. Por exemplo, se o hub IoT não estiver em um estado ativo, ele não estará pronto para receber eventos. Verifique a página Visão geral do hub IoT para ver se o hub IoT está em um estado ativo ou não. Se não for, você verá um aviso na parte superior da página.

    Captura de tela de um erro do Hub IoT que diz que ele não está em um estado ativo.

Executar dispositivo e observar eventos

Como a assinatura de evento já foi configurada, vamos testar conectando um dispositivo.

Registrar um dispositivo no Hub IoT

  1. No hub IoT, selecione Dispositivos.

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

  3. ParaIID do dispositivo, insira Demo-Device-1.

  4. Selecione Salvar.

    Captura de tela do local do botão Adicionar Dispositivo.

  5. Clique no dispositivo novamente. Agora, as cadeias de conexão e as chaves serão preenchidas. Copie e salve a Cadeia de conexão primária para uso posterior.

    Captura de tela do local da Cadeia de Conexão Primária para seu dispositivo.

Iniciar o simulador do Raspberry Pi

Vamos usar o simulador Web do Raspberry Pi para simular a conexão do dispositivo.

Iniciar o simulador do Raspberry Pi

Executar um aplicativo de exemplo no simulador Web do Raspberry Pi

Esse aplicativo de exemplo disparará um evento de dispositivo conectado.

  1. Na área de codificação, substitua o espaço reservado na Linha 15 pela cadeia de conexão do dispositivo do Hub IoT que você salvou no final da seção anterior.

    Captura de tela de onde adicionar sua cadeia de conexão primária no script Raspberry Pi.

  2. Execute o aplicativo pressionando Executar.

    Você deverá ver algo semelhante à seguinte saída, mostrando os dados do sensor e as mensagens enviadas ao seu hub IoT.

    Captura de tela do que esperar no console de saída ao executar o Raspberry Pi.

  3. Você pode verificar sua página Visão geral do Aplicativo Lógico para verificar se a lógica está sendo disparada. Ele dirá Êxito ou Falha. Verificando aqui, vamos saber o estado do aplicativo lógico se a solução de problemas for necessária. Espere um atraso de 15 a 30 segundos de quando o gatilho é executado. Se você precisar solucionar problemas de seu aplicativo lógico, confira este artigo: Solucionar problemas de erros.

    Captura de tela das atualizações de status na página Visão geral do aplicativo lógico.

  4. Selecione Parar para parar o simulador, que dispara um evento de Dispositivo desconectado. Esse evento fará logon na página Visão geral do Aplicativo Lógico, assim como o evento de conexão logado nela.

Agora você executou um aplicativo de exemplo para coletar eventos de conexão e desconexão do dispositivo, que vão para o hub IoT.

Observar eventos no Azure Cosmos DB

É possível ver os resultados do aplicativo lógico no seu documento do Cosmos DB. O documento aparece na coleção Itens quando você atualiza a página. Cada evento de estado de conexão gera um novo documento atribuído a um id exclusivo. A imagem a seguir mostra o documento criado quando o dispositivo foi iniciado (conectado). O tipo de evento conectado é listado na saída JSON.

Captura de tela do evento de estado de conexão recém-gerado em uma coleção do Cosmos DB.

Usar a CLI do Azure

Em vez de usar o portal do Azure, é possível realizar as etapas do Hub IoT usando a CLI do Azure. Para obter detalhes, consulte as páginas da CLI do Azure para criar uma assinatura de evento e criar um dispositivo IoT.

Limpar os recursos

Este tutorial usou recursos que incorrem em encargos na sua assinatura do Azure. Quando terminar de experimentar o tutorial e testar seus resultados, desabilite ou exclua recursos que você não deseja manter.

Aplicativo lógico

Se você não quiser perder o trabalho no seu aplicativo lógico, desabilite-o em vez de excluí-lo.

  1. Navegue até seu aplicativo lógico.

  2. Na folha Visão geral, selecione Excluir ou Desabilitar.

    Cada assinatura pode ter um Hub IoT gratuito. Se você criou um Hub gratuito para este tutorial, não será necessário excluí-lo para evitar encargos.

Hub IoT ou Grade de Eventos

  1. Navegue até o seu Hub IoT.

  2. Na folha Visão geral, selecione Excluir.

  3. Mesmo se você mantiver o Hub IoT, convém excluir a assinatura de evento que você criou. No seu Hub IoT, selecione Grade de Eventos.

  4. Selecione a assinatura de evento que você deseja remover e, em seguida, selecione Excluir.

Cosmos DB

Para remover uma conta do Azure Cosmos DB do portal do Azure, acesse seu recurso e selecione Excluir conta na barra de menus superior. Consulte as instruções detalhadas para excluir uma conta do Azure Cosmos DB.

Próximas etapas