Поделиться через


Преобразование данных вне Интернета вещей

Устройства Интернета вещей (IoT) отправляют данные в различных форматах. Чтобы использовать данные устройства с помощью приложения IoT Central, может потребоваться преобразование, чтобы:

  • сделать формат данных совместимым с приложением IoT Central;
  • преобразовать единицы измерения;
  • вычислить новые метрики;
  • обогатить данные из других источников.

В этой статье показано, как преобразовывать данные устройства вне IoT Central на входе или на выходе.

Примечание.

IoT Central также может преобразовывать данные внутри приложения IoT Central, чтобы узнать больше о сопоставлении данных телеметрии при входе в IoT Central и преобразовании данных внутри приложения IoT Central для экспорта.

На следующей схеме показаны три маршрута данных, которые включают преобразования:

Сводка по маршрутам преобразования данных входящего и исходящего трафика

В следующей таблице показаны три примера типов преобразования:

Преобразование Description Пример Примечания.
Формат сообщений Преобразование в сообщения JSON или работа с ними. CSV в JSON На входе. IoT Central принимает только сообщения JSON со значениями. Дополнительные сведения см. в разделе Полезные данные телеметрии, свойств и команд.
Вычисления Математические функции, которые могут выполняться Функциями Azure. Преобразование единиц измерения: градусы Фаренгейта в градусы Цельсия. Преобразование с использованием шаблона исходящего трафика для использования преимуществ масштабируемого входящего трафика устройства через прямое подключение к IoT Central. Преобразование данных позволяет использовать функции IoT Central, такие как визуализации и задания.
Обогащение сообщений Обогащения из внешних источников данных, не найденные в свойствах или телеметрии устройства. Дополнительные сведения о внутренних обогащениях см. в статье "Экспорт данных Интернета вещей в облачные назначения с помощью служба хранилища BLOB-объектов". Добавление сведений о погоде в сообщения с помощью данных расположения с устройств. Преобразование с использованием шаблона исходящего трафика для использования преимуществ масштабируемого входящего трафика устройства через прямое подключение к IoT Central.

Необходимые компоненты

Для выполнения шагов из этого руководства вам понадобится следующее:

Преобразование данных на входе

Для преобразования данных устройства на входе существует два варианта:

  • IoT Edge. Используйте модуль IoT Edge для преобразования данных от подчиненных устройств перед отправкой данных в приложение IoT Central.

  • Мост устройства IoT Central.Мост устройства IoT Central подключает другие облака устройств Интернета вещей, такие как Sigfox, Particle и The Things Network, к IoT Central. Мост устройств использует функцию Azure для пересылки данных. Можно настроить функцию для преобразования данных устройства.

Использование IoT Edge для преобразования данных устройства

Преобразование данных на входе с помощью IoT Edge

В этом сценарии модуль IoT Edge преобразует данные с подчиненных устройств перед их пересылкой в приложение IoT Central. Ниже приведены основные действия, необходимые для настройки такого сценария.

  1. Настройка устройства IoT Edge. Установите и подготовьте устройство IoT Edge как шлюз и подключите шлюз к приложению IoT Central.

  2. Подключение подчиненного устройства к устройству IoT Edge. Подключите подчиненные устройства к устройству IoT Edge и подготовьте их для приложения IoT Central.

  3. Преобразование данных устройства в IoT Edge. Создайте модуль IoT Edge для преобразования данных. Разверните модуль на устройстве шлюза IoT Edge, который перенаправляет преобразованные данные устройства в приложение IoT Central.

  4. Проверка. Отправьте данные с подчиненного устройства в шлюз и убедитесь, что преобразованные данные устройства достигают приложения IoT Central.

В примере, описанном в следующих разделах, нижнее устройство отправляет данные JSON в следующем формате на устройство шлюза IoT Edge:

{
  "device": {
      "deviceId": "<downstream-deviceid>"
  },
  "measurements": {
    "temp": <temperature>,
    "pressure": <pressure>,
    "humidity": <humidity>,
    "scale": "celsius",
  }
}

