Mosquito ubuntu что это такое

Обновлено: 24.11.2024

MQTT — это упрощенный протокол обмена сообщениями по протоколу TCP/IP, основанный на модели публикации/подписки, для связи между устройствами "Интернета вещей", такими как ESP8266, Raspberry Pi и т. д. Он очень популярен среди приложений с низким энергопотреблением и питанием от батареи. таких как домашняя автоматизация, системы охранной сигнализации и сенсорные сети с батарейным питанием.

Mosquitto — это брокер сообщений (или сервер) с открытым исходным кодом, реализующий протоколы MQTT. Благодаря хорошей поддержке сообщества, документации и простоте установки он стал одним из самых популярных брокеров MQTT.

Предпосылки

  • Сервер Ubuntu 16.04 с корневым доступом
  • Откройте порт TCP:1883 в брандмауэре.

Шаг первый: установите Mosquitto Broker

Обновите список пакетов Ubuntu и установите из него последнюю версию Mosquitto Broker

Служба Mosquitto запустится после установки.

Шаг второй: установите клиенты и протестируйте

Установка клиентов MQTT

Клиенты Mosquitto помогают нам легко тестировать MQTT с помощью утилиты командной строки. Мы будем использовать два командных окна: одно для подписки на тему с именем «тест» и одно для публикации в ней сообщения.

Темы — это ярлыки, используемые брокером для фильтрации сообщений для каждого подключенного клиента. Клиентская программа, подписанная на тему "Home1/BedroomTemp", будет прослушивать только сообщения, опубликованные в той же теме другими клиентами.

Подписаться на тему "тест"

Mosquito_sub — это клиент подписки, который мы установили в предыдущей команде. Здесь мы указываем «-t», за которым следует название темы.

Опубликовать сообщение в теме "тест"

Войдите в терминал как второй экземпляр и опубликуйте сообщение в "тестовой" теме.

Здесь за дополнительным параметром " –m " следует сообщение, которое мы хотим опубликовать. Нажмите «Ввод», и вы должны увидеть сообщение от клиента mosquitto_pub, отображаемое в другом терминале, где запущен клиент mosquito_sub.

Шаг третий: защитите паролем

Mosquitto поставляется с утилитой для создания файла паролей под названием mosquitto_passwd .

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

Откроется пустой файл. Вставьте в него следующее.

Сохраните и выйдите из текстового редактора с помощью "Ctrl+O", "Enter" и "Ctrl+X".

Теперь перезапустите сервер Mosquitto и проверьте наши изменения.

В окне клиента подписки нажмите " Ctrl+C ", чтобы выйти из клиента подписки и перезапустить его с помощью следующей команды.

Обратите внимание на заглавную букву -P.

В окне клиента публикации попробуйте опубликовать сообщение без пароля.

Сообщение будет отклонено со следующим сообщением об ошибке.

Теперь опубликуйте сообщение с именем пользователя и паролем.

Нажмите " Enter ", и вы увидите сообщение в окне клиента подписки, как на втором шаге.

Заключение

Теперь мы настроили сервер MQTT, защищенный паролем. Вы можете использовать общедоступный IP-адрес вашего сервера Ubuntu в качестве брокера MQTT для своих проектов.

MQTT – это протокол обмена сообщениями между компьютерами, разработанный для обеспечения облегченной связи публикации/подписки с устройствами "Интернета вещей". Он обычно используется для географического отслеживания парков транспортных средств, домашней автоматизации, сетей датчиков окружающей среды и сбора данных коммунального масштаба.

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

В этом руководстве мы установим Mosquitto, получим SSL-сертификаты от Let’s Encrypt и настроим нашего брокера для использования SSL для защиты наших защищенных паролем соединений MQTT.

Предпосылки

Прежде чем приступить к этому руководству, вам потребуется:

Шаг 1 — Установка Mosquitto

Ubuntu 16.04 имеет довольно свежую версию Mosquitto в репозитории программного обеспечения по умолчанию. Войдите под своим пользователем без полномочий root и установите Mosquitto с помощью apt-get .

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

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

