Mqtt explorer как пользоваться

Обновлено: 05.07.2024

Этот протокол не такой и старый появился он в 1999 году, в 2014 году стандартизирован, а в апреле 2019 года вышла MQTT v5.0


Основные особенности протокола MQTT:

Устройства протокола MQTT

Вот схема как все это выглядит.

Протокол MQTT работает на прикладном уровне поверх TCP/IP и использует порты:

  • 1883 по умолчанию
  • 8883 при подключении через SSL

Кроме этого существуют ещё некоторые термины, о которых необходимо знать:

QoS (Quality of Service – качество обслуживания)- этот показатель обозначает вероятность прохождения пакета между двумя точками сети.

  • Connect – установить соединение с брокером
  • Disconnect – разорвать соединение с брокером
  • Publish – опубликовать данные в топик
  • Subscribe – подписаться на топик
  • Unsubscribe – отписаться от топика

Практическая реализация

Брокер (сервер) Mosquitto

Пожалуй это самый известный сервер (брокер)

Доступны два типа пакетов:

  • nossl (mosquitto-nossl) без шифрования
  • ssl (mosquitto-ssl) с шифрованием

Для создания пользователей и генерации паролей необходимо установить пакет mosquitto-client

Установим пакеты с шифрованием, конечно будем использовать командную\ю строку, терминал в данном случае PuTTY ( официальный сайт ):

После установки все само появляется в автозагрузке

Но если что, то включаем в автозагрузке и стартуем

Можно перезагрузить роутер

И все, мы все установили, но работать ничего не будет, дальше все это нужно настроить.

Настройка

Настройка пароля и пользователя

Настройку можно произвести двумя способами через WIndows или через роутер, через роутер легче и быстрее, но возможно кому то понадобится через Windows или привычнее, но еще раз так дольше

Через ОС Windows 10 (лучше делать через роутер так быстрее, см. ниже)

- Создаем файл с расширением . bat, например StartPWD.bat (имя может быть любое)

Отступление о запуске программы с параметрами командной строки

Запустить программу с определенными значениями в среде Windows можно двумя способами
С помощью ярлыка
Создаем ярлык, Свойства. Откроется окно, в котором нас интересует поле Объект. Именно в нем, после кавычек, и следует дописать нужную нам команду.

С помощью "bat" файла
start "" путь_к_программе
Если путь содержит пробелы, возьмите весь путь в двойные кавычки, например: start "" "C:\Program Files\program.exe"
После пути к программе можно также указать параметры, с которыми она должна запускаться, например (аналогично, если параметры запуска содержат пробелы, возьмите их в кавычки): start "" c:\windows\notepad.exe file.txt

start "" "C:\Program Files\mosquitto\mosquitto_passwd.exe" -c C:\user.list ИМЯ_Пользователя

Например создадим пользователя "test"

start "" "C:\Program Files\mosquitto\mosquitto_passwd.exe" -c C:\user.list test

"C:\Program Files\mosquitto\mosquitto_passwd.exe" - путь в кавычках где установлен mosquitto

-c C:\m user.list ИМЯ_Пользователя - ключ и путь расположения файла пароля

Файл пароля можно открыть в текстовом редакторе он имеет вид

Имя_пользователя: Зашифрованный пароль

Выглядит вот так

test:$6$5Prq6fKi/BKhXVd+$SK2AYMVcMUKP94nzkZF3YIy6SXQhA5HBjDM/5n0X07YbIVPJP8Mnl4YGlRDkyWxSWs1mnxhP+CEzw9xvtV6F/Q==

- Запускаем наш bat файл от администратора.

- Возникает окно с запросом пароля для пользователя имя которого мы указали выше. Вводим пароль два раза (он не отображается), Формируется файл mosquitto.pwd

- Находим файл который находится в корневом каталоге С: C:\user.list

- Загружаем программу WinSCP и переносим созданный файл на роутер в /etc/mosquitto/ config/

Настройка через OpenWRT и командую строку

Сначала создадим файлы и папки

Мы это делаем для того, что бы все файлы с настройками и паролями хранились в одном месте и их можно было легко перенести и сохранить. Все будем хранится в папке " config ". Создаем папку " config " в etc/mosquitto вот полный путь: /etc/mosquitto/config таким образом

