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


Использование динамической телеметрии с предварительно настроенным решением для удаленного мониторинга

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

В этом учебнике используется простая имитация устройства Node.js, которую можно легко изменить для экспериментов с динамической телеметрией.

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

  • Активная подписка Azure. Если ее нет, можно создать бесплатную пробную учетную запись всего за несколько минут. Дополнительные сведения см. на странице бесплатной пробной версии Azure.
  • Node.js версии 0.12.x или более поздней.

Этот учебник подходит для любой операционной системы, например Windows или Linux, в которой можно установить Node.js.

Подготовка решения

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

  1. Войдите на сайт azureiotsuite.com с помощью учетных данных Azure и щелкните +, чтобы создать решение.
  2. На плитке Удаленный мониторинг щелкните Выбрать.
  3. Укажите имя для предварительно настроенного решения удаленного мониторинга.
  4. Выберите область и подписку, которые вы хотите использовать для подготовки решения.
  5. Щелкните Создать решение , чтобы начать процесс подготовки. Этот процесс обычно занимает несколько минут.

Дождитесь завершения процесса подготовки.

  1. Щелкните плитку решения с состоянием Подготовка.
  2. Следите за состояниями подготовки по мере развертывания служб Azure в рамках подписки Azure.
  3. Когда подготовка будет завершена, состояние изменится на Готово.
  4. Щелкните плитку, чтобы просмотреть подробные сведения о решении на правой панели.

Примечание.

Если при развертывании предварительно настроенного решения возникают проблемы, см. статьи Разрешения на сайте azureiotsuite.com и Часто задаваемые вопросы об IoT Suite. Если проблемы не удается устранить, отправьте запрос в службу поддержки на портале.

Есть ли сведения, которые вы ожидали увидеть и которые не указаны для вашего решения? Сообщите нам о своих предложениях на сайте User Voice.

Настройка имитации устройства Node.js

  1. На панели удаленного мониторинга щелкните + Добавить устройство, а затем добавьте пользовательское устройство. Запишите имя узла Центра Интернета вещей, идентификатор устройства и ключ устройства. Они потребуются позже, при подготовке клиентского приложения устройства remote_monitoring.js.

  2. Убедитесь, что на компьютере разработки установлен компонент Node.js 0.12.x или более поздняя версия. Выполните команду node --version в командной строке или оболочке, чтобы проверить версию. Сведения об использовании диспетчера пакетов для установки Node.js в Linux см. в разделе Installing Node.js via package manage (Установка Node.js с помощью диспетчера пакетов).

  3. После установки Node.js клонируйте последнюю версию репозитория azure-iot-sdks-node на свой компьютер разработки. Всегда используйте ветвь master , чтобы получать последние версии библиотек и примеров.

  4. Из папки node/device/samples в локальной копии репозитория azure-iot-sdks-node скопируйте в пустую папку на компьютере разработки следующие два файла:

    • packages.json
    • remote_monitoring.js
  5. Откройте файл remote_monitoring.js и найдите следующее определение переменной.

    var connectionString = "[IoT Hub device connection string]";
    
  6. Замените [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 ... =="
    
  7. Сохраните файл. Выполните следующие команды в оболочке или командной строке в папке, содержащей эти файлы, для установки необходимых пакетов, а затем запустите пример приложения.

    npm install
    node remote_monitoring.js
    

Наблюдение динамической телеметрии в действии

На панели мониторинга отображаются данные телеметрии температуры и влажности из существующих имитаций устройств.

Панель мониторинга по умолчанию

Если выбрать имитацию устройства Node.js, которая запускалась в предыдущем разделе, отобразятся данные телеметрии температуры, влажности и внешней температуры.

Добавление значения внешней температуры на панель мониторинга

Решение для удаленного мониторинга автоматически определяет тип дополнительных данных телеметрии внешней температуры и добавляет их на диаграмму на панели мониторинга.

Добавление типа данных телеметрии

Следующий шаг — заменить данные телеметрии, созданные имитацией устройства Node.js, новым набором значений.

  1. Остановите имитацию устройства Node.js, нажав клавиши Ctrl+C в командной строке или оболочке.

  2. В файле remote_monitoring.js можно увидеть базовые значения для существующих данных телеметрии температуры, влажности и внешней температуры. Добавьте базовое значение данных для rpm следующим образом.

    // Sensors data
    var temperature = 50;
    var humidity = 50;
    var externalTemperature = 55;
    var rpm = 200;
    
  3. Имитированное устройство Node.js добавляет случайное приращение базовых значений данных с помощью функции generateRandomIncrement, определенной в файле remote_monitoring.js. Рандомизируйте значение rpm , добавив строку кода после существующего кода рандомизации следующим образом.

    temperature += generateRandomIncrement();
    externalTemperature += generateRandomIncrement();
    humidity += generateRandomIncrement();
    rpm += generateRandomIncrement();
    
  4. Добавьте новое значение rpm в полезные данные JSON, которые устройство отправляет в Центр Интернета вещей.

    var data = JSON.stringify({
      'DeviceID': deviceId,
      'Temperature': temperature,
      'Humidity': humidity,
      'ExternalTemperature': externalTemperature,
      'RPM': rpm
    });
    
  5. Запустите имитацию устройства Node.js с помощью следующей команды.

    node remote_monitoring.js

  6. Вы увидите новый тип данных телеметрии 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 по-прежнему сохраняются и остаются доступными для внутренней обработки.

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

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