![](https://habrastorage.org/files/8ec/052/7a9/8ec0527a9ffa4774975c2774b559b8d8.png)
В этой статье мы рассмотрим использование протокола MQTT для Intel Edison. С его помощью можно получать данные с датчиков и передавать управление на актюаторы.
MQTT — это легковесный протокол, применяемый для общения между устройствами (M2M — machine-to-machine). Он использует модель издатель-подписчик для передачи сообщений поверх протокола TCP/IP. Центральная часть MQTT-протокола это MQTT-сервер или брокер, который имеет доступ к издателю и подписчику. Используя MQTT можно построить сеть датчиков, где они публикуют свои данные в форме сообщений, уникальных для каждого из них. Актюаторы подписываются на сообщения, на которые им необходимо реагировать. MQTT-брокер будет заботиться о перенаправлении сообщений от издателя к подписчику.
Пример
Микроконтроллер A считывает значение выключателя и отправляет его состояние сообщением MQTT-брокеру в форме «switch=on». Где-то в интернете микроконтроллер B подписан на сообщение «switch». Если пользователь нажмет на выключатель, микроконтроллер A передаст сообщение к MQTT-брокеру. Брокер переправит сообщение списку подписчиков. Когда микроконтроллер B получит сообщение, он может проанализировать содержимое, определить состояние переключателя и затем включить или выключить лампу соответственно.
![](https://habrastorage.org/files/376/373/4dd/3763734dde9749fdb4666d3b0404b89b.png)
Больше информации по протоколу 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.
![](https://habrastorage.org/files/aaf/ed0/aee/aafed0aee9b04d86a11f04529e0ae624.png)
Во втором ssh-соединении опубликуйте сообщение «Hello World!» в топике «test» на том же локальном сервере.
Вы должны увидеть сообщение в окне, где запущена программа mosquitto_sub. Заметьте, что клиент mosquitto_sub будет работать постоянно и продолжать принимать новые сообщения от сервера, пока его не остановят.
![](https://habrastorage.org/files/97c/5de/99d/97c5de99d5294940afe4f0fb217fc04d.png)
Верхний тест показывает, что клиенты mosquitto_sub и mosquitto_pub, построенные нами, работают правильно с локальным rsmb MQTT-сервером.
Теперь мы можем запустить подобный тест, использующий брокера mosquitto на другом порту, например, 1993.
![](https://habrastorage.org/files/f5e/bbf/b08/f5ebbfb0852341a2a84a22d66303344c.png)
Используя команды с параметром –p 1993 для mosquitto_sub и mosquitto_pub протестируйте брокера на порту 1993.
![](https://habrastorage.org/files/7cc/f34/28b/7ccf3428b3364fe18f8c32abb7914983.png)
![](https://habrastorage.org/files/dc1/38a/303/dc138a30319a45df84446a2d74338575.png)
Дополнительно можете посмотреть документацию по Mosquitto.
si1v3r
спасибо.