Модуль IoT Edge используется для преобразования данных и преобразования значения температуры до CelsiusFahrenheit отправки в IoT Central:

{
  "device": {
      "deviceId": "<downstream-deviceid>"
  },
  "measurements": {
    "temp": <temperature>,
    "pressure": <pressure>,
    "humidity": <humidity>,
    "scale": "fahrenheit"
  }
}

Просмотреть код

Ниже показано, как настроить этот сценарий.

Создание настраиваемого модуля

В этом сценарии устройство IoT Edge запускает настраиваемый модуль, который преобразует данные с подчиненного устройства. Перед развертыванием и настройкой устройства IoT Edge необходимо выполнить следующие действия.

  • Создать настраиваемый модуль.
  • Добавить настраиваемый модуль в реестр контейнеров.

Среда выполнения IoT Edge скачивает настраиваемые модули из реестра контейнеров, например Реестра контейнеров Azure или Docker Hub. Azure Cloud Shell содержит все средства, необходимые для создания реестра контейнеров, создания модуля и передачи модуля в реестр.

Чтобы создать реестр контейнеров, выполните следующие действия.

  1. Откройте Azure Cloud Shell и войдите в свою подписку Azure.

  2. Выберите оболочку Bash .

  3. Выполните следующие команды, чтобы создать Реестр контейнеров Azure.

    REGISTRY_NAME="{your unique container registry name}"
    az group create --name ingress-scenario --location eastus
    az acr create -n $REGISTRY_NAME -g ingress-scenario --sku Standard --admin-enabled true
    az acr credential show -n $REGISTRY_NAME
    

    Запишите значения username и password, они вам потребуются позже. Вам потребуется только один из паролей, отображаемых в выходных данных команды.

Чтобы создать настраиваемый модуль в Azure Cloud Shell, выполните следующие действия.

  1. В Azure Cloud Shell клонируйте репозиторий GitHub, содержащий исходный код модуля:

    git clone https://github.com/iot-for-all/iot-central-transform-with-iot-edge
    
  2. Чтобы создать настраиваемый модуль, выполните следующие команды в Azure Cloud Shell:

    cd iot-central-transform-with-iot-edge/custommodule/transformmodule
    az acr build --registry $REGISTRY_NAME --image transformmodule:0.0.1-amd64 -f Dockerfile.amd64 .
    

    Ожидание выполнения предыдущих команд может занять несколько минут.

Настройка устройства IoT Edge

В этом сценарии используется устройство шлюза IoT Edge для преобразования данных с любых нижестоящих устройств. В этом разделе описывается, как создать шаблон устройства IoT Central для устройства шлюза в приложении IoT Central. Устройства IoT Edge используют манифест развертывания для настройки своих модулей.

В этом примере нижестоящему устройству не нужен шаблон устройства. Нижестоящему устройству зарегистрировано в IoT Central, чтобы создать учетные данные, необходимые для подключения устройства IoT Edge. Так как модуль IoT Edge преобразует данные, все данные телеметрии нижестоящего устройства поступают в IoT Central, как если бы устройство IoT Edge отправило его.

Чтобы создать шаблон устройства для шлюза IoT Edge, выполните следующие действия.

  1. Сохраните копию манифеста развертывания на локальном компьютере разработки: moduledeployment.json.

  2. Откройте локальную копию файла манифеста moduledeployment.json в текстовом редакторе.

  3. Найдите раздел registryCredentials и замените заполнители значениями, записанными при создании Реестра контейнеров Azure. Значение address выглядит как {your username}.azurecr.io.

  4. Найдите раздел settings для transformmodule. Замените {your username} тем же значением, которое использовалось на предыдущем шаге. Сохраните изменения.

  5. В приложении IoT Central перейдите на страницу манифестов Edge.

  6. Выберите + Создать. Введите имя, например Преобразователь для манифеста развертывания, а затем отправьте скачанный ранее файл moduledeployment.json . Манифест развертывания включает в себя настраиваемый модуль, называемый преобразованием.

  7. Нажмите кнопку "Далее" и "Создать".

  8. Перейдите на страницу Шаблоны устройств в приложении IoT Central.

  9. Выберите + Создать, щелкните Azure IoT Edge, а затем — Далее: настроить.

  10. В качестве имени шаблона устройства введите Устройство шлюза IoT Edge. Установите флажок Это устройство шлюза.

  11. Нажмите кнопку "Далее": проверка, а затем нажмите кнопку "Создать".

  12. На странице "Создание модели" выберите "Пользовательская модель".

  13. В модели выберите модули и импортируйте модули из манифеста. Выберите манифест развертывания Преобразователя и нажмите кнопку "Импорт".

