Tutorial: Enviar notificações por e-mail sobre eventos do Hub IoT do Azure com o Event Grid e o Logic Apps

O Azure Event Grid permite-lhe reagir a eventos no Hub IoT ao acionar ações nas suas aplicações empresariais a jusante.

Este artigo apresenta um exemplo de configuração que usa o Hub IoT e a Grade de Eventos. No final, você tem um aplicativo lógico do Azure configurado para enviar um email de notificação sempre que um dispositivo se conecta ou desconecta ao seu hub IoT. A Grade de Eventos pode ser usada para receber notificações oportunas sobre a desconexão de dispositivos críticos. Métricas e diagnósticos podem levar vários minutos (como 20 minutos ou mais) para aparecer em logs / alertas. Tempos de processamento mais longos podem ser inaceitáveis para infraestruturas críticas.

Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.

Pré-requisitos

  • Uma conta de email de qualquer provedor de email suportado pelos Aplicativos Lógicos do Azure, como o Office 365 Outlook ou Outlook.com. Esta conta de e-mail é utilizada para enviar notificações de eventos.
  • Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Guia de início rápido para Bash no Azure Cloud Shell.

  • Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.

    • Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.

    • Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.

    • Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.

Criar um hub IoT

Você pode criar rapidamente um novo hub IoT usando o terminal do Azure Cloud Shell no portal.

  1. Inicie sessão no portal do Azure.

  2. No canto superior direito da página, selecione o botão Cloud Shell.

    Screenshot of how to open the Azure Cloud Shell from the Azure portal.

  3. Execute o seguinte comando para criar um novo grupo de recursos:

    az group create --name {your resource group name} --location westus
    
  4. Execute o seguinte comando para criar um hub IoT:

    az iot hub create --name {your iot hub name} --resource-group {your resource group name} --sku S1 
    
  5. Minimize o terminal do Cloud Shell. Você retornará ao shell mais tarde no tutorial.

Criar uma aplicação lógica

Em seguida, crie um aplicativo lógico e adicione um gatilho de Grade de Eventos HTTP que processa solicitações do hub IoT.

Criar um recurso de aplicação lógica

  1. No portal do Azure, selecione Criar um recurso, digite "aplicativo lógico" na caixa de pesquisa e selecione retornar. Selecione Aplicativo lógico nos resultados.

    Screenshot of how to select the logic app from a list of resources.

  2. No ecrã seguinte, selecione Criar.

  3. Dê ao seu aplicativo lógico um nome exclusivo em sua assinatura e selecione a mesma assinatura, grupo de recursos e local que seu hub IoT. Escolha o tipo de plano de consumo .

    Screenshot of how to configure your logic app.

  4. Selecione Rever + criar.

  5. Verifique as configurações e selecione Criar.

  6. Depois que o recurso for criado, selecione Ir para o recurso.

  7. No Designer de Aplicativos Lógicos, página para baixo para ver Modelos. Escolha Aplicativo lógico em branco para que você possa criar seu aplicativo lógico do zero.

    Screenshot of the Logic App Designer templates.

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.

  2. Percorra os resultados e selecione Solicitação - Quando uma solicitação HTTP é recebida como o gatilho.

    Select HTTP request trigger

  3. Selecione Utilize a amostra de payload para gerar o esquema.

    Use sample payload

  4. Copie os valores abaixo e substitua os json valores <> de espaço reservado pelos seus.

  5. Cole o JSON do esquema de evento conectado ao dispositivo na caixa de texto e selecione Concluído:

      [{  
       "id": "f6bbf8f4-d365-520d-a878-17bf7238abd8",
       "topic": "/SUBSCRIPTIONS/<azure subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>",
       "subject": "devices/LogicAppTestDevice",
       "eventType": "Microsoft.Devices.DeviceConnected",
       "eventTime": "2018-06-02T19:17:44.4383997Z",
       "data": {
           "deviceConnectionStateEventInfo": {
             "sequenceNumber":
               "000000000000000001D4132452F67CE200000002000000000000000000000001"
           },
         "hubName": "<hub name>",
         "deviceId": "LogicAppTestDevice",
         "moduleId" : "DeviceModuleID"
       }, 
       "dataVersion": "1",
       "metadataVersion": "1"
     }]
    

    Importante

    Certifique-se de colar o trecho JSON na caixa fornecida pelo link Usar carga útil de exemplo para gerar esquema e não diretamente na caixa Esquema JSON do Corpo da Solicitação . O link de carga útil de exemplo fornece uma maneira de gerar o conteúdo JSON com base no trecho JSON. O JSON final que termina no corpo da solicitação é diferente do trecho JSON.

    Esse evento é publicado quando um dispositivo está conectado a um hub IoT.

Nota

Você pode receber uma notificação pop-up que diz: Lembre-se de incluir um cabeçalho Content-Type definido como application/json em sua solicitação. Você pode ignorar essa sugestão com segurança e passar para a próxima seção.

Criar uma ação

