Broker MQTT

Le broker MQTT propre à la station : sa ligne dans la colonne Communications, sa mise en marche et son arrêt, son port et les équipements connectés, l'authentification des clients, l'entrée Cette station qu'il donne au pilote MQTT, et ce qu'il ne fait pas.

Afficher en Markdown

Le Broker MQTT reçoit les messages MQTT des équipements de votre réseau : un banc ou un petit laboratoire lit ainsi ses cartes ESP32, ses passerelles et ses capteurs sans installer de broker à lui. C'est la troisième ligne du dossier Serveurs, après le serveur Modbus, et ce n'est pas un pilote : les équipements s'y connectent et publient, et la station lit ce qu'ils publient par le pilote MQTT, comme elle lit n'importe quel broker. Son volet le dit sous le titre : « Reçoit les messages MQTT des équipements de votre réseau, qui n'ont ainsi pas besoin d'un broker à eux. Il reçoit les connexions et n'en ouvre jamais. » Qui peut voir le Connector lit la page ; qui peut le configurer la modifie.

La ligne dans la colonne

La ligne se trouve dans le dossier Serveurs de l'arborescence de la colonne Communications, sous le serveur Modbus, avec une icône de concentrateur là où les pilotes montrent une prise. Une station en a exactement un, qui n'est jamais créé ni supprimé. La zone de recherche le trouve par son nom, et les pastilles d'état le rangent selon son état : arrêt tant qu'il est arrêté, anomalies tant que son port est occupé ou qu'il n'a pas pu écouter, sain dans les autres cas. À côté du nom, il dit ce que fait le broker, et un point le résume :

La ligne dit Point Quand
« Arrêté » gris Le broker est arrêté, et toute station commence ainsi.
« À l'écoute sur le port 1883 », puis combien d'équipements sont connectés : « Aucun client connecté », « 1 client connecté », « 3 clients connectés » vert Le broker est en marche et le runtime tourne : le port est ouvert.
« Le port 1883 est occupé » rouge Le broker est en marche, mais un autre programme occupe le port.
« Impossible d'écouter sur le port 1883 » rouge Le broker est en marche, mais Windows a refusé d'ouvrir le port pour une autre raison.
« Runtime arrêté » gris Le broker est en marche et le runtime est arrêté : le port reste fermé jusqu'à ce que le runtime tourne de nouveau.

Le point n'appartient qu'au broker : il ne remonte ni dans la synthèse du dossier Pilotes ni dans la barre d'état, qui parlent des équipements que la station lit.

Mise en marche et arrêt

Commande Ce qu'elle fait Grisée quand
Activer Met le broker en marche : « Mettre le broker en marche : il écoute sur le port 1883 tant que le runtime tourne, et le pilote MQTT reçoit l'entrée par laquelle cette station le lit. » Le journal des actions dit « Broker MQTT mis en marche. » Le broker est déjà en marche (« Le broker est déjà en marche. »), un essai tient la station, ou le runtime est arrêté.
Désactiver Arrête le broker : « Arrêter le broker : il ferme son port et déconnecte tous les clients. » Le journal des actions dit « Broker MQTT arrêté. » Le broker est déjà arrêté (« Le broker est déjà arrêté. »), un essai tient la station, ou le runtime est arrêté.

Un rôle qui ne peut pas configurer le Connector ne se voit pas dessiner les deux commandes. Être en marche est un paramètre que la station garde, et l'écoute suit le runtime : le broker ouvre son port dès que le runtime tourne, le ferme et déconnecte chaque équipement quand le runtime s'arrête, et le rouvre quand le runtime revient. Un port qu'il ne peut pas ouvrir est un état qui lui est propre, affiché sur la ligne et sous le champ du port, et la station continue de tourner sans lui.

La carte Port et clients

Champ Ce qu'il fait Valeurs et défaut
Port TCP Le port sur lequel le broker écoute, sur toutes les adresses de cet ordinateur, IPv4 et IPv6, sans TLS. Le changer pendant que le broker écoute ferme l'ancien port et ouvre le nouveau, ce qui déconnecte chaque équipement ; le journal des actions dit « Broker MQTT déplacé sur le port 1884. » De 1 à 65535. Par défaut 1883, le port MQTT sans TLS.
Clients connectés Combien d'équipements sont connectés maintenant. Tant qu'il y en a, un tableau les liste avec ID client, Adresse du client (son adresse IP et son port) et Connecté depuis. Lecture seule.