Войдите на сервер еще раз, чтобы у вас было два терминала рядом. В новом терминале используйте mosquitto_sub, чтобы подписаться на тестовую тему:

-h используется для указания имени хоста сервера MQTT, а -t — это имя темы. Вы не увидите никакого вывода после нажатия ENTER, потому что mosquitto_sub ожидает поступления сообщений. Вернитесь к другому терминалу и опубликуйте сообщение:

Параметры для mosquitto_pub такие же, как и для mosquitto_sub , но на этот раз мы используем дополнительный параметр -m для указания нашего сообщения. Нажмите ENTER , и вы должны увидеть всплывающее окно hello world в другом терминале. Вы отправили свое первое MQTT-сообщение!

Нажмите CTRL+C во втором терминале, чтобы выйти из mosquitto_sub , но оставьте подключение к серверу открытым. Мы будем использовать его снова для другого теста на шаге 5.

Далее мы защитим нашу установку с помощью SSL с помощью Certbot, нового клиента Let’s Encrypt.

Шаг 2. Установка Certbot для сертификатов Let’s Encrypt

Let’s Encrypt – это новый сервис, предлагающий бесплатные SSL-сертификаты через автоматизированный API. Есть много клиентов, которые могут взаимодействовать с API, и Ubuntu включает официальный клиент в свой репозиторий по умолчанию, но он немного устарел и не имеет одной важной функции, которая нам нужна.

Вместо этого мы установим официальный клиент из Ubuntu PPA или Personal Package Archive. Это альтернативные репозитории, которые упаковывают более новое или малоизвестное программное обеспечение. Сначала добавьте репозиторий.

Для подтверждения нужно нажать ENTER. После этого обновите список пакетов, чтобы получить информацию о пакете нового репозитория.

И, наконец, установите официальный клиент Let’s Encrypt под названием certbot.

Теперь, когда у нас установлен certbot, давайте запустим его, чтобы получить наш сертификат.

Шаг 3 — Запуск Certbot

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

У нас есть сертификаты. Теперь нам нужно убедиться, что Certbot автоматически продлевает их, когда срок их действия подходит к концу.

Шаг 4. Настройка автоматического продления Certbot

Сертификаты Let’s Encrypt действительны только в течение девяноста дней. Это сделано для того, чтобы пользователи автоматизировали процесс обновления своих сертификатов. Нам потребуется настроить регулярно запускаемую команду для проверки сертификатов с истекающим сроком действия и их автоматического обновления.

Для ежедневной проверки обновлений мы будем использовать cron — стандартную системную службу для запуска периодических заданий. Мы сообщаем cron, что делать, открывая и редактируя файл с именем crontab .

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

Часть 15 3 * * * этой строки означает «выполнять следующую команду в 3:15 утра каждый день». Команда обновления для Certbot проверит все сертификаты, установленные в системе, и обновит те, срок действия которых истекает менее чем за тридцать дней. --noninteractive указывает Certbot не ждать ввода данных пользователем.

--post-hook "systemctl restart mosquitto" перезапустит Mosquitto, чтобы получить новый сертификат, но только если сертификат был обновлен. Эта функция пост-хука — это то, чего не хватало в старых версиях клиента Let’s Encrypt, и почему мы установили его из репозитория PPA, а не из репозитория Ubuntu по умолчанию. Без него нам пришлось бы перезапускать Mosquitto каждый день, даже если на самом деле никакие сертификаты не обновлялись. Хотя ваши клиенты MQTT должны быть настроены на автоматическое повторное подключение, разумно не прерывать их работу ежедневно без уважительной причины.

Теперь, когда автоматическое обновление сертификатов настроено, мы вернемся к настройке Mosquitto, чтобы сделать его более безопасным.

Шаг 5 — Настройка паролей MQTT

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

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

Это должно открыть пустой файл. Вставьте следующее:

allow_anonymous false отключит все подключения без аутентификации, а строка password_file сообщает Mosquitto, где искать информацию о пользователе и пароле. Сохраните и закройте файл.

Теперь нам нужно перезапустить Mosquitto и протестировать наши изменения.

Попробуйте опубликовать сообщение без пароля:

Сообщение должно быть отклонено:

Прежде чем мы повторим попытку с паролем, снова переключитесь во второе окно терминала и подпишитесь на «тестовую» тему, используя на этот раз имя пользователя и пароль:

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

Теперь опубликуйте сообщение на другом терминале, снова используя имя пользователя и пароль:

Сообщение должно пройти, как на шаге 1. Мы успешно добавили защиту паролем в Mosquitto. К сожалению, мы отправляем пароли через Интернет в незашифрованном виде.Далее мы исправим это, добавив SSL-шифрование в Mosquitto.

Шаг 6. Настройка MQTT SSL

Чтобы включить шифрование SSL, нам нужно сообщить Mosquitto, где хранятся наши сертификаты Let’s Encrypt. Откройте ранее запущенный файл конфигурации:

Вставьте следующее в конец файла, оставив две уже добавленные строки:

Мы добавляем в конфигурацию два отдельных блока прослушивателя. Первый, listener 1883 localhost, обновляет прослушиватель MQTT по умолчанию на порту 1883, к которому мы подключались до сих пор. 1883 — это стандартный незашифрованный порт MQTT. Часть строки с локальным хостом указывает Mosquitto привязать этот порт только к интерфейсу локального хоста, поэтому он недоступен извне. Внешние запросы в любом случае были бы заблокированы нашим брандмауэром, но лучше быть явным.

прослушиватель 8883 настраивает зашифрованный прослушиватель на порту 8883 . Это стандартный порт для MQTT + SSL, часто называемый MQTTS. Следующие три строки, certfile , cafile и keyfile , указывают Mosquitto на соответствующие файлы Let’s Encrypt для настройки зашифрованных соединений.

Сохраните и закройте файл, затем перезапустите Mosquitto, чтобы обновить настройки:

Обновите брандмауэр, чтобы разрешить подключения к порту 8883 .

Теперь мы снова тестируем mosquitto_pub с несколькими вариантами SSL:

--capath /etc/ssl/certs/ включает SSL для mosquitto_pub и указывает, где искать корневые сертификаты. Обычно они устанавливаются вашей операционной системой, поэтому путь для Mac OS, Windows и т. д. отличается. mosquitto_pub использует корневой сертификат, чтобы убедиться, что сертификат сервера Mosquitto был должным образом подписан центром сертификации Let’s Encrypt. Важно отметить, что mosquitto_pub и mosquitto_sub не будут пытаться установить SSL-соединение без этой опции (или аналогичной опции --cafile), даже если вы подключаетесь к стандартному защищенному порту 8883 .

Если все пройдет успешно с тестом, мы снова увидим приветствие в другом терминале mosquitto_sub. Это означает, что ваш сервер полностью настроен! Если вы хотите расширить протокол MQTT для работы с веб-сокетами, выполните последний шаг.

Шаг 7. Настройка MQTT через веб-сокеты (необязательно)

Чтобы говорить MQTT с использованием JavaScript из веб-браузеров, протокол был адаптирован для работы через стандартные веб-сокеты. Если вам не нужна эта функция, вы можете пропустить этот шаг.

Нам нужно добавить еще один блок прослушивателя в нашу конфигурацию Mosqiutto:

В конце файла добавьте следующее:

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

Сохраните и закройте файл, затем перезапустите Mosquitto.

Теперь откройте порт 8083 в брандмауэре.

Чтобы протестировать эту функцию, мы воспользуемся общедоступным браузерным клиентом MQTT. Их несколько, но клиент Eclipse Paho JavaScript прост и понятен в использовании. Откройте клиент Paho в своем браузере. Вы увидите следующее:

Заполните информацию о соединении следующим образом:

Для остальных полей можно оставить значения по умолчанию.

После нажатия кнопки «Подключиться» браузерный клиент Paho подключится к вашему серверу Mosquitto.

Чтобы опубликовать сообщение, перейдите на панель «Опубликовать сообщение», заполните «Тема как тест» и введите любое сообщение в разделе «Сообщение». Далее нажмите Опубликовать. Сообщение появится в вашем терминале mosquitto_sub.

Заключение

