Broker MQTT

Il broker MQTT della stazione stessa: la sua riga nella colonna Comunicazione, come accenderlo e spegnerlo, la porta e i dispositivi connessi, l'autenticazione del client, la voce Questa stazione che dà al driver MQTT, e che cosa non fa.

Visualizza come Markdown

Il Broker MQTT riceve i messaggi MQTT dei dispositivi della rete, così un banco di prova o un piccolo laboratorio legge le sue schede ESP32, i gateway e i sensori senza installare un broker proprio. È la terza riga della cartella Server, dopo il server Modbus, e non è un driver: i dispositivi si connettono a lui e pubblicano, e la stazione legge ciò che pubblicano attraverso il driver MQTT, come legge qualsiasi broker. Il suo pannello lo dice sotto il titolo: « Riceve i messaggi MQTT dei dispositivi della rete, che così non hanno bisogno di un broker proprio. Riceve le connessioni e non ne apre mai. » Chi può vedere il Connector legge la pagina; chi può configurarlo la cambia.

La riga nella colonna

La riga si trova nella cartella Server dell'albero della colonna Comunicazione, sotto il server Modbus, con un'icona di concentratore dove i driver mostrano una spina. Una stazione ne ha esattamente uno, che non viene mai creato né eliminato. La casella di ricerca lo trova per nome, e le pillole di stato lo classificano secondo il suo stato: spento finché è spento, problemi finché la sua porta è occupata o non è riuscito ad ascoltare, in ordine negli altri casi. Accanto al nome dice che cosa sta facendo il broker, e un punto lo riassume:

La riga dice Punto Quando
« Spento » grigio Il broker è spento, ed è così che comincia ogni stazione.
« In ascolto sulla porta 1883 », poi quanti dispositivi sono connessi: « Nessun client connesso », « 1 client connesso », « 3 client connessi » verde Il broker è acceso e il runtime è in esecuzione: la porta è aperta.
« La porta 1883 è occupata » rosso Il broker è acceso, ma un altro programma occupa la porta.
« Impossibile restare in ascolto sulla porta 1883 » rosso Il broker è acceso, ma Windows ha rifiutato di aprire la porta per un altro motivo.
« Runtime fermo » grigio Il broker è acceso e il runtime è fermo: la porta resta chiusa finché il runtime non riparte.

Il punto appartiene solo al broker: non entra nel riepilogo della cartella Driver né nella barra di stato, che parlano delle apparecchiature che la stazione legge.

Accenderlo e spegnerlo

Comando Che cosa fa In grigio quando
Abilita Accende il broker: « Accendere il broker: resta in ascolto sulla porta 1883 finché il runtime è in esecuzione, e il driver MQTT riceve la voce con cui questa stazione lo legge. » Il registro delle azioni dice « Broker MQTT acceso. » Il broker è già acceso (« Il broker è già acceso. »), una prova occupa la stazione, oppure il runtime è fermo.
Disabilita Spegne il broker: « Spegnere il broker: chiude la sua porta e scollega tutti i client. » Il registro delle azioni dice « Broker MQTT spento. » Il broker è già spento (« Il broker è già spento. »), una prova occupa la stazione, oppure il runtime è fermo.

A un ruolo che non può configurare il Connector i due comandi non vengono disegnati. Essere acceso è un'impostazione che la stazione conserva, e l'ascolto segue il runtime: il broker apre la sua porta appena il runtime parte, la chiude e scollega ogni dispositivo quando il runtime si ferma, e la riapre quando il runtime torna. Una porta che non riesce ad aprire è uno stato suo, mostrato sulla riga e sotto il campo della porta, e la stazione continua a funzionare senza di lui.

La scheda Porta e client

Campo Che cosa fa Valori e predefinito
Porta TCP La porta su cui il broker ascolta, su ogni indirizzo di questo computer, IPv4 e IPv6, senza TLS. Cambiarla mentre il broker ascolta chiude la porta vecchia e apre quella nuova, il che scollega ogni dispositivo; il registro delle azioni dice « Broker MQTT spostato sulla porta 1884. » Da 1 a 65535. Predefinito 1883, la porta MQTT senza TLS.
Client connessi Quanti dispositivi sono connessi ora. Finché ce n'è almeno uno, una tabella elenca ciascuno con ID client, Indirizzo del client (il suo indirizzo IP e la sua porta) e Connesso da. Sola lettura.