Un port sur lequel le broker ne peut pas passer est refusé avant tout enregistrement, dit sous le champ, et le champ revient au port en vigueur : un nombre hors de la plage (« Le port doit être compris entre 1 et 65535. »), le port du serveur web, de l'accès agent, du serveur OPC UA ou du serveur Modbus (« Le port N est déjà celui du serveur Modbus. Choisissez un autre port, ou déplacez d'abord le serveur Modbus. »), et un port qu'un autre programme occupe (« Le port N est occupé sur cette machine. Fermez ce qui le retient, ou choisissez un autre port. »). Les autres champs de port de la station refusent le port du broker de la même façon : « Le port N est déjà celui du broker MQTT. Choisissez un autre port, ou déplacez d'abord le broker MQTT. »

Sous la carte, une note dit : « Sans TLS : les équipements se connectent en MQTT simple, 100 au plus à la fois. Les autres machines n'atteignent ce broker que si le pare-feu Windows laisse entrer le port TCP 1883 : l'autoriser vous appartient, et cette station ne le fait jamais d'elle-même. Les messages retenus sont conservés jusqu'au redémarrage de la station. »

Au plus 100 équipements sont connectés à la fois, la session de la station elle-même comprise : un de plus est refusé avec le motif MQTT de quota dépassé, et un équipement qui se reconnecte sous son propre ID client reprend sa place. Les messages retenus sont gardés en mémoire : ils reviennent après un arrêt et une remise en marche du runtime, et disparaissent quand la station redémarre.

Pare-feu Windows