Манифест развертывания не указывает данные телеметрии, отправляемые модулем. Чтобы добавить определения телеметрии в шаблон устройства, выполните шаги ниже:

  1. Выберите модуль преобразования вразделе "Модули" шаблона устройства шлюза IoT Edge.

  2. Выберите " Добавить возможность " и используйте сведения в следующих таблицах, чтобы добавить новый тип телеметрии:

    Параметр Значение
    Отображаемое имя Устройство
    Имя. device
    Тип возможности Телеметрия
    Семантический тип нет
    Схема Object

    Определение объекта:

    Отображаемое имя Имя. Схема
    Идентификатор устройства deviceId Строка

    Сохранение изменений.

  3. Выберите " Добавить возможность " и используйте сведения в следующих таблицах, чтобы добавить новый тип телеметрии:

    Параметр Значение
    Отображаемое имя Measurements
    Имя. измерения
    Тип возможности Телеметрия
    Семантический тип нет
    Схема Object

    Определение объекта:

    Отображаемое имя Имя. Схема
    Температура Температура Двойной
    Давление давление Двойной
    Влажность humidity Двойной
    Масштабирование scale Строка

    Сохранение изменений.

  4. В модели выберите "Связи". Не выбирайте связи в модуле преобразования .

  5. Выберите " Добавить связь".

  6. Введите нижестоящий датчик в качестве отображаемого имени, датчика в качестве имени и выберите "Любой " в качестве целевого объекта. Выберите Сохранить.

  7. Щелкните Опубликовать, чтобы опубликовать шаблон устройства.

Чтобы зарегистрировать устройство шлюза в IoT Central, выполните следующие действия.

  1. Перейдите на страницу Устройства в приложении IoT Central.

  2. Выберите устройство шлюза IoT Edge и нажмите кнопку +Создать. Введите устройство шлюза IoT Edge в качестве имени устройства, введите шлюз-01 в качестве идентификатора устройства, убедитесь, что устройство шлюза IoT Edge выбрано в качестве шаблона устройства, и не выбрано в качестве имитации этого устройства?. Выберите Преобразователь в качестве пограничного манифеста. Нажмите кнопку создания.

  3. В списке устройств щелкните Устройство шлюза IoT Edge и выберите Подключить.

  4. Запишите значения области идентификаторов, идентификатора устройства и первичного ключа для Устройства шлюза IoT Edge. Они понадобятся вам позже.

Чтобы зарегистрировать подчиненное устройство в IoT Central, выполните следующие действия.

  1. Перейдите на страницу Устройства в приложении IoT Central.

  2. Не выбирайте шаблон устройства. Выберите + Создать. Введите нижестоящий 01 в качестве имени устройства, введите внизусто-01 в качестве идентификатора устройства, убедитесь, что шаблон устройства не назначен и не выбран в качестве имитации этого устройства?. Нажмите кнопку создания.

  3. В списке устройств щелкните внизу 01 устройство, а затем выберите "Управление подключением устройства > к шлюзу".

  4. В диалоговом окне "Подключение к шлюзу" выберите шаблон устройства устройства шлюза IoT Edge и экземпляр устройства устройства шлюза IoT Edge. Выберите Вложить.

  5. На нижнем устройстве 01 выберите Подключение.

  6. Запишите значения идентификатора область, идентификатора устройства и первичного ключа для устройства Нижнего потока 01. Они понадобятся вам позже.