Создаем файл "main.conf " в /etc/mosquitto/config получается вот так /etc/mosquitto/ config/main.conf

там же создаём файл /etc/mosquitto/ config/mosquitto.acl все вместе вот так:

touch /etc/mosquitto/config/main.conf
touch /etc/mosquitto/config/mosquitto.acl

Открываем любой терминал (чаще всего это Putty), заходим и вводим

mosquitto_passwd -c /etc/mosquitto/ config/user.list ИМЯ_ПОЛЬЗОВАТЕЛЯ

Ну например ИМЯ_ПОЛЬЗОВАТЕЛЯ будет test или dom

mosquitto_passwd -c /etc/mosquitto/config/user.list test

Возникает окно с запросом пароля для пользователя имя которого мы указали выше. Вводим пароль два раза (он не отображается ), Формируется файл user.list

Теперь редактируем основной конфигурационный файл "mosquitto.conf"

Таким образом что бы подгружать конфигурации из указанной папки, а мы ее создали выше (в нашем случае это файл main.conf )

Идем в mosquitto.conf это основной конфигурационный файл и открываем его, например с помощью nano

или с помощью vi

или с помощью SFTP и программы WinSCP и вносим единственную правку в секцию External config files добавляем (на самом деле пофиг куда добавлять, все равно там все закомментировано, но так по феншую, этот раздел находится в самом низу документа):

include_dir /etc/mosquitto/config

тем самым говорим где искать конфигурационные файлы

В файл main.conf например с помощью nano

или с помощью SFTP и программы WinSCP

Добавляем единственные строки

Что делают эти строки?

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

Вторая строка объясняет где расположен файл пароля

Третья строка объясняет где расположен файл с доступам к топикам (см. ниже)

Получаем вот так (это можно скопировать и добавить в файл) ссылка на текстовый файл

Настройка доступа пользователей к топикам

Идем в файл mosquitto.acl

который мы создали ранее и редактируем его, настраиваем нужный доступ по нужным пользователям, для тестирование даём доступ пользователю test или dom ко всем топикам это знак решетки
Вот так, ссылка так как используется решетка

Символ решетки

  • temp/2
  • tempe/sensor
  • temp/other/sensor
  • temp/comp

Символ плюса (+)

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

/home/living-space/ + /temperature

В результате получаем данные с топиков:

  • /home/living-space/living-room1/temperature
  • /home/living-space/living-room2/temperature
  • /home/living-space/living-room3/temperature

LWT - Last Will and Testament

Таким образом можно точно знать что устройство ушло в offline или вернулось в online.

В ESP8266 есть такие настройки:

Настройка завершена, теперь перезагружаем службу:

Настройка mosquitto завершена создан пользователь test или dom который имеет доступ ко всем топикам.

Проверка

Для проверки будем использовать MQTTLens клиент под Windows, а именно приложение Google Chrome, которое подключается к брокеру MQTT и может подписываться на топики MQTT и публиковать их.

Вот такое непримечательное окно, но нам с ним особо не работать, а только проверить.

Я написал этот текст специально для людей кто никогда раньше не сталкивались с MQTT.

История возникновения MQTT

MQTT — это такой специальный протокол по которому умеют общаться программы и устройства. Есть русский язык и люди которые умеют разговаривать на этом языке могут понять друг друга. Точно так же есть "язык" MQTT — программы и устройства которые умеют разговаривать на этом языке могут общаться друг с другом.

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

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

Протокол MQTT смог успешно решить эта задачу и стал применяться и в других отраслях. Постепенно компьютеры и микропроцессоры становились все дешевле и это привело к тому что стала появляться куча разных устройств в которые добавили "ума" (для этого придумали красивый термин IoT — Internet of Things — Интернет Вещей). Умный чайник, умный обогреватель — эти устройства могут отправлять данные про себя (какая сейчас температура, сколько устройство работает), а так же удаленно получать команды на управление.

Есть множество устройств разных производителей — как им общаться друг с другом и с серверами умного дома? Можно взять и придумать новый язык (протокол) и многие производители так и делают. Но есть протокол MQTT которые отлично подходит для общения разных устройств и программ. Некоторые производители используют MQTT в своих устройствах. MQTT популярен в мире бесплатных и открытых программ (Open Source).

