MQTT-Broker

Der eigene MQTT-Broker der Station: seine Zeile in der Spalte Kommunikation, Ein- und Ausschalten, sein Port und die verbundenen Geräte, die Client-Authentifizierung, der Eintrag Diese Station, den er dem MQTT-Treiber gibt, und was er nicht tut.

Als Markdown ansehen

Der MQTT-Broker nimmt die MQTT-Nachrichten der Geräte in Ihrem Netzwerk entgegen, sodass ein Prüfstand oder ein kleines Labor seine ESP32-Platinen, Gateways und Sensoren liest, ohne einen eigenen Broker zu installieren. Er ist die dritte Zeile des Ordners Server, nach dem Modbus-Server, und er ist kein Treiber: Die Geräte verbinden sich mit ihm und veröffentlichen, und die Station liest das Veröffentlichte über den MQTT-Treiber, wie sie jeden Broker liest. Sein Bereich sagt es unter dem Titel: "Nimmt die MQTT-Nachrichten der Geräte in Ihrem Netzwerk entgegen, sodass sie keinen eigenen Broker brauchen. Er nimmt Verbindungen an und baut selbst nie eine auf." Wer den Connector ansehen darf, liest die Seite; wer ihn konfigurieren darf, ändert sie.

Die Zeile in der Spalte

Die Zeile steht im Ordner Server des Baums der Spalte Kommunikation, unter dem Modbus-Server, mit einem Hub-Symbol, wo die Treiber einen Stecker zeigen. Eine Station hat genau einen, und er wird nie angelegt oder gelöscht. Das Suchfeld findet ihn über seinen Namen, und die Zustands-Chips ordnen ihn nach seinem Zustand ein: aus, solange er ausgeschaltet ist, Störungen, solange sein Port belegt ist oder er nicht lauschen konnte, sonst OK. Neben dem Namen steht, was der Broker tut, und ein Punkt fasst es zusammen:

Die Zeile sagt Punkt Wann
"Ausgeschaltet" grau Der Broker ist aus, so beginnt jede Station.
"Lauscht auf Port 1883", dann wie viele Geräte verbunden sind: "Kein Client verbunden", "1 Client verbunden", "3 Clients verbunden" grün Der Broker ist an und die Runtime läuft: Der Port ist offen.
"Port 1883 ist belegt" rot Der Broker ist an, aber ein anderes Programm belegt den Port.
"Konnte auf Port 1883 nicht lauschen" rot Der Broker ist an, aber Windows hat das Öffnen des Ports aus einem anderen Grund verweigert.
"Runtime gestoppt" grau Der Broker ist an und die Runtime ist gestoppt: Der Port bleibt zu, bis die Runtime wieder läuft.

Der Punkt gehört dem Broker allein: Er geht weder in die Zusammenfassung des Ordners Treiber noch in die Statusleiste ein, die von den Geräten handeln, die die Station liest.

Ein- und Ausschalten

Befehl Was er tut Ausgegraut, wenn
Aktivieren Schaltet den Broker ein: "Den Broker einschalten: Er lauscht auf Port 1883, solange die Runtime läuft, und der MQTT-Treiber erhält den Eintrag, über den diese Station ihn liest." Das Aktionsprotokoll meldet "MQTT-Broker eingeschaltet." Der Broker ist schon an ("Der Broker ist bereits eingeschaltet."), ein Lauf hält die Station, oder die Runtime ist gestoppt.
Deaktivieren Schaltet den Broker aus: "Den Broker ausschalten: Er schließt seinen Port und trennt jeden Client." Das Aktionsprotokoll meldet "MQTT-Broker ausgeschaltet." Der Broker ist schon aus ("Der Broker ist bereits ausgeschaltet."), ein Lauf hält die Station, oder die Runtime ist gestoppt.

Einer Rolle, die den Connector nicht konfigurieren darf, werden die beiden Befehle nicht gezeichnet. Eingeschaltet zu sein ist eine Einstellung, die die Station behält, und das Lauschen folgt der Runtime: Der Broker öffnet seinen Port, sobald die Runtime läuft, schließt ihn und trennt jedes Gerät, wenn die Runtime stoppt, und öffnet ihn wieder, wenn sie zurückkommt. Ein Port, den er nicht öffnen kann, ist sein eigener Zustand, angezeigt in der Zeile und unter dem Portfeld, und die Station läuft ohne ihn weiter.

Die Karte Port und Clients

Feld Was es tut Werte und Standard
TCP-Port Der Port, auf dem der Broker lauscht, auf jeder Adresse dieses Computers, IPv4 und IPv6, ohne TLS. Ihn zu ändern, während der Broker lauscht, schließt den alten Port und öffnet den neuen, was jedes Gerät trennt; das Aktionsprotokoll meldet "MQTT-Broker auf Port 1884 verschoben." 1 bis 65535. Standard 1883, der MQTT-Port ohne TLS.
Verbundene Clients Wie viele Geräte jetzt verbunden sind. Solange eines verbunden ist, listet eine Tabelle jedes mit Client-ID, Client-Adresse (seine IP-Adresse und sein Port) und Verbunden seit. Nur lesbar.

