Automatisation industrielle et IoT
ELX-MQTT Broker
Un courtier MQTT complet avec une interface web vivante
MQTT 3.1.1 et 5.0 écrits de zéro, sans bibliothèque de protocole tierce. Un fichier unique qui porte déjà son interface, son stockage et son TLS : installez-le et il tourne.
Les deux versions du protocole, entièrement
MQTT 3.1.1 et 5.0 écrits d'après la spécification : toutes les propriétés de paquets, les alias de sujets, les abonnements partagés, les identifiants d'abonnement, No Local, Retain Handling, Will Delay, Message Expiry, les codes de motif et le paquet AUTH.
Une interface qui montre le trafic
Débit de messages, bande passante, clients connectés, sujets actifs et un flux d'événements — transmis par WebSocket, sans recharger la page. Un appareil qui déraille se voit, au lieu de se déduire.
Des droits par sujet
Une règle, c'est un filtre, un type d'accès et un verdict — autoriser ou refuser —, et tout ce qui n'est pas écrit est refusé. Une seule ligne avec le substitut $u enferme un client dans sa propre branche de l'arbre.
Des ponts vers d'autres courtiers
Report de sujets dans les deux sens au niveau du serveur : direction, préfixes, TLS, protection contre les boucles et reconnexion automatique. Relier deux installations n'exige aucun script au milieu.
Publication différée et limiteurs
Publier vers $delayed/60/sujet arrive une minute plus tard et survit à un redémarrage. Un seau à jetons par connexion et des règles par sujet éclaircissent un capteur bavard au lieu de le déconnecter.
Tout par REST
Ce que l'interface sait faire, un jeton le sait aussi : créer des appareils, accorder des droits, lire les statistiques. Pour les systèmes de supervision, il existe des jetons en lecture seule.
Captures d'écran
Ce que c'est
ELX-MQTT Broker est un serveur de messages pour le protocole MQTT, celui que parlent la plupart des capteurs, automates et systèmes domotiques. Les appareils publient des messages dans des sujets, d'autres appareils s'abonnent à ces sujets, et le courtier siège au milieu : il décide qui peut parler à qui et veille à ce que rien ne se perde en route.
Le protocole n'est pas ici une enveloppe autour de la bibliothèque de quelqu'un d'autre. Les deux versions sont écrites directement d'après la spécification, ce qui explique que les parties inconfortables — abonnements partagés, expiration des messages, testament différé, contrôle de flux — se comportent comme la spécification l'énonce, et non comme une dépendance l'a implémenté par hasard.
Ce qu'il sait faire
| Domaine | Ce que vous obtenez |
|---|---|
| Protocole | MQTT 3.1.1 et 5.0, QoS 0/1/2, messages conservés, testament, sessions persistantes, files d'attente hors ligne |
| Transports | TCP simple, TLS, MQTT sur WebSocket et sur WebSocket sécurisé |
| Interface | Graphiques en direct, liste des clients, arbre des sujets, flux d'événements, formulaire de publication, réglages — en sept langues |
| Contrôle d'accès | Droits par sujet, refus par défaut, substituts par compte, lecture et écriture séparées |
| Identifiants | Liste interne, MariaDB ou MySQL, SQLite, CSV, JWT, service HTTP externe |
| Acheminement | Règles de réécriture des sujets, abonnements automatiques, ponts entre courtiers |
| Régulation du trafic | Seau à jetons par connexion, débits et rejets par motif de sujet |
| Planification | Publication différée via $delayed, compatible EMQX, visible et annulable |
| Intégration | API REST avec jetons, jetons en lecture seule, points de statistiques |
| Persistance | Messages conservés, sessions, files d'attente et messages différés en SQLite |
Le mettre en route
Sous Linux, le paquet installe un service systemd et le démarre. Sous Windows, l'exécutable fonctionne tel quel — lancez-le et ouvrez l'interface.
sudo dpkg -i elxmqttbroker_*.deb
sudo systemctl status elxmqttbroker
# interface : http://<serveur>:8567 MQTT : 1883, TLS : 8883
elxmqttbroker.exe
# interface : http://127.0.0.1:8567
# accès par défaut : admin / admin — à changer à la première connexion
En bref
- Protocole
- MQTT 3.1.1 et MQTT 5.0
- Systèmes d'exploitation
- Debian, Ubuntu, Windows 10 et 11
- Architectures
- amd64, arm64, armhf
- Écrit en
- Go, sans CGO
- Stockage
- SQLite, un seul fichier
- Langues de l'interface
- Sept
- Ports par défaut
- 1883, 8883, 8567
- Dépendances externes
- Aucune