Una porta su cui il broker non può spostarsi viene rifiutata prima di salvare qualsiasi cosa, detta sotto il campo, e il campo torna alla porta in vigore: un numero fuori dall'intervallo (« La porta deve essere compresa tra 1 e 65535. »), la porta del server web, dell'accesso agente, del server OPC UA o del server Modbus (« La porta N è già del server Modbus. Scegliere un'altra porta oppure spostare prima il server Modbus. »), e una porta che un altro programma occupa (« La porta N è occupata su questa macchina. Chiudere ciò che la tiene occupata oppure scegliere un'altra porta. »). Gli altri campi di porta della stazione rifiutano la porta del broker allo stesso modo: « La porta N è già del broker MQTT. Scegliere un'altra porta oppure spostare prima il broker MQTT. »

Sotto la scheda, una nota dice: « Senza TLS: i dispositivi si connettono in MQTT semplice, al massimo 100 alla volta. Le altre macchine raggiungono questo broker solo se Windows Firewall lascia entrare la porta TCP 1883: consentirlo è una decisione dell'operatore, e questa stazione non lo fa mai da sola. I messaggi conservati restano finché la stazione non si riavvia. »

Al massimo 100 dispositivi sono connessi alla volta, compresa la sessione della stazione stessa: uno in più viene rifiutato con il motivo MQTT di quota superata, e un dispositivo che si riconnette con il proprio ID client riprende il suo posto. I messaggi conservati restano in memoria: tornano dopo che il runtime si ferma e riparte, e spariscono quando la stazione si riavvia.

Firewall di Windows

La stazione non modifica mai il Firewall di Windows da sola. Sotto la nota, un punto e una frase dicono se la sua regola in entrata per il broker lascia entrare la porta: « Le connessioni MQTT in entrata sono consentite sulla porta 1883 per le reti private e di dominio. », « I client di rete potrebbero essere bloccati perché nessuna regola di proprietà dell'applicazione consente la porta 1883. » oppure, su un avvio che non può gestire il firewall, come un profilo isolato o una copia che non è il programma installato, « Questo avvio non può gestire il Firewall di Windows. Configurare l'accesso in entrata nel sistema operativo se necessario. » Solo finché la regola manca, Consenti la rete locale chiede a Windows, con l'approvazione dell'operatore, una regola chiamata « Ganter Lab MQTT broker »: TCP in entrata sulla porta, reti private e di dominio, la sottorete locale, questo programma. Si preme dall'app della stazione stessa (« La regola del firewall può essere applicata solo dall'applicazione desktop della stazione. »), e il registro delle azioni dice « Richiesta di accesso al Firewall di Windows per la porta MQTT 1883… », poi « Il Firewall di Windows ora consente le connessioni MQTT sulla porta 1883. »

Autenticazione del client

La scheda Autenticazione del client decide chi può connettersi:

Scelta Chi si connette
Anonima « Qualsiasi dispositivo si connette, con o senza nome utente e password. » Ogni stazione comincia così.
Nome utente e password « Ogni dispositivo accede con l’unico nome utente e l’unica password qui sotto. » Un dispositivo con qualsiasi altro nome utente o password viene rifiutato, e il diario tecnico lo registra, raggruppato come ogni errore ripetuto.

Sotto la scelta stanno Nome utente e la password, la cui etichetta dice solo se ce n'è una salvata: Password del server (salvata) oppure Password del server (nessuna salvata). La password salvata non viene mai ridisegnata nella pagina: il campo comincia vuoto, e « Lasciare il campo vuoto per mantenere la password salvata. » La scelta, il nome utente e la password si applicano insieme con Applica, in grigio finché nulla è cambiato (« Modificare l'autenticazione per applicarla. »); il registro delle azioni dice allora « Autenticazione del broker MQTT salvata. », e, come avverte la riga accanto al pulsante, « Un dispositivo già connesso che la nuova autenticazione non ammette viene scollegato. »

