Сегодня будет установка MQTT на роутер Xiaomi Mi WiFi Router 3G )))
Ранее на тему MQTT у меня было два поста:
- Установка и базовая настройка MQTT брокера Eclipse Mosquitto на Ubuntu | Debian
- Как подключить второй MQTT брокер к Home Assistant или мостовое (bridge) соединения MQTT брокеров Mosquitto
Есть у меня в коллекции Wi-Fi роутер «Xiaomi Mi Wi-Fi Router 3G» с прошивкой от Padavan, который после покупки роутера MikroTik остался не у дел. Точнее не работает больше как полноценный роутер, стоя на страже интернета, а выполняет свою функцию как дополнительная точка доступа Wi-Fi, маршрутизатор на 2-а порта и сетевое файловое хранилище с диском на 500 Гб.
Есть у этого роутера такая замечательная штука, как Entware — это репозиторий (хранилище), который позволяет легко устанавливать и удалять Linux-приложения в консоли роутера. Ну а в этом репозиторий есть пакеты Mosquitto:
Установка MQTT на роутер Xiaomi Mi WiFi Router 3G
Алгоритм (последовательность) запуска MQTT брокера на роутере Xiaomi Mi 3G такая:
1) Компилируем (собираем) скриптом PROMETHEUS самую свежую прошивку от Padavan. Я выбрал репозитарий Alxdm.
2) После прошивки и настройки роутера, развёртываем Entware на своём внешнем носителе. (Рекомендую использовать жесткий диск, ибо ресурс флеш-карт не большой. У меня флешка на 128 Гб прожила только три года).
3) Подключаемся через PuTTY по SSH к роутеру.
4) Для получения списка и обновления новых пактов, выполните:
# opkg update
# opkg upgrade
5) Устанавливаем MQTT брокер и клиент Mosquitto:
# opkg install mosquitto-nossl
# opkg install mosquitto-client-nossl
Пробуем запустить:
# mosquitto
Получаем такую ошибку:
Пользователя можно добавить так:
# adduser mosquitto
Но после перезагрузки роутера его снова нужно будет добавлять этой командой. Поэтому заходим в веб-интерфейс роутера по пути: «Приложение USB» — «Общий ресурс в FTP» и добавляем учётную запись «mosquitto»
Запускаем ещё раз брокер:
# mosquitto
Всё хорошо, теперь можно проверить например на клиенте MQTT Explorer:
Всё работает:
Осталось добавить MQTT брокер в автозагрузку. Для этого создаём скрипт в папке: /opt/etc/init.d с названием S33mosquitto (пример):
# cd /opt/etc/init.d
# echo "#!/bin/sh
PATH=/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bi
mosquitto -c /opt/etc/mosquitto/mosquitto.conf " >S33mosquitto
Скрипт можно добавить и проверить удобным вам способом.
Делаем его исполняемым:
# chmod +x /opt/etc/init.d/S33mosquitto
Перезагружаем роутер и смотрим на клиенте MQTT Explorer, что MQTT брокер успешно запустился.
У С Ё готово 😉
UPD: Обратите внимание, что в текущем варианте настройки, к брокеру может подключится любой клиент (с любым логином/паролем и анонимно) в локальной сети. Опционально можете «раскомментировать» строки в файле /opt/etc/mosquitto/mosquitto.conf на своё усмотрение, если вы хотите настроить брокер более детально. Но у меня почему-то «не завелась» команда «mosquitto_passwd», что бы иметь возможность создавать новые (отдельные) учётки для клиентов и удалять их, но в локальной сети с этим заморачиваться не стал. Вот конфигурация Entware/entware-packages на github, но немного мудрёная и я в ней тоже не стал разбираться, может быть у вас будет желание ))
UPD2: ОЗУ роутера MQTT брокер у меня практически не «кушает»:
На этом у меня Ф С Ё )))