Bróker MQTT

El bróker MQTT propio de la estación: su fila en la columna Comunicación, cómo encenderlo y apagarlo, su puerto y los dispositivos conectados, la autenticación del cliente, la entrada Esta estación que da al controlador MQTT y lo que no hace.

Ver como Markdown

El Bróker MQTT recibe los mensajes MQTT de los dispositivos de su red, así que un banco de pruebas o un laboratorio pequeño lee sus placas ESP32, sus pasarelas y sus sensores sin instalar un bróker propio. Es la tercera fila de la carpeta Servidores, después del servidor Modbus, y no es un controlador: los dispositivos se conectan a él y publican, y la estación lee lo que publican por el controlador MQTT, como lee cualquier bróker. Su panel lo dice bajo el título: "Recibe los mensajes MQTT de los dispositivos de su red, que así no necesitan un bróker propio. Recibe conexiones y nunca abre una." Quien puede ver el Connector lee la página; quien puede configurarlo la cambia.

La fila en la columna

La fila está en la carpeta Servidores del árbol de la columna Comunicación, debajo del servidor Modbus, con un icono de concentrador donde los controladores muestran un enchufe. Una estación tiene exactamente uno, que nunca se crea ni se elimina. El cuadro de búsqueda lo encuentra por su nombre, y las fichas de estado lo clasifican por su estado: apagado mientras está apagado, con problemas mientras su puerto está en uso o no pudo escuchar, correcto en los demás casos. Junto al nombre dice lo que hace el bróker, y un punto lo resume:

La fila dice Punto Cuándo
"Apagado" gris El bróker está apagado, que es como empieza toda estación.
"Escuchando en el puerto 1883", y luego cuántos dispositivos están conectados: "Ningún cliente conectado", "1 cliente conectado", "3 clientes conectados" verde El bróker está encendido y el runtime funciona: el puerto está abierto.
"El puerto 1883 está en uso" rojo El bróker está encendido, pero otro programa ocupa el puerto.
"No se pudo escuchar en el puerto 1883" rojo El bróker está encendido, pero Windows se negó a abrir el puerto por otro motivo.
"Runtime detenido" gris El bróker está encendido y el runtime está detenido: el puerto sigue cerrado hasta que el runtime vuelva a funcionar.

El punto es solo del bróker: no se suma al resumen de la carpeta Controladores ni a la barra de estado, que hablan de los equipos que lee la estación.

Encenderlo y apagarlo

Comando Qué hace Atenuado cuando
Habilitar Enciende el bróker: "Encender el bróker: escucha en el puerto 1883 mientras el runtime funciona, y el controlador MQTT recibe la entrada por la que esta estación lo lee." El registro de acciones dice "Bróker MQTT encendido." El bróker ya está encendido ("El bróker ya está encendido."), un ensayo ocupa la estación, o el runtime está detenido.
Deshabilitar Apaga el bróker: "Apagar el bróker: cierra su puerto y desconecta a todos los clientes." El registro de acciones dice "Bróker MQTT apagado." El bróker ya está apagado ("El bróker ya está apagado."), un ensayo ocupa la estación, o el runtime está detenido.

A un rol que no puede configurar el Connector no se le dibujan los dos comandos. Estar encendido es una configuración que la estación conserva, y la escucha sigue al runtime: el bróker abre su puerto en cuanto el runtime arranca, lo cierra y desconecta todos los dispositivos cuando el runtime se detiene, y lo vuelve a abrir cuando el runtime regresa. Un puerto que no puede abrir es un estado propio, mostrado en la fila y bajo el campo del puerto, y la estación sigue funcionando sin él.

La tarjeta Puerto y clientes

Campo Qué hace Valores y predeterminado
Puerto TCP El puerto en el que escucha el bróker, en todas las direcciones de este ordenador, IPv4 e IPv6, sin TLS. Cambiarlo mientras el bróker escucha cierra el puerto anterior y abre el nuevo, lo que desconecta todos los dispositivos; el registro de acciones dice "Bróker MQTT movido al puerto 1884." De 1 a 65535. Predeterminado 1883, el puerto de MQTT sin TLS.
Clientes conectados Cuántos dispositivos están conectados ahora. Mientras haya alguno, una tabla los muestra con ID de cliente, Dirección del cliente (su dirección IP y su puerto) y Conectado desde. Solo lectura.

