Ой, логотип кудато делся

Устанка Mosquitto MQTT Broker на Ubuntu Server 20.04/22.04

Устанка Mosquitto MQTT Broker на Ubuntu Server 20.04/22.04
Meshtastic
17:23, 31 январь 2024
570
0

Mosquitto — это брокер сообщений с открытым исходным кодом, который использует протокол телеметрии очереди сообщений (MQTT). MQTT работает на основе модели TCP/IP и является стандартной платформой обмена сообщениями для Интернета вещей (IoT).

Поскольку протокол MQQT чрезвычайно легкий, его небольшой объем кода позволяет создавать приложения для устройств с минимальными ресурсами, такими как короткое время автономной работы, ограниченная пропускная способность сети и ненадежное подключение к Интернету.

Приложение Mosquitto поддерживает топологию издатель/подписчик. В этой модели клиенты подключаются к серверу Mosquitto, который действует как брокер для распространения информации среди других клиентов, на которые они подписаны или отправляют сообщения в канал.

В этом руководстве вы установите и настроите приложение Mosquitto и узнаете, как управляемый событиями протокол MQQT работает с приложениями IoT.




Предварительные условия

Чтобы следовать этому руководству, вам необходимо:

Сервер Ubuntu 20.04 или 22.04.

Пользователь без полномочий root с sudo правами.


Устанавливаем сервер Mosquitto

Вы получите mosquitto пакет из репозитория программного обеспечения Ubuntu, выполнив следующие шаги.

Подключитесь по SSH к вашему серверу и обновите индекс информации о пакете.


Сначала делаем:

sudo apt update


1. Устанавливаем mosquitto пакет

sudo apt install -y mosquitto

Теперь пакет mosquitto должен загрузиться на ваш сервер. Подтвердите статус услуги mosquitto.

$ sudo systemctl status mosquitto

Убедитесь, что пакет имеет loaded формат и active.

 ● mosquitto.service - Mosquitto MQTT v3.1/v3.1.1 Broker

      Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled; vendor pr>

      Active: active (running) since Fri 2021-10-08 06:29:25 UTC; 12s ago

        Docs: man:mosquitto.conf(5)

              man:mosquitto(8)


 ...


После запуска вы можете управлять mosquitto службами, выполнив следующие команды.

Остановить mosquitto службу:

sudo systemctl stop mosquitto

Запустите mosquitto службу:

sudo systemctl start mosquitto

Перезапустите mosquitto службу:

sudo systemctl restart mosquitto


2. Устанавливаем клиент и тестируем Mosquitto

При использовании клиента MQTT вы подключаетесь к брокеру Mosquitto для отправки и получения сообщений на разные темы в зависимости от варианта использования приложения. Клиент может быть издателем, подписчиком или тем и другим.


Пакет Mosquitto поставляется с клиентом командной строки, который позволяет тестировать функции сервера. Установите клиент.

sudo apt install -y mosquitto-clients


Далее вы подписываетесь на тему. В протоколе MQQT тема — это строка, которую сервер/брокер использует для фильтрации сообщений для подключенных клиентов. Например, вот несколько примеров тем, которые вы можете использовать при использовании брокера Mosquitto в приложении домашней автоматизации.

дом/свет/гостиная_комната

дом/свет/кухня

дом/свет/master_bedroom

дом/свет/детская_спальня


Чтобы подписаться на тему, выполните mosquitto_sub -tкоманду, за которой следует название темы, на которую вы хотите подписаться. Например, чтобы подписаться на home/lights/sitting_roomтему, выполните.

mosquitto_sub -t "home/lights/sitting_room"

Обратите внимание, что приведенная выше команда имеет функцию блокировки и переводит ваш терминал оболочки в состояние прослушивания.


Откройте второе окно терминала и не закрывайте первое. На этот раз опубликуйте сообщение «ON» в теме темы home/lights/sitting_roomс помощью mosquitto_pub -mкоманды.

mosquitto_pub -m "ON" -t "home/lights/sitting_room"

Теперь вы должны получить ON полезную нагрузку в первом окне.

ON


Затем опубликуйте OFFсообщение на ту же home/lights/sitting_roomтему на втором терминале.

mosquitto_pub -m "OFF" -t "home/lights/sitting_room"


Ваш брокер также должен отобразить новое сообщение.

ON

OFF


В этом руководстве вы вручную подписываетесь и публикуете сообщения, используя клиенты Mosquitto в демонстрационных целях. В реальных приложениях вам следует программировать небольшие микрочипы, поддерживающие уровень TCP/IP, такие, как ESP8266, чтобы передавать сообщение брокеру для управления или даже мониторинга устройств. Вот несколько распространенных случаев использования пакета Mosquitto в реальной жизни.


Мониторинг сердцебиения пациентов и отправка их на центральный сервер для мониторинга врачами. Это позволяет избежать больших транспортных расходов, которые пациенты могут понести при поездке в больницу.

В газовой и нефтяной промышленности устройства MQQT отслеживают различные параметры и отправляют данные центральному брокеру. Обычно это связано с тысячами датчиков в удаленных местах, которые собирают и отправляют данные через спутниковые каналы связи, оплата за которые взимается за использование данных. К счастью, топология MQQT сводит передачу к минимуму и передает данные на сервер только при необходимости.


В транспортной отрасли устройства MQQT отслеживают местоположение поездов в режиме реального времени и отправляют данные в штаб-квартиры компаний, чтобы предоставить более полную информацию клиентам, которые хотят путешествовать без каких-либо задержек.

Кроме того, брокер Mosquitto можно использовать в качестве промежуточного уровня в приложении чата для обновления онлайн-статуса пользователей и передачи сообщений между конечными пользователями.

Другой распространенный сценарий, в котором сервер Mosquitto может хорошо подойти, — это разделенные системы. Клиенты могут отправлять данные брокеру, который затем отправляет данные в базу данных для постоянного хранения.

В дополнение к вышеперечисленным вариантам использования существуют десятки библиотек, которые вы можете использовать для подключения к серверу Mosquitto, используя ваш любимый язык программирования, включая PHP, Python, Golang и другие.


3. Защита сервера Mosquitto

По умолчанию сервер Mosquitto не защищен. Однако вы можете выполнить некоторые настройки конфигурации, чтобы защитить его с помощью имен пользователей и паролей.

Mosquitto считывает информацию о конфигурации из следующего места.

/etc/mosquitto/conf.d


Создайте default.conf в каталоге.

sudo nano /etc/mosquitto/conf.d/default.conf


Вставьте информацию ниже, чтобы отключить anonymous соединения и позволить Mosquitto читать действительные учетные данные из /etc/mosquitto/passwd файла.

allow_anonymous false

password_file /etc/mosquitto/passwd

Сохраните и закройте файл.


Откройте /etc/mosquitto/passwdфайл с расширением nano.

sudo nano /etc/mosquitto/passwd


Затем заполните файл данными учетной записи пользователей, которых вы хотите подключить к серверу Mosquitto. Замените EXAMPLE_PASSWORDи EXAMPLE_PASSWORD_2сильными значениями.

john_doe:EXAMPLE_PASSWORD

mary_smith:EXAMPLE_PASSWORD_2

Сохраните и закройте файл.


Далее воспользуйтесь mosquitto_passwdутилитой для шифрования паролей.

sudo mosquitto_passwd -U /etc/mosquitto/passwd


Ваши пароли теперь зашифрованы в формате, который может расшифровать только сервер Mosquitto. Используйте команду Linux catдля подтверждения процесса шифрования.

sudo cat /etc/mosquitto/passwd


Выход.

john_doe:$6$TSzNycsj...5Qyvgd4g==

mary_smith:$6$DtlKf1lG.../rLHIL0Q==


Перезапустите mosquittoслужбу, чтобы загрузить новые изменения.

sudo systemctl restart mosquitto


С этого момента вам следует выполнять любую команду pub/sub, используя приведенный ниже синтаксис. Не забудьте заменить john_doeи EXAMPLE_PASSWORDучетными данными, которые вы определили в файле паролей.

mosquitto_sub -u john_doe -P EXAMPLE_PASSWORD -t "home/lights/sitting_room"

mosquitto_pub -u john_doe -P EXAMPLE_PASSWORD -t "home/lights/sitting_room" -m "ON"


Не аутентифицированные команды или соединения с неправильными учетными данными теперь должны завершаться неудачно.

mosquitto_pub -m "ON" -t "home/lights/sitting_room"

mosquitto_sub -t "home/lights/sitting_room"

mosquitto_sub -u john_doe -P WRONG_PASSWORD -t "home/lights/sitting_room"

mosquitto_pub -u john_doe -P WRONG_PASSWORD -t "home/lights/sitting_room" -m "ON"


Выход.

...

Connection error: Connection Refused: not authorised.


Заключение

В этом руководстве вы установили и настроили сервер Mosquitto на своем сервере Ubuntu 20.04. Вы также использовали интерфейс командной строки для подписки и публикации сообщений в примерной теме. Рассмотрите возможность использования сервера Mosquitto в следующий раз при развертывании приложения Интернета вещей.

Ctrl
Enter
Заметили ошЫбку
Выделите текст и нажмите Ctrl+Enter
Комментарии (0)
Топ из этой категории
Виды модуляции при дальней связи на УКВ Виды модуляции при дальней связи на УКВ
Дальняя радиосвязь на УКВ перестает быть редкостью. Сейчас уже достаточно большое число радиолюбителей регулярно...
21.04.25
31
0
Радиолюбительской DMR сети ADN Systems сегодня исполнился год Радиолюбительской DMR сети ADN Systems сегодня исполнился год
Год назад, благодаря усилиям небольшой, но увлечённой группы радиолюбителей, объединённых общей мечтой сделать...
21.04.25
33
0