Бесплатный и Личный MQTT брокер (Mosquitto) для IoT-устройств. На базе Ubuntu 20.04 на Always Free VPS сервер от Oracle
Привет Пикабу!
В этой статье мы сделаем (установим) своего личного MQTT брокера Mosquitto для контроля датчиков IoT-устройств на ESP и их дальнейшей связки с системой умного дома (например Home Assistant). А устанавливать будем на Ubuntu 20.04 установленную на Always Free VPS сервер от Oracle (по аналогии можно и на любом другом сервере).
Вместо предисловия или disclaimer )))
Наполняю не спеша свой аккаунт на Пикабу полезной информацией по тематике "Умный дом". Обращаю Ваше внимание, что это будут не всегда полноценные и пошаговые инструкции и туториалы, а скорее выдержки типа "шпаргалок", на случай посмотреть, если забыл. Ну как бы я буду писать здесь "шпаргалки" и "запоминалки" для себя и на будущее, а Вы можете ими пользоваться или нет, как в старые добрые институтские времена.... ))) Поэтому любой мой пост не претендует на правильность высказанного в нём моего мнения и истину моих умозаключений в конечной инстанции, я просто делюсь своим скромным опытом. Всё что Вы будете делать и повторять по моим постам, Вы делаете на свой страх и риск ;-)
Предпосылки к созданию своего личного MQTT брокера у меня появились после того, как узнал, что скоро сервер брокера (располагающийся ранее по адресу mqtt.wifi-iot.com) которым я пользовался на сайте конструктора прошивок wifi-iot.com выключат (уже):
Бесплатный сервер VPS для установки Linux для нашего MQTT брокера мы уже нашли здесь, и установили на него Ubuntu 20.04 здесь. (далее подразумевается, что всё это или аналоги у вас уже есть).
Ещё одно примечание, MQTT брокер можно поставить и на домашний - локальный сервер (зачастую это проще и логичнее), даже на край на туже самую ESP, здесь рассматривается пример именно для случаев, когда нужен внешний брокер, но способ конечно подходит и для локальной установки.
Итак, приступаем к установке.
Подключаемся через PuTTy по SSH к своему серверу
(Как? По этой ссылке в конце поста мы это уже делали.)
Подготовим систему.
1) Для получения списка и обновления новых пактов, выполните:
sudo apt-get update && apt-get upgrade -y
2) Устанавливаем MQTT брокер Mosquitto:
sudo apt install mosquitto mosquitto-clients -y
3) Сразу настроим для Mosquitto подписку по логину и паролю (пример логина - pikabu):
sudo mosquitto_passwd -c /etc/mosquitto/passwd pikabu
4) Далее, по запросу, нужно ввести два раза ваш пароль для Mosquitto:
Связка логин-пароль будет храниться по следующему пути /etc/mosquitto/passwd
5) Запретим анонимные подключения к Mosquitto. Открываем файл default.conf:
sudo nano /etc/mosquitto/conf.d/default.conf
6) Он должен быть пустой, вставляем туда этот текст:
allow_anonymous false
password_file /etc/mosquitto/passwd
Сохраняем и закрываем файл, нажав CTRL + X, Y, а затем ENTER.
7) Перезагружаем Mosquitto чтобы применить изменения:
sudo systemctl restart mosquitto
Проверим работоспособность брокера.
Войдите на свой сервер через PuTTy ещё раз (откройте второе окно терминала рядом) и введите в него следующую команду (подписка на брокера) со своим логином и паролем:
mosquitto_sub -h localhost -t test -u "pikabu" -P "ваш_пароль"
а в первом открытом окне отправляем топик введя команду вида:
mosquitto_pub -h localhost -t "test" -m "Privet Pikabu" -u "pikabu" -P "ваш_пароль"
Во втором окне терминала у вас должно появиться ваше сообщение (в примере "Privet Pikabu"):
На этом этапе MQTT брокер Mosquitto у нас успешно запущен и защищён паролем.
Ниже пару нюансов для нашей VPS от Oracle:
Настроим брандмауэр IPTABLES (для нашей виртуальной машины на сервере Oracle).
Команды вводим от своего пользователя!
sudo iptables --policy INPUT ACCEPT
sudo iptables -F
sudo iptables -A INPUT -p tcp --dport 1883 -m state --state NEW -j ACCEPT
sudo netfilter-persistent save
sudo ufw disable
Откройте порт 1883 на VPS от Oracle. Для этого открываем ссылку в письме, которая пришла после регистрации в Oracle, вводим логин и пароль и попадаем в свою учетку, где следуем по пути:Сети - Виртуальные облачные сети - vcn- (ВАШ) - Сведения о списках безопасности
Альтернативный способ попасть туда из главного окна: "Настроить сеть с помощью мастера", "Запуск мастера VNC" нужно нажать "отмена", кликаем на свой "VNC-номер", далее в "ресурсах" нажимаем на "Списки безопасности" и кликаем на "Default Security List for vcn-номер"
где добавляем правила для входящего трафика:
Почти В С Ё!!! ;-) ***
*** Настоятельно рекомендую настроить и включить шифрование SSL, например через сертификаты Let Encrypt, ибо если оставить так, то данные через интернет будут передаваться в не зашифрованном виде. В рамках этого поста этой инструкции не будет, только ключевые фразы в предыдущем предложении для поиска информации в интернете .
В заключении несколько примеров применения MQTT брокера Mosquitto:
Для пользователей сервиса wifi-iot.com, у которых в прошивке включен сервис "MQTT клиент" ("ESP" - "Сервисы" - "MQTT клиент") и недавно "всё поломалось" уже можно ввести новые данные только что настроенного вами личного MQTT брокера Mosquitto и радоваться жизни. ;-)
Пример настройки, подробнее здесь:
Для проверки работоспособности брокера можно скачать MQTT Explorer для своей операционной системы.
Вводим данные своего MQTT брокера Mosquitto:
И наблюдаем свои топики (или управляем своим устройством, если настроено).
Ниже мой наглядный пример, который только-что создал.
"ESP-OFICE" это топик ESP8266 c прошивкой на базе конструктора WiFi-IoT, у которой на борту датчик углекислого газа - CO2 (MH-Z19B), датчик температуры давления и влажности BME280 и уличный датчик температуры DS18B20. Моё видео о нём можно посмотреть здесь.
"homeassistant" через плагин, который показывает статус "online" тестовой системы Home Assistant установленной на этом же сервере.
"broker" - это непосредственно сам MQTT брокера Mosquitto, где мы видим, опубликованное ранее в этом посте, сообщение через терминал "Privet Pikabu" )))
На этом пока пожалуй всё по этой теме ;-)
Всем пока и "бобра"! ;-)