MQTT (Mosquitto)
Цель: закрепить полученные на лекции теоретические знания о
реализации интернета вещей с использованием Node-Red и MQTT.
Задачи:
1. Запустить сервер и клиент Node-Red и проверить их работоспособность
2. Обработать CSV, полученный http-запросом, и сконфигурировать
реакцию системы на различные уровни силы землетрясений
3. Совершить запись данных из Node-Red в СУБД MySQL
4. Запустить MQTT-клиент и совершить передачу данных в Node-Red
5. Передать данные из MQTT-клиента в СУБД MySQL при помощи
платформы автоматизации Node-Red
Ход работы:
На виртуальной машине Fedora в Konsole запускается предварительно
установленный сервер Node-Red. В браузере Mozilla Firefox по адресу
localhost:1880 открывается графический интерфейс платформы
автоматизации Node-Red.
Для ознакомления с возможностями платформы выполнено
упражнение, расположенное на официальном сайте Node-Red по адресу:
https://nodered.org/docs/tutorials/second-flow
Результаты представлены на рисунке 1. По нажатию на блок Inject
происходит выполнение созданной схемы:
1. Ставится временная метка;
2. Выполняется http-запрос, получается csv-файл;
3. Конвертером из встроенной библиотеки csv трансформируется в
JSON;
4. Полученный набор значений пропускается через условие if-else,
которое сравнивает магнитуду землетрясений с константой;
5. Назначается сообщение, в дальнейшем выводящееся в консоль
a. При магнитуде не более 4,2 баллов выводится
соответствующее сообщение;
b. При магнитуде, большей чем 4,2 балла, выводится тревога.
1
Рисунок 1 – Выполнение упражнения на определение магнитуды
2
После успешной записи из платформы Node-Red в СУБД запускается MQTT
(Message Queuing Telemetry Transport)-брокер mosquitto. Для проверки
работоспособности брокера создаются тестовые publisher и subscriber.
Результаты представлены на рисунке 3.
3
В завершении лабораторной работы все элементы объединяются в одну
систему. Данные передаются через платформу автоматизации Node-Red из
клиента MQTT через брокера mosquitto в СУБД MySQL. В результате
добавлена шестая запись в таблицу meteostation_db (рисунки 5 и 6).