Un puerto al que el bróker no puede pasar se rechaza antes de guardar nada, se indica bajo el campo, y el campo vuelve al puerto vigente: un número fuera del intervalo ("El puerto debe estar entre 1 y 65535."), el puerto del servidor web, del acceso de agente, del servidor OPC UA o del servidor Modbus ("El puerto N ya es el del servidor Modbus. Elija otro puerto, o mueva antes el servidor Modbus."), y un puerto que ocupa otro programa ("El puerto N está ocupado en esta máquina. Cierre lo que lo retiene, o elija otro puerto."). Los demás campos de puerto de la estación rechazan el puerto del bróker de la misma manera: "El puerto N ya es el del bróker MQTT. Elija otro puerto, o mueva antes el bróker MQTT."

Bajo la tarjeta, una nota dice: "Sin TLS: los dispositivos se conectan en MQTT simple, como máximo 100 a la vez. Otras máquinas solo llegan a este bróker si el Firewall de Windows deja entrar el puerto TCP 1883: permitirlo es decisión suya, y esta estación nunca lo hace por sí sola. Los mensajes retenidos se guardan hasta que la estación se reinicia."

Como máximo hay 100 dispositivos conectados a la vez, contando la sesión de la propia estación: uno más se rechaza con el motivo MQTT de cuota superada, y un dispositivo que se vuelve a conectar con su propio ID de cliente recupera su lugar. Los mensajes retenidos se guardan en memoria: vuelven después de que el runtime se detiene y arranca de nuevo, y desaparecen cuando la estación se reinicia.

Firewall de Windows

La estación nunca cambia el Firewall de Windows por sí sola. Bajo la nota, un punto y una frase dicen si su propia regla de entrada para el bróker deja pasar el puerto: "Las conexiones MQTT entrantes están permitidas en el puerto 1883 para las redes privadas y de dominio.", "Puede que los clientes de red queden bloqueados porque ninguna regla propia de la aplicación permite el puerto 1883." o, en un arranque que no puede administrar el firewall, como un perfil aislado o una copia que no es el programa instalado, "Este arranque no puede gestionar el Firewall de Windows. Configure el acceso entrante en el sistema operativo si hace falta." Solo mientras falta la regla, Permitir la red local pide a Windows, con su aprobación, una regla llamada "Ganter Lab MQTT broker": TCP de entrada en el puerto, redes privadas y de dominio, la subred local, este programa. Se pulsa en la aplicación de la propia estación ("La regla del firewall solo se puede aplicar desde la aplicación de escritorio de la estación."), y el registro de acciones dice "Solicitando acceso al Firewall de Windows para el puerto MQTT 1883…", y luego "El Firewall de Windows ya permite conexiones MQTT en el puerto 1883."

Autenticación del cliente

La tarjeta Autenticación del cliente decide quién puede conectarse:

Opción Quién se conecta
Anónima "Cualquier dispositivo se conecta, con o sin nombre de usuario y contraseña." Toda estación empieza así.
Nombre de usuario y contraseña "Cada dispositivo inicia sesión con el único nombre de usuario y la única contraseña de abajo." Un dispositivo con cualquier otro nombre de usuario o contraseña se rechaza, y el diario técnico lo registra, agrupado como cualquier fallo repetido.

Bajo la opción están Nombre de usuario y la contraseña, cuya etiqueta solo dice si hay una guardada: Contraseña (guardada) o Contraseña (ninguna guardada). La contraseña guardada nunca vuelve a la página: el campo empieza vacío, y "Déjelo vacío para conservar la contraseña guardada." La opción, el nombre de usuario y la contraseña se aplican juntos con Aplicar, atenuado mientras nada cambió ("Cambie la autenticación para aplicarla."); el registro de acciones dice entonces "Autenticación del bróker MQTT guardada.", y, como advierte la línea junto al botón, "Un dispositivo ya conectado que la nueva autenticación no admite se desconecta."