Теперь мы настроили безопасный, защищенный паролем сервер MQTT с автоматически обновляемыми сертификатами SSL от сервиса Let’s Encrypt. Это послужит надежной и безопасной платформой для обмена сообщениями для любых проектов, о которых вы мечтаете. Некоторые популярные программы и аппаратные средства, которые хорошо работают с протоколом MQTT, включают:

    , приложение для отслеживания местоположения с открытым исходным кодом, которое вы можете установить на свой телефон. OwnTracks будет периодически передавать информацию о местоположении на ваш сервер MQTT, которую вы затем можете сохранить и отобразить на карте или создать оповещения и активировать оборудование IoT в зависимости от вашего местоположения. — это графический интерфейс на основе браузера для «связывания» Интернета вещей. Вы перетаскиваете вывод одного узла на ввод другого и можете направлять информацию через фильтры, между различными протоколами, в базы данных и так далее. Node-RED очень хорошо поддерживает MQTT.
  • ESP8266 — недорогой микроконтроллер Wi-Fi с возможностями MQTT. Вы можете подключить его, чтобы публиковать данные о температуре в теме, или, возможно, подписаться на тему атмосферного давления и включить зуммер, когда приближается шторм!

Это всего лишь несколько популярных примеров из экосистемы MQTT. Существует гораздо больше аппаратного и программного обеспечения, которое говорит по протоколу.Если у вас уже есть любимая аппаратная платформа или программный язык, возможно, у него есть возможности MQTT. Получайте удовольствие от того, что ваши «вещи» разговаривают друг с другом!

Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!

Присоединяйтесь к нашему сообществу DigitalOcean, насчитывающему более миллиона разработчиков, бесплатно! Получайте помощь и делитесь знаниями в нашем разделе "Вопросы и ответы", находите руководства и инструменты, которые помогут вам расти как разработчику и масштабировать свой проект или бизнес, а также подписывайтесь на интересующие вас темы.

MQTT означает MQ Telemetry Transport. Это чрезвычайно простой и легкий протокол обмена сообщениями с публикацией/подпиской, разработанный для ограниченных устройств и сетей с низкой пропускной способностью, высокой задержкой или ненадежных сетей. Протокол MQTT определяет два типа сетевых объектов: брокер сообщений и несколько клиентов. Брокер MQTT — это сервер, который получает все сообщения от клиентов, а затем направляет сообщения соответствующим клиентам назначения. Клиент MQTT — это любое устройство (от микроконтроллера до полноценного сервера), на котором работает библиотека MQTT и которое подключается к брокеру MQTT по сети.

В этом руководстве вы узнаете, как установить, настроить и защитить брокера MQTT. Для этой задачи мы будем использовать популярный брокер сообщений Mosquitto. Кроме того, вы узнаете, как использовать Certbot для автоматического получения сертификата Let’s Encrypt SSL/TLS для вашего сервера. Мы покажем вам, как установить и настроить простой веб-сервер Node.js для удаленного мониторинга сообщений MQTT из веб-браузера. Мы также установим MongoDB для хранения сообщений MQTT в базе данных.

Предпосылки

Доменное имя

Пара ключей

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

В Linux и macOS откройте окно терминала. В командной строке введите следующую команду:

Программа ssh-keygen запросит у вас расположение файла ключа. Вы можете использовать стандартный или указать свой собственный. Другой вариант — указать парольную фразу для защиты вашего ключевого материала. Обратите внимание на место, где были сохранены ваши открытый и закрытый ключи, поскольку они потребуются позже.

В Windows загрузите и установите PuTTY с официального сайта. Перейдите в Пуск > Все программы > PuTTY > PuTTYgen и запустите приложение. Нажмите кнопку «Создать» и следуйте инструкциям. Как только генерация ключа будет завершена, вам будут представлены результаты. Щелкните Сохранить закрытый ключ, чтобы сохранить закрытый ключ в виде файла. Повторите процесс для открытого ключа или просто скопируйте открытый ключ из текстовой области PuTTY в буфер обмена и сохраните его как текстовый файл. Обратите внимание на место, где были сохранены ваши открытый и закрытый ключи, поскольку они потребуются позже.

Шаг 1. Развертывание облачного сервера

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

