Развертывание решения Microsoft IoT Edge

Развернем решение IoT Edge в соответствии со статьей Maxima Khlupnov https://github.com/MaxKhlupnov/SmartHive.AbbEdge. Тестировать будем на частотном преобразователе Shneider Electric ATV212.

С развертыванием  Azure remote monitoring solution accelerator на подписку  Azure через www.azureiotsuite.com проблем нет. Сложности могут возникнуть разве что при создании бесплатного Azure аккаунта.

И, второй момент, если после работы не «загасить» все сервисы, то деньги на бесплатную подписку быстро закончаться. PowerShell скрипт для отключения всех IoT сервисов, которые потребляют деньги здесь.

Развертывание Azure IoT Edge runtime

Azure CLI скрипт выполняет все стадии подготовки до регистрации IoT устройства.

$resource_group_name = "IoTEdgeResources"
$hub_name = "SchneiderEquipment"

#Add the Azure IoT extension to the cloud shell instance.
az extension add --name azure-cli-iot-ext

#Create resource group to manage all the resources you use in this quickstart.
az group create --name $resource_group_name --location westus

#Create a free hub in the resource group.
#If you get an error because there's already one free hub in your subscription, change the SKU to S1.
az iot hub create --resource-group $resource_group_name --name $hub_name --sku F1

#Create a device named VariablSpeedDrivesATV212 in the hub.
$myEdgeDevice = "VariablSpeedDrivesATV212" 
az iot hub device-identity create --device-id $myEdgeDevice --hub-name $hub_name --edge-enabled
#az iot hub device-identity list --hub-name $hub_name
#az iot hub device-identity delete --resource-group $resource_group_name --hub-name $hub_name --device-id myEdgeDevice

#Retrieve the connection string for the device, which links your physical device with its identity in IoT Hub.
#Copy the connection string and save it. This string associates the physical device with the IoT Edge device identity in Azure.
az iot hub device-identity show-connection-string --device-id $myEdgeDevice --hub-name $hub_name

Финальная команда вернула такую строку соединения:

PS Azure:\> az iot hub device-identity show-connection-string --device-id $myEdgeDevice --hub-name $hub_name
{
  "cs": "HostName=SchneiderEquipment.azure-devices.net;DeviceId=VariablSpeedDrivesATV212;SharedAccessKey=F1f+lLzk69pLeSVbHyr8E1FpZr/muB5mSYBf0dJkcZ4="
}

Установка IoT Edge сервиса

Предполагается, что Docker уже установлен на системе.

Запускаем PowerShell консоль из-под администратора и выполняем PowerShell скрипт, как написано в документации. Тип контейнеров задан Linux. Если нужен Windows контейнер, то Install Azure IoT Edge runtime on Windows to use with Windows containers.

Скрипт скачает все необходимые службы:

. {Invoke-WebRequest -useb aka.ms/iotedge-win} | Invoke-Expression; `
Install-SecurityDaemon -Manual -ContainerOs Linux

Затем появится строка с запросом строки соединения. Вводим строку соединения полученную на предыдущем шаге без кавычек: HostName=SchneiderEquipment.azure-devices.net;DeviceId=VariablSpeedDrivesATV212;SharedAccessKey=F1f+lLzk69pLeSVbHyr8E1FpZr/muB5mSYBf0dJkcZ4=

В результате в случае успешного выполнения получаем:

Docker is running.
The container host is on supported build version 17134.
Downloading the latest version of IoT Edge security daemon.
Downloaded security daemon.
Updated system PATH.
Downloading vcruntime.
Skipping vcruntime installation because a newer version is already installed.
Added firewall exceptions for ports used by the IoT Edge service.
Added IoT Edge registry key.
Configured device for manual provisioning.
Configured device with hostname «NB-XXX».
Configured device with gateway address «XX.XX.XX.XX».
Set the Moby runtime network to azure-iot-edge.
Initialized the IoT Edge service.
This device is now provisioned with the IoT Edge runtime.
Check the status of the IoT Edge service with «Get-Service iotedge»
List running modules with «iotedge list»
Display logs from the last five minutes in chronological order with
Get-WinEvent -ea SilentlyContinue -FilterHashtable @{ProviderName=»iotedged»;LogName=»application»;StartTime=[datetime]::Now.AddMinutes(-5)} |
Select TimeCreated, Message |
Sort-Object @{Expression=»TimeCreated»;Descending=$false} |
Format-Table -AutoSize -Wrap

Развертываем IoT модули

Возвращаясь к статье Максима https://github.com/MaxKhlupnov/SmartHive.AbbEdge переходим к пункту «Deploy and configure IoT Edge modules».

Заходим в раздел «All resources» -> SchneiderEquipment.

Здесь следует отметить, что при развертывании решения удаленного управления имя Resource Group было задано «RemoteMonitoringTest1018»  в location «West Europe». При создании IoT Edge устройства я в скрипте указал другое название группы ресурсов и location.

Группа ресурсов используется для логического объединения сходных ресурсов. В прницпе, нет проблем переместить ресурс в другую группу. Достаточно зайти в «All resources» -> Выбрать ресурс -> В пункте resource group выбрать «Change».

Spread the love
Запись опубликована в рубрике Размышления о бизнесе с метками , , . Добавьте в закладки постоянную ссылку.