ELXSoftware

Промышленная автоматизация и IoT

ELX-MQTT Broker

Полноценный MQTT-брокер с живой веб-панелью

MQTT 3.1.1 и 5.0, написанные с нуля, без сторонних библиотек протокола. Один файл, внутри которого уже лежат панель, хранилище и TLS: поставили — работает.

v1.0.39 WindowsLinuxARM Бесплатно

Обе версии протокола, целиком

MQTT 3.1.1 и 5.0 написаны по спецификации: все свойства пакетов, псевдонимы топиков, разделяемые подписки, идентификаторы подписок, No Local, Retain Handling, Will Delay, Message Expiry, коды причин и пакет AUTH.

Панель, в которой видно трафик

Скорость сообщений, полоса, подключённые клиенты, живые топики и лента событий — потоком по WebSocket, без перезагрузки страницы. Устройство, которое сходит с ума, видно, а не вычисляется.

Права на уровне топиков

Правило — это фильтр, вид доступа и вердикт «разрешить» или «запретить», причём по умолчанию запрещено всё. Одна строка с подстановкой $u запирает клиента в его собственной ветке дерева.

Мосты к другим брокерам

Двусторонняя пересылка топиков на уровне сервера: направление, префиксы, TLS, защита от петель и переподключение. Чтобы соединить две установки, не нужен скрипт посередине.

Отложенная публикация и ограничители

Публикация в $delayed/60/topic доходит через минуту и переживает перезапуск. Ведро токенов на соединение и правила по топикам прореживают болтливый датчик вместо того, чтобы отключать его.

Всё через REST

Что умеет панель, то умеет и токен: заводить устройства, выдавать права, читать статистику. Для систем мониторинга есть токены только на чтение.

Скриншоты

Панель: скорость сообщений, трафик, соединения и состояние машины на одном экране
Подключённые клиенты с версией протокола, подписками и трафиком
Живое дерево топиков со скоростями и сохранёнными значениями
История полосы и скорости сообщений
Публикация сообщения руками, с выбором QoS и retain
Правила переписывания топиков
Пользователи и их права на топики
Настройки брокера: порты, TLS, ограничения и хранение
Мосты к другим брокерам
Встроенная документация, доступная в брокере без интернета

Что это

ELX-MQTT Broker — сервер сообщений протокола MQTT, на котором говорит большинство датчиков, контроллеров и систем умного дома. Устройства публикуют сообщения в топики, другие устройства на эти топики подписываются, а брокер сидит посередине, решает, кому с кем можно разговаривать, и следит, чтобы по дороге ничего не потерялось.

Протокол здесь не обёртка вокруг чужой библиотеки. Обе версии написаны прямо по спецификации, поэтому неудобные её части — разделяемые подписки, срок жизни сообщения, отложенное завещание, управление потоком — ведут себя так, как написано в спецификации, а не так, как это вышло у зависимости.

Один файл, без зависимостейПанель, ресурсы, хранилище и TLS лежат внутри исполняемого файла. Не нужно тянуть образ Docker, ставить рантайм и настраивать внешнюю базу — даже хранение использует SQLite на чистом Go, которому не нужен CGO.

Что он умеет

ОбластьЧто есть
ПротоколMQTT 3.1.1 и 5.0, QoS 0/1/2, сохранённые сообщения, завещание, постоянные сессии, очереди для отключившихся
ТранспортыОбычный TCP, TLS, MQTT поверх WebSocket и защищённого WebSocket
ПанельЖивые графики, список клиентов, дерево топиков, лента событий, форма публикации, настройки — на семи языках
Права доступаACL по топикам, запрет по умолчанию, подстановка имени пользователя, раздельные чтение и запись
Учётные записиВстроенный список, MariaDB или MySQL, SQLite, CSV, JWT, внешняя служба HTTP
МаршрутизацияПравила переписывания топиков, автоматические подписки, мосты между брокерами
Ограничение трафикаВедро токенов на соединение, ограничения и отбрасывание по шаблонам топиков
РасписаниеОтложенная публикация через $delayed, совместимая с EMQX, видимая и отменяемая
ИнтеграцияREST API с токенами, токены только для чтения, эндпоинты статистики
ХранениеСохранённые сообщения, сессии, очереди и отложенные сообщения в SQLite

Как запустить

На Linux пакет заводит службу systemd и запускает её. На Windows исполняемый файл работает как есть — запустите его и откройте панель.

Debian / Ubuntu
sudo dpkg -i elxmqttbroker_*.deb
sudo systemctl status elxmqttbroker
# панель: http://<сервер>:8567   MQTT: 1883, TLS: 8883
Windows
elxmqttbroker.exe
# панель: http://127.0.0.1:8567
# вход по умолчанию: admin / admin — смените при первом входе
Порты1883 — обычный MQTT, 8883 — MQTT поверх TLS, 8567 — панель, WebSocket живёт на порту панели. Все четыре настраиваются, и ни один из них не обязан смотреть в интернет, чтобы брокер приносил пользу.

Коротко о главном

Протокол
MQTT 3.1.1 и MQTT 5.0
Операционные системы
Debian, Ubuntu, Windows 10 и 11
Архитектуры
amd64, arm64, armhf
Написан на
Go, без CGO
Хранилище
SQLite, один файл
Языки панели
Семь
Порты по умолчанию
1883, 8883, 8567
Внешние зависимости
Нет

Частые вопросы

Сколько клиентов он выдержит?
Десятки тысяч одновременных соединений на обычном серверном железе и несколько тысяч на небольшой ARM-плате. Точные цифры и условия, в которых они получены, есть в отчёте о нагрузочном тестировании на странице загрузки.
Будут ли работать мои клиенты MQTT?
Да. Это обычный брокер: всё, что говорит на MQTT 3.1.1 или 5.0 — Paho, mosquitto_pub, Node-RED, Home Assistant, прошивки ESP32, промышленные шлюзы — подключается без переделок.
Можно ли перейти с Mosquitto или EMQX?
Да, и клиентов менять не придётся. Заново нужно создать конфигурацию: пользователи, права и мосты живут в панели, а не в текстовом файле. Отложенная публикация намеренно совместима с синтаксисом $delayed из EMQX.
Нужна ли база данных?
Нет. Используется SQLite в одном файле рядом с брокером. База появляется, только если вы сами захотите хранить учётные записи в MariaDB или MySQL, и это необязательно.
Можно ли проверять пароли своей системой?
Да — укажите брокеру адрес своего HTTP-эндпоинта, и он будет спрашивать у него, можно ли этому клиенту подключиться и что ему позволено. Поддерживаются и токены JWT — для устройств, у которых он уже есть.
TLS входит в комплект?
Да, и на порту MQTT, и на панели. Дайте сертификат с ключом или разрешите брокеру выпустить самоподписанный для закрытой сети.

ELX-MQTT Broker

Полноценный MQTT-брокер с живой веб-панелью

Скачать

Рядом в разделе