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.
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).