Программа MQTT Explorer

Если вы работаете с MQTT, то вам нужно обязательно скачать и поставить программу MQTT Explorer.

Программа бесплатная. Программа работает на Windows, на macOS и на Linux.

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


MQTT брокер

MQTT — это протокол который работает по модели клиент-сервер.

Центральная часть — это MQTT сервер. Обычно сервер MQTT называют MQTT брокер.

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


Далеко не всегда нужно самому запускать MQTT сервер. Многие системы сами поднимают MQTT сервер с которыми работают.

Клиенты

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

  • адрес сервера (это часто ip адрес, что-то вроде 192.168.31.103)
  • порт на котором работает MQTT сервер (обычно это 1883)
  • имя пользователя
  • пароль

Итак, есть MQTT брокер — центр системы. Есть клиенты которые подключаются к этому центру.

Давайте разберем задачу. Есть датчик температуры и есть система умного дома. Как с помощью MQTT датчик может передать температуру в систему умного дома?

Датчик температуры подключается к серверу MQTT. Раз в 5 минут датчик производит замер температуры и отправляет результат замера в сервер MQTT. Например, температура 23.8 °C

Половину задачи решели — датчик температуру отправил значение температуру в MQTT сервер.

Символ решетка

  • temperature/sensor
  • temperature/sensor2
  • temperature/some/other/sensor

Retain Флаг

Last will

Одна из интересных фишек протокола MQTT — это штука под названием Last will — завещание. Еще используют аббревиатуру "LWT" — Last Will and Testament.

Стандартная работа — клиент подключается к MQTT серверу и все время остается подключенным к серверу (сервер "видит" момент подключения и может понять когда клиент отключился).

Задача. Есть клиент — компьютер — он должен быть всегда подключен к MQTT серверу. Если этот компьютер не подключен к MQTT серверу — это авария, что-то случилось либо с этим компьютером, либо с каналом связи. Как об этой аварии могут узнать другие клиенты?

Протокол Message Queuing Telemetry Transport (MQTT) используется в течение многих лет, но сейчас он особенно актуален благодаря взрывному росту IoT: и потребительские, и промышленные устройства внедряют распределённые сети и граничные вычисления (edge computing), а устройства с постоянной трансляцией данных становятся частью повседневной жизни.

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

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

Таким образом, MQTT стал протоколом для потоковой передачи данных между устройствами с ограниченной мощностью CPU и/или временем автономной работы, а также для сетей с дорогой или низкой пропускной способностью, непредсказуемой стабильностью или высокой задержкой. Именно поэтому MQTT известен как идеальный транспорт для IoT. Он построен на протоколе TCP/IP, но есть ответвление MQTT-SN для работы по Bluetooth, UDP, ZigBee и в других сетях IoT, отличных от TCP/IP.

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


Пример того, как можно настроить клиент для подключения через брокера MQTT:

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

Кроме того, в MQTT можно использовать аутентификацию Ably на токенах, если вы вообще не хотите раскрывать свой ключ API фактическому клиенту MQTT (в случае MQTT без SSL токены обязательны, чтобы предотвратить передачу ключей API открытым текстом). Пример аутентификации через токены:

Согласно IBM, MQTT обладает следующими свойствами:

Одной из отличительных характеристик MQTT является уникальное понимание каналов: каждый из них обрабатывается как путь к файлу, например:

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

CoAP — ещё один протокол, который часто сравнивают с MQTT для разработки систем IoT. Они похожи, но есть заметные различия. MQTT — это протокол «многие ко многим», в то время как CoAP — это в основном протокол «один к одному» для связи между сервером и клиентом. В то же время CoAP предоставляет функции метаданных, обнаружения и согласования содержимого, которых нет у MQTT.

В тех случаях, когда клиенты должны только получать данные, Server-Sent Events — тоже подходящий вариант.

Eclipse Mosquitto — open source брокер MQTT

MQTT.js

MQTTnet

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


После настройки параметров клиента MQTT можно установить соединение. В следующем коде показано, как подключиться к серверу:

Когда речь идёт о масштабировании MQTT, следует учесть два соображения: 1) правильный ли это протокол; 2) независимо от выбора протокола, какие инфраструктура и сетевые возможности необходимы для обработки возросшего трафика между устройствами по MQTT.

Lightweight Machine-to-Machine (LWM2M) — ещё один протокол, который можно использовать вместе с MQTT на уровне предприятия. По сравнению с MQTT, он иногда лучше подходит для долговременных систем IoT. MQTT идеально подходит для пробного запуска IoT без особых усилий, в то время как LWM2M предоставляет функции для долгосрочной универсальной инфраструктуры. LWM2M также предоставляет превосходные инструменты управления устройствами, такие как мониторинг подключения, обновление прошивок и удалённые действия на устройствах. Для предприятий с большим количеством неуправляемых устройств, отправляющих большие объёмы данных на центральную платформу, LWM2M является лучшим выбором. Тем не менее, мы говорим о масштабных развёртываниях IoT, поэтому обычно MQTT более чем адекватный вариант. Кроме того, MQTT более распространён и у него более широкая поддержка.

В апреле 2019 года OASIS выпустила MQTT v5.0 в качестве официального стандарта. OASIS — это некоммерческий консорциум, состоящий из 600 организаций-членов и 5000 индивидуальных участников.

Версия 5.0 вводит ряд новых функций, которые должны представлять интерес для разработчиков систем реального времени. Эти новые функции обратно совместимы с текущими версиями MQTT. Среди них:

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

MQTT — популярный, широко поддерживаемый и относительно зрелый протокол. Он отлично подходит для множества применений в реальном времени, а не только для развёртывания IoT. Тем не менее, поскольку производство и потребление данных в реальном времени продолжают расти экспоненциально, MQTT не всегда будет правильным выбором протокола для удовлетворения ваших потребностей в потоковой передаче. Следите за нашим разделом Realtime Concepts для получения информации о других протоколах и о том, как они подходят вашей ситуации.


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

Установка альтернативного брокера

Для начала необходимо обновить состояние системы до актуальной. Подключаемся к малине по ssh и выполняем следующие команды:

Далее ставим брокер:

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

Далее надо будет ввести два раза пароль по запросу. Эта команда создаст связку логина homeassistant и пароля который вы задали в файле /etc/mosquitto/passwd и теперь нам надо натравить брокер на этот файл и запретить анонимные подключения к нему. Сделаем это так, откроем файл конфига брокера:

И запишем туда следующие строки:

сохраняем файл и перезагружаем брокер командой:

Далее можем проверить, что все настроено правильно. Откроем параллельно два окна терминала и подключимся в обоих к нашей малине по ssh. Далее в одном из них напишем:

Настройка стороннего брокера в HA

Открываем основной конфигурированиям HA любым удобным способом и дописываем в конец файла:

Разберем по порядку:

Все что мы настроили - касается только информации о статусе самого HA в брокере

Добавляем устройство с MQTT

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


при этом имеем такие топики:

Теперь добавим свитч в HA, для этого в конфиг внесем несколько строчек:

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

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


Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.

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

У меня на данный момент нет таких датчиков, вскоре постараюсь по возможности дополнить

сам спросил сам и отвечу. У меня sonoff th10 с датчиком температуры и влажности AM2301 на прошивке tasmota, ниже рабочий конфиг. Соответственно то, что желтым (topic) у вас может отличаться.

2000x2000x_image.jpg?1541458866

Как выдать кнопку xiaomi датчиком движения? Вроде как выдал, отображается как датчик движения но не срабатывает на нажатие. Для этого нужна автоматизация?

Смотря что вы хотите сделать.

Хочу чтоб кнопка имитировала датчик движения при ее нажатии, и потом перебросит в homekit.

Ты очень доступно пишешь, хороший слог

Вопрос по во этому месту

client_id: home-assistant-1 Это кто? Сам HomeAssistant? Если так, то как сам HomeAssistant узнает что он home-assistant-1? Прошу прощения если вопрос глупый но только начал в этом копаться и ничего не ясно пока что)

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

Помогите пожалуйста. Я подумываю мигрировать на HA с Majordomo.

Я установил на RPi3 Home Assistant 0.93.1. dev-False; docker-false; hassio-false.