Разверните новый облачный экземпляр, для которого достаточно первого простого плана с 1 ядром ЦП, 1 ГБ памяти и 25 ГБ хранилища. Конечно, если вы планируете поставить свой сервер на какие-то тяжелые задачи, используйте другой простой план или гибкий. Выберите зону доступности по вашему выбору и Ubuntu Server 18.04 LTS (Bionic Beaver) из общедоступных шаблонов. Подробные инструкции по всем параметрам конфигурации можно найти в руководстве по развертыванию сервера.

Шаг 2. Начальная настройка сервера

На этом шаге вы узнаете, как настроить сервер Ubuntu для повышения безопасности и удобства использования. Это даст вам прочную основу для последующих действий. Вы узнаете о входе в систему с ключами SSH, создании нового пользователя с правами администратора и основных настройках брандмауэра. Если вы уже сделали это на этапе развертывания с помощью сценариев инициализации или вручную после этапа развертывания, пропустите этот шаг.

Если вы еще не подключены к серверу, войдите в систему как пользователь root, используя следующую команду:

После успешного входа в систему мы создадим нового пользователя с именем donald и предоставим ему права администратора. Вы можете назвать своего пользователя как хотите.

Создайте скрытую папку в домашнем каталоге вашей учетной записи пользователя на облачном сервере с помощью следующей команды:

Вставьте открытый ключ из пары ключей на локальном компьютере в authorized_keys в ранее созданной скрытой папке.

Настройка прав собственности и разрешений для конфигурации SSH:

Отключить root для входа по SSH:

Отключить вход с паролем:

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

Можно настроить брандмауэр с помощью UpCloud Firewall. Но в этом руководстве мы настроим базовый брандмауэр с помощью приложения UFW. Сделав это, мы обязательно разрешим подключения только к определенным службам.Во-первых, вам нужно установить UFW с помощью следующей команды:

Иногда в приложении уже могут быть зарегистрированы профили для UFW, поэтому им можно управлять с помощью этих имен профилей. Вы можете проверить, какие приложения имеют эти профили, вставив следующую команду:

Вы должны как минимум получить OpenSSH в качестве ответа, так как мы разрешим его в нашем брандмауэре с помощью:

Теперь нам просто нужно включить ufw с помощью следующей команды:

Все другие подключения, которые мы явно не указали в списке разрешенных, блокируются. Вы можете в любое время проверить текущее состояние вашего брандмауэра, набрав:

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

На рассмотрение

Не забывайте регулярно проверять наличие обновлений на своем сервере. Начните с обновления списка пакетов:

Затем обновите установленные пакеты до последних доступных версий:

После завершения обновлений вы можете выполнить дополнительные обновления, которые включают изменение зависимостей, добавление или удаление новых пакетов по мере необходимости, с помощью следующей команды:

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

Шаг 3. Настройте Certbot для получения сертификата Let’s Encrypt TLS

Let’s Encrypt — это некоммерческий центр сертификации, предоставляющий бесплатный сертификат TLS для вашего сайта. В этом разделе вы узнаете, как настроить Certbot для автоматического получения SSL-сертификатов. Вам нужно установить Certbot, но чтобы убедиться, что вы получаете последнюю версию, сначала добавьте репозиторий Certbot:

Далее вам нужно обновить список пакетов с помощью новейшего репозитория:

Установите Certbot с помощью следующей команды:

Certbot нужен открытый порт 80 или 443 для получения сертификата TLS, а поскольку мы блокируем все порты (кроме SSH) с помощью брандмауэра, вам нужно открыть один из этих двух. Мы собираемся использовать порт 80:

Теперь мы можем запустить нашего Certbot. Используйте следующую команду и следуйте инструкциям на экране:

Вам необходимо выполнить следующий выбор:

  1. При первой установке на любом конкретном хосте вам потребуется ввести контактный адрес электронной почты.
  2. Затем ознакомьтесь с Условиями обслуживания Let’s Encrypt и выберите «Принять», если вы принимаете условия и хотите использовать службу.
  3. Наконец выберите, хотите ли вы поделиться своим адресом электронной почты с Electronic Frontier Foundation, партнером-основателем проекта Let’s Encrypt и некоммерческой организацией, разрабатывающей Certbot.