Ein Port, auf den der Broker nicht wechseln kann, wird abgewiesen, bevor etwas gespeichert wird, unter dem Feld gesagt, und das Feld springt auf den geltenden Port zurück: eine Zahl außerhalb des Bereichs ("Der Port muss zwischen 1 und 65535 liegen."), der Port des Webservers, des Agentenzugriffs, des OPC UA-Servers oder des Modbus-Servers ("Port N ist bereits der Modbus-Server. Wählen Sie einen anderen Port, oder verschieben Sie zuerst den Modbus-Server.") und ein Port, den ein anderes Programm belegt ("Port N ist auf diesem Rechner belegt. Schließen Sie, was ihn hält, oder wählen Sie einen anderen Port."). Die anderen Portfelder der Station weisen den Port des Brokers ebenso ab: "Port N ist bereits der MQTT-Broker. Wählen Sie einen anderen Port, oder verschieben Sie zuerst den MQTT-Broker."

Unter der Karte steht ein Hinweis: "Ohne TLS: Geräte verbinden sich mit einfachem MQTT, höchstens 100 gleichzeitig. Andere Rechner erreichen diesen Broker nur, wenn die Windows-Firewall TCP-Port 1883 durchlässt: Das zu erlauben ist Ihre Entscheidung, und diese Station tut es nie von selbst. Gehaltene Nachrichten bleiben erhalten, bis die Station neu startet."

Höchstens 100 Geräte sind gleichzeitig verbunden, die eigene Sitzung der Station eingerechnet: Ein weiteres wird mit dem MQTT-Grund für ein überschrittenes Kontingent abgewiesen, und ein Gerät, das sich unter seiner eigenen Client-ID neu verbindet, bekommt seinen alten Platz zurück. Gehaltene Nachrichten bleiben im Speicher: Sie kommen nach einem Stopp und Neustart der Runtime zurück und sind weg, wenn die Station neu startet.

Windows-Firewall

Die Station ändert die Windows-Firewall nie von selbst. Unter dem Hinweis sagen ein Punkt und ein Satz, ob ihre eigene eingehende Regel für den Broker den Port durchlässt: "Eingehende MQTT-Verbindungen sind auf Port 1883 für private und Domänennetzwerke erlaubt.", "Clients aus dem Netzwerk sind möglicherweise blockiert, weil keine Regel dieser Anwendung Port 1883 erlaubt." oder, bei einem Start, der die Firewall nicht verwalten darf, etwa einem isolierten Profil oder einer Kopie, die nicht das installierte Programm ist, "Dieser Start kann die Windows-Firewall nicht verwalten. Richten Sie den eingehenden Zugriff bei Bedarf im Betriebssystem ein." Nur solange die Regel fehlt, bittet Lokales Netzwerk erlauben Windows mit Ihrer Zustimmung um eine Regel namens "Ganter Lab MQTT broker": eingehendes TCP auf dem Port, private und Domänennetzwerke, das lokale Subnetz, dieses Programm. Gedrückt wird es in der App der Station selbst ("Die Firewallregel lässt sich nur aus der Desktop-Anwendung an der Station anwenden."), und das Aktionsprotokoll meldet "Zugriff der Windows-Firewall für den MQTT-Port 1883 wird angefordert…", dann "Die Windows-Firewall erlaubt jetzt MQTT-Verbindungen auf Port 1883."

Client-Authentifizierung

Die Karte Client-Authentifizierung entscheidet, wer sich verbinden darf:

Wahl Wer sich verbindet
Anonym "Jedes Gerät verbindet sich, mit oder ohne Benutzernamen und Passwort." So beginnt jede Station.
Benutzername & Passwort "Jedes Gerät meldet sich mit dem einen Benutzernamen und Passwort unten an." Ein Gerät mit einem anderen Benutzernamen oder Passwort wird abgewiesen, und das Journal hält es fest, zusammengefasst wie jeder wiederholte Fehler.

Unter der Wahl stehen Benutzername und das Passwort, dessen Beschriftung nur sagt, ob eines gespeichert ist: Passwort (gespeichert) oder Passwort (keines gespeichert). Das gespeicherte Passwort wird nie in die Seite zurückgezeichnet: Das Feld beginnt leer, und "Leer lassen, um das gespeicherte Passwort zu behalten." Wahl, Benutzername und Passwort werden zusammen mit Anwenden angewendet, ausgegraut, solange sich nichts geändert hat ("Ändern Sie die Authentifizierung, um sie anzuwenden."); das Aktionsprotokoll meldet dann "Authentifizierung des MQTT-Brokers gespeichert.", und, wie die Zeile neben der Schaltfläche warnt, "Ein bereits verbundenes Gerät, das die neue Anmeldung nicht zulässt, wird getrennt."