Inserimento Rifiutato con
Nome utente e password scelto con il nome utente o la password vuoti « Inserire un nome utente e una password prima che il broker li richieda. »
Il nome utente cancellato mentre è in vigore Nome utente e password « Il broker chiede un nome utente a ogni dispositivo, quindi non può essere vuoto. Scegliere prima Anonima per cancellarlo. »
Un nome utente o una password di più di 128 caratteri « Un nome utente ha al massimo 128 caratteri. »

Con Anonima, il nome utente e la password restano salvati per la volta successiva. La password è conservata come quella di un broker che la stazione legge, protetta per questo account Windows: un backup aperto su un'altra macchina o un altro account arriva senza di essa, nessun dispositivo accede finché non viene inserita di nuovo, e la scheda dice « Non è leggibile su questo account Windows: si apre solo sulla macchina e sull'account Windows che l'hanno inserito. Reinserirlo qui. »

Questa stazione

L'ultima scheda del pannello, Questa stazione, dice che cosa il broker dà al driver MQTT: « Acceso, il broker crea la voce Questa stazione sotto il driver MQTT, attraverso cui questa stazione legge i dispositivi che pubblicano qui: su 127.0.0.1, con la porta e l'autenticazione del broker. Aggiungere quei dispositivi sotto Questa stazione, con una scansione o a mano. Spegnere il broker lascia Questa stazione e i suoi dispositivi al loro posto, scollegati. »

Momento Che cosa succede
Il broker viene acceso e la stazione non ha la voce Il driver MQTT viene aggiunto alla stazione e riceve il broker Questa stazione: 127.0.0.1, la porta del broker, senza TLS, abilitato, con il nome utente e la password del broker quando l'autenticazione è Nome utente e password.
La porta o l'autenticazione cambiano La voce segue: host, porta e autenticazione diventano quelli del broker. Il nome, l'ID client, il keep-alive e se è abilitata restano quelli scelti. Il suo pannello dice « Questa voce è il modo in cui questa stazione legge il proprio broker MQTT (Server, Broker MQTT): host, porta e autenticazione seguono quel broker, e la voce resta finché il broker è acceso. »
Il broker è acceso La voce non si può eliminare: Elimina broker resta in grigio nella barra dei comandi, nel menu del clic destro e nella tabella del driver, e dice « Il broker 'Questa stazione' è il modo in cui questa stazione legge il proprio broker MQTT, quindi resta finché quel broker è acceso. Spegnere prima il broker MQTT in Server. »
Il broker viene spento La voce e i suoi dispositivi restano dove sono, scollegati. Eliminata allora, viene ricreata la prossima volta che il broker viene acceso.

Sotto la voce non si aggiunge nulla da solo: aggiungere i dispositivi che pubblicano sul broker con la scansione del broker o a mano, come sotto qualsiasi broker del driver MQTT. La sessione della stazione stessa aspetta di più tra un tentativo e l'altro finché il broker è spento, quindi, dopo che il broker viene acceso, la voce può impiegare fino a 30 secondi per risultare in linea. Questa stazione ha anche la scheda Pubblicare di ogni broker: ciò che la stazione pubblica dei propri dati sul proprio broker.

Accesso agente

Strumento Che cosa fa
station_broker_status Riporta il broker: acceso o spento, la porta, lo stato, l'autenticazione senza la password, i dispositivi connessi e la voce Questa stazione. Continua a funzionare con il runtime fermo.
station_broker_configure Accende o spegne il broker, sposta la sua porta e cambia l'autenticazione, con le regole del pannello.

Nessuno dei due nomi comincia con mqtt_broker_, gli strumenti dei broker che la stazione legge; entrambi sono descritti con tutti gli altri strumenti in Strumenti.

Che cosa non fa

  • Niente TLS e niente WebSocket: i dispositivi si connettono in MQTT semplice su TCP.
  • Un solo nome utente e una sola password per tutti i dispositivi, mai uno per dispositivo.
  • Niente sessioni persistenti, e nessun messaggio conservato sopravvive a un riavvio della stazione.
  • Si ferma con la stazione: i dispositivi che continuano a pubblicare mentre la stazione è spenta hanno bisogno di un broker proprio (Installare un broker).