Этот сертификат действителен только в течение 90 дней, но Certbot добавляет в cron.d сценарий, который запускается два раза в день и автоматически обновляет любой сертификат, срок действия которого истекает в течение 30 дней. Позже мы рассмотрим обновления и добавим несколько дополнительных команд для обновления файла конфигурации.

Шаг 4. Установите и настройте брокер Mosquitto MQTT

Eclipse Mosquitto — это брокер сообщений с открытым исходным кодом (с лицензией EPL/EDL), который реализует протокол MQTT версий 5.0, 3.1.1 и 3.1. Mosquitto легкий и подходит для использования на всех устройствах, от одноплатных компьютеров с низким энергопотреблением до полноценных серверов. Чтобы установить последнюю версию Mosquitto, вам сначала нужно добавить репозиторий Mosquitto:

Далее вам нужно обновить список пакетов с помощью новейшего репозитория:

Затем установите Mosquitto с помощью следующей команды:

Сделав это, вы успешно установили брокер Mosquitto MQTT. Вы можете использовать его «из коробки» как установленный, но мы не рекомендуем этого делать. Мы предлагаем вам настроить сервер для дополнительной безопасности. Мы добавим нового пользователя Mosquitto, защищенного паролем, с помощью следующей команды:

Откройте новый файл конфигурации с именем custom.conf в папке /etc/mosquitto/conf.d/:

Сохраните файл и выйдите, введя команду :wq.

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

Затем необходимо перезапустить брокера Mosquitto, чтобы можно было выполнить настройку.

После этого добавьте в брандмауэр новые правила, соответствующие файлу .conf:

С помощью этого файла конфигурации мы сообщили нашему MQTT-брокеру, что анонимные пользователи не допускаются. Мы указали путь к файлу, в котором хранятся пароли. Мы настроили три слушателя. Во-первых, это порт 1883, который не зашифрован и может использоваться только в локальной среде. Он в основном предназначен для целей тестирования. Второй прослушиватель находится на порту 8883, который зашифрован сертификатом TLS. Третий прослушиватель подключен к порту 8083, который также зашифрован сертификатом TLS, но предназначен для использования по протоколу WebSocket.

В целях тестирования войдите на свой сервер во втором терминале, чтобы одновременно были доступны две командные строки.

В первом терминале выполните следующую команду, чтобы подписаться на некоторые темы (например,«mqtt_topic_name»):

Затем во втором терминале выполните следующую команду, чтобы опубликовать сообщение в ранее упомянутой теме:

Вы должны получить следующее сообщение: «Hello MQTT World» в первом терминале.

Не забудьте закрыть второй терминал и выйти из команды mosquitto_sub в первом терминале с помощью CTRL+C.

Чтобы протестировать брокера MQTT через WebSocket, вы можете использовать некоторые популярные онлайн-сервисы, такие как Eclipse Paho, HiveMQ, MQTTLens или другие, которые вы предпочитаете.

Шаг 5. Установите Node.js

Node.js – это кроссплатформенная среда выполнения JavaScript с открытым исходным кодом, которая выполняет код JavaScript вне веб-браузера. Node.js позволяет разработчикам использовать JavaScript для написания инструментов командной строки и сценариев на стороне сервера для создания динамического содержимого веб-страницы до ее отправки в веб-браузер пользователя.

Как и в случае с другим программным обеспечением, которое мы установили до сих пор, нам сначала нужно добавить репозиторий Node.js, чтобы получить последнюю версию. Но на этот раз процедура несколько иная. Мы собираемся добавить репозиторий с помощью следующей команды, которая выполнит скрипт из URL-адреса:

Теперь мы можем установить Node.js:

Чтобы быть уверенным, что npm (который устанавливается вместе с Node.js) будет работать правильно, вам необходимо установить дополнительные пакеты общего назначения, такие как компиляторы, библиотеки и некоторые другие утилиты:< /p>

Позже мы рассмотрим настройку базовой веб-страницы с помощью Node.js.

Шаг 6. Установите MongoDB