Развертывание шлюза и подчиненных устройств

Для удобства в этой статье используются виртуальные машины Azure для запуска шлюза и подчиненных устройств. Чтобы создать две виртуальные машины Azure, нажмите кнопку "Развернуть в Azure " после следующей таблицы. Используйте сведения в таблице для завершения формы пользовательского развертывания :

Поле значение
Группа ресурсов ingress-scenario
Префикс метки DNS (шлюз) Уникальное DNS-имя для этого компьютера, например <your name>edgegateway
Префикс метки DNS (подчиненное устройство) Уникальное DNS-имя для этого компьютера, например <your name>downstream
Идентификатор области Область идентификаторов, которую вы записали ранее
Идентификатор устройства (шлюз IoT Edge) gateway-01
Ключ устройства (шлюз IoT Edge) Значение первичного ключа, которое вы записали ранее
Тип проверки подлинности Пароль
Пароль или ключ администратора Выбранный пароль для учетной записи AzureUser на обеих виртуальных машинах.

Развертывание в Azure Button

Выберите Просмотр и создание, а затем щелкните Создать. Создание виртуальных машин в группе ресурсов ingress-scenario занимает несколько минут.

Чтобы проверка правильное выполнение устройства шлюза IoT Edge:

  1. Откройте приложение IoT Central. Найдите Устройство шлюза IoT Edge в списке устройств на странице Устройства.

  2. Откройте вкладку Модули и проверьте состояние трех модулей. Запуск среды выполнения IoT Edge на виртуальной машине займет несколько минут. При запуске виртуальной машины состояние трех модулей выполняется. Если среда выполнения IoT Edge не запускается, см. раздел Устранение неполадок устройства IoT Edge.

Чтобы устройство IoT Edge могло работать в качестве шлюза, на нем должны быть установлены сертификаты, которые будут подтверждать его удостоверение для любых подчиненных устройств. В этой статье используются демонстрационные сертификаты. В рабочей среде используйте сертификаты, полученные от вашего центра сертификации.

Чтобы создать демонстрационные сертификаты и установить их на устройстве шлюза, выполните следующие действия.

  1. Подключитесь по протоколу SSH и выполните вход на виртуальную машину устройства шлюза. DNS-имя виртуальной машины можно найти на портале Azure. Перейдите к виртуальной машине edgegateway в группе ресурсов ingress-scenario.

    Совет

    Прежде чем использовать SSH для подключения с локального компьютера или из Azure Cloud Shell, может потребоваться открыть порт 22 для доступа SSH на обеих виртуальных машинах.

  2. Выполните следующие команды, чтобы клонировать репозиторий 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 — сертификат ЦС устройства, на который ссылается файл config.yaml. В сценарии со шлюзом с помощью этого сертификата ЦС устройство IoT Edge подтверждает свое удостоверение подчиненным устройствам.
    • ~/certs/private/iot-edge-device-mycacert.key.pem — закрытый ключ, связанный с сертификатом ЦС устройства.

    Подробнее об этих демонстрационных сертификатах см. в статье Создание демонстрационных сертификатов для тестирования функций устройства IoT Edge.

  3. Откройте файл config.toml в текстовом редакторе. Например:

    sudo nano /etc/aziot/config.toml
    
  4. Раскомментируйте и измените параметры сертификатов, как показано ниже:

    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.

  5. Сохраните изменения и выполните следующую команду, чтобы проверить правильность файла config.toml :

    sudo iotedge check
    
  6. Перезапустите среду выполнения IoT Edge:

    sudo iotedge config apply
    

Если среда выполнения IoT Edge успешно запускается после внесения изменений, состояние модулей $edgeAgent и $EdgeHub меняется на Выполняется. Эти значения состояния можно просмотреть на странице Модули для устройства шлюза в IOT Central.

