Usar o Azure Functions para filtrar dados na borda
Para reduzir a quantidade de telemetria enviada ao seu aplicativo Azure IoT Central, você deseja filtrar os dados no seu dispositivo IoT Edge antes de serem enviados.
Para reduzir os custos associados ao envio de telemetria das suas lojas para o aplicativo, filtre os dados no dispositivo IoT Edge. Fazer isso também ajuda a garantir que seus operadores vejam apenas dados importantes. 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 no seu dispositivo IoT Edge para implementar o filtro. Você também analisará como atualizar o manifesto de implantação do seu aplicativo Azure IoT Central. Em seguida, os dispositivos IoT Edge que estão conectados ao aplicativo Azure IoT Central fazem o download e atualizam os módulos no dispositivo.
O que é o Azure Functions?
O Azure Functions é um serviço que permite executar pequenos trechos 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 no seu dispositivo do 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 o seu filtro usando o Azure Functions para ser executado como um dos módulos no seu dispositivo do IoT Edge. Esse filtro limita a quantidade de telemetria de temperatura do computador enviada ao seu aplicativo Azure IoT Central.
Como criar um módulo do 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 do IoT Edge que contém uma função implementada em C#:
- Crie um projeto que inclua o scaffolding para um módulo do Azure Functions. Você pode criar esse projeto usando o Visual Studio Code ou na linha de comando usando o comando
dotnet
. - Implemente a lógica de negócios para a função em C#.
- Crie o projeto para gerar uma imagem do Docker que contém a função e o runtime do Azure Functions necessário.
- Carregue a imagem do Docker em um registro de contêiner.
- Modifique o manifesto de implantação do seu dispositivo do IoT Edge a fim de 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 runtime do IoT Edge.
O snippet a seguir mostra a seção modules
com o novo módulo filterfunction
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 que você usa e da sua configuração, o manifesto de implantação pode exigir credenciais para acessar o registro.
O snippet 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 Azure IoT Central
Para implantar o novo módulo em seu dispositivo IoT Edge, atualize o manifesto de implantação em seu aplicativo Azure IoT Central. Quando você atualiza um manifesto de implantação como esse, os dispositivos IoT Edge que estão conectados ao seu aplicativo Azure IoT Central fazem o download e atualizam os módulos no dispositivo.