Pull to refresh
0

Построение и использование Mosquitto MQTT на Intel Edison

Reading time 3 min
Views 33K
Original author: Tuan Bui

В этой статье мы рассмотрим использование протокола MQTT для Intel Edison. С его помощью можно получать данные с датчиков и передавать управление на актюаторы.
MQTT — это легковесный протокол, применяемый для общения между устройствами (M2M — machine-to-machine). Он использует модель издатель-подписчик для передачи сообщений поверх протокола TCP/IP. Центральная часть MQTT-протокола это MQTT-сервер или брокер, который имеет доступ к издателю и подписчику. Используя MQTT можно построить сеть датчиков, где они публикуют свои данные в форме сообщений, уникальных для каждого из них. Актюаторы подписываются на сообщения, на которые им необходимо реагировать. MQTT-брокер будет заботиться о перенаправлении сообщений от издателя к подписчику.

Пример


Микроконтроллер A считывает значение выключателя и отправляет его состояние сообщением MQTT-брокеру в форме «switch=on». Где-то в интернете микроконтроллер B подписан на сообщение «switch». Если пользователь нажмет на выключатель, микроконтроллер A передаст сообщение к MQTT-брокеру. Брокер переправит сообщение списку подписчиков. Когда микроконтроллер B получит сообщение, он может проанализировать содержимое, определить состояние переключателя и затем включить или выключить лампу соответственно.



Больше информации по протоколу MQTT можно найти на сайте mqtt.org.

Операционная система Edison Yocto поставляется вместе с небольшим MQTT-брокером, который называется RSMB (Really Small Message broker). К сожалению, нет встроенного MQTT-клиента, чтобы всё это протестировать. В этой статье мы рассмотрим, как построить другого MQTT-брокера — Mosquitto.

Построение Mosquitto для Edison


Предполагается, что читатель уже настроил свою плату Edison и владеет стандартными операциями Linux.
Построить Mosquitto для Intel Edison довольно просто:

1. Загрузите mosquitto c сайта mosquitto.org
$> wget http://mosquitto.org/files/source/mosquitto-1.3.5.tar.gz


2. Распакуйте архив
$> tar xzf mosquitto-1.3.5
$> cd mosquitto-1.3.5


3. Постройте
$> make WITH_SRV=no


4. Проверьте и установите скомпилированный mosquito
# Create user mosquitto
$> add user mosquitto

# Test 
$> cd test/broker
$> make test
$> cd ../../

# Install
$> cp client/mosquitto_pub /usr/bin
$> cp client/mosquitto_sub /usr/bin
$> cp lib/libmosquitto.so.1 /usr/lib
$> cp src/mosquitto /usr/bin


В основной папке mosquitto есть тесты. К сожалению, большинству из них требуется Python3, который не доступен на Edison ОС и поэтому некоторые из поздних тестов не пройдут. Тем не менее, тест в папке test/broker не использует Python3 и покрывает все основные операции MQTT.

Тестирование клиента и сервера для mosquitto


ОС Edison настроена на автоматический запуска брокера rsmb. Он использует стандартный TCP-порт 1883. Сначала мы протестируем клиента mosquitto при помощи стандартного порта. Позднее мы сконфигурируем брокера mosquitto для проверки его работы на другом порту.
Чтобы протестировать клиента, откройте два ssh-соединения с Edison. В первом подключении запустите клиента mosquitto_sub, который подписывается на топик «test» rsmb-брокера, работающего локально на Edison.



Во втором ssh-соединении опубликуйте сообщение «Hello World!» в топике «test» на том же локальном сервере.
Вы должны увидеть сообщение в окне, где запущена программа mosquitto_sub. Заметьте, что клиент mosquitto_sub будет работать постоянно и продолжать принимать новые сообщения от сервера, пока его не остановят.



Верхний тест показывает, что клиенты mosquitto_sub и mosquitto_pub, построенные нами, работают правильно с локальным rsmb MQTT-сервером.
Теперь мы можем запустить подобный тест, использующий брокера mosquitto на другом порту, например, 1993.



Используя команды с параметром –p 1993 для mosquitto_sub и mosquitto_pub протестируйте брокера на порту 1993.





Дополнительно можете посмотреть документацию по Mosquitto.
Tags:
Hubs:
+3
Comments 1
Comments Comments 1

Articles

Information

Website
www.intel.ru
Registered
Founded
Employees
5,001–10,000 employees
Location
США
Representative
Анастасия Казантаева