La station ne modifie jamais le pare-feu Windows d'elle-même. Sous la note, un point et une phrase disent si sa propre règle entrante pour le broker laisse entrer le port : « Les connexions MQTT entrantes sont autorisées sur le port 1883 pour les réseaux privés et de domaine. », « Les clients du réseau sont peut-être bloqués, car aucune règle propre à l'application n'autorise le port 1883. » ou, sur un lancement qui ne peut pas gérer le pare-feu, comme un profil isolé ou une copie qui n'est pas le programme installé, « Ce mode de lancement ne peut pas gérer le pare-feu Windows. Configurez l'accès entrant dans le système d'exploitation si nécessaire. » Seulement tant que la règle manque, Autoriser le réseau local demande à Windows, avec votre accord, une règle nommée « Ganter Lab MQTT broker » : TCP entrant sur le port, réseaux privés et de domaine, le sous-réseau local, ce programme. On l'actionne depuis l'application de la station elle-même (« La règle de pare-feu ne peut être appliquée que depuis l'application de bureau de la station. »), et le journal des actions dit « Demande d'accès au pare-feu Windows pour le port MQTT 1883… », puis « Le pare-feu Windows autorise désormais les connexions MQTT sur le port 1883. »

Authentification des clients

La carte Authentification des clients décide qui peut se connecter :

Choix Qui se connecte
Anonyme « Tout équipement se connecte, avec ou sans nom d'utilisateur et mot de passe. » Toute station commence ainsi.
Nom d'utilisateur et mot de passe « Chaque équipement se connecte avec le seul nom d'utilisateur et le seul mot de passe ci-dessous. » Un équipement avec tout autre nom d'utilisateur ou mot de passe est refusé, et le journal technique le note, regroupé comme tout échec répété.

Sous le choix se trouvent Nom d'utilisateur et le mot de passe, dont l'étiquette dit seulement s'il y en a un d'enregistré : Mot de passe (enregistré) ou Mot de passe (aucun enregistré). Le mot de passe enregistré n'est jamais redessiné dans la page : le champ commence vide, et « Laissez ce champ vide pour conserver le mot de passe enregistré. » Le choix, le nom d'utilisateur et le mot de passe s'appliquent ensemble avec Appliquer, grisé tant que rien n'a changé (« Modifiez l'authentification pour l'appliquer. ») ; le journal des actions dit alors « Authentification du broker MQTT enregistrée. », et, comme le prévient la ligne à côté du bouton, « Un équipement déjà connecté que la nouvelle authentification n'admet pas est déconnecté. »

Saisie Refusée avec
Nom d'utilisateur et mot de passe choisi alors que le nom d'utilisateur ou le mot de passe est vide « Saisissez un nom d'utilisateur et un mot de passe avant que le broker les demande. »
Le nom d'utilisateur effacé pendant que Nom d'utilisateur et mot de passe est en vigueur « Le broker demande un nom d'utilisateur à chaque équipement : il ne peut donc pas être vide. Choisissez d'abord Anonyme pour l'effacer. »
Un nom d'utilisateur ou un mot de passe de plus de 128 caractères « Un nom d'utilisateur compte au plus 128 caractères. »

Avec Anonyme, le nom d'utilisateur et le mot de passe restent enregistrés pour la prochaine fois. Le mot de passe est gardé comme celui d'un broker que la station lit, protégé pour ce compte Windows : une sauvegarde ouverte sur une autre machine ou un autre compte arrive sans lui, aucun équipement ne se connecte tant qu'il n'est pas saisi de nouveau, et la carte dit « Illisible sur ce compte Windows : il ne s'ouvre que sur la machine et le compte Windows qui l'ont saisi. Saisissez-le de nouveau ici. »

Cette station

La dernière carte du volet, Cette station, dit ce que le broker donne au pilote MQTT : « En marche, le broker crée l'entrée Cette station sous le pilote MQTT, par laquelle cette station lit les équipements qui publient ici : sur 127.0.0.1, avec le port et l'authentification du broker. Ajoutez ces équipements sous Cette station, par un balayage ou à la main. Arrêter le broker laisse Cette station et ses équipements en place, déconnectés. »

Moment Ce qui se passe
Le broker est mis en marche et la station n'a pas l'entrée Le pilote MQTT est ajouté à la station et reçoit le broker Cette station : 127.0.0.1, le port du broker, sans TLS, activé, avec le nom d'utilisateur et le mot de passe du broker quand l'authentification est Nom d'utilisateur et mot de passe.
Le port ou l'authentification change L'entrée suit : son hôte, son port et son authentification deviennent ceux du broker. Son nom, son ID client, son keep-alive et le fait qu'elle soit activée restent les vôtres. Son propre volet dit « Cette entrée est la façon dont cette station lit son propre broker MQTT (Serveurs, Broker MQTT) : son hôte, son port et son authentification suivent ce broker, et elle reste tant que le broker est en marche. »
Le broker est en marche L'entrée ne peut pas être supprimée : Supprimer le broker reste grisé dans la barre de commandes, dans le menu du clic droit et dans le tableau du pilote, et dit « Le broker « Cette station » est la façon dont cette station lit son propre broker MQTT : il reste donc tant que ce broker est en marche. Arrêtez d'abord le broker MQTT sous Serveurs. »
Le broker est arrêté L'entrée et ses équipements restent où ils sont, déconnectés. Supprimée alors, elle est recréée la prochaine fois que le broker est mis en marche.

Rien n'est ajouté sous l'entrée de soi-même : ajoutez les équipements qui publient sur le broker par le balayage du broker ou à la main, comme sous n'importe quel broker du pilote MQTT. La session de la station elle-même attend plus longtemps entre deux tentatives tant que le broker est arrêté : après sa mise en marche, l'entrée peut mettre jusqu'à 30 secondes à passer en ligne. Cette station porte aussi la carte Publier de tout broker : ce que la station publie de ses propres données sur son propre broker.

Accès agent

Outil Ce qu'il fait
station_broker_status Rapporte le broker : en marche ou arrêté, le port, l'état, l'authentification sans le mot de passe, les équipements connectés et l'entrée Cette station. Il fonctionne aussi quand le runtime est arrêté.
station_broker_configure Met le broker en marche ou l'arrête, déplace son port et modifie l'authentification, selon les règles du volet.

Aucun des deux noms ne commence par mqtt_broker_, les outils des brokers que la station lit ; tous deux sont décrits avec tous les autres outils sur Outils.

Ce qu'il ne fait pas

  • Ni TLS ni WebSocket : les équipements se connectent en MQTT simple sur TCP.
  • Un seul nom d'utilisateur et un seul mot de passe pour tous les équipements, jamais un par équipement.
  • Pas de sessions persistantes, et aucun message retenu ne survit à un redémarrage de la station.
  • Il s'arrête avec la station : les équipements qui continuent de publier pendant que la station est arrêtée ont besoin de leur propre broker (Installer un broker).