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:
O dispositivo Pi, usando a chave de dispositivo do Hub IoT, é iniciado e parado
Um evento do Hub IoT captura a atividade do dispositivo e envia uma solicitação HTTP para seu Aplicativo Lógico
O Aplicativo Lógico processa a solicitação HTTP com base em uma condição definida
O Aplicativo Lógico registra eventos de conexão ou desconexão em um novo documento no Cosmos DB
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
No portal do Azure, selecione +Criar um recurso, em seguida, Integração e depois Aplicativo lógico.
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.
Selecione Revisar + Criar para revisar sua configuração e, em seguida, selecione Criar para criar o aplicativo lógico.
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.
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.
Na barra de pesquisa de conectores e gatilhos, digite HTTP e tecle Enter.
Selecione Quando uma solicitação HTTP é recebida como o gatilho.
Selecione Use o conteúdo de amostra para gerar o esquema.
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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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" }]
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.
Selecione + Nova etapa, a guia Interno e, em seguida, localize e selecione o controle denominado Condição.
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.
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.
Na caixa de diálogo se verdadeiro, clique em Adicionar uma ação.
Pesquisar o Cosmos DB e selecionar Azure Cosmos DB – Criar ou atualizar documento (V3)
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âmicoSalve 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.
Expanda a caixa de configuração do gatilho Quando uma solicitação HTTP for recebida selecionando-a.
Copie o valor de URL DE HTTP POST, selecionando o botão de cópia ao lado dele.
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.
No portal do Azure, navegue para o hub IoT.
Selecione Eventos.
Selecione + Assinatura do evento.
Preencha os Detalhes da Assinatura do Evento: forneça um Nome descritivo e selecione Esquema da Grade de Eventos como o Esquema de Eventos.
Crie um Nome de tópico do sistema para o recurso do hub IoT.
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.
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.
O formulário agora deve se parecer com o exemplo a seguir:
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.
Executar dispositivo e observar eventos
Como a assinatura de evento já foi configurada, vamos testar conectando um dispositivo.
Registrar um dispositivo no Hub IoT
No hub IoT, selecione Dispositivos.
Selecione + Adicionar Dispositivo na parte superior do painel.
ParaIID do dispositivo, insira
Demo-Device-1
.Selecione Salvar.
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.
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.
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.
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.
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.
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.
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.
Navegue até seu aplicativo lógico.
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
Navegue até o seu Hub IoT.
Na folha Visão geral, selecione Excluir.
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.
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
Saiba mais sobre Reagir aos eventos do Hub IoT usando a Grade de Eventos para disparar ações
Saiba mais sobre o que mais você pode fazer com Grade de Eventos
Saiba como usar a Grade de Eventos e o Azure Monitor para monitorar, diagnosticar e solucionar problemas de conectividade do dispositivo com o Hub IoT