ELX-Software

Промышленная автоматизация и 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
Внешние зависимости
Нет

ELX-MQTT Broker

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

Скачать

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