Industrielle Automatisierung und IoT
ELX-MQTT Broker
Ein vollständiger MQTT-Broker mit lebendiger Weboberfläche
MQTT 3.1.1 und 5.0, von Grund auf umgesetzt, ohne fremde Protokollbibliotheken. Eine einzige Datei, die Oberfläche, Speicher und TLS bereits enthält: installieren und es läuft.
Beide Protokollversionen, vollständig
MQTT 3.1.1 und 5.0 nach der Spezifikation geschrieben: sämtliche Paketeigenschaften, Topic-Aliase, geteilte Abonnements, Abonnement-Kennungen, No Local, Retain Handling, Will Delay, Message Expiry, Ursachencodes und das AUTH-Paket.
Eine Oberfläche, die den Verkehr zeigt
Nachrichtenrate, Bandbreite, verbundene Clients, aktive Topics und ein Ereignisstrom — per WebSocket, ohne Neuladen der Seite. Ein Gerät, das sich danebenbenimmt, sieht man, statt es zu erschließen.
Rechte auf Topic-Ebene
Eine Regel besteht aus Filter, Zugriffsart und Urteil — erlauben oder verweigern —, und verweigert ist alles, was nicht dasteht. Eine Zeile mit dem Platzhalter $u sperrt einen Client in seinen eigenen Zweig des Baums.
Brücken zu anderen Brokern
Beidseitige Weiterleitung von Topics auf Serverebene: Richtung, Präfixe, TLS, Schleifenschutz und selbsttätiges Wiederverbinden. Um zwei Installationen zu verbinden, braucht es kein Skript dazwischen.
Verzögertes Veröffentlichen und Begrenzer
Eine Veröffentlichung nach $delayed/60/topic kommt eine Minute später an und übersteht einen Neustart. Ein Token-Eimer je Verbindung und Regeln je Topic dünnen einen geschwätzigen Sensor aus, statt ihn zu trennen.
Alles über REST
Was die Oberfläche kann, kann auch ein Token: Geräte anlegen, Rechte vergeben, Statistik lesen. Für Überwachungssysteme gibt es Tokens, die nur lesen dürfen.
Screenshots
Was es ist
ELX-MQTT Broker ist ein Nachrichtenvermittler für das MQTT-Protokoll, das die meisten Sensoren, Regler und Hausautomationssysteme sprechen. Geräte veröffentlichen Nachrichten in Topics, andere Geräte abonnieren diese Topics, und der Broker sitzt dazwischen, entscheidet, wer mit wem sprechen darf, und sorgt dafür, dass unterwegs nichts verlorengeht.
Das Protokoll ist hier keine Hülle um eine fremde Bibliothek. Beide Versionen sind unmittelbar nach der Spezifikation umgesetzt, weshalb die unbequemen Teile — geteilte Abonnements, Nachrichtenablauf, verzögertes Testament, Flusskontrolle — sich so verhalten, wie die Spezifikation es sagt, und nicht so, wie es einer Abhängigkeit gerade geriet.
Was er kann
| Bereich | Was Sie bekommen |
|---|---|
| Protokoll | MQTT 3.1.1 und 5.0, QoS 0/1/2, aufbewahrte Nachrichten, Testament, dauerhafte Sitzungen, Warteschlangen für abwesende Clients |
| Transporte | Einfaches TCP, TLS, MQTT über WebSocket und über gesichertes WebSocket |
| Oberfläche | Lebende Diagramme, Client-Liste, Topic-Baum, Ereignisstrom, Veröffentlichungsformular, Einstellungen — in sieben Sprachen |
| Zugriffsrechte | Rechte je Topic, standardmäßig verweigert, Platzhalter je Benutzer, getrenntes Lesen und Schreiben |
| Zugangsdaten | Eingebaute Liste, MariaDB oder MySQL, SQLite, CSV, JWT, externer HTTP-Dienst |
| Vermittlung | Regeln zum Umschreiben von Topics, selbsttätige Abonnements, Brücken zwischen Brokern |
| Verkehrsformung | Token-Eimer je Verbindung, Raten und Verwerfen nach Topic-Mustern |
| Zeitsteuerung | Verzögertes Veröffentlichen über $delayed, EMQX-kompatibel, sichtbar und abbrechbar |
| Anbindung | REST-API mit Tokens, Nur-Lese-Tokens, Statistik-Endpunkte |
| Speicherung | Aufbewahrte Nachrichten, Sitzungen, Warteschlangen und verzögerte Nachrichten in SQLite |
In Betrieb nehmen
Unter Linux richtet das Paket einen systemd-Dienst ein und startet ihn. Unter Windows läuft die ausführbare Datei so, wie sie ist — starten Sie sie und öffnen Sie die Oberfläche.
sudo dpkg -i elxmqttbroker_*.deb
sudo systemctl status elxmqttbroker
# Oberfläche: http://<server>:8567 MQTT: 1883, TLS: 8883
elxmqttbroker.exe
# Oberfläche: http://127.0.0.1:8567
# Standardzugang: admin / admin — beim ersten Einstieg ändern
Auf einen Blick
- Protokoll
- MQTT 3.1.1 und MQTT 5.0
- Betriebssysteme
- Debian, Ubuntu, Windows 10 und 11
- Architekturen
- amd64, arm64, armhf
- Geschrieben in
- Go, ohne CGO
- Speicher
- SQLite, eine Datei
- Sprachen der Oberfläche
- Sieben
- Standard-Ports
- 1883, 8883, 8567
- Externe Abhängigkeiten
- Keine