MongoDB — это универсальная кроссплатформенная программа базы данных на основе документов. MongoDB, классифицируемая как программа базы данных NoSQL, использует JSON-подобные документы со схемой и создана для современных разработчиков приложений и для эпохи облачных вычислений. Чтобы установить последнюю версию, вам необходимо импортировать общедоступный GPG-ключ MongoDB по указанному ниже URL-адресу и вручную добавить репозиторий:

Создайте файл списка для MongoDB в вашей версии Ubuntu:

Обновить список пакетов с помощью новейшего репозитория:

Установите последнюю стабильную версию:

Далее нам нужно запустить службу вручную с помощью следующей команды:

Затем включите службу MongoDB, чтобы она запускалась при загрузке системы:

Вот оно! Мы не собираемся выставлять службу mongo за пределы нашего сервера, поэтому мы можем использовать MongoDB как есть — с конфигурацией по умолчанию.

Шаг 7. Настройка простого веб-сайта

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

Затем мы перейдем к нашей вновь созданной папке:

Теперь мы можем установить необходимые пакеты npm:

На нашем простом веб-сайте у нас будет две страницы — основная и история. Так как мы используем механизм шаблонов EJS и нам понадобится еще одна дополнительная папка для этих файлов:

EJS – это простой язык шаблонов, позволяющий создавать HTML-страницы. Наша первая страница предназначена для основного представления, где мы собираемся создать поток данных MQTT в реальном времени. Откройте новый файл с именем main в представлениях папок:

Скопируйте следующий код EJS/HTML и вставьте его во вновь созданный файл:

Затем сохраните файл и выйдите из редактора.

Затем снова в папке views откройте новый файл с именем history.ejs:

Вставьте следующий код, который создаст веб-страницу, на которой будут отображаться записанные данные из базы данных:

Наконец, у нас есть самый важный файл, в котором будет находиться основной код JavaScript для нашего веб-сервера Node.js. Откройте новый файл с именем server.js в основной рабочей папке:

С помощью этого кода мы реализуем клиент MQTT и сохраняем полученные данные в базе данных MongoDB. Вставьте следующий код.

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

После этого сохраните файл и выйдите из редактора.

Тогда мы закончили кодирование нашей веб-страницы, теперь нам просто нужно открыть порт 443 в брандмауэре (порт 80 уже открыт):

Теперь вы можете протестировать приложение Node с помощью:

Откройте свой домен в веб-браузере, опубликуйте что-нибудь в своем MQTT-брокере, и это сообщение должно появиться на веб-странице. Откройте страницу истории, и вы сможете увидеть ранее введенные сообщения.

Однако наша работа с веб-страницей еще не завершена, поскольку нам нужно запустить ее и запустить вместе с системой.

Во-первых, мы сделаем наш файл server.js исполняемым:

Затем нам нужно создать новый файл, который на самом деле будет служебным файлом в нашей системной папке:

Скопируйте и вставьте следующий код в свой файл:

Чтобы убедиться, что наш файл server.js правильно работает как служба, убедитесь, что вы используете символы новой строки в стиле Unix.

Это можно сделать, открыв файл server.js с помощью текстового редактора vi:

Отредактируйте и сохраните файл с помощью следующих команд:

Затем включите службу и запустите ее

Чтобы убедиться, что все работает правильно, вы можете запустить:

Вот оно! Теперь вы закончили работу со своей веб-страницей.

Шаг 8. Добавление перехватчиков обновления в Certbot

Все, что осталось сделать, это исправить наш автоматический хук обновления SSL. Поскольку порт 80 уже занят сервером Node.js, нам нужно временно его открыть. После успешного обновления сертификата нам необходимо перезапустить задействованные службы, Mosquitto и веб-страницу. Откройте файл конфигурации хука обновления Certbot. Обратите внимание, что вам нужно открыть файл конфигурации, относящийся к вашему доменному имени .

Далее добавьте следующие команды в конец файла:

Затем сохраните файл и выполните следующую команду, чтобы протестировать новый файл конфигурации обновления:

Затем Certbot выполнит пробный запуск, чтобы попытаться обновить сертификаты SSL, фактически не внося никаких изменений.

