На предыдущем уроке мы установили операционную систему на плату Raspberry PI, тем самым сделав нашу плату работоспособной. А в этом уроке по протоколам передачи данных мы познакомились с протоколом MQTT (Message Queuing Telemetry Transport). Здесь же мы узнали, что для работы с данным протоколом требуется брокер, который должен отвечать за рассылку сообщений от одного узла другому (подписчикам).
Можно воспользоваться готовыми облачными брокерами, но, я считаю, что это не совсем надёжно, так как в любой момент такие брокеры могут закрыться по тем или иным причинам, поэтому будет целесообразным установить свой брокер дома, воспользовавшись платой Raspberry PI, так как, благодаря её очень маленьким размерам, она не займёт много места в доме, но при этом работоспособность её, как показала практика, вполне неслабая.
В качестве брокера мы будем использовать Mosquitto.
Mosquitto является сервером MQTT с открытым исходным кодом с лицензией EPL/EDL, также Mosquitto является частью Eclipse Foundation и является проектом iot.eclipse.org.
Итак, брокер MQTT Mosquitto мы будем устанавливать на Raspberry PI 4B. Можно также его ставить в принципе на любой одноплатный компьютер, так как устанавливаться он будет не из репозитория Raspbery. Так что пробуйте.
Подключим нашу Raspberry
Дождёмся загрузки операционной системы, подключимся к плате по SSH.
Первым делом выполним обновление базы данных пакетов
Дождёмся окончания обновления базы данных пакетов, затем выполним команду непосредственно обновления пакетов
Соглашаемся со всеми запросами
Также советую установить файловый менеджер Midnight Commander, чтобы было удобнее работать с файлами, для чего введём следующую команду
Теперь в любой момент мы можем запустить файловый менеджер Midnight Commander командой
А если надо запустить его для редактирования системных файлов от имени администратора, то командой
При помощи команды sudo мы можем запустить от имени администратора любую программу.
Вот так вот выглядит наш файловый менеджер
Пока он нам не нужен, поэтому выйдем из него при помощи меню
Теперь подготовим репозиторий для установки mosquitto.
Сначала выполним вот такую команду (на всякий случай буду дублировать команды в распознаваемом виде, хотя из-за использования CMS могут быть проблемы с некоторыми символами, поэтому внимательно смотрим на скриншоты)
sudo wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
Следующая команда:
sudo apt-key add mosquitto-repo.gpg.key
Затем с помощью следующей команды перейдём в определённую директорию
cd /etc/apt/sources.list.d/
Далее следующую команду
sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list
Ещё раз выполним обновление базы данных пакетов
sudo apt-get update
Устанавливаем MQTT брокер (сервер):
sudo apt-get install mosquitto
Устанавливаем MQTT клиент:
sudo apt-get install mosquitto mosquitto-clients
Остановим сервер:
sudo /etc/init.d/mosquitto stop
Теперь нам надо будет отредактировать файл /etc/mosquitto/mosquitto.conf
Запустим Midnight Commander от имени администратора и откроем файл для редактирования с помощью функциональной клавиши F4
Первый раз менеджер попросит выбрать редактор. Мне нравится встроенный в менеджер, поэтому я выбираю пункт 2. А вы выбираете согласно своих предпочтений
Текст файла будет примерно таким (вы можете внести другое имя пользователя и пароль для соединения с брокером
1 2 3 4 5 6 7 8 9 10 |
allow_anonymous false password_file /etc/mosquitto/passwd listener 1883 persistence true persistence_file mosquitto.db persistence_location /var/lib/mosquitto/ protocol mqtt pid_file /var/run/mosquitto/mosquitto.pid #log_dest /var/log/mosquitto/mosquitto.log user mosquitto |
Скопируем в наш файл данный текст
Нажмём клавишу Esc для закрытия редактора, согласившись с сохранением файла
Выйдем из mc и попытаемся запустить брокер
sudo /etc/init.d/mosquitto start
Сервер может не запуститься
Для того, чтобы клиенты могли подключиться к вашему брокеру только по логину и паролю, необходимо создать конфигурационный файл, который будет содержать имя пользователя и зашифрованный пароль (возможно поэтому у нас и не запустился сервер, так как не нашел файл с паролем). Вводим в консоли: sudo mosquitto_passwd -c /etc/mosquitto/passwd mosquitto
Придумаем и введём пароль (ясное дело надо такой же, как в файле конфигурации):
Повторим ещё раз
Попробуем ещё раз запустить брокер
Вот теперь всё удачно!
После каждой правки mosquitto.conf нужно перезапускать брокер командой
sudo systemctl restart mosquitto
Узнать состояние брокера можно с помощью команды
systemctl status mosquitto.service
Теперь брокер и клиент у нас установлены.
Можно испытать их работу прямо на Raspberry.
Давайте попробуем подписаться на какие-нибудь темы.
Для этого вводим в командной строке, например, команду
mosquitto_sub -v -u mosquitto -P 123456 -h localhost -p 1883 -t house/#
С помощью данной команды мы подписались на все топики в группе house, включая и вложенные в другие подгруппы (смотрим этот урок по MQTT).
Запустим ещё один сеанс SSH, авторизуемся там и попробуем оттуда отправить какое-нибудь сообщение в топик, находящийся в подгруппе house
mosquitto_pub -h localhost -u mosquitto -P 123456 -t house/s1 -m 'sss'
Посмотрим в предыдущем клиенте, пришло ли туда опубликованное сообщение
Отлично! Сообщение пришло!
Итак, мы установили и настроили работоспособный брокер MQTT на плату Raspberry PI.
Всем спасибо за внимание!
Предыдущий урок Raspberry PI Следующий урок
Недорогую плату Raspberry PI 4B можно купить здесь:
Смотреть ВИДЕОУРОК в RuTube (нажмите на картинку)
Смотреть ВИДЕОУРОК в YouTube (нажмите на картинку)
Смотреть ВИДЕОУРОК в Дзен (нажмите на картинку)
Добавить комментарий