Как поднять MQTT Server on Ubuntu 18.04

Posted by

Рабочая, тестовая система: Ubuntu 18.04 Server amd64

The Publisher sends a message to the network.

The Subscriber listens for messages with a particular topic.

  • Publisher — посылает сообщения в сеть.
  • Subscriber — слушает сообщения из сети.

Работа MQTT (Message Queuing telemetry transport) строится на упрощенном сетевом протоколе работающем над TCP/IP, он ориентирован для обмена сообщениями/показаниями между устройствами на основе Publischer → Subscriber. У Mqtt есть три уровня работы именуемые, как QoS: 0,1,2. Я буду пока рассматривать самый дефолтный уровень, т. е. 0.

Шаг №1: Сперва посредством своего скрипта настраиваю систему установленную из образа: ubuntu-18.04.2-server-amd64.iso

У Вас читатель — это собственные выработанные шаги настройки.

Шаг №2: Устанавливаю пакеты необходимые для разворачивания MQTT Server

Шаг №3: Создаю учетную запись от имени которой будет работать MQTT:

  • Password: Aa1234567

To run a command as administrator (user "root"), use "sudo <command>".

See "man sudo_root" for details.

Шаг №4: Скачиваю самую последнюю версию пакета mosquitto с официального сайта на момент написания данной заметки под пользователей которого создал в Шаге №3:

Ранее я использовал версию 1.5, но вот сейчас смотрю уже есть новее (на 30.04.2019), значит буду использовать новую

  • Password: Aa1234567
  • Reenter password: Aa1234567

где mqtt-spy — это пользователь сервиса mosquitto, а в файле pwfile его пароль.

persistence true
persistence_location /var/lib/mosquitto/
persistence_file mosquitto.db
log_dest syslog
log_dest stdout
log_dest topic
log_type error
log_type warning
log_type notice
log_type information
connection_messages true
log_timestamp true
allow_anonymous false
password_file /etc/mosquitto/pwfile

[Unit]
Description=Insite MQTT Broker
[Service]
ExecStart=/usr/local/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
Restart=always
[Install]
WantedBy=multi-user.target
[Install]
WantedBy=multi-user.target

Created symlink /etc/systemd/system/multi-user.target.wants/mosquitto.service → /etc/systemd/system/mosquitto.service.

● mosquitto.service - Insite MQTT Broker
Loaded: loaded (/etc/systemd/system/mosquitto.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2019-04-30 22:41:09 MSK; 5s ago
Main PID: 3523 (mosquitto)
Tasks: 1 (limit: 2338)

Шаг №5: Проверю работу, в одной вкладке консоли набираю:
(где:

  • test_mqtt → это топик
  • mqtt-spy → пользователь этого топика
  • Aa1234567 → пароль пользователя mqtt-spy топика test_mqtt

  • Test Message → это строка которая была отправлена вот этой строкой из другой вкладки:

Client mosqpub|15807-srv-bioni sending CONNECT
Client mosqpub|15807-srv-bioni received CONNACK (0)
Client mosqpub|15807-srv-bioni sending PUBLISH (d0, q0, r0, m1, 'test_mqtt', ... (12 bytes))
Client mosqpub|15807-srv-bioni sending DISCONNECT

  • Левая консоль ждет принятия сообщения
  • Правая консоль посылает сообщения

Пример работы MQTT: Издатель и Подписчик

Работает, вот только пока не понятно как я могу это использовать в дальнейшем. Со временем стало понятно, я могу данные с датчиков пересылать в указанные топики. На это я для себя разобрал данную заметку. С уважением, Олло Александр aka ekzorchik.