MQTT - это «облегченный» протокол обмена сообщениями на основе модели публикации / подписки по TCP / IP для связи между устройствами «Интернета вещей», такими как ESP8266, Raspberry Pi и т. Д. Он очень популярен в приложениях с низким уровнем ресурсов и питанием от батарей, таких как дома автоматика, охранная сигнализация и сенсорные сети на батарейках.
Mosquitto - это брокер сообщений (или сервер) с открытым исходным кодом, который реализует протоколы MQTT. Благодаря хорошей поддержке сообщества, документации и простоте установки он стал одним из самых популярных брокеров MQTT.
Предпосылки
- Сервер Ubuntu 16.04 с
root
доступом
- Открыть порт
TCP:1883
на брандмауэре
Шаг первый: установите Mosquitto Broker
Обновите список пакетов Ubuntu и установите последний доступный брокер Mosquitto
sudo apt-get update
sudo apt-get install mosquitto
Служба Mosquitto запустится после установки.
Шаг второй: установите клиентов и протестируйте
Установите клиенты MQTT
sudo apt-get install mosquitto-clients
Клиенты Mosquitto помогают нам легко тестировать MQTT с помощью утилиты командной строки. Мы будем использовать два командных окна: одно для подписки на тему с именем "test"
и другое для публикации сообщения.
Темы - это метки, используемые посредником для фильтрации сообщений для каждого подключенного клиента. Клиентская программа, подписанная на тему, "Home1/BedroomTemp"
будет прослушивать только сообщения, опубликованные в той же теме другими клиентами.
Подписаться на тему "test"
mosquitto_sub -t "test"
Mosquito_sub
клиент подписки, который мы установили в предыдущей команде Здесь мы указываем " -t
", за которым следует название темы.
Опубликовать сообщение в теме "test"
Войдите в терминал как второй экземпляр и опубликуйте сообщение в "test"
теме.
mosquitto_pub -m "message from mosquitto_pub client" -t "test"
Здесь за дополнительным параметром " –m
" следует сообщение, которое мы хотим опубликовать. Нажмите « Enter
», и вы должны увидеть сообщение от mosquitto_pub client
другого терминала, где mosquito_sub client
работает.
Шаг третий: безопасный с паролем
Mosquitto поставляется с утилитой генерации файла паролей mosquitto_passwd
.
sudo mosquitto_passwd -c /etc/mosquitto/passwd dave
Password: password
Создайте файл конфигурации для Mosquitto, указывая на файл пароля, который мы только что создали.
sudo nano /etc/mosquitto/conf.d/default.conf
Это откроет пустой файл. Вставьте в него следующее.
allow_anonymous false
password_file /etc/mosquitto/passwd
Сохраните и выйдите из текстового редактора с помощью « Ctrl+O
», « Enter
» и « Ctrl+X
».
Теперь перезапустите сервер Mosquitto и проверьте наши изменения.
sudo systemctl restart mosquitto
В окне клиента подписки нажмите « Ctrl+C
» для выхода из клиента подписки и перезапустите его с помощью следующей команды.
mosquitto_sub -t "test" -u "dave" -P "password"
Обратите внимание на заглавную -P здесь .
В окне публикации клиента попробуйте опубликовать сообщение без пароля.
mosquitto_pub -t "test" -m "message from mosquitto_pub client"
Сообщение будет отклонено со следующим сообщением об ошибке.
Connection Refused: not authorised.
Error: The connection was refused.
Теперь опубликуйте сообщение с помощью username
и password
.
mosquitto_pub -t "test" -m "message from mosquitto_pub client" -u "dave" -P "password"
Нажмите « Enter
», и вы увидите сообщение в клиентском окне подписки, как во втором шаге.
Вывод
Теперь мы настроили защищенный паролем MQTT-сервер. Вы можете использовать Public IP вашего сервера Ubuntu в качестве брокера MQTT для ваших проектов.