Eingabe Abgewiesen mit
Benutzername und Passwort gewählt, während Benutzername oder Passwort leer ist "Geben Sie einen Benutzernamen und ein Passwort ein, bevor der Broker danach fragt."
Der Benutzername gelöscht, während Benutzername und Passwort gilt "Der Broker verlangt von jedem Gerät einen Benutzernamen, daher darf er nicht leer sein. Wählen Sie zuerst Anonym, um ihn zu löschen."
Ein Benutzername oder ein Passwort mit mehr als 128 Zeichen "Ein Benutzername hat höchstens 128 Zeichen."

Unter Anonym bleiben Benutzername und Passwort für das nächste Mal gespeichert. Das Passwort wird wie das Passwort eines Brokers aufbewahrt, den die Station liest, geschützt für dieses Windows-Konto: Eine Sicherung, die auf einem anderen Rechner oder Konto geöffnet wird, kommt ohne es an, kein Gerät meldet sich an, bis es neu eingegeben ist, und die Karte sagt "Unter diesem Windows-Konto nicht lesbar: Es öffnet sich nur auf dem Rechner und unter dem Windows-Konto, das es eingegeben hat. Geben Sie es hier erneut ein."

Diese Station

Die letzte Karte des Bereichs, Diese Station, sagt, was der Broker dem MQTT-Treiber gibt: "Eingeschaltet legt der Broker unter dem MQTT-Treiber den Eintrag Diese Station an, über den diese Station die Geräte liest, die hier veröffentlichen: auf 127.0.0.1, mit Port und Authentifizierung des Brokers. Fügen Sie diese Geräte unter Diese Station hinzu, per Suche oder von Hand. Wird der Broker ausgeschaltet, bleiben Diese Station und seine Geräte an ihrem Platz, getrennt."

Moment Was geschieht
Der Broker wird eingeschaltet, und die Station hat keinen Eintrag Der MQTT-Treiber wird der Station hinzugefügt und erhält den Broker Diese Station: 127.0.0.1, der Port des Brokers, ohne TLS, aktiviert, mit Benutzername und Passwort des Brokers, wenn die Authentifizierung Benutzername und Passwort ist.
Port oder Authentifizierung ändern sich Der Eintrag folgt: Host, Port und Anmeldung werden auf die des Brokers gebracht. Name, Client-ID, Keep-alive und ob er aktiviert ist, bleiben Ihre. Sein eigener Bereich sagt "Über diesen Eintrag liest diese Station ihren eigenen MQTT-Broker (Server, MQTT-Broker): Host, Port und Authentifizierung folgen diesem Broker, und der Eintrag bleibt, solange der Broker eingeschaltet ist."
Der Broker ist an Der Eintrag kann nicht gelöscht werden: Broker löschen bleibt in der Befehlsleiste, im Rechtsklickmenü und in der Tabelle des Treibers ausgegraut und sagt "Über den Broker 'Diese Station' liest diese Station ihren eigenen MQTT-Broker, daher bleibt er, solange dieser Broker eingeschaltet ist. Schalten Sie zuerst den MQTT-Broker unter Server aus."
Der Broker wird ausgeschaltet Der Eintrag und seine Geräte bleiben, wo sie sind, getrennt. Wird er dann gelöscht, wird er beim nächsten Einschalten des Brokers neu angelegt.

Unter dem Eintrag wird nichts von selbst hinzugefügt: Fügen Sie die Geräte, die an den Broker veröffentlichen, mit dem Suchlauf des Brokers oder von Hand hinzu, wie unter jedem Broker des MQTT-Treibers. Die eigene Sitzung der Station wartet zwischen den Versuchen länger, solange der Broker aus ist, daher kann der Eintrag nach dem Einschalten des Brokers bis zu 30 Sekunden brauchen, bis er online ist. Diese Station trägt auch die Karte Veröffentlichen, die jeder Broker hat: was die Station von ihren eigenen Daten auf ihrem eigenen Broker veröffentlicht.

Agentenzugriff

Werkzeug Was es tut
station_broker_status Meldet den Broker: an oder aus, den Port, den Zustand, die Authentifizierung ohne das Passwort, die verbundenen Geräte und den Eintrag Diese Station. Es funktioniert auch bei gestoppter Runtime.
station_broker_configure Schaltet den Broker ein oder aus, verschiebt seinen Port und ändert die Authentifizierung, nach den Regeln des Bereichs.

Keiner der beiden Namen beginnt mit mqtt_broker_, den Werkzeugen der Broker, die die Station liest; beide sind mit allen anderen Werkzeugen unter Werkzeuge beschrieben.

Was er nicht tut

  • Kein TLS und kein WebSocket: Geräte verbinden sich mit einfachem MQTT über TCP.
  • Ein Benutzername und ein Passwort für alle Geräte, nie eines pro Gerät.
  • Keine dauerhaften Sitzungen, und keine gehaltene Nachricht übersteht einen Neustart der Station.
  • Er stoppt mit der Station: Geräte, die weiter veröffentlichen, während die Station aus ist, brauchen einen eigenen Broker (Einen Broker installieren).