Я установил MQTT. и далее начались вопросы :)

1.Могу ли я установит Hassio (в качестве расширения/дополнения. или мне необходимо устанавливать специализированный образ. Я читал, что с установкой Hassio появляется много удобных сервисов в системе. Можно ли до установить в моём случае? Стоит ли оно переустановки?)

У меня есть настроенная система. которую я начал пробывать переносить на HA. Я использовал датчики на ESP подключённые через пошивку wifi-iot непосредственно к Majordomo.

2.Подскажите, пожалуйста, какой метод мне теперь лучше использовать для подключения?

Я стал использовать MQTT. Мне не доводилось вплотную сталкиваться с работой с MQTT. Отчего возникли сложности. Я не могу связать информер с датчиками.

Есть Mosquitto. Через mqtt-spy наблюдаю приход данных в топик: ESP/ESP0003/json.

В configuration.yaml прописаны следующие секции:

1000x_image.jpg?1558545780

Так выглядит лог MQTT:

1000x_image.jpg?1558545894

Результат в HAS выглядит так. (вероятно где-то можно увидеть более информативное представление. пока не разобрался. )

1000x_image.jpg?1558546399

3. Скажите, пожалуйста, что я делаю неправильно. Я понимаю, что ошибка детская. но всё же.

В данном руководстве рассмотри, как запустить брокера Mosquitto для работы протокола MQTT на базе виртуальной машины с Ubuntu и виртуального хостинга Digital Ocean. Использование брокера через хостинг позволит подключаться к нескольким платам ESP32/ESP8266 и другим устройствам IoT отовсюду, где есть интернет. Также рассмотрим, как подключать платы к брокеру в Arduino IDE.

title

Для чего нужен протокол MQTT?

MQTT или Message Queue Telemetry Transport – это легкий, компактный и открытый протокол обмена данными созданный для передачи данных на удалённых локациях, где требуется небольшой размер кода и есть ограничения по пропускной способности канала.

broker_diagram

Брокеров достаточно много, мы используем один из самых популярных – Mosquitto MQTT Broker. Он очень прост в установке, конфигурации и использовании.

В данном руководстве мы установим его на виртуальную машину Linux Ubuntu, запущенной на хостинге Digital Ocean.

Обзор облачного MQTT брокера

В чем преимущества данного брокера? Как его использовать?

Использование облачного брокера позволяет нескольким устройствам IoT (например, платы ESP32/ESP8266) взаимодействовать друг с другом используя протокол MQTT, даже если они работают в разных сетях и разнесены в пространстве.

broker_diagram_2

Собственно, как работает данная сеть? Платы подключены к одному и тому же брокеру, включенному на хостинге. Так они могут взаимодействовать друг с другом (отправлять данные путем публикации данных в топик на брокере и получать их путем подписки на соответствующий топик)

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

broker_topics

Из чего состоит данное приложение?

  • Две платы ESP32, подключенные к разным сетям;
  • Облачный брокер, на котором есть пара топиков – board2/output и board2/temperature;
  • Плата №1 публикует данные, определяющие включение и выключение выходов платы №2, в топике board2/output1, на который подписана плата №2. Таким образом, плата №1 управляет платой №2.
  • Похожим образом плата №2 публикует показания температуры в топике, на который подписана плата №1. Таким образом, плата №1 получает показания, снимаемые платой №2.

Вы также можете установить Node-RED на этом же хостинге для управления и мониторинга ваших плат с компьютера или смартфона.

Digital Ocean

Для подключения облачного брокера потребуется хостинг, на котором можно использовать командную строке и устанавливать любой софт. Digital Ocean удовлетворяет этим требованиям.

Примечание: Вы также можете запустить брокер в локальной сети используя плату Raspberry Pi. Тем не менее, цель данного руководства заключается именно в создании облачного брокера.

Создаем аккаунт в Digital Ocean

Переходим по ссылке Digital Ocean и нажимаем кнопку «Sign up»

digital_ocean_website

Создав аккаунт, вы получите 100$ на счет, их вы можете потратить на 60-дневный пробный период. Потребуется привязать карту, но если вы можете отменить подписку в течение пробного периода, если она больше вам не потребуется.