По завершении, если ошибок нет, значит, все настроено!

Заключение

Мы надеемся, что это руководство помогло вам узнать о брокере MQTT и дополнительных приложениях, которые расширяют его возможности и делают его более безопасным. Мы сделали все просто, и вы должны адаптировать его для реального использования. Не стесняйтесь оставлять комментарии с вашими впечатлениями или предложениями. Спасибо за внимание!

Mosquitto MQTT Server — это брокер сообщений, работающий по протоколу MQTT. MQTT — это упрощенный протокол обмена сообщениями, который является стандартом ISO для использования поверх протокола TCP/IP. Он в основном используется для связи с устройствами Интернета вещей. Мы собираемся установить Mosquitto на сервер Ubuntu 16.04 и будем отправлять сообщения из программы-шпиона MQTT. Mosquitto является проектом Eclipse и распространяется под лицензией EDL. Итак, начнем.

Сборка сервера Mosquitto MQTT из исходников

Чтобы установить mosquitto, нам нужно выполнить следующие шаги. Сначала обновите список источников и получите зависимости

Добавить пользователя mosquitto, так как по умолчанию он работает без полномочий root.

Для удобства мы предоставим права sudo этому пользователю, потому что остальную часть процесса установки мы будем выполнять от имени этого пользователя

Затем мы войдем в систему как этот пользователь и перейдем к его домашнему каталогу

Далее мы загрузим исходный код Mosquitto, последняя версия 1.4.9 на момент написания, но я предлагаю вам проверить страницу загрузки, чтобы узнать, есть ли новая версия. Итак, давайте загрузим последнюю версию

Давайте распакуем его и переместим в каталог

Затем мы компилируем и устанавливаем программное обеспечение

Настройка MQTT-сервера Mosquitto

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

Вам будет предложено создать пароль для нового пользователя mqtt-spy, который мы будем использовать для подключения из клиента. Это отличается от пользователя mosquito, который является системным пользователем для запуска сервера mosquitto. Нам нужно добавить разрешения этому пользователю mosquitto во все соответствующие каталоги

Затем нам нужно создать файл конфигурации для сервера Mosquitto MQTT, поэтому давайте воспользуемся nano для создания нового файла

Там вы можете вставить это

Конфигурация кажется длинной, но мы добавили более подробные журналы и файл паролей.

После сохранения конфига запускаем ldconfig

Давайте добавим файл модуля systemd

Давайте запустим службу

И проверьте его статус

Чтобы он запускался при загрузке, выполните эту команду

Настройка MQTT-Spy и подключение

MQTT-Spy — это клиент на основе Java, который мы будем использовать для подключения к серверу MQTT. Вы можете получить его с github, но обратите внимание, что у вас должен быть установлен Oracle JDK. Это НЕ работает с OpenJDK. Первое, что нужно сделать после просмотра MQTT-шпиона, — это создать новое соединение. Вы добавляете IP-адрес своего сервера и порт по умолчанию 1883.

Затем вы добавляете пароль и имя пользователя, которые мы сделали ранее, в моем случае это mqtt-spy, а пароль — это пароль.

Затем мы можем открыть окно терминала на сервере и ввести следующую команду

Чтобы объяснить флаги, -v для детализации, -t для темы, за которой следует тема в кавычках, -u для пользователя и -P для пароля. После ввода этой команды он будет зависать, но тогда нам нужно использовать MQTT-шпион, чтобы создать новую тему и отправить сообщение в ту же тему, как на картинке ниже.

Заключение

Мы успешно установили сервер Mosquitto MQTT, который позволяет вам иметь сеть подключенных устройств IoT по протоколу MQTT 3.1.Мы установили его на Ubuntu на классическом ПК с архитектурой x86, который большинство людей использует для разработки и обучения. Для настоящего IoT вам понадобится устройство ARM. Это все, что касается этой статьи, спасибо за внимание.

Теги Приложения и инструментыUbuntu slug; $list = get_page_by_title('related', 'OBJECT', 'wp_show_posts'); wpsp_display($list->ID, 'tax_term="' . $cat_slug . '"' );*/ ?>

Читайте также: