Skip to main content

Работа с датчиками

Мы используем «комбайн» Telegraf для опроса разнородных данных и отправки их в базу данных/MQTT-потоки. Для Telegraf разработано множество плагинов, которые позволяют опрашивать устройства/интерфейсы по различным протоколам.

Мы сделали шаблоны для опроса устройств по

  • Modbus RTU
  • Modbus TCP
  • SNMP

Данные мы «складываем» в базу данных InfluxDB. В дальнейшем можно работать с данными через различные визуализаторы, например, Grafana.

Вы можете написать любой конфиг в формате Telegraf, используя input-плагины на датчик, и при корректном конфиге он автоматически заработает.

Также вы можете хранить данные в любой другой базе, транслировать в MQTT-потоки или распорядиться данными по-другому, применяя output-плагины Telegraf.

Короткое видео, в котором мы добавляем шаблон SNMP-датчика, добавляем необходимые MIB-файлы, редактируем IP (размыто) и убеждаемся, что данные поступают (открываем встроенный график датчика): https://youtu.be/yzN-tAXPDhg

Интерфейс работы с датчиками

Возможность добавлять/удалять/редактировать датчики

Вы можете написать конфиг датчика с нуля «написать шаблон» или загрузить уже протестированный/готовый конфиг «Загрузить шаблон» (в дальнейшем можно редактировать) или воспользоваться одним из наших шаблонов.

Готовые шаблоны: Готовые шаблоны датчиков

После включения шаблон можно редактировать. Важно, что вы редактируете копию шаблона, а не сам шаблон. При выключении датчика, если не объединить копию с шаблоном, копия пропадет. Кнопка объединения копии и шаблона доступна в интерфейсе редактирования датчика.

Редактирование датчика

Редактирование конфигурации опроса датчика

Интерфейс редактирования конфигурации датчика

  • При нажатии кнопки «Применить» система запустит Telegraf и включит в конфигурацию ваш конфиг.
  • Когда конфиг датчика отлажен, необходимо нажать на кнопку «Объединить с оригиналом», чтобы обновился шаблон.

Обработка данных

Telegraf позволяет обрабатывать данные перед отправкой в базу данных. Так называемые «процессоры» тоже описываются в конфигурационных файлах, поэтому достаточно сделать виртуальный «датчик» и описать в нем процесс обработки данных.

Мало того, процессор Starlark позволяет писать логику обработки данных на языке Starlark (который очень похож на Python). Мы используем Starlark для разбора SNMP OID, переименования метрик, пропуска ненужных значений.

Процессор Starlark для обработки данных

Что у нас «под капотом»
  • Каждый датчик имеет свой файл конфигурации, все конфиги датчиков располагаются в каталоге /data/active.
  • Основной конфиг (где описан метод складирования данных) находится в стандартном месте /etc/telegraf/telegraf.conf и может быть отредактирован вручную (как правило, не требуется).
  • В веб-интерфейсе неочевидно, почему Telegraf не запустился, а если запустился, какие метрики он опрашивает. Поэтому мы рекомендуем отлаживать опрос данных из командной строки.

Для проверки работы всех датчиков: в командной строке набрать команду (останавливать службу Telegraf при этом необязательно)

root@napi-rk3328:~# telegraf --test -config /etc/telegraf/telegraf.conf --config-directory /data/active/ 

Для проверки работы конкретного датчика (очень помогает при отладке): в командной строке набрать

root@napi-rk3328:~# telegraf --test -config /etc/telegraf/telegraf.conf --config /data/active/<файл датчика> 

Также для подробного вывода можно использовать флажок --debug

  • Узнать запустилась ли служба можно командой
systemctl status telegraf
  • Посмотреть лог, почему Telegraf не запускается
journalctl -u telegraf

Отображение данных с датчиков

В NapiConfig есть механизм внутреннего отображения графиков с данных, которые поступают с датчиков. Можно выбрать датчик и измерение (метрики из базы этого датчика). Это не полноценный инструмент визуализации, но он позволяет посмотреть какие данные попадают в базу данных (и работает ли вообще опрос датчика), а также оценить качественно поступающие данные.

На рисунке видно, какие данные (метрики в «Изменение») поступают с датчика PDU-1502.

График данных с датчика PDU-1502

Надо отметить, что данные отображаются без обработки. На графике видно, что значение Volt_input датчик передает в формате «23300».

Отображение графиков с помощью инструмента Grafana

tip

В сборку NapiLinux включен пакет grafana-server для визуализации данных из InfluxDB. Однако это «ресурсоемкий» пакет, и на процессорах rk3308 (Napi-устройства) запуск службы Grafana сильно тормозит систему. Поэтому для Napi-устройств мы рекомендуем развернуть Grafana на отдельном хосте и осуществлять отображение всех устройств Napi с хоста.

На более мощных процессорах (rk3328, rk3399, rk3560, rk3588) возможно использовать Grafana прямо на устройстве.

Отображение графиков с датчика тока Modbus RTU через веб-интерфейс

Примеры отображения данных через Grafana

Отображение данных в Grafana

Отображение может идти не только с датчиков, но и с любых устройств, которые в состоянии опросить Telegraf

Графики множества устройств в Grafana

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

Мобильная версия Grafana