Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Устройство IoT Edge может служить шлюзом, который обеспечивает соединения между другими устройствами в локальной сети и вашим приложением IoT Central. Шлюз используется, когда устройство не может получить доступ к приложению IoT Central напрямую.
IoT Edge поддерживает шаблоны прозрачных и переводящих шлюзов. В этой статье приведена сводка по реализации шаблона прозрачного шлюза. В этой схеме шлюз передает сообщения от подчиненного устройства к конечной точке IoT-хаба в вашем приложении IoT Central. Шлюз не управляет сообщениями по мере их передачи. В IoT Central каждое нижнее устройство отображается как дочернее устройство шлюза:
Внимание
В этой статье содержатся шаги по подключению устройства с помощью подписи общего доступа, также называемой проверкой подлинности с использованием симметричного ключа. Этот метод проверки подлинности удобнее для тестирования и оценки, но проверка подлинности устройства с помощью сертификатов X.509 является более безопасным подходом. Дополнительные сведения см. в разделе Лучшие методы обеспечения безопасности IoT-решений > Безопасность подключения.
Для простоты в этой статье используются виртуальные машины для размещения конечных устройств и шлюзовых устройств. В реальной ситуации подчиненное устройство и шлюз находились бы на физических устройствах в вашей локальной сети.
В этой статье показано, как реализовать сценарий с помощью среды выполнения IoT Edge 1.4.
Предварительные условия
Для выполнения задач из этой статьи необходимо следующее:
Активная подписка Azure. Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.
Приложение IoT Central, созданное на основе шаблона Пользовательское приложение. Дополнительные сведения см. в статье Создание приложения IoT Central.
Чтобы выполнить действия, описанные в этой статье, загрузите на свой компьютер следующие файлы.
- Модель термостата (thermostat-1.json) — это файл модели устройства для низших устройств.
- Манифест прозрачного шлюза (EdgeTransparentGatewayManifest.json) — это манифест развертывания IoT Edge для устройства шлюза.
Импорт манифеста развертывания
Каждому устройству IoT Edge требуется манифест развертывания для настройки среды выполнения IoT Edge. Чтобы импортировать манифест развертывания для прозрачного шлюза IoT Edge, выполните следующие действия.
Перейдите к манифестам Edge.
Выберите +Создать, введите имя манифеста развертывания, например прозрачный шлюз , а затем отправьте скачанный ранее файл EdgeTransparentGatewayManifest.json .
Выберите "Создать", чтобы сохранить манифест развертывания в приложении.
Добавление шаблонов устройств
Как подчиненные устройства, так и устройство шлюза могут использовать шаблоны устройств в IoT Central. IoT Central позволяет моделировать связь между подчиненными устройствами и шлюзом, чтобы их можно было просматривать и управлять ими после того, как они подключатся. Шаблон устройства не требуется для подключения нижестоящего устройства к шлюзу.
Чтобы создать шаблон устройства для подчиненного устройства, создайте шаблон стандартного устройства, который будет моделировать возможности вашего устройства. В примере, приведенном в этой статье, используется скачаемая модель устройства термостата.
Чтобы создать шаблон устройства для подчиненного устройства, выполните следующие действия.
Создайте шаблон устройства и выберите тип шаблона Устройство IoT.
На странице Настройка мастера введите имя шаблона устройства, например Thermostat (Термостат).
После создания шаблона устройства выберите команду Импортировать модель. Выберите модель, например файл thermostat-1.json, загруженный ранее.
Чтобы создать набор представлений по умолчанию для термостата, выберите представления, затем выберите команду Создать представления по умолчанию.
публикация шаблона устройства;
Чтобы создать шаблон устройства для прозрачного шлюза IoT Edge, выполните следующие действия.
Создайте шаблон устройства и выберите тип шаблона Azure IoT Edge.
На странице Настройка мастера введите имя для шаблона устройства, например, Edge Gateway.
На странице настройки мастера установите флажок Это шлюзовое устройство.
На странице Отзыв выберите Создать.
На странице "Создание модели" выберите "Пользовательская модель".
Добавьте запись в раздел Связи в шаблоне устройства нижнего уровня.
На следующем снимке экрана показана страница "Связи " для устройства шлюза IoT Edge с подчиненными устройствами, используюющими шаблон устройства Thermostat :
На снимке экрана выше показан шаблон устройства шлюза IoT Edge, в котором нет определенных модулей. Прозрачный шлюз не требует модулей, так как среда выполнения IoT Edge пересылает сообщения с подчиненных устройств непосредственно в IoT Central. Если нужно, чтобы сам шлюз отправлял данные телеметрии, синхронизировал свойства или обрабатывал команды, такие возможности можно определить в корневом компоненте или в модуле.
Добавьте необходимые свойства и представления облака перед публикацией шаблонов шлюза и подключенных устройств.
Добавление устройств
При добавлении устройств в приложение IoT Central можно определить связь между подчиненными устройствами и прозрачным шлюзом.
Чтобы добавить устройства, выполните следующие действия.
Перейдите на страницу устройств в приложении IoT Central.
Добавьте экземпляр устройства прозрачного шлюза IoT Edge. При добавлении устройства убедитесь, что вы выбрали манифест развертывания прозрачного шлюза. В этой статье для устройства шлюза принимается идентификатор
edgegateway.Добавьте один или несколько экземпляров конечных устройств. В этой статье подчиненными устройствами являются термостаты с идентификаторами
thermostat1иthermostat2.Выберите в списке устройств каждое из подчиненных устройств и щелкните Подключить к шлюзу.
На следующем снимке экрана на странице Подчиненные устройства можно увидеть список устройств, подключенных к шлюзу.
В прозрачном шлюзе подчиненные устройства подключаются к самому шлюзу, а не к пользовательскому модулю, размещенному в шлюзе.
Перед развертыванием устройств необходимо подготовить следующие данные.
- Область идентификатора приложения IoT Central.
- Значения идентификаторов устройств для шлюза и подключенных устройств.
- Значения Первичного ключа для шлюза и подчиненных устройств.
Чтобы найти эти значения, перейдите к каждому из устройств в списке устройств и нажмите Подключить. Прежде чем продолжить, запишите эти значения.
Совет
Вы можете подключить устройства и установить связи без предварительного создания шаблонов устройств. Вы можете подключить неназначенное подчиненное устройство к неназначенному устройству шлюза.
Развертывание шлюза и устройств
Чтобы попробовать этот сценарий, выполните следующие действия, чтобы показать, как развернуть шлюз и подчиненные устройства на виртуальных машинах Azure.
Совет
Чтобы узнать, как развернуть среду выполнения IoT Edge на физическом устройстве, см. статью "Создание устройства IoT Edge" в документации по IoT Edge.
Чтобы опробовать конфигурацию с прозрачным шлюзом, нажмите следующую кнопку, чтобы развернуть две виртуальные машины Linux. Одна виртуальная машина имеет установленную среду выполнения IoT Edge 1.4 и служит прозрачным IoT Edge шлюзом. Другая виртуальная машина — это нижнее устройство, в котором выполняется код для отправки имитированной телеметрии термостата:
После развертывания и запуска двух виртуальных машин убедитесь, что на виртуальной машине edgegateway работает устройство шлюза IoT Edge.
Перейдите на страницу Устройства в приложении IoT Central. Если устройство шлюза IoT Edge подключено к IoT Central, у него будет отображаться состояние Подготовлено.
Откройте устройство шлюза IoT Edge и проверьте состояние модулей на странице модули. Если среда выполнения IoT Edge запущена успешно, модули $edgeAgent и $edgeHub будут в состоянии Выполняется:
Совет
Вам, возможно, придется подождать несколько минут, пока виртуальная машина запускается и устройство готовится в приложении IoT Central.
Настройка шлюза
Чтобы устройство IoT Edge могло работать в качестве прозрачного шлюза, на нем должны быть установлены сертификаты, которые будут идентифицировать его для любых подчиненных устройств. В этой статье используются демонстрационные сертификаты. В рабочей среде используйте сертификаты, полученные от вашего центра сертификации.
Чтобы создать демонстрационные сертификаты и установить их на устройстве шлюза, выполните следующие действия.
Подключитесь по протоколу SSH и выполните вход на виртуальную машину устройства шлюза.
Выполните следующие команды, чтобы клонировать репозиторий IoT Edge и создать демонстрационные сертификаты:
# Clone the repo cd ~ git clone https://github.com/Azure/iotedge.git # Generate the demo certificates mkdir certs cd certs cp ~/iotedge/tools/CACertificates/*.cnf . cp ~/iotedge/tools/CACertificates/certGen.sh . ./certGen.sh create_root_and_intermediate ./certGen.sh create_edge_device_ca_certificate "mycacert"После выполнения вышеприведенных команд следующие файлы будут готовы к использованию в дальнейших шагах.
- ~/certs/certs/azure-iot-test-only.root.ca.cert.pem — корневой сертификат ЦС, используемый для создания всех других демонстрационных сертификатов при тестировании сценария IoT Edge.
- ~/certs/certs/iot-edge-device-mycacert-full-chain.cert.pem — сертификат ЦС устройства, на который ссылается файл конфигурации IoT Edge. В сценарии со шлюзом с помощью этого сертификата удостоверяющего центра (ЦС) устройство IoT Edge проверяет свою подлинность потребляющим устройствам.
- ~/certs/private/iot-edge-device-mycacert.key.pem — закрытый ключ, связанный с сертификатом ЦС устройства.
Подробнее об этих демонстрационных сертификатах см. в статье Создание демонстрационных сертификатов для тестирования функций устройства IoT Edge.
Откройте файл config.toml в текстовом редакторе. Например:
sudo nano /etc/aziot/config.tomlНайдите следующие параметры в файле конфигурации. Добавьте параметры сертификата следующим образом:
trust_bundle_cert = "file:///home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem" [edge_ca] cert = "file:///home/AzureUser/certs/certs/iot-edge-device-ca-mycacert-full-chain.cert.pem" pk = "file:///home/AzureUser/certs/private/iot-edge-device-ca-mycacert.key.pem"В предыдущем примере предполагается, что вы вошли в систему как AzureUser и создали сертификат ЦС устройства с именем mycacert.
Сохраните изменения и перезапустите среду выполнения IoT Edge:
sudo iotedge config apply
Если среда выполнения IoT Edge после внесенных изменений запустится успешно, то состояние модулей $edgeAgent и $edgeHub на странице Модули устройства шлюза в IoT Central изменится на Выполняется.
Если среда выполнения не запускается, проверьте изменения, внесенные в файл конфигурации IoT Edge, и ознакомьтесь с разделом "Устранение неполадок устройства IoT Edge".
Ваш прозрачный шлюз настроен и готов начать пересылку телеметрических данных от устройств нижнего уровня.
Подключение подчиненного устройства
IoT Central использует службу подготовки устройств (DPS) для подготовки устройств в IoT Central. В настоящее время IoT Edge не может использовать DPS для конфигурирования подчиненного устройства в вашем приложении IoT Central. Ниже показано, как подготовить thermostat1 устройство вручную. Для выполнения этих действий вам потребуется среда с установленным Python и подключением к Интернету. Проверьте Azure IoT Python SDK для актуальных требований к версии Python. В Azure Cloud Shell предварительно установлен Python:
Выполните следующую команду, чтобы установить модуль
azure.iot.device:pip install azure.iot.deviceВыполните следующую команду, чтобы скачать скрипт Python, который выполняет подготовку устройства:
wget https://raw.githubusercontent.com/Azure-Samples/iot-central-docs-samples/main/transparent-gateway-1-4/provision_device.pyЧтобы подготовить нижестоящее
thermostat1устройство в приложении IoT Central, выполните следующие команды, заменив{your application id scope}и{your device primary key}. Вы записали эти значения, когда добавляли устройства в приложение IoT Central.export IOTHUB_DEVICE_DPS_DEVICE_ID=thermostat1 export IOTHUB_DEVICE_DPS_ID_SCOPE={your application id scope} export IOTHUB_DEVICE_DPS_DEVICE_KEY={your device primary key} python provision_device.py
В вашем приложении IoT Central убедитесь, что статус устройства для thermostat1 устройства теперь подготовлено.
Настройка подчиненного устройства
Примечание.
IoT Central не поддерживает проверку подлинности сертификата X.509 для подчиненных устройств, подключенных к прозрачному шлюзу IoT Edge.
В предыдущем разделе вы настроили виртуальную машину edgegateway, используя демонстрационные сертификаты, чтобы она могла работать в качестве шлюза. Виртуальная машина leafdevice готова к установке симулятора термостата, который задействует шлюз для подключения к IoT Central.
Виртуальной машине leafdevice требуется копия сертификата корневого ЦС, созданного на виртуальной машине edgegateway. Скопируйте файл /home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem с виртуальной машины edgegateway в свой домашний каталог на виртуальной машине leafdevice. Для копирования файлов между виртуальными машинами Linux можно использовать команду scp . Например, с leafdevice компьютера:
scp AzureUser@edgegateway:/home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem .
Сведения о том, как проверить подключение от подчиненного устройства к шлюзу, см. в разделе Тестирование подключения к шлюзу.
Чтобы запустить симулятор термостата на виртуальной машине leafdevice, выполните следующие действия.
Используйте SSH, чтобы подключиться к
leafdeviceвиртуальной машине и войти в нее.Загрузите пример на Python в свой домашний каталог:
cd ~ wget https://raw.githubusercontent.com/Azure-Samples/iot-central-docs-samples/main/transparent-gateway-1-4/simple_thermostat.pyУстановите модуль Python для устройств Интернет вещей Azure:
sudo apt update sudo apt install python3-pip pip3 install azure.iot.deviceЗадайте переменные среды, чтобы настроить пример. Замените
{your device shared key}на первичный ключthermostat1, который вы записали ранее. В значениях переменных ниже предполагается, что имя виртуальной машины шлюза —edgegateway, а идентификатор устройства термостата —thermostat1:export IOTHUB_DEVICE_SECURITY_TYPE=connectionString export IOTHUB_DEVICE_CONNECTION_STRING="HostName=edgegateway;DeviceId=thermostat1;SharedAccessKey={your device shared key}" export IOTEDGE_ROOT_CA_CERT_PATH=~/azure-iot-test-only.root.ca.cert.pemОбратите внимание, что в строке подключения используется имя устройства шлюза, а не имя центра Интернета вещей.
Чтобы запустить код, выполните следующую команду:
python3 simple_thermostat.pyВыходные данные этой команды выглядят наподобие следующего:
Connecting using Connection String HostName=edgegateway;DeviceId=thermostat1;SharedAccessKey={your device shared key} Listening for command requests and property updates Press Q to quit Sending telemetry for temperature Sent message Sent message Sent message ...Совет
Если возникает ошибка при попытке подключения нижестоящего устройства. Попробуйте повторно запустить этапы настройки устройства.
Чтобы просмотреть телеметрию в IoT Central, перейдите на страницу Обзор устройства thermostat1:
На странице Сведения можно просмотреть значения свойств, отправляемые подчиненным устройством, а со страницы Команды можно выполнять команды на подчиненном устройстве.