Funzioni

Il broker è stato costruito come strumento di lavoro: tutto quello che segue si configura dal pannello e ha effetto senza riavvio.

Protocollo

Le due versioni insieme

MQTT 3.1.1 e MQTT 5.0 girano contemporaneamente sulla stessa porta, e i client dell'una o dell'altra versione si scambiano messaggi liberamente. Il codec codifica e decodifica tutti i 15 tipi di pacchetto e verifica i limiti del Variable Byte Integer, le proprietà duplicate e i bit riservati.

QoS 0, 1 e 2

Handshake completi, soppressione dei duplicati in QoS 2 e riconsegna degli scambi rimasti in sospeso dopo una riconnessione. Le code offline delle sessioni persistenti sopravvivono al riavvio del broker.

Retain e Last Will

Un archivio di messaggi ritenuti con svuotamento tramite payload vuoto, anche di interi rami, oltre a Retain Handling 0/1/2 e Retain As Published. Il testamento viene inviato in tutti gli scenari di disconnessione, incluso il Will Delay Interval della versione 5.

Capacità della versione 5

Alias dei topic nei due sensi, Session Expiry, Receive Maximum e controllo di flusso, Maximum Packet Size, identificatori di sottoscrizione, sottoscrizioni condivise tramite $share, No Local, Message Expiry, Payload Format Indicator con verifica UTF-8, Content Type, Response Topic, Correlation Data, User Properties, codici di motivo in ogni pacchetto, DISCONNECT lato server e il pacchetto AUTH.

Topic di sistema $SYS

Versione, tempo di attività e contatori di client, messaggi, byte ed errori vengono pubblicati come messaggi ritenuti. Il ramo è chiuso per impostazione predefinita: i caratteri jolly non raggiungono i topic $, ai client anonimi è negato l'intero spazio dei nomi, e un interruttore nelle impostazioni disattiva del tutto la pubblicazione.

Pannello web

Panoramica

Riquadri riepilogativi, salute della macchina (processore, memoria e il disco della cartella dati), grafici in tempo reale di ritmo dei messaggi, traffico e connessioni, topic attivi, listener e un flusso di eventi.

Client e topic

Una tabella delle sessioni con scheda per client, oltre a disconnessione ed eliminazione delle sessioni. A parte: le sottoscrizioni attive con tutte le opzioni di MQTT 5.0 e il contenuto dell'archivio dei ritenuti.

Traffico e pubblicazione

Un flusso in diretta di messaggi ed eventi del broker, con filtro e pausa. Puoi pubblicare un messaggio con tutte le proprietà della versione 5 direttamente dal pannello: molto comodo quando si esegue il debug dei dispositivi.

Sette lingue, due temi

Russo, inglese, tedesco, spagnolo, francese, italiano e cinese. I temi scuro e chiaro si cambiano al volo, e la scelta viene ricordata come impostazione predefinita del pannello.

Aiuto integrato

Una guida con indice dentro il pannello stesso, tradotta in tutte e sette le lingue: non serve cercare la documentazione altrove.

Accesso e sicurezza

Due circuiti indipendenti

C'è un solo amministratore del pannello, definito in config.json, e si occupa esclusivamente dell'interfaccia web. I dispositivi MQTT sono un elenco di account a parte, con password e permessi propri. Creare un utente MQTT con il nome dell'amministratore viene rifiutato.

ACL per topic

Una regola è un filtro, una modalità di accesso (read, write, readwrite) e una decisione di consentire o negare. Le regole si controllano dall'alto verso il basso fino alla prima corrispondenza, e tutto è negato per impostazione predefinita. Il segnaposto $u diventa il nome del client, così la regola $u/# confina ogni dispositivo al proprio ramo. L'ordine si cambia trascinando.

Sei fonti di credenziali

L'elenco interno, MySQL/MariaDB (uno schema in stile EMQX), SQLite, CSV con ricarica del file, JWT e un servizio HTTP esterno. La fonte si cambia dal pannello: prima verificata con il pulsante Prova, poi applicata a caldo.

Impronte, non password

Le password sono conservate come PBKDF2-HMAC-SHA256 con 210 000 iterazioni e sale casuale. I token di sessione e di API sono conservati solo come impronta. Le fonti esterne capiscono plain, sha256, sha512, bcrypt e pbkdf2.

TLS fin dall'inizio

Al primo avvio viene generato un certificato autofirmato perché la porta :8883 funzioni subito. Per la produzione, indica il tuo certificato nella configurazione.

Regole e flussi