Если среда выполнения не запускается, проверка изменения, внесенные в config.toml, и ознакомьтесь с разделом "Устранение неполадок устройства IoT Edge".

Подключение подчиненного устройства к устройству IoT Edge

Чтобы подключить подчиненное устройство к устройству шлюза IoT Edge, выполните следующие действия.

  1. Подключитесь по протоколу SSH и выполните вход на виртуальную машину подчиненного устройства. DNS-имя виртуальной машины можно найти на портале Azure. Перейдите к виртуальной машине leafdevice в группе ресурсов ingress-scenario.

    Совет

    Прежде чем использовать SSH для подключения с локального компьютера или из Azure Cloud Shell, может потребоваться открыть порт 22 для доступа SSH на обеих виртуальных машинах.

  2. Чтобы клонировать репозиторий GitHub с исходным кодом для примера подчиненного устройства, выполните следующую команду:

    cd ~
    git clone https://github.com/iot-for-all/iot-central-transform-with-iot-edge
    
  3. Чтобы скопировать требуемый сертификат с устройства шлюза, выполните следующие команды scp. Эта команда scp использует имя узла edgegateway для идентификации виртуальной машины шлюза. Вам будет предложено ввести пароль:

    cd ~/iot-central-transform-with-iot-edge
    scp AzureUser@edgegateway:/home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem leafdevice/certs
    
  4. Перейдите в папку leafdevice и установите необходимые пакеты. Затем запустите сценарии build и start, чтобы подготовить и подключить устройство к шлюзу.

    cd ~/iot-central-transform-with-iot-edge/leafdevice
    sudo apt update
    curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash -
    sudo apt-get install nodejs
    npm install
    npm run-script build
    npm run-script start
    

    Во время sudo apt-get install nodejs команд можно попросить разрешить установку: нажмите, Y если появится запрос.

  5. Введите идентификатор устройства, идентификатор области и ключ SAS для ранее созданного подчиненного устройства. В качестве имени узла введите edgegateway. Выходные данные этой команды выглядят следующим образом:

    Registering device downstream-01 with scope 0ne00284FD9
    Registered device downstream-01.
    Connecting device downstream-01
    Connected device downstream-01
    Sent telemetry for device downstream-01
    Sent telemetry for device downstream-01
    Sent telemetry for device downstream-01
    Sent telemetry for device downstream-01
    Sent telemetry for device downstream-01
    Sent telemetry for device downstream-01
    

Для простоты код нижнего устройства подготавливает устройство в IoT Central. Как правило, подчиненные устройства подключаются через шлюз, так как они не могут подключаться к Интернету и поэтому не могут подключаться к конечной точке службы подготовки устройств. Дополнительные сведения см. в статье Подключение устройств с помощью Azure IOT Edge прозрачного шлюза.

Проверка

Чтобы проверить, работает ли сценарий, перейдите к устройству шлюза IoT Edge в IoT Central.

Снимок экрана: преобразованные данные на странице устройств.

  • Выберите Модули. Убедитесь, что три модуля IoT Edge ($edgeAgent, $edgeHub и transformmodule) работают.

  • Щелкните Необработанные данные. Данные телеметрии в столбце "Устройство " выглядят следующим образом:

    {"deviceId":"downstream-01"}
    

    Данные телеметрии в столбце "Измерения" выглядят следующим образом:

    {"temperature":85.21208,"pressure":59.97321,"humidity":77.718124,"scale":"farenheit"}
    

Температура отправляется в Фахренхейте. Так как устройство IoT Edge преобразует данные с подчиненного устройства, телеметрия связывается с устройством шлюза в IoT Central. Чтобы визуализировать преобразованную телеметрию, создайте представление в шаблоне устройства шлюза IoT Edge и повторно опубликуйте его.

Преобразование данных на выходе

Вы можете подключить устройства к IoT Central, экспортировать данные устройства в модуль вычислений, чтобы преобразовать их, а затем отправить преобразованные данные обратно в IoT Central для управления устройствами и их анализа. Например:

  • Устройства отправляют данные расположения в IoT Central.
  • IoT Central экспортирует данные в модуль вычислений, который дополняет данные о расположении данными о погоде.
  • Модуль вычислений отправляет дополненные данные обратно в IoT Central.

Мост устройства IoT Central можно использовать в качестве модуля вычислений для преобразования данных, экспортированных из IoT Central.

Преимуществом преобразования данных на выходе является то, что устройства подключаются непосредственно к IoT Central, что упрощает отправку команд на устройства или обновление свойств устройства. Однако использование этого метода может привести к превышению ежемесячного выделенного объема сообщений, из-за чего стоимость использования Azure IoT Central увеличится.

Использование моста устройства IoT Central для преобразования данных устройства

Преобразование данных на выходе с помощью IoT Edge

В этом сценарии модуль вычислений преобразует данные устройства, экспортированные из IoT Central, перед их отправкой обратно в приложение IoT Central. Ниже приведены основные действия, необходимые для настройки такого сценария.

  1. Настройка модуля вычислений. Создайте мост устройства IoT Central, который будет использоваться как модуль вычислений для преобразования данных.

  2. Преобразование данных устройства в мосте устройства. Преобразуйте данные в мосте устройств, изменив код функции моста устройства для варианта использования “Преобразование данных”.

  3. Включение потока данных из IoT Central в мост устройства. Экспортируйте данные из IoT Central в мост устройства для преобразования. Затем перешлите преобразованные данные обратно в IoT Central. При создании экспорта данных используйте фильтры свойств сообщений, чтобы экспортировать только непреобразованные данные.

  4. Проверка. Подключите устройство к приложению IoT Central и проверьте необработанные данные устройства и преобразованные данные в IoT Central.

В примере, описанном в следующих разделах, устройство отправляет на устройство шлюза IoT Edge данные CSV в следующем формате:

"<temperature in degrees C>, <humidity>, <latitude>, <longitude>"

Далее используется мост устройств, чтобы преобразовать данные устройства следующим образом:

  • изменить единицу измерения температуры с градусов Цельсия на градусы Фаренгейта;
  • обогатить данные устройства с помощью данных о погоде, полученных от метеослужбы Open Weather для значений широты и долготы.

Затем мост устройства отправляет преобразованные данные в IoT Central в следующем формате:

{
  "temp": <temperature in degrees F>,
  "humidity": <humidity>,
  "lat": <latitude>,
  "lon": <logitude>,
  "weather": {
    "weather_temp": <temperature at lat/lon>,
    "weather_humidity": <humidity at lat/lon>,
    "weather_pressure": <pressure at lat/lon>,
    "weather_windspeed": <wind speed at lat/lon>,
    "weather_clouds": <cloud cover at lat/lon>,
    "weather_uvi": <UVI at lat/lon>
  }
}

Ниже показано, как настроить этот сценарий.

Получение параметров подключения IoT Central

Перед настройкой этого сценария необходимо получить некоторые параметры подключения из приложения IoT Central:

  1. Войдите в приложение IoT Central.

  2. Перейдите к группам подключений устройств с разрешениями>.

  3. Запишите Область идентификаторов. Это значение понадобится позже.

  4. Выберите группу регистрации SAS-IoT-Devices. Запишите значение первичного ключа подписанного URL-адреса. Это значение понадобится позже.

Настройка модуля вычислений

В этом сценарии используется та же развернутая служба Функций Azure, что и для моста устройства IoT Central. Чтобы развернуть мост устройства, нажмите кнопку "Развернуть в Azure " после следующей таблицы. Используйте сведения в таблице для завершения формы пользовательского развертывания :

Поле значение
Группа ресурсов Создайте новую группу ресурсов с именем egress-scenario.
Область/регион Выберите ближайший к вам регион.
Идентификатор области Используйте Область идентификаторов, которую вы записали ранее.
Ключ SAS IoT Central Используйте первичный ключ подписанного URL-адреса для группы регистрации SAS-IoT-Devices. Вы записали это значение ранее.

Развернуть в Azure.

Выберите Просмотр и создание, а затем щелкните Создать. Создание функции Azure и связанных ресурсов в группе ресурсов egress-scenario занимает несколько минут.

Преобразование данных устройства в мосте устройства

Чтобы настроить мост устройства для преобразования экспортированных данных устройства, выполните следующие действия.

  1. Получите ключ API приложения от метеослужбы Open Weather. Учетная запись предоставляется бесплатно с ограниченными возможностями использования службы. Чтобы создать ключ API приложения, создайте учетную запись на портале метеослужбы Open Weather и следуйте инструкциям. Ключ API Open Weather вам потребуется позже.

  2. На портале Azure откройте приложение-функцию в группе ресурсов egress-scenario.

  3. В области навигации слева в разделе Средства разработки выберите Редактор службы приложений (предварительная версия).

  4. Нажмите кнопку Go →, чтобы открыть страницу редактора Служба приложений. Внесите следующие изменения:

    1. Откройте файл wwwroot/IoTCIntegration/index.js. Замените все содержимое этого файла кодом из файла index.js.

    2. В новом файле index.js обновите файл переменных openWeatherAppId с помощью ключа API Open Weather, полученного ранее.

      const openWeatherAppId = '<Your Open Weather API Key>'
      
    3. Добавьте свойство сообщения в данные, отправляемые функцией в IoT Central. IoT Central использует это свойство, чтобы предотвратить экспорт преобразованных данных. Чтобы внести это изменение, откройте файл wwwroot/IoTCIntegration/lib/engine.js. Найдите следующий код:

      if (timestamp) {
        message.properties.add('iothub-creation-time-utc', timestamp);
      }
      

      Добавьте следующий код сразу после предыдущего фрагмента кода.

      // add a message property that we can look for in data export to not re-compute computed telemetry
      message.properties.add('computed', true);
      

      Для справки можно просмотреть завершенный пример файла engine.js.

  5. В Редакторе службы приложений выберите Консоль в области навигации слева. Чтобы установить необходимые пакеты, выполните следующие команды:

    cd IoTCIntegration
    npm install
    

    Выполнение этой команды может занять несколько минут.

  6. Вернитесь на страницу обзора Функций Azure и перезапустите функцию.

    Перезапуск функции

  7. Выберите Функции в области навигации слева. Затем щелкните IoTCIntegration. Выберите Код + тест.

  8. Запишите URL-адрес функции. Это значение потребуется позже:

    Получение URL-адреса функции

Включение потока данных из IoT Central в мост устройства

В этом разделе описано, как настроить приложение Azure IoT Central.

Сначала сохраните файл модели устройства на локальном компьютере.

Чтобы добавить шаблон устройства в приложение IoT Central, перейдите в приложение IoT Central, а затем:

  1. Войдите в приложение IoT Central и перейдите на страницу Шаблоны устройств.

  2. Выберите + Создать, щелкните Устройство IoT, затем — Далее: настройка и введите Модель вычислений в качестве имени шаблона. Выберите Next: Review (Далее. Проверка). Затем выберите Создать.

  3. Выберите Импортировать модель и найдите предварительно скачанный файл model.json.

  4. После импорта модели щелкните Опубликовать, чтобы опубликовать шаблон устройства Модель вычислений.

Настройте экспорт данных для отправки данных в мост устройства:

  1. В приложении IoT Central выберите Экспорт данных.

  2. Щелкните + Создать назначение, чтобы создать назначение для использования с мостом устройства. Вызовите целевую функцию вычислений, а в качестве целевого типа выберите Веб-перехватчик. В поле “URL-адрес обратного вызова” вставьте URL-адрес функции, который вы записали ранее. Параметру Авторизация оставьте значение Без авторизации.

  3. Сохраните изменения.

  4. Выберите + Новый экспорт и создайте экспорт данных с именем Экспорт расчетов.

  5. Добавьте фильтр, чтобы экспортировать данные устройства только для шаблона устройства, который вы используете. Выберите +Фильтр, выберите шаблон устройства элемента, выберите оператор Equals и выберите созданный шаблон устройства модели вычислений.

  6. Добавьте фильтр сообщений, чтобы отличить преобразованные данные от непреобразованных. Этот фильтр предотвращает отправку преобразованных значений обратно в мост устройств. Выберите + Фильтр свойств сообщений и введите для имени значение вычисляемое, а затем выберите оператор Не существует. Строка computed используется в качестве ключевого слова в примере кода моста устройства.

  7. В качестве назначения выберите созданное ранее назначение Функция вычислений.

  8. Сохраните изменения. Примерно через минуту Состоянию экспорта будет присвоено значение Работает.

Проверка

Пример устройства, используемого для тестирования сценария, написан на Node.js. Убедитесь, что на локальном компьютере установлены Node.js и npm. Если вы не хотите устанавливать эти предварительные требования, используйте Azure Cloud Shell , где они предварительно установлены.

Чтобы запустить пример устройства, который тестирует сценарий:

  1. Клонируйте репозиторий GitHub, содержащий пример кода, выполнив следующую команду:

    git clone https://github.com/Azure/iot-central-compute
    
  2. Чтобы подключить пример устройства к приложению IoT Central, измените параметры подключения в файле iot-central-compute/device/device.js. Замените идентификатор области и ключ SAS группы значениями, которые были записаны ранее.

    // These values need to be filled in from your Azure IoT Central application
    //
    const scopeId = "<IoT Central Scope Id value>";
    const groupSasKey = "<IoT Central Group SAS key>";
    //
    

    Сохраните изменения.

  3. Используйте следующие команды, чтобы установить необходимые пакеты и запустить устройство:

    cd ~/iot-central-compute/device
    npm install
    node device.js
    
  4. Результат этой команды выглядит следующим образом:

    registration succeeded
    assigned hub=iotc-2bd611b0....azure-devices.net
    deviceId=computeDevice
    Client connected
    send status: MessageEnqueued [{"data":"33.23, 69.09, 30.7213, -61.1192"}]
    send status: MessageEnqueued [{"data":"2.43, 75.86, -2.6358, 162.935"}]
    send status: MessageEnqueued [{"data":"6.19, 76.55, -14.3538, -82.314"}]
    send status: MessageEnqueued [{"data":"33.26, 48.01, 71.9172, 48.6606"}]
    send status: MessageEnqueued [{"data":"40.5, 36.41, 14.6043, 14.079"}]
    
  5. В приложении IoT Central перейдите к устройству computeDevice. В представлении необработанных данных существует два разных потока телеметрии, которые отображаются примерно каждые пять секунд. Поток с немоделируемыми данными — это исходная телеметрия, поток с модельными данными — это данные, преобразованные функцией:

    Снимок экрана: исходные и преобразованные необработанные данные.

Очистка ресурсов

Если вам больше не нужны ресурсы Azure, созданные при выполнении действий, описанных в этом руководстве, удалите группы ресурсов на портале Azure.

В этом руководстве используются две группы ресурсов: ingress-scenario и egress-scenario.

Следующие шаги

В этой статье вы узнали о различных вариантах преобразования данных устройства для IoT Central: на входе и на выходе. В статье содержатся пошаговые руководства для двух следующих сценариев:

  • Использование модуля IoT Edge для преобразования данных от подчиненных устройств перед отправкой данных в приложение IoT Central.
  • Использование Функций Azure для преобразования данных вне IoT Central. В этом сценарии IoT Central использует экспорт данных для отправки входящих данных в функцию Azure для преобразования. Функция отправляет преобразованные данные обратно в приложение IoT Central.

Теперь, когда вы узнали, как преобразовать данные устройств за пределами приложения Azure IoT Central, вы можете узнать , как использовать обозреватель данных для анализа данных устройства в IoT Central.