Grafana очень удобный инструмент для отображения текущих и накопленных данных. Для накопления данных очень удобно использовать специально для этих целей созданную базу данных InfluxDB.
Поэтапно наш процесс будет выглядеть как на диаграмме:
1. Установка Mosquitto-broker
2. Подключение контроллера(ов) Wirenboard по MQTT
3. Установка базы данных
4. Установка скрипта записи поступающих данных из брокера в базу данных
5. Установка и примеры конфигурирования Grafana
1. Установка Mosquitto-broker
Первым делом необходимо подключиться к нашему виртуальному серверу на AmazonWS (в дальнейшем "к AmazonWS") с помощью любой терминальной программы, например PuTTY.
sudo apt-get install mosquitto mosquitto-clients
В первом PuTTY подписываемся на топик:
mosquitto_sub -h localhost -t test
Во втором PuTTY публикуем топик:
mosquitto_pub -h localhost -t test -m "hello world"
Если в первом PuTTY появилось содержимое топика hello world, то это значит брокер запустился и работает исправно.
Теперь нужно, чтобы он был подписан вообще на все входящие сообщения:
mosquitto_sub -t "/#" -v
2. Подключение Wirenboard по MQTT
Чтобы сделать настройки на Wirenboard нужно отредактировать на нем файл /etc/mosquitto/conf.d/bridge.conf.
Для этого подключаемся программой WinSCP и открываем файл bridge.conf на редактирование.
В этом файле переписываем содержимое на следующее:
connection amazon address 3.17.73.13:1883 notifications true notification_topic /client/wb_SERIAL/bridge_status topic /devices/# both 2 "" /client/wb_SERIAL
Немного поясню:
после connection пишем любое свое наименование для этого правила;после address пишем IP-адрес нашего AmazonWS с портом 1883(в моем случае это адрес 3.17.73.13)
- вместо wb_Serial можно подставить идентификатор контроллера, чтобы потом отличать его данные от других таких же с других контроллеров в общей базе данных.
service watchdog stop service mosquitto restart service watchdog start
Остановка watchdog рекомендуется для того, чтобы если bridge.conf "кривой" система не ушла в циклическую перезагрузку, из которой потом трудно выйти.
Через несколько секунд в терминальном окне AmazonWS должны "побежать" поступающие сообщения.
3. Установка базы InfluxDB на AmazonWS
Чтобы поступающие данные могли быть сохранены необходимо установить хранилище. Для этой цели подходит база данных InfluxDB.
Инструкция находится по адресу.
Далее последовательно выполняем в окне терминала PuTTY, подключенного к AmazonWS следующие команды:
wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add - source /etc/lsb-release echo "deb https://repos.influxdata.com/$ $ stable" | sudo tee /etc/apt/sources.list.d/influxdb.list sudo apt-get update && sudo apt-get install influxdb
И после этого, чтобы база данных была готова к использованию ее необходимо запустить:
sudo systemctl unmask influxdb.service sudo systemctl start influxdb
sudo influxd
После проверки необходимо задать имя базы данных, в которой будут храниться наши накапливаемые записи.
Для этого запустить команду
influx
После этого база готова получать команды или запросы. Введем:
CREATE DATABASE mqtt_data
(Вместо mqtt_data можно зарегистрировать свою базу данных, но тогда надо редактировать скрипт mqtt_to_influxdb.py)
Чтобы вернуться в консоль Ctrl+C
4. Установка скрипта mqtt_to_influxdb.py
Следующим шагом необходимо установить на AmazonWS скрипт, записывающий поступающие сообщения из MQTT в базу данных InfluxDB.
Исходная инструкция находится по адресу.
Скачаем сам скрипт на локальный компьютер.
Теперь нужно подготовить AmazonWS для работы этого скрипта. В терминальном окне PuTTY, подключенного к AmazonWS последовательно выполняем команды:
sudo apt install python3-pip pip3 install paho-mqtt python-etcd pip3 install influxdb
[Unit] Description=Mqtt to Influxdb Autorun After=multi-user.target Requires=influxd.service [Service] Type=idle User=ubuntu ExecStart=/usr/bin/python3 /usr/local/bin/mqtt_to_influxdb.py "#" Restart=always TimeoutStartSec=10 RestartSec=10 [Install] WantedBy=multi-user.target
В том случае если установка осуществляется не на AmazonWS, внимательно заполните поле параметра User, где вместо ubuntu необходимо подставить то имя, от которого производится установка. Например root.
sudo systemctl enable mqtt_to_influxdb sudo systemctl start mqtt_to_influxdb sudo systemctl daemon-reload
sudo systemctl status mqtt_to_influxdb
5. Установка Grafana
В терминале PuTTY последовательно набираем команды:
wget https://dl.grafana.com/oss/release/grafana_5.4.2_amd64.deb sudo apt-get install -y adduser libfontconfig sudo dpkg -i grafana_5.4.2_amd64.deb sudo apt-get install -y apt-transport-https sudo service grafana-server start sudo systemctl enable grafana-server.service
Подробнее про установку системы и настройку панелей вывода данных смотрите на видео по ссылке:
Большое спасибо за статью. Вопрос, поставил Grafana на Raspberry PI всё работало примерно месяц, потом начались какие-то глюки. Не пишутся в базу данных значения датчиков с wirenboard, при этом в MQTT они приходят. причем, раз в несколько дней данные появляются на некоторое время, а потом опять пропадают. Что это может быть?
"both" в bridge.conf, а также отсутствие аутентификации на брокере со стороны AWS, создает большую дыру в безопасности. Кто-хочет может что-угодно запаблишить на брокер в AWS, и это передастся на контроллер. Думаю желательно в bridge.conf ставить out, а брокер на авс секьюрить