Riscrittura dei topic

Il nome di un topic viene sostituito al volo: alla pubblicazione, alla sottoscrizione o sempre. Un filtro MQTT per una preselezione economica, un'espressione regolare e un modello di destinazione con i gruppi $1…$9. Sono disponibili %u e %c, il prefisso $share è conservato, e UNSUBSCRIBE passa dalla stessa riscrittura. Il pannello offre un banco di prova per collaudare una regola.

Sottoscrizione automatica

Un client riceve le sue sottoscrizioni subito dopo la connessione, senza alcun SUBSCRIBE. Sono supportati %u e %c e tutte le opzioni della versione 5, e le ACL vengono controllate come sempre: una regola vietata viene saltata in silenzio, senza chiudere la connessione.

Limiti per topic

Una regola per schema di topic riduce un flusso a una cadenza o lo scarta del tutto. La riduzione conserva l'ultimo valore: un sensore che invia dieci volte al secondo diventa un messaggio al secondo, il più fresco. La scheda della regola mostra quanti messaggi hanno corrisposto, sono passati e sono stati scartati.

Controllo delle inondazioni

Un secchio di gettoni per connessione: messaggi al secondo, raffica, byte al secondo e raffica di byte. Superarli non chiude la connessione e non perde messaggi: il broker si ferma prima della lettura successiva del socket, il TCP chiude la finestra e il mittente rallenta da solo.

Pubblicazione differita

Il topic $delayed/{secondi}/{topic} viene trattenuto dal broker fino alla scadenza, in modo compatibile con EMQX. L'intervallo va da un secondo a 49 giorni, la conferma arriva subito, e la coda sopravvive a un riavvio ed è visibile nel pannello con il conto alla rovescia.

Integrazione

Bridging tra broker

Il broker si collega come client a un altro broker MQTT e inoltra i topic nei due sensi. Sono configurabili indirizzo, credenziali, TLS, versione del protocollo e regole fatte di filtro + direzione + QoS + prefissi. Ci sono protezione dai loop, riconnessione automatica, No Local nella versione 5 e contatori nel pannello.

API REST

Tutto ciò che fa il pannello è disponibile con un token bearer: statistiche, client, sottoscrizioni, messaggi ritenuti, pubblicazione, eventi, utenti, impostazioni, bridge, regole, messaggi differiti, importazione ed esportazione. Un token può essere emesso in sola lettura.

Creazione di dispositivi dal tuo sistema

POST /api/users crea un dispositivo insieme ai suoi permessi, PATCH cambia la password o l'ACL e DELETE lo rimuove. Le modifiche hanno effetto subito: il broker chiude da sé le connessioni attive di quell'utente perché le nuove regole valgano immediatamente.

MQTT su WebSocket

Il sottoprotocollo mqtt sulla stessa porta del pannello: i client del browser si collegano senza gateway separati. La RFC 6455 è implementata su net/http, senza dipendenze.

Importazione ed esportazione

Impostazioni, utenti e regole si esportano in un unico file e si ricaricano: trasferirsi su un altro server non richiede di rifare nulla a mano.

Esercizio

Un file, nessuna dipendenza

Un binario in Go puro collegato staticamente: nessun ambiente di esecuzione, nessuna libc e nessun database esterno. Gira su Debian e Ubuntu senza preparativi e viene compilato per amd64, arm64 e armhf.

Archiviazione SQLite

I messaggi ritenuti vengono scritti appena cambiano, le sessioni persistenti vengono salvate ogni dieci secondi e allo spegnimento, e i messaggi differiti vengono scritti al momento dell'accodamento. Ciò che è scaduto viene scartato all'avvio, e una riga state restored finisce nel log.

Salute della macchina

Carico del processore, memoria usata e spazio libero sul disco dei dati, calcolati con la libreria standard, senza cgo, con implementazioni separate per Linux e Windows. La barra diventa ambra sopra il 75 % e rossa sopra il 90 %.

systemd e nginx

Sono inclusi un'unità systemd, una configurazione nginx e uno script di installazione idempotente: il pannello ascolta solo su localhost e viene pubblicato tramite nginx, mentre le porte MQTT lavorano direttamente.

Marchio di compilazione

Versione, numero di build e data di compilazione sono incisi nel binario e visibili nel pannello, nella sezione Informazioni e con l'opzione -version: sai sempre esattamente che cosa sta girando.

E tutto questo, gratis

Non ci sono limiti di dispositivi, messaggi o sottoscrizioni.

Scarica il broker