sigining_up

После подтверждения аккаунта, зайдите в него:

digital_ocean_dashboard

Создаем дроплет (Linux Ubuntu VM)

Нажимаем «Create» для создания виртуальной машины и выбираем «Droplets» (так Digital Ocean называет виртуальные машины).

Важно: Если у вас уже есть дроплет с установленной Node RED, вы можете пропустить создание виртуальной машины. На одном сервере можно запустить одновременно и Mosquitto MQTT и Node RED.

creating_droplet

В этом руководстве мы будем использовать Ubuntu 20.04 (LTS) x64. Вы можете использовать либо эту ОС, либо выбрать план «Basic»:

choosing_the_plan_and_ubuntu

В меню ресурсов виртуальной машины стоит выбрать самый дешевый план за 5$ в месяц. Наш брокер будет нормально работать даже при таких ресурсах.

price

Выбираем местоположение ближайшего датацентра для виртуальной машины:

region

Создаем пароль для доступа к дроплету:

droplet_password

Ну и наконец, выбираем имя хоста для идентификации виртуальной машины (в нашем случае – «mqtt-cloud-server»). Осталось нажать большую зеленую кнопку «Create Droplet».

droplet_hostname

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

Доступ к консоли Linux Ubuntu VM

Открываем созданный сервер:

droplets

Выбираем меню «Access» и нажимаем «Launch console»:

console_access

Откроется новое окно в браузере:

adressing_to_console

Введите логин и пароль для сервера и нажмите Enter:

entering_to_console

Установка брокера Mosquitto MQTT на сервер с Linux Ubuntu VM

broker

Перед установкой софта обновите ваш сервер

Для установки брокера введите команду:

Проверка правильности установки брокера

Для проверки установки вы можете открыть второе окно терминала и установить SSH соединение с сервером (можно использовать PuTTY или любой другой SSH клиент):

check_with_putty

Вводим логин и пароль от сервера. Затем вводим следующую команду подписки для проверки работы топика:

check1

check

Оно должно появиться во втором терминале:

check2

Защита брокера MQTT

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

Вводим простую команду (нужно заменить YOUR_USERNAME на логин, который вы будете использовать):

sudo mosquitto_passwd -c / etc / mosquitto / passwd YOUR_USERNAME

Когда вы отправите эту команду, система потребует ввести пароль. Введите его и запомните.

Наконец, открываем файл default.conf для редактирования:

Добавляем в файл следующие две строки (они отвечают за требование авторизации для публикации/подписки)

Файл должен выглядеть следующим образом:

console_authorization

Сохраняем и закрываем файл (Ctrl+X, Y, Enter) и перезапускаем брокера.

failed_to_authorize

Попробуем подписаться на топик брокера с использованием аргументов –u и –P (проведение аутентификации):

mosquitto_sub -h localhost -t test -u "ruisantos" -P "YOUR_PASSWORD"

topic_sub

mosquitto_pub -h localhost -t test -m "Hello, world!" -u "ruisantos" -P "YOUR_PASSWORD"

topic_pub

Вот краткий список аргументов для брокера Mosquitto:

Подключение платы ESP32 к брокеру

Для этого нам сначала нужно выполнить следующее:

Arduino IDE

Мы используем Arduino IDE, поэтому убедитесь, что плата ESP32 установлена в среде разработки.

Библиотеки MQTT

Для использования MQTT используем библиотеку Async MQTT Client:

    ;
  • Разархивируйте папку;
  • Переименуйте папку в «async_mqtt_client»;
  • Переместите ее в папку библиотек Arduino;
  • И наконец, откройте заново среду разработки.

Вы также можете перейти Скетч>Подключить библиотеку> Добавить .ZIP библиотеку и выбрать только что скачанную библиотеку.

Установка библиотеки Async TCP

Эта библиотека также нам потребуется для работы брокера.

    ;
  • Разархивируйте папку;
  • Переименуйте папку в «AsyncTCP»;
  • Переместите ее в папку библиотек Arduino;
  • И наконец, откройте заново среду разработки.

Вы также можете перейти Скетч>Подключить библиотеку> Добавить .ZIP библиотеку и выбрать только что скачанную библиотеку.

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

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