Использование динамической телеметрии с предварительно настроенным решением для удаленного мониторинга
Динамическая телеметрия позволяют визуализировать любые данные телеметрии, отправленные в предварительно настроенное решение для удаленного мониторинга. Имитации устройств, развертываемые вместе с предварительно настроенным решением, отправляют данные телеметрии температуры и влажности, которые можно отобразить на панели мониторинга. Если настроить существующие имитации устройств, создать имитации устройств или подключить физические устройства к предварительно настроенному решению, то это позволит отправлять другие значения телеметрии, такие как внешняя температура, число оборотов в минуту или скорость ветра. Затем эти дополнительные данные телеметрии можно будет визуализировать на панели мониторинга.
В этом учебнике используется простая имитация устройства Node.js, которую можно легко изменить для экспериментов с динамической телеметрией.
Чтобы завершить этот учебник, потребуется следующее.
- Активная подписка Azure. Если ее нет, можно создать бесплатную пробную учетную запись всего за несколько минут. Дополнительные сведения см. на странице бесплатной пробной версии Azure.
- Node.js версии 0.12.x или более поздней.
Этот учебник подходит для любой операционной системы, например Windows или Linux, в которой можно установить Node.js.
Подготовка решения
Если вы еще не подготовили предварительно настроенное решение для удаленного мониторинга в своей учетной записи, то выполните следующие действия:
- Войдите на сайт azureiotsuite.com с помощью учетных данных Azure и щелкните +, чтобы создать решение.
- На плитке Удаленный мониторинг щелкните Выбрать.
- Укажите имя для предварительно настроенного решения удаленного мониторинга.
- Выберите область и подписку, которые вы хотите использовать для подготовки решения.
- Щелкните Создать решение , чтобы начать процесс подготовки. Этот процесс обычно занимает несколько минут.
Дождитесь завершения процесса подготовки.
- Щелкните плитку решения с состоянием Подготовка.
- Следите за состояниями подготовки по мере развертывания служб Azure в рамках подписки Azure.
- Когда подготовка будет завершена, состояние изменится на Готово.
- Щелкните плитку, чтобы просмотреть подробные сведения о решении на правой панели.
Примечание.
Если при развертывании предварительно настроенного решения возникают проблемы, см. статьи Разрешения на сайте azureiotsuite.com и Часто задаваемые вопросы об IoT Suite. Если проблемы не удается устранить, отправьте запрос в службу поддержки на портале.
Есть ли сведения, которые вы ожидали увидеть и которые не указаны для вашего решения? Сообщите нам о своих предложениях на сайте User Voice.
Настройка имитации устройства Node.js
На панели удаленного мониторинга щелкните + Добавить устройство, а затем добавьте пользовательское устройство. Запишите имя узла Центра Интернета вещей, идентификатор устройства и ключ устройства. Они потребуются позже, при подготовке клиентского приложения устройства remote_monitoring.js.
Убедитесь, что на компьютере разработки установлен компонент Node.js 0.12.x или более поздняя версия. Выполните команду
node --version
в командной строке или оболочке, чтобы проверить версию. Сведения об использовании диспетчера пакетов для установки Node.js в Linux см. в разделе Installing Node.js via package manage (Установка Node.js с помощью диспетчера пакетов).После установки Node.js клонируйте последнюю версию репозитория azure-iot-sdks-node на свой компьютер разработки. Всегда используйте ветвь master , чтобы получать последние версии библиотек и примеров.
Из папки node/device/samples в локальной копии репозитория azure-iot-sdks-node скопируйте в пустую папку на компьютере разработки следующие два файла:
- packages.json
- remote_monitoring.js
Откройте файл remote_monitoring.js и найдите следующее определение переменной.
var connectionString = "[IoT Hub device connection string]";
Замените [IoT Hub device connection string] строкой подключения устройства. Используйте значения имени узла Центра Интернета вещей, идентификатора устройства и ключа устройства, которые вы записали на шаге 1. Строка подключения имеет следующий формат:
HostName={your IoT Hub hostname};DeviceId={your device id};SharedAccessKey={your device key}
Если имя узла Центра Интернета вещей — contoso, а идентификатор устройства — mydevice, то строка подключения будет выглядеть как следующий фрагмент кода:
var connectionString = "HostName=contoso.azure-devices.net;DeviceId=mydevice;SharedAccessKey=2s ... =="
Сохраните файл. Выполните следующие команды в оболочке или командной строке в папке, содержащей эти файлы, для установки необходимых пакетов, а затем запустите пример приложения.
npm install node remote_monitoring.js
Наблюдение динамической телеметрии в действии
На панели мониторинга отображаются данные телеметрии температуры и влажности из существующих имитаций устройств.
Если выбрать имитацию устройства Node.js, которая запускалась в предыдущем разделе, отобразятся данные телеметрии температуры, влажности и внешней температуры.
Решение для удаленного мониторинга автоматически определяет тип дополнительных данных телеметрии внешней температуры и добавляет их на диаграмму на панели мониторинга.
Добавление типа данных телеметрии
Следующий шаг — заменить данные телеметрии, созданные имитацией устройства Node.js, новым набором значений.
Остановите имитацию устройства Node.js, нажав клавиши Ctrl+C в командной строке или оболочке.
В файле remote_monitoring.js можно увидеть базовые значения для существующих данных телеметрии температуры, влажности и внешней температуры. Добавьте базовое значение данных для rpm следующим образом.
// Sensors data var temperature = 50; var humidity = 50; var externalTemperature = 55; var rpm = 200;
Имитированное устройство Node.js добавляет случайное приращение базовых значений данных с помощью функции generateRandomIncrement, определенной в файле remote_monitoring.js. Рандомизируйте значение rpm , добавив строку кода после существующего кода рандомизации следующим образом.
temperature += generateRandomIncrement(); externalTemperature += generateRandomIncrement(); humidity += generateRandomIncrement(); rpm += generateRandomIncrement();
Добавьте новое значение rpm в полезные данные JSON, которые устройство отправляет в Центр Интернета вещей.
var data = JSON.stringify({ 'DeviceID': deviceId, 'Temperature': temperature, 'Humidity': humidity, 'ExternalTemperature': externalTemperature, 'RPM': rpm });
Запустите имитацию устройства Node.js с помощью следующей команды.
node remote_monitoring.js
Вы увидите новый тип данных телеметрии RPM на диаграмме на панели мониторинга.
Примечание.
Может потребоваться отключить и снова включить устройство Node.js на странице Устройства на панели мониторинга, чтобы немедленно отобразить изменения.
Настройка отображения панели мониторинга
Сообщение Device-Info может содержать метаданные о данных телеметрии, которые устройство может отправлять в Центр Интернета вещей. В этих метаданных могут быть указаны типы данных телеметрии, отправляемых устройством. Измените значение deviceMetaData в файле remote_monitoring.js, чтобы добавить определение Telemetry после определения Commands. Определение Commands показано в следующем фрагменте кода (не забудьте добавить ,
после определения Commands).
'Commands': [{
'Name': 'SetTemperature',
'Parameters': [{
'Name': 'Temperature',
'Type': 'double'
}]
},
{
'Name': 'SetHumidity',
'Parameters': [{
'Name': 'Humidity',
'Type': 'double'
}]
}],
'Telemetry': [{
'Name': 'Temperature',
'Type': 'double'
},
{
'Name': 'Humidity',
'Type': 'double'
},
{
'Name': 'ExternalTemperature',
'Type': 'double'
}]
Примечание.
Решение для удаленного мониторинга проверяет соответствие регистра при сравнении определения метаданных с информацией в потоке данных телеметрии.
Добавление определения Telemetry , показанное в предыдущем фрагменте кода, не изменяет поведение панели мониторинга. Тем не менее метаданные также могут содержать атрибут DisplayName для настройки отображения на панели мониторинга. Измените определение метаданных Telemetry , как показано во фрагменте кода ниже.
'Telemetry': [
{
'Name': 'Temperature',
'Type': 'double',
'DisplayName': 'Temperature (C*)'
},
{
'Name': 'Humidity',
'Type': 'double',
'DisplayName': 'Humidity (relative)'
},
{
'Name': 'ExternalTemperature',
'Type': 'double',
'DisplayName': 'Outdoor Temperature (C*)'
}
]
На следующем снимке экрана показано, как это изменение меняет легенду диаграммы на панели мониторинга.
Примечание.
Может потребоваться отключить и снова включить устройство Node.js на странице Устройства на панели мониторинга, чтобы немедленно отобразить изменения.
Фильтрация типов данных телеметрии
По умолчанию диаграмма на панели мониторинга отображает каждый ряд данных в потоке данных телеметрии. Можно использовать метаданные Device-Info , чтобы подавить вывод определенных типов данных телеметрии на диаграмме.
Чтобы сделать диаграмму доступной только для телеметрии температуры и влажности, опустите externalTemperature из метаданных телеметрии Device-Info следующим образом:
'Telemetry': [
{
'Name': 'Temperature',
'Type': 'double',
'DisplayName': 'Temperature (C*)'
},
{
'Name': 'Humidity',
'Type': 'double',
'DisplayName': 'Humidity (relative)'
},
//{
// 'Name': 'ExternalTemperature',
// 'Type': 'double',
// 'DisplayName': 'Outdoor Temperature (C*)'
//}
]
Outdoor Temperature (Наружная температура) больше не отображается на диаграмме.
Это изменение влияет только на отображение диаграммы. Значения данных ExternalTemperature по-прежнему сохраняются и остаются доступными для внутренней обработки.
Примечание.
Может потребоваться отключить и снова включить устройство Node.js на странице Устройства на панели мониторинга, чтобы немедленно отобразить изменения.
Обработка ошибок
Чтобы поток данных можно было отобразить на диаграмме, его значение Type в метаданных Device-Info должно соответствовать типу данных значений телеметрии. Например, если в метаданных указано, что Type данных влажности — int, а в потоке данных телеметрии обнаружен тип double, то данные телеметрии влажности не отображаются на диаграмме. Тем не менее значения Humidity по-прежнему сохраняются и остаются доступными для внутренней обработки.
Следующие шаги
Теперь, когда вы узнали, как использовать динамическую телеметрию, ознакомьтесь также со статьей о том, как с помощью предварительно настроенных решений применять сведения об устройстве: Метаданные сведений об устройстве в предварительно настроенном решении для удаленного мониторинга.