Usar o Azure Functions para filtrar dados na borda

Concluído

Para reduzir a quantidade de telemetria enviada para seu aplicativo IoT Central, você deseja filtrar os dados em seu dispositivo IoT Edge antes que eles sejam enviados.

Para reduzir os custos associados ao envio de telemetria de suas lojas para seu aplicativo e garantir que seus operadores vejam apenas dados importantes, você deseja filtrar os dados no dispositivo IoT Edge. Você determinou que os operadores só precisam ver a telemetria quando a temperatura ambiente estiver acima de 21°C.

Aqui, você aprenderá a usar o Azure Functions como um módulo em seu dispositivo IoT Edge para implementar o filtro. Você também analisará como atualizar o manifesto de implantação para seu aplicativo IoT Central, para que os dispositivos IoT Edge conectados ao seu aplicativo IoT Central o baixem e atualizem os módulos no dispositivo.

O que são as Funções do Azure?

O Azure Functions é um serviço que permite executar pequenos pedaços de código, chamados funções, sem se preocupar com a infraestrutura do aplicativo. Com o Azure Functions, a infraestrutura de nuvem fornece todos os servidores atualizados de que você precisa para manter seu aplicativo em execução em escala.

Você também pode usar o Azure Functions para implantar uma função em seu dispositivo IoT Edge como um módulo para que a função seja executada localmente, na borda, em vez de na nuvem.

Você está planejando implementar seu filtro usando o Azure Functions para ser executado como um dos módulos em seu dispositivo IoT Edge. Esse filtro limita a quantidade de telemetria de temperatura da máquina enviada para seu aplicativo IoT Central.

Como criar um módulo IoT Edge que contém uma função

Você pode usar vários idiomas para criar uma função para o Azure Functions. As etapas a seguir descrevem como criar um módulo IoT Edge que contém uma função implementada em C#:

  1. Crie um projeto que inclua o scaffolding para um módulo de Função do Azure. Você pode criar esse projeto usando o Visual Studio Code ou na linha de comando usando o dotnet comando.
  2. Implemente a lógica de negócios para a função em C#.
  3. Crie o projeto para gerar uma imagem do Docker que contenha a função e o tempo de execução necessário do Azure Functions.
  4. Carregue a imagem do Docker em um registro de contêiner.
  5. Modifique o manifesto de implantação do dispositivo IoT Edge para incluir o novo módulo. A configuração inclui o endereço da imagem do Docker e como o módulo de função interage com outros módulos no tempo de execução do IoT Edge.

O trecho a seguir mostra modules a seção com o novo filterfunction módulo no manifesto de implantação atualizado:

"modules": {
  "SimulatedTemperatureSensor": {
    "version": "1.0",
    "type": "docker",
    "status": "running",
    "restartPolicy": "always",
    "settings": {
      "image": "mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.4.6",
      "createOptions": "{}"
    }
  },
  "filterfunction": {
    "version": "1.0",
    "type": "docker",
    "status": "running",
    "restartPolicy": "always",
    "settings": {
      "image": "<YOUR CONTAINER REGISTRY NAME>.azurecr.io/filterfunction:v1",
      "createOptions": ""
    }
  }
}

Dependendo do registro de contêiner usado e de sua configuração, o manifesto de implantação pode precisar incluir credenciais para acessar o registro.

O trecho a seguir mostra como a telemetria é roteada entre os módulos no manifesto de implantação atualizado:

"routes": {
    "FilterFunctionToIoTCentral": "FROM /messages/modules/filterfunction/outputs/* INTO $upstream",
    "sensorToFilterFunction": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/filterfunction/inputs/input1\")"
  },

Atualizar o manifesto de implantação no IoT Central

Para implantar o novo módulo em seu dispositivo IoT Edge, atualize o manifesto de implantação para seu aplicativo IoT Central. Quando você atualiza um manifesto de implantação como este, os dispositivos IoT Edge conectados ao seu aplicativo IoT Central o baixam e atualizam os módulos no dispositivo.

Usar o Azure Functions na borda

1.

Onde você pode executar uma função do Azure?

2.

Qual é a função do roteamento em um manifesto de implantação?