Что такое Mosquitto?
Retained-сообщения. Брокер может сохранять последнее опубликованное сообщение в топике. Новый подписчик получит актуальное значение сразу при подключении, а не будет ждать следующей публикации.
Last Will and Testament (LWT). Клиент при подключении указывает «завещание» — сообщение, которое брокер опубликует, если клиент отключится неожиданно. Механизм повсеместно используется для отслеживания доступности устройств.
WebSockets. Помимо стандартного протокола MQTT, Mosquitto может принимать подключения через WebSockets. Это позволяет работать с брокером из браузера — полезно для веб-дашбордов и мониторинга.
Системные топики ($SYS). Mosquitto публикует собственную статистику в служебные топики: количество подключённых клиентов, число сообщений, время работы, версию. Удобно для мониторинга состояния брокера.
Mosquitto кроссплатформенный. Linux, Windows, macOS, FreeBSD — поддерживаются все основные ОС. Есть готовые пакеты для Debian, Ubuntu, Fedora, Arch, Alpine. Есть официальный Docker-образ eclipse-mosquitto. Есть пакет в репозиториях OpenWrt. На Raspberry Pi ставится штатным менеджером пакетов. В Home Assistant OS — доступен как аддон с установкой в два клика.
На практике Mosquitto чаще всего живёт на том же сервере, что и Home Assistant — отдельная машина для брокера в домашних условиях не нужна. Но если инфраструктура разрастается — несколько площадок, отдельные шлюзы — мосты и распределённая установка тоже возможны.
Если перечислять проекты из мира умного дома, которые работают с Mosquitto «из коробки», список получится длинный. Home Assistant, Zigbee2MQTT, Tasmota, ESPHome, Node-RED, OpenHAB, Domoticz, io.broker — это только самые известные. По сути, любой проект, поддерживающий MQTT, поддерживает и Mosquitto. Протокол стандартизирован, брокер совместим — ничего специфичного.
Это, кстати, одна из причин популярности: Mosquitto не привязывает вас к себе. Если завтра вы решите перейти на EMQX или NanoMQ — клиенты не заметят разницы. MQTT есть MQTT.
Mosquitto — однопоточный. Для домашней инсталляции это не проблема, но если вы планируете тысячи устройств с интенсивным обменом — есть решения помощнее. У Mosquitto нет встроенного веб-интерфейса (в бесплатной версии). Нет кластеризации — если процесс упадёт, переключения на резервный узел не будет. Нет REST API для управления. Всё это есть в коммерческой Pro-версии от Cedalo или в альтернативных брокерах. Но для умного дома на 10, 50 или даже 100 устройств — ни одно из этих ограничений не актуально.
Mosquitto — это рабочая лошадка домашней MQTT-инфраструктуры. Не самый функциональный брокер на рынке, но самый практичный для задач умного дома. Стабильный, лёгкий, хорошо документированный, поддерживаемый всей экосистемой. Он запускается за секунду, потребляет минимум ресурсов и просто делает свою работу.
Если вы строите умный дом и вам нужен MQTT — начинайте с Mosquitto. Менять его на что-то другое в домашних условиях смысла нет.
Статья подготовлена на основе официальной документации проекта Eclipse Mosquitto (mosquitto.org) и материалов сообщества. Все упомянутые торговые марки принадлежат их правообладателям. Материал носит информационный характер и не является рекламой.