Ações são os passos que ocorrem depois de o acionador iniciar o fluxo de trabalho da aplicação lógica. Neste tutorial, a ação consiste no envio de uma notificação por e-mail a partir do seu fornecedor de e-mail.

  1. Selecione Novo passo. Uma janela é exibida, solicitando que você escolha uma ação.

  2. Procure o Outlook.

  3. Com base no seu fornecedor de e-mail, localize e selecione o conector correspondente. Este tutorial usa Outlook.com. Os passos para outros fornecedores de e-mail são semelhantes. Como alternativa, use o Office 365 Outlook para ignorar a etapa de entrada.

    Select email provider connector

  4. Selecione a ação Enviar um e-mail (V2).

  5. Selecione Iniciar sessão e iniciar sessão na sua conta de e-mail. Selecione Sim para permitir que o aplicativo acesse suas informações.

  6. Crie o modelo de e-mail.

    • Para: introduza o endereço de e-mail para receber as mensagens de e-mail de notificação. Neste tutorial, utilize uma conta de e-mail a que pode aceder para fazer o teste.

    • Assunto: Preencha o texto do assunto. Quando clicar na caixa de texto Assunto, pode selecionar conteúdo dinâmico a incluir. Por exemplo, este tutorial usa IoT Hub alert: {eventType}o . Se não conseguir ver Conteúdo dinâmico, selecione a hiperligação Adicionar conteúdo dinâmico para ativar ou desativar a vista Conteúdo dinâmico.

    Depois de selecionar eventType, você verá a saída do formulário de e-mail até agora. Selecione Enviar e enviar e-mail (V2) para editar o corpo do seu e-mail.

    Screenshot of the condensed body output form.

    • Corpo: Escreva o texto para o seu e-mail. Selecione as propriedades JSON da ferramenta de seletor para incluir conteúdo dinâmico com base nos dados de eventos. Se não conseguir ver o Conteúdo dinâmico, selecione a hiperligação Adicionar conteúdo dinâmico na caixa de texto Corpo. Se não mostrar os campos que deseja, clique em mais no ecrã Conteúdo dinâmico para incluir os campos da ação anterior.

    O modelo de e-mail pode ter um aspeto semelhante ao deste exemplo:

    Screenshot of how to create an event email in the template.

  7. Selecione Guardar no Estruturador de Logic Apps.

Copiar o URL de HTTP

Antes de sair do Designer de Aplicativos Lógicos, copie a URL que seu aplicativo lógico está ouvindo para um gatilho. Este URL é utilizado para configurar o Event Grid.

  1. Expanda a caixa de configuração do acionador Quando um pedido de HTTP é recebido ao clicar nela.

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

    Copy the HTTP POST URL

  3. Guarde este URL de modo a poder referenciá-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. Você pode encontrar seu hub IoT selecionando Hub IoT no painel do Azure e, em seguida, selecione sua instância do hub IoT na lista de recursos.

  2. Selecione Eventos.

    Open the Event Grid details

  3. Selecione Subscrição de eventos.

    Create new event subscription

  4. Crie a subscrição de evento com os seguintes valores:

    1. Na secção DETALHES DA SUBSCRIÇÃO DE EVENTOS:

      1. Forneça um nome para a assinatura do evento.
      2. Selecione Esquema de grade de eventos para Esquema de eventos.
    2. Na secção DETALHES DO TÓPICO:

      1. Confirme se o Tipo de tópico está definido como Hub IoT.
      2. Confirme se o nome do hub IoT está definido como o valor para o campo Recursos de Origem.
      3. Insira um nome para o tópico do sistema que será criado para você. Para saber mais sobre tópicos do sistema, consulte Visão geral dos tópicos do sistema.
    3. Na secção TIPOS DE EVENTO:

      1. Selecione o menu pendente Filtrar Tipos de Eventos.

      2. Desmarque as caixas de seleção Dispositivo criado e Dispositivo excluído, deixando apenas as caixas de seleção Dispositivo conectado e Dispositivo desconectado marcadas.

        select subscription event types

    4. Na secção DETALHES DE PONTOS FINAIS:

      1. Selecione Tipo de ponto de extremidade como gancho da Web.
      2. Clique em selecionar um ponto final, cole o URL que copiou da aplicação lógica e confirme a seleção.

      select endpoint url

      Quando terminar, o painel deverá ser parecido com o seguinte exemplo:

      Screenshot of your 'Create Event Subscription' page in the Azure portal.

  5. Selecione Criar.

Simular um novo dispositivo conectando e enviando telemetria

Teste seu aplicativo lógico simulando rapidamente uma conexão de dispositivo usando a CLI do Azure.

  1. Selecione o botão Cloud Shell para reabrir o terminal.

  2. Execute o seguinte comando para criar uma identidade de dispositivo simulada:

    az iot hub device-identity create --device-id simDevice --hub-name {YourIoTHubName}
    

    O processamento pode levar um minuto. Você verá uma impressão JSON no console assim que ela for criada.

  3. Execute o seguinte comando para simular a conexão do dispositivo ao Hub IoT e o envio de telemetria:

    az iot device simulate -d simDevice -n {YourIoTHubName}
    
  4. Quando o dispositivo simulado se conectar ao Hub IoT, você receberá um e-mail notificando sobre um evento "DeviceConnected".

  5. Quando a simulação for concluída, você receberá um e-mail notificando sobre um evento "DeviceDisconnected".

    Screenshot of the email you should receive.

Clean up resources (Limpar 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 exclua recursos que não deseja manter.

Para excluir todos os recursos criados neste tutorial, exclua o grupo de recursos.

  1. Selecione Grupos de recursos e, em seguida, selecione o grupo de recursos criado para este tutorial.

  2. No painel Grupo de recursos, selecione Excluir grupo de recursos. É-lhe pedido para introduzir o nome do grupo de recursos e, em seguida, pode eliminá-lo. Todos os recursos nele contidos também são removidos.

Próximos passos

Para obter uma lista completa dos conectores do Logic App suportados, consulte o

Visão geral dos conectores.