Entrada Rechazada con
Nombre de usuario y contraseña elegido con el nombre de usuario o la contraseña vacíos "Escriba un nombre de usuario y una contraseña antes de que el bróker los pida."
El nombre de usuario borrado mientras rige Nombre de usuario y contraseña "El bróker pide un nombre de usuario a cada dispositivo, así que no puede quedar vacío. Elija primero Anónima para borrarlo."
Un nombre de usuario o una contraseña de más de 128 caracteres "Un nombre de usuario tiene como máximo 128 caracteres."

Con Anónima, el nombre de usuario y la contraseña siguen guardados para la próxima vez. La contraseña se guarda como la de un bróker que lee la estación, protegida para esta cuenta de Windows: una copia de seguridad abierta en otra máquina o cuenta llega sin ella, ningún dispositivo inicia sesión hasta que se vuelva a escribir, y la tarjeta dice "No se puede leer en esta cuenta de Windows: solo se abre en el ordenador y en la cuenta de Windows que lo introdujo. Vuelva a introducirlo aquí."

Esta estación

La última tarjeta del panel, Esta estación, dice lo que el bróker da al controlador MQTT: "Encendido, el bróker crea la entrada Esta estación en el controlador MQTT, por la que esta estación lee los dispositivos que publican aquí: en 127.0.0.1, con el puerto y la autenticación del bróker. Agregue esos dispositivos en Esta estación, con un escaneo o a mano. Apagar el bróker deja Esta estación y sus dispositivos en su lugar, desconectados."

Momento Qué ocurre
Se enciende el bróker y la estación no tiene la entrada El controlador MQTT se agrega a la estación y recibe el bróker Esta estación: 127.0.0.1, el puerto del bróker, sin TLS, habilitado, con el nombre de usuario y la contraseña del bróker cuando la autenticación es Nombre de usuario y contraseña.
Cambia el puerto o la autenticación La entrada lo sigue: su host, su puerto y su autenticación pasan a ser los del bróker. Su nombre, su ID de cliente, su keep-alive y si está habilitada siguen siendo suyos. Su propio panel dice "Esta entrada es la forma en que esta estación lee su propio bróker MQTT (Servidores, Bróker MQTT): su host, su puerto y su autenticación siguen a ese bróker, y se mantiene mientras el bróker esté encendido."
El bróker está encendido La entrada no se puede eliminar: Eliminar el bróker sigue atenuado en la barra de comandos, en el menú del clic derecho y en la tabla del controlador, y dice "El bróker 'Esta estación' es la forma en que esta estación lee su propio bróker MQTT, así que se mantiene mientras ese bróker esté encendido. Apague primero el bróker MQTT en Servidores."
Se apaga el bróker La entrada y sus dispositivos quedan donde están, desconectados. Si entonces se elimina, se vuelve a crear la próxima vez que se encienda el bróker.

Bajo la entrada no se agrega nada por sí solo: agregue los dispositivos que publican en el bróker con la exploración del bróker o a mano, como bajo cualquier bróker del controlador MQTT. La sesión de la propia estación espera más entre intentos mientras el bróker está apagado, así que, después de encender el bróker, la entrada puede tardar hasta 30 segundos en aparecer en línea. Esta estación también tiene la tarjeta Publicar de todo bróker: lo que la estación publica de sus propios datos en su propio bróker.

Acceso de agente

Herramienta Qué hace
station_broker_status Informa del bróker: encendido o apagado, el puerto, el estado, la autenticación sin la contraseña, los dispositivos conectados y la entrada Esta estación. Sigue funcionando con el runtime detenido.
station_broker_configure Enciende o apaga el bróker, cambia su puerto y modifica la autenticación, con las reglas del panel.

Ninguno de los dos nombres empieza por mqtt_broker_, las herramientas de los brókeres que lee la estación; los dos se describen con todas las demás herramientas en Herramientas.

Lo que no hace

  • Sin TLS y sin WebSocket: los dispositivos se conectan en MQTT simple sobre TCP.
  • Un solo nombre de usuario y una sola contraseña para todos los dispositivos, nunca uno por dispositivo.
  • Sin sesiones persistentes, y ningún mensaje retenido sobrevive a un reinicio de la estación.
  • Se detiene con la estación: los dispositivos que siguen publicando mientras la estación está apagada necesitan un bróker propio (Instalar un bróker).