Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:
IoT Edge 1.5
Внимание
IoT Edge 1.5 LTS — это поддерживаемый выпуск. IoT Edge 1.4 LTS достиг срока окончания службы 12 ноября 2024 года. Если вы используете более ранний выпуск, ознакомьтесь с Update IoT Edge.
Используйте Azure Functions для развертывания кода, который выполняет бизнес-логику непосредственно на Azure IoT Edge устройствах. В этом руководстве показано, как создать и развернуть функцию Azure, которая фильтрует данные датчика на имитированном устройстве IoT Edge. Используйте симулированное устройство IoT Edge, созданное в руководствах для быстрого старта. В этом руководстве описано следующее:
- Создание функции Azure с помощью Visual Studio Code
- Использование Visual Studio Code и Docker для создания образа Docker и публикации его в реестре контейнеров
- Развертывание модуля из реестра контейнеров на устройстве IoT Edge
- Просмотр отфильтрованных данных
Функция Azure, созданная в этом руководстве, фильтрует данные температуры, созданные устройством. Функция отправляет сообщения только вверх по Azure IoT Hub, если температура превышает указанное пороговое значение.
Если у вас нет учетной записи Azure, создайте учетную запись free перед началом работы.
Предварительные требования
Перед началом работы с этим руководством следуйте инструкциям по настройке среды разработки для контейнеров Linux: Develop Azure IoT Edge с помощью модулей Visual Studio Code. По завершении у вас должны быть выполнены следующие предварительные условия:
- Бесплатный или стандартный уровень IoT Hub в Azure.
- Устройство AMD64 под управлением Azure IoT Edge с контейнерами Linux. Используйте быстрое руководство для настройки устройства Linux или устройства Windows.
- Реестр контейнеров, например Azure Container Registry.
- Visual Studio Code настроен с помощью расширений Azure IoT Edge и Azure IoT Hub. Средство Azure IoT Edge tools для Visual Studio Code находится в режиме поддержки.
- Скачайте и установите совместимую систему управления контейнерами Docker на компьютере разработки. Установите его для запуска контейнеров Linux.
Чтобы разработать модуль IoT Edge с Azure Functions, установите следующие дополнительные предварительные требования на компьютере разработки:
Создание проекта функции
Azure IoT Edge для Visual Studio Code предоставляет возможности управления и шаблоны кода. В этом разделе вы используете Visual Studio Code для создания решения IoT Edge с помощью функции Azure.
Создание нового проекта
Выполните следующие действия, чтобы создать настраиваемый шаблон решения функции C#.
Откройте Visual Studio Code на компьютере разработки.
Откройте палитру команд Visual Studio Code, выбрав View > Command Palette.
В палитре команд добавьте и запустите команду Azure IoT Edge: новое решение IoT Edge. Выполните следующие запросы в палитре команд, чтобы создать решение:
- Выберите папку: выберите расположение на машине для разработки, чтобы Visual Studio Code смог создать файлы решения.
- Укажите имя решения: добавьте описательное имя решения, например FunctionSolution, или примите значение по умолчанию.
- Выберите шаблон модуля: выберите Azure Functions — C#.
- Укажите имя модуля: назовите модуль CSharpFunction.
- Укажите репозиторий образов Docker для модуля: репозиторий образов включает имя реестра контейнеров и имя образа контейнера. Портал предварительно заполняет образ контейнера из предыдущего шага. Замените localhost:5000 значением сервера входа из реестра контейнеров Azure. Вы можете получить сервер входа на странице Обзор реестра контейнеров на портале Azure. Последняя строка выглядит следующим образом
<registry name>.azurecr.io/csharpfunction.
Добавление учетных данных реестра
Файл среды в решении сохраняет учетные данные для реестра контейнеров и предоставляет им общий доступ к среде выполнения IoT Edge. Среде выполнения нужны эти учетные данные для загрузки частных образов на устройство IoT Edge.
Расширение IoT Edge в Visual Studio Code пытается извлечь учетные данные реестра контейнеров из Azure и заполнить их в файле среды. Проверьте, уже ли учетные данные находятся в файле. В противном случае добавьте их:
- В обозревателе Visual Studio Code откройте файл .env.
- Обновите поля с помощью значений username и password скопированных из реестра контейнеров Azure. Чтобы найти их снова, перейдите в реестр контейнеров в Azure и просмотрите страницу Settings > ключи доступа.
- Сохраните этот файл.
Примечание.
В этом руководстве используются учетные данные для входа администратора для Azure Container Registry, которые удобны для сценариев разработки и тестирования. Для производственной среды используйте параметр проверки подлинности с минимальными привилегиями, такие как служебные участники. Дополнительные сведения см. в разделе Управление доступом к реестру контейнеров.
Установка целевой архитектуры в AMD64
модули Azure Functions в IoT Edge поддерживаются только в контейнерах на основе Linux AMD64. Целевая архитектура по умолчанию для Visual Studio Code — Linux AMD64, но вы можете явно задать ее для Linux AMD64 здесь.
- Откройте палитру команд и найдите Azure IoT Edge: задайте целевую платформу по умолчанию для пограничного решения.
- В палитре команд выберите целевую архитектуру AMD64 из списка параметров.
Обновление модуля с помощью пользовательского кода
Добавьте код, чтобы модуль CSharpFunction обрабатывает сообщения на границе перед пересылкой их в IoT Hub.
В обозревателе Visual Studio Code откройте modules > CSharpFunction > CSharpFunction.cs.
Измените содержимое файла CSharpFunction.cs на код, приведенный ниже. Этот код получает данные телеметрии о температуре окружающей среды и компьютера и пересылает сообщение в IoT Hub только в том случае, если температура компьютера превышает определенное пороговое значение.
using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Threading.Tasks; using Microsoft.Azure.Devices.Client; using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Extensions.EdgeHub; using Microsoft.Azure.WebJobs.Host; using Microsoft.Extensions.Logging; using Newtonsoft.Json; namespace Functions.Samples { public static class CSharpFunction { [FunctionName("CSharpFunction")] public static async Task FilterMessageAndSendMessage( [EdgeHubTrigger("input1")] Message messageReceived, [EdgeHub(OutputName = "output1")] IAsyncCollector<Message> output, ILogger logger) { const int temperatureThreshold = 20; byte[] messageBytes = messageReceived.GetBytes(); var messageString = System.Text.Encoding.UTF8.GetString(messageBytes); if (!string.IsNullOrEmpty(messageString)) { logger.LogInformation("Info: Received one non-empty message"); // Get the body of the message and deserialize it. var messageBody = JsonConvert.DeserializeObject<MessageBody>(messageString); if (messageBody != null && messageBody.machine.temperature > temperatureThreshold) { // Send the message to the output as the temperature value is greater than the threshold. using (var filteredMessage = new Message(messageBytes)) { // Copy the properties of the original message into the new Message object. foreach (KeyValuePair<string, string> prop in messageReceived.Properties) {filteredMessage.Properties.Add(prop.Key, prop.Value);} // Add a new property to the message to indicate it is an alert. filteredMessage.Properties.Add("MessageType", "Alert"); // Send the message. await output.AddAsync(filteredMessage); logger.LogInformation("Info: Received and transferred a message with temperature above the threshold"); } } } } } //Define the expected schema for the body of incoming messages. class MessageBody { public Machine machine {get; set;} public Ambient ambient {get; set;} public string timeCreated {get; set;} } class Machine { public double temperature {get; set;} public double pressure {get; set;} } class Ambient { public double temperature {get; set;} public int humidity {get; set;} } }Сохраните файл.
Создание и отправка решения IoT Edge
В предыдущем разделе вы создали решение IoT Edge и изменили CSharpFunction, чтобы отфильтровать сообщения с указанными температурами компьютера ниже допустимого порога. Теперь создайте решение как образ контейнера и отправьте его в реестр контейнеров.
Откройте интегрированный терминал Visual Studio Code. Выберите "Просмотреть > терминал".
Войдите в Docker в терминале. Используйте имя пользователя, пароль и сервер проверки подлинности из реестра контейнеров Azure. Получите эти значения из раздела Ключи доступа вашего реестра на портале Azure.
docker login -u <ACR username> -p <ACR password> <ACR login server>Возможно, вы получите предупреждение системы безопасности, рекомендуемое использовать
--password-stdin. Для рабочих сценариев это лучшая методика, но мы не будем рассматривать ее в этом учебнике. Дополнительные сведения см. в описании команды docker login в справочнике.В обозревателе Visual Studio Code щелкните правой кнопкой мыши файл deployment.template.json и выберите Собрать и Отправить решение IoT Edge.
Команда сборки и отправки запускает три операции. Во-первых, он создает новую папку в решении с именем config , которая содержит полный манифест развертывания, созданный из шаблона развертывания и других файлов решения. Во-вторых, запускается
docker buildдля создания образа контейнера на основе определенного Dockerfile для целевой архитектуры. Затем выполняетсяdocker pushдля передачи репозитория образов в реестр контейнеров.Этот процесс может занять несколько минут в первый раз, но это быстрее при следующем выполнении команд.
Просмотр образа контейнера
Visual Studio Code отображает сообщение об успешной загрузке при отправке вашего образа контейнера в ваш реестр контейнеров. Чтобы подтвердить операцию, просмотрите образ в реестре.
- На портале Azure перейдите в реестр контейнеров Azure.
- Выберите репозитории служб>.
- В списке отображается репозиторий csharpfunction . Выберите этот репозиторий, чтобы просмотреть дополнительные сведения.
- В разделе "Теги" отображается тег 0.0.1-amd64 . Этот тег показывает версию и платформу созданного образа. Файл module.json в папке CSharpFunction задает эти значения.
Развертывание и запуск решения
Используйте портал Azure для развертывания модуля функции на устройстве IoT Edge, как показано в кратком руководстве. Вы также можете развертывать и отслеживать модули из Visual Studio Code. В следующих разделах используются Azure IoT Edge и IoT Hub для расширений Visual Studio Code, перечисленных в предварительных требованиях. Установите расширения, если вы еще не сделали этого.
В обозревателе Visual Studio Code в разделе Azure IoT Hub откройте пункт Devices, чтобы просмотреть список IoT-устройств.
Щелкните правой кнопкой мыши имя устройства IoT Edge и выберите Create Deployment for Single Device.
Перейдите в папку решения с CSharpFunction. Откройте папку конфигурации, выберите файл deployment.amd64.json и затем Select Edge Deployment Manifest (Выбрать манифест развертывания Edge).
Разверните меню Модули для своего устройства, чтобы просмотреть список развернутых и запущенных модулей. Нажмите кнопку обновления. Вы можете увидеть новое выполнение CSharpFunction вместе с модулем SimulatedTemperatureSensor , $edgeAgent и $edgeHub.
Для отображения новых модулей может потребоваться несколько минут. Устройство IoT Edge получает новые сведения о развертывании из IoT Hub, запускает новые контейнеры, а затем сообщает о состоянии обратно в IoT Hub.
Просмотр созданных данных
Посмотрите все сообщения, поступающие в Центр Интернета вещей с ваших устройств, запустив Azure IoT Hub: начать мониторинг встроенной конечной точки событий в палитре команд. Чтобы остановить мониторинг сообщений, запустите Azure IoT Hub: остановите мониторинг встроенной конечной точки события в палитре команд.
Чтобы отфильтровать представление и просмотреть сообщения с определенного устройства, щелкните правой кнопкой мыши устройство в разделе Azure IoT Hub > обозревателя Visual Studio Code и выберите Start Monitoring Built-in Event Endpoint.
Очистка ресурсов
Если вы планируете продолжить работу со следующей рекомендуемой статьей, сохраните созданные ресурсы и конфигурации, и используйте их повторно. Вы также можете использовать то же IoT Edge устройство, что и тестовое устройство.
В противном случае удалите локальную конфигурацию и ресурсы Azure, созданные в этой статье, чтобы избежать расходов.
Удаление ресурсов Azure
Отменить удаление Azure ресурсов и групп ресурсов невозможно. Будьте внимательны, чтобы случайно не удалить не ту группу ресурсов или не те ресурсы. Если вы создали IoT Hub внутри существующей группы ресурсов с ресурсами, которые нужно сохранить, удалите только сам IoT Hub ресурс, а не группу ресурсов.
Чтобы удалить ресурсы:
- Войдите на портал Azure, а затем выберите группы Resource.
- Выберите имя группы ресурсов, содержащей IoT Edge тестовые ресурсы.
- Просмотрите список ресурсов, содержащихся в группе ресурсов. Если вы хотите удалить их все, щелкните Удалить группу ресурсов. Если вы хотите удалить только некоторые из них, выберите каждый ресурс, чтобы удалить их по отдельности.
Следующие шаги
В этом руководстве вы создали модуль функции Azure с кодом для фильтрации необработанных данных, созданных устройством IoT Edge.
Перейдите к следующим руководствам, чтобы узнать о других способах, которыми Azure IoT Edge может помочь превратить данные в